2010-03-12 104 views
17

我在SWFTools和XPDF的幫助下將PDF解壓縮爲圖像/ swf和文本。我在PDF腳本中運行這些文件。提取PDF的目錄?

但是現在我試圖進一步嘗試從PDF中獲取TOC是否可以提取這些信息?

+2

+1,我會很高興看到如何做到這一點。 – 2010-03-16 07:25:16

+0

如果你想用第三方應用程序做到這一點,那麼我可以推薦[Debenu PDF Aerialist](http://www.debenu.com/products/desktop/debenu-pdf-aerialist/),它具有導出功能「目錄」。 – 2016-04-17 14:25:13

回答

11

我發現這與一點搜索。它看起來很有前途。

PDFMiner:http://www.unixuser.org/~euske/python/pdfminer/index.html

注:該工具是基於Python的,但你應該能夠通過shell訪問使用的工具。或者,您可能能夠從源代碼本身收集一些有用的信息,因爲該項目是開源的。

從網站:

dumppdf.py

dumppdf.py轉儲僞XML格式的PDF文件的內部內容。該程序主要用於調試目的,但也可以提取一些有意義的內容(如圖像)。

例子:

$ dumppdf.py -a foo.pdf 
(dump all the headers and contents, except stream objects) 

$ dumppdf.py -T foo.pdf 
(dump the table of contents) 

$ dumppdf.py -r -i6 foo.pdf > pic.jpeg 
(extract a JPEG image) 
+0

經過進一步調查,我可以找到一些非常有用的應用程序,這個工具,我自己! +1給予Yusuke Shinyama和PDFMiner團隊的其餘成員! – 2010-03-24 23:21:08

+0

謝謝我會看看..但它是否會在XML內生成TOC ..現在我正在使用XPDF和PDF2SWF獲取內容:) 但是沒有TOC選項 – Chris 2010-03-25 02:51:33

+0

我想我是不確定你在問什麼。第二個「示例」行聲稱專門將TOC轉儲爲XML文件,您可以以任何適合您的方式解析該文件。我自己並沒有使用這個工具,它聽起來像會完成你想要做的事情。 – 2010-03-25 14:38:44

0

我認爲看PHP's PDFLib將是一個非常好的開始。如果向下滾動,您將看到大量用戶發佈的解決方案,用於將PDF轉換爲HTML或PDF轉換爲文本。轉換後,一個相對簡單的匹配函數可以提取標記的TOC項並將它們放入一個數組中,然後您可以隨意操作。

This StackOverflow post也有一些更多的解決方案。

希望這會有所幫助。

+0

我已經使用XPDF pdf2txt了......但是你會如何匹配這個? ToC通常是手工創建的......並且信息需要在pdf中的某處(因爲它們可以具有側面) – Chris 2010-03-25 02:52:31

+0

TOC *應該*只能在人們沒有所需的專業人員時手動創建工具自動執行。如果自動完成,TOC中的項目會被標記爲書籤(我認爲這就是您所稱的「側面板」)並鏈接到他們的頁面,因此更容易匹配。如果它們是手工完成的,那麼它們與PDF中任何地方的任何其他文本塊都沒有區別,並且腳本能夠成功匹配它們幾乎是不可能的。 – 2010-03-25 20:37:08

2

或者,你可以使用MuPDF這是書面C.在apps/子目錄相當輕巧,但完整的PDF實現你會發現一些工具,可以查看,導出並從PDF文件中提取信息。我比較喜歡MuPDF而不是xpdf,因爲它被積極維護並且具有更好的PDF支持。

否則,總是有Poppler這實際上是基於xpdf。開發人員將其代碼移植到C++。因此,它的表現比前任更差。與MuPDF相比,Poppler似乎具有稍微更多的功能,但作爲回報,代碼更加複雜。

爲了您的目的,儘管MuPDF應該足夠。您可以將apps/中提供的示例代碼中的一個簡單應用程序拼湊在一起,該應用程序可以在不依賴外部應用程序的情況下提取所需的所有信息。

+0

謝謝我也會試試這個^^ – Chris 2010-03-31 04:54:56

4

我試過dump.pdf -T,但它在某些PDF文件上無效。

還有另一個來自MuPDF的工具,名爲mutool,我剛剛發現。我不知道這是否比dump.pdf更好,但對PDF文件dump.pdf會產生錯誤。

這裏如何提取TOC與mutool

mutool show {your-pdf-file} outline

MuPDF