Pdf

如何查看和編輯 PDF 文件的程式碼

  • March 15, 2019

我想知道如何查看和編輯 PDF 文件的程式碼?

  1. 通過查看,我不想看到二進制格式,所以我想hexdump可能不是我想要的。我試過gedit了,但沒有任何編碼方法可以用來解碼 PDF 內容。
  2. 通過編輯,我想搜尋/Fit並將它們更改 /XYZ為例如 sed。但是我的命令sed s/\/Fit/\/XYZ/ < 1.pdf > 2.pdf似乎沒有像我預期的那樣改變我的 PDF 的外觀,儘管它沒有報告任何錯誤。我想知道是否sed真的可以像處理純文字一樣處理 PDF 文件?

我的問題的上下文可以從這個問題中找到。我的作業系統是 Ubuntu 10.10。

您可以使用sed二進製文件(至少 GNU sed;某些實現可能會遇到包含空字元或不以換行符結尾的文件的問題)。但是您使用的命令只替換了/Fit每行的第一次出現,並且行在 PDF 文件中幾乎沒有意義。您需要替換所有出現:

sed s/\/Fit/\/XYZ/g

/Fit如果後面不跟一個單片語成部分(例如,不替換/Fitness;我不知道您的文件是否包含/Fit會導致麻煩的出現),則僅替換它會更健壯。這是一種方法:

perl -pe 's!/Fit\b!/XYZ!g'

關於您的第一個問題(“查看原始碼,但沒有二進製文件”):您有幾個選項可以解壓縮附加到許多對象的內部二進制流。

我最喜歡的工具是**QPDF,可在所有主要作業系統平台上使用。以下命令解壓縮**所有流和所有對象流:

qpdf --qdf --object-streams=disable orig.pdf expanded.pdf

現在您可以在任何文本編輯器中打開您的 PDF。(其中可能仍然存在一些二進制 blob:例如,字型檔和 ICC 配置文件,這對於 QPDF 的擴展沒有意義)。

要在編輯後重新壓縮expanded.pdf可以執行:

qpdf expanded.pdf orig2.pdf

(手動編輯 PDF 時要小心!您需要了解很多有關其內部語法的知識才能正確執行此操作。添加或刪除單個字節後,您可能會收到可能不再能夠閱讀的 PDF 閱讀器的錯誤消息打開它,因為 PDF 的內部 ToC 已損壞,這是基於字節偏移計算的。不過,只需用字元串替換就Fit可以了XYZ……)

引用自:https://unix.stackexchange.com/questions/17220