我有一大堆我想在Rails應用程序中編制索引的文檔。我想使用排序的rake任務來梳理目錄層次結構以查找文件並從這些文件捕獲元數據以在Rails中進行索引。Ruby/Rails:遍歷文件夾並解析元數據給種子數據庫
我不太確定如何在Ruby中做到這一點。我發現了一個名爲pdftk的實用程序,它可以從PDF文件中提取元數據(我索引的很多是PDF),但我不確定如何捕獲該數據的各個部分?
例如,要抓住下面的ModDate
或每個BookmarkTitle
和BookmarkPageNumber
。
具體而言,我想遍歷文件層次結構,對每個.pdf執行pdftk $filename dump_data
命令,然後將該輸出的重要部分捕獲到軌道模型中。從PDFTK
輸出:
$ pdftk BoringDocument883c2.pdf dump_data
InfoKey: Creator
InfoValue: Adobe Acrobat 9.3.4
InfoKey: Producer
InfoValue: Adobe Acrobat 9.34 Paper Capture Plug-in
InfoKey: ModDate
InfoValue: D:20110312194536-04'00'
InfoKey: CreationDate
InfoValue: D:20110214174733-05'00'
PdfID0: 2f28dcb8474c6849ae8628bc4157df43
PdfID1: 3e13c82c73a9f44bad90eeed137e7a1a
NumberOfPages: 126
BookmarkTitle: Alternative Maintenance Techniques
BookmarkLevel: 1
BookmarkPageNumber: 3
BookmarkTitle: CONTENTS
BookmarkLevel: 1
BookmarkPageNumber: 4
BookmarkTitle: EXHIBITS
BookmarkLevel: 1
BookmarkPageNumber: 6
BookmarkTitle: I - INTRODUCTION
BookmarkLevel: 1
BookmarkPageNumber: 8
BookmarkTitle: II - EXECUTIVE SUMMARY
BookmarkLevel: 1
BookmarkPageNumber: 13
BookmarkTitle: III - REMOTE DIAGNOSTICS - A STATUS REPORT
BookmarkLevel: 1
BookmarkPageNumber: 30
BookmarkTitle: IV - ALTERNATIVE TECHNIQUES
BookmarkLevel: 1
BookmarkPageNumber: 55
BookmarkTitle: V - COMPANYA - A SERVICE PHILOSOPHY
BookmarkLevel: 1
BookmarkPageNumber: 66
BookmarkTitle: VI - COMPANYB - REDUNDANT HARDWARE ARCHITECTURE
BookmarkLevel: 1
BookmarkPageNumber: 77
...shortened for brevity...
PageLabelNewIndex: 1
PageLabelStart: 1
PageLabelPrefix: F-E12_0001.jpg
PageLabelNumStyle: NoNumber
PageLabelNewIndex: 2
PageLabelStart: 1
PageLabelPrefix: F-E12_0002.jpg
PageLabelNumStyle: NoNumber
PageLabelNewIndex: 3
PageLabelStart: 1
PageLabelPrefix: F-E12_0003.jpg
PageLabelNumStyle: NoNumber
...
編輯:我最近發現的pdf-reader寶石看起來有前途,可能避免需要觸發pdftk
,不知何故,在shell?!?
當我從課堂回來時,我會爲此寫一個答案。出於好奇,你對索引有什麼用?你只是想填充一個數據庫?你能舉一個索引的例子嗎? – Max
我真的很感激! *任何*讓我朝着正確的方向前進。該索引是[Elasticsearch](http://www.elasticsearch.org/)(通過[Tire](https://github.com/karmi/tire)gem)。我沒有與ES結緣,但我確實已經運行並編制了PDF索引。我只想提取一些PDF元數據並將其插入到數據庫中。理想情況下,我希望有一個rake任務遍歷這些PDF的層次結構,並從中構建ActiveRecord模型,然後(通過Tire回調)將它們索引到Elasticsearch中。 – Meltemi