Pdf
如何查看和編輯 PDF 文件的程式碼
我想知道如何查看和編輯 PDF 文件的程式碼?
- 通過查看,我不想看到二進制格式,所以我想
hexdump
可能不是我想要的。我試過gedit
了,但沒有任何編碼方法可以用來解碼 PDF 內容。- 通過編輯,我想搜尋
/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
……)