2013-03-17 26 views
4

Mac上的預覽應用程序允許合併多個PDF文件,但功能相當模糊。我正在Haskell編寫一個需要執行類似任務的實用程序,即將任意數量的PDF文件合併到一個新文件中。在Haskell中合併PDF文件

有沒有人有建議,從哪裏開始呢?顯然,如果Hackage上有一個圖書館可以完成大部分開箱即用的工作,但如果不是這樣,那麼關於從哪裏開始的一些指示將非常感謝。

回答

2

PDF文件格式不那麼複雜。 Adobe有一個正式的規範文檔。基本上PDF文件包含一組編號的「對象」。您必須從每個PDF文件中獲取所有對象,將它們重新編號以使它們具有唯一性,然後您需要擺弄頁面索引以便實際顯示所有頁面。

似乎有一對夫婦Hackage包爲 PDF文件,但我沒有看到太多的閱讀他們。您可能想了解pdfsplit的源代碼以獲取想法。還有HPDF

+3

https://github.com/dylanmc/Haskell-PDF-Parsing-Library – 2013-03-17 20:15:12

+0

另外,如果你只是需要如何去合併PDF文件的幫助下,有一個名爲[PDFTK(HTTP Java程序:// www.pdflabs.com/tools/pdftk-the-pdf-toolkit/),其代碼(GPL)可能對您有所幫助。 – gspr 2013-03-17 21:26:34

+0

@DonStewart AFAIK它不支持加密,xref流和壓縮對象。現在,在我的'〜/ Download'文件夾中,大約50%的PDF文件不能被庫解析,它使得它不可用。 – Yuras 2013-03-17 22:51:54

4

我正在研究pdf library,它支持解析和生成。它是低層次的,更高層次的工具還沒有出現在todo列表中(因爲很難設計出高級的API)。

Here是解壓PDF文件的一個例子。實現PDF合併很容易,但您需要熟悉PDF內部。

添加: 我創建了一個在Haskell中合併PDF文件的basic example。共150行代碼,但缺少一些功能(請參閱文件頂部的註釋)。他們很容易添加,所以讓我知道你是否有興趣。

+0

謝謝Yuras,這太棒了。我將利用你的圖書館來實現我的功能,並讓你知道我如何繼續。 – 2013-03-23 20:28:43