一千萬個為什麽

搜索

開發人員編輯PDF的正確方法是什麽?



最近,我得到了一項任務,即手動將目錄添加到由某人離開的PDF電子書中。起初我不知道該怎麽做,所以我搜索了很多,發現了一些小工具,但沒有一個工作得很好。最後,我必須前往商業名為 PDFpenPro 的軟件,它最終滿足了我的需求。

我的問題是,既然 PDF 是開放標準,為什麽優秀的開源編輯工具非常稀缺?我不是電子書和標準方面的專家,但我仍然想知道什麽阻止了程序員構建偉大的開源工具?

無論如何,添加一個 TOC (以及許多其他基本但有用的編輯)似乎不是一件非常困難的任務,我們可以由開發人員通過使用和貢獻一些開源庫來做到嗎?任何人都可以列出一些我可以依賴的便利資源嗎?

轉載註明原文: 開發人員編輯PDF的正確方法是什麽?

一共有 4 個回答:

“問題”在於PDF不知道其內容和文檔的結構(除非已添加結構 - 可能是為了使其可訪問)。這意味著你將不得不尋找其他方式來識別(在TOC的情況下)標題等。

一種可能性(我認為PDFpen是這樣做的)列舉了所有文本元素,將它們與您定義為“標題”的屬性進行比較,將它們拼接在一起(請註意,PDF中的單詞可能與我們所看到的不一致“word”),制作標題列表,創建另一個頁面,創建TOC,最後在TOC和相應的目標之間建立聯系。

另一件要知道的事情是,閱讀PDF比閱讀PDF要復雜得多。這就是為什麽有更多的庫(和應用程序)只能編寫PDF而不能讀寫(甚至更少理解PDF ......)。

現在,因為創建TOC是不經常發生的事情,並且無論如何都需要進行可視化檢查,所以這樣做是合理的,而不是試圖創建應用程序來執行此操作,以便認真考慮Acrobat的插件。 Acrobat的插件API相當廣泛,並且有相當充分的文檔記錄,並且有一個提供支持的社區。 AFAIK,這個API是免費使用的,除非你想讓這個插件和Reader一起工作(在這種情況下,你需要Adobe的許可證)。這種方法的優點是您可以依靠Acrobat的功能來編寫適當的,高質量的PDF。

為了回答你(相當修辭)的問題,為什麽編輯工具非常罕見......那麽,PDF不僅僅是一個簡單的文本文件......

PDF是一種固定的布局格式。它不是專為編輯內容而設計的。唯一存在的信息是視覺布局:在坐標x,y指令處的一系列繪制字符'c',字體'Times'。 PDF中沒有任何信息告訴你關於段落或標題等內容的任何信息。

如果您想更改內容,則應編輯源文檔並重新生成PDF。

您可以使用 Pdfescape.com ,它是免費的,非常容易做任何事情,PDF必須小於10MB,並且少於100頁。

我想如果你付錢給他們,沒有更多的限制,但我不確定,你可以問他們。每年20美元。

回答更一般的問題,有三種基本的編輯方式。

  1. Add, remove or rearrange pages

    Use software like PDFtk which can do all of this.

  2. Add content to existing pages

    You can use LaTeX to draw anything on PDF pages. Basically, you can use the existing PDF and background and all your LaTeX on top; see e.g. here.

    If LaTeX is too much of a roadblock (meaning, you don't know it yet), using Inkscape may work nicely (see below).

  3. Change content on existing pages

    That's the hardest one. You can use software like PDFEdit to make changes, but as long as you don't use Adobe's expensive tools, things are going to be nasty (or so I hear).

    You can use Inkscape to convert individual pages to SVG, edit and reconvert to PDF (cf 1.). This has limitations, though.

對於添加目錄的示例,讓我推薦以下方法。只要你有結果就停下來。

  1. 獲取源代碼,在其中添加ToC,然後重新轉換為PDF。
  2. 獲取ToC頁面(如PDF)並插入它們(參見上文)。
  3. 使用任何工具編寫您自己的ToC,費力地匹配原始文檔格式,然後插入它(請參閱上文)。

由於除了第一個替代方法之外,其他所有的將會中斷頁面​​編號,而第三個將(最有可能)中斷格式化,所以很明顯什麽是最好的選擇。

告訴您的客戶開始使用LaTeX。