如何修復損壞的 PDF
損壞的 PDF 有內部結構損傷——交叉參照表、標頭、物件串流或結尾標記缺失或不一致,使閱讀器無法定位頁面。修復意味著從存活的物件重建此結構。有時有效;有時損壞太嚴重而頁面遺失。本指南解釋四種損壞類型、能重建受損檔案的本機工具,以及修復不可能時的誠實退路。
四種 PDF 損壞類型
1. 標頭損壞
PDF 的第一行是 %PDF-1.x(x 為版本)。如果此標頭缺失或損壞,檢視器拒絕開啟檔案,因為無法將其識別為 PDF。這是最容易修正的損壞:在文字編輯器中開啟檔案,在最開頭加入標頭行 %PDF-1.7。儲存並嘗試重新開啟。
2. 交叉參照表(xref)損壞
xref 表是 PDF 的索引——告訴檢視器每個物件(頁面、字型、影像)在檔案中的位置。如果 xref 缺失或指向錯誤偏移,檢視器找不到頁面。這是最常見的損壞形式,通常由截斷下載或寫入器在完成檔案前崩潰引起。
修正:用 ghostscript(gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf in.pdf)或 Adobe Acrobat Preflight 重建 xref。兩個工具掃描檔案尋找物件並寫入新的 xref。如果物件本身完好,這會完全修復檔案。
3. 物件串流損壞
現代 PDF 將多個物件封裝在壓縮的物件串流中以節省空間。如果串流損壞,內部的物件無法復原——它們遺失了。症狀包括檔案開啟但顯示空白頁面或缺少字型。修復工具可以重建 xref 但無法復原從未正確寫入的物件。
修正:嘗試 ghostscript 或 Acrobat Preflight。如果修復後頁面仍為空白,這些頁面的物件在原始損壞中已遺失。請從備份還原或從來源應用程式重新匯出。
4. 結尾標記損壞
結尾標記是檔案末尾的小區塊,指向 xref 和根目錄。沒有有效結尾標記的檔案無法讀取,即使所有物件完好。這通常發生在寫入被中斷時——檔案在物件中途突然結束,而非以 %%EOF 結束。
修正:ghostscript 和 Acrobat 通常可以重建缺失的結尾標記。如果檔案在物件中途結束,您可能需要先截斷損壞的物件,然後重建。qpdf --check 命令報告哪些結構元素缺失。
本機修復工具
以下每個工具都在您的機器上執行。都不會上傳您的文件。這很重要:損壞的檔案可能仍包含可讀的敏感內容,將它上傳至「免費線上 PDF 修復」服務會在您知道什麼存活之前將該內容傳送至陌生人的伺服器。
1. ghostscript(免費、跨平台、命令列)
最可靠的免費修復工具。它重新讀取檔案、重建 xref 和結尾標記並寫入乾淨的副本。Windows 上:
gswin64c -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf in.pdf
macOS 和 Linux 上,將 gswin64c 替換為 gs。ghostscript 無法修復損壞的物件串流,但能修正大多數 xref 和結尾標記損壞。
2. Adobe Acrobat Pro(付費,Preflight)
Acrobat Pro 的 Preflight 功能有「修復 PDF」設定檔,可重建 xref、重新整合缺失字型並壓平損壞的註解。開啟檔案,然後工具 > 列印生產 > Preflight,執行修復設定檔。Acrobat 是最強大的修復工具但不免費。
3. PDF24 Creator(免費,Windows)
PDF24 包含「修復 PDF」工具,以 GUI 封裝 ghostscript。開啟 PDF24,選擇修復 PDF,拖放檔案並儲存結果。如果您在 Windows 上且不想使用命令列,這很有用。
4. Recovery Toolbox for PDF(付費,Windows)
專用的商業修復工具,可處理 ghostscript 無法修正的嚴重損壞。它逐位元組掃描檔案尋找可識別的物件簽章並重建能重建的內容。僅在免費工具失敗且檔案重要到值得授權費用時使用。
逐步教學:用 ghostscript 修復
- 安裝 ghostscript。Windows 上從 ghostscript.com 下載。macOS 上
brew install ghostscript。Linux 上使用套件管理器。 - 開啟終端機。導覽至包含損壞 PDF 的資料夾。
- 執行修復命令。
gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=repaired.pdf corrupted.pdf - 驗證結果。在 Acrobat Reader 或預覽中開啟
repaired.pdf。如果開啟並顯示所有頁面,修復成功。 - 如果頁面仍缺失,原始物件串流已損壞。請從備份還原或從來源應用程式重新匯出。
退路:用 IXPDF 擷取完好的頁面
當完全修復失敗時,您有時可以復原完好的頁面。開啟擷取頁面,拖放損壞的檔案並嘗試擷取第 1 頁。如果成功,嘗試範圍(1–5、6–10)直到到達損壞區。IXPDF 在您的瀏覽器中本機讀取檔案——無上傳——並從能解析的頁面寫入新的 PDF。損壞區的頁面會失敗;其餘將被復原。
常見錯誤
- 將損壞檔案上傳至線上修復服務。檔案可能仍包含可讀的敏感內容。請使用本機工具。
- 覆寫唯一副本。請始終將修復後的檔案寫入新名稱。在驗證修復之前保留原始損壞檔案。
- 假設修復會還原遺失的內容。如果物件串流已損壞,內容已消失。修復重建結構;無法復原缺失的位元組。
- 嘗試修復受密碼保護的檔案。加密不是損壞。請先解密(用密碼),然後視需要修復。