如何修复/修复损坏的 PDF 文件?

Tim*_*der 100 repair pdf ghostscript

有没有人有任何修复损坏的 PDF 的建议或程序?当我打开文件时,我收到“打开此文档时出错。文件已损坏,无法修复。” 那里似乎有无数的工具,但没有一个我可以形容为有信誉的。是否有任何基于开源 linux 的解决方案?

Kur*_*fle 119

Ghostscript 将自动修复您损坏的 PDF...如果它可以首先打开它(也就是说,如果它没有损坏无法修复)。但是之后你仍然需要仔细检查结果......

在 Linux 上,试试这个命令:

 gs \
  -o repaired.pdf \
  -sDEVICE=pdfwrite \
  -dPDFSETTINGS=/prepress \
   corrupted.pdf
Run Code Online (Sandbox Code Playgroud)

在 Windows 上,试试这个:

 gswin32c.exe ^
  -o repaired.pdf ^
  -sDEVICE=pdfwrite ^
  -dPDFSETTINGS=/prepress ^
   corrupted.pdf
Run Code Online (Sandbox Code Playgroud)

  • Ghostscript 在渲染 pdf 方面做得非常出色……我经常使用 gs 重建 pdf 以提高字体质量。 (4认同)
  • 与 /screen 相比,/prepress 使质量非常好。谢谢。 (2认同)

Mec*_*ail 48

我有一个损坏的 PDF 文件,print.pdfGhostscript 无法打开,但通常的图形 Linux PDF 查看器(Okular、Evince)打开得很好。(在我的例子中,当在十六进制编辑器中打开时,文件在开始时有垃圾而不是 PDF 标题。)

这些 PDF 查看器使用 Poppler 作为后端 PDF 渲染器。因此,您可以使用 Poppler 的命令行工具修复 PDF。在 Ubuntu 中,这些都在poppler-utils包中。我用了:

pdftocairo -pdf print.pdf print_repaired.pdf
Run Code Online (Sandbox Code Playgroud)

它生成了一个带有正确标题的 PDF 文件,现在可以接受 Ghostscript 等工具。

  • +1 这阅读了我的 Quartz 生成的 PDF,没有抱怨,并立即开始生成输出。Ghostscript、Adobe Acrobat Pro 和其他人坚持要先重建我的 120GB pdf。 (4认同)

jmi*_*rez 32

mutool( project page , manpage ) 将修复损坏的 PDF而不打印它们

  • 安装,例如在 Ubuntu 上: sudo apt-get install mupdf-tools
  • 像这样运行它: mutool clean input.pdf output.pdf
mutool clean [options] input.pdf [output.pdf] [pages]

  The clean command pretty prints and rewrites the syntax of a PDF file.
   It can be used to repair broken files, expand compressed streams,
   filter out a range of pages, etc.
  If no output file is specified, it will write the cleaned PDF to
   "out.pdf" in the current directory.
Run Code Online (Sandbox Code Playgroud)

或者,有一些工具和框架可以将 PDF 分解/反编译为它们的组件,而无需渲染它们。这些对于提取文本、脚本和图像可能很有用。有关此类工具的列表,请参阅此答案:https : //reverseengineering.stackexchange.com/q/1526/8210。例如,您可以尝试当前最佳答案Origami,它具有基于 GTK 的查看器。

  • 此解决方案比上面提供的解决方案“更好”或排名更好,因为它不“打印”PDF 文件并保持链接、可点击项目等处于活动状态......对我来说,这听起来比使用 ghostscript 更优雅的解决方案或开罗。 (5认同)
  • 不幸的是,“mutool clean”并不能修复所有可能的错误。我有一个文件,在字体和内容流中存在各种错误,mutool 将保留这些错误。 (3认同)

Ori*_*iol 12

我有一个损坏的 pdf 文件,因为用于下载它的 php 文件在末尾回显了一些错误(在 HTML 中)和 NUL 字符。

解决方案是用 Notepad++ 打开 pdf 并删除该行后的所有文本

%%EOF
Run Code Online (Sandbox Code Playgroud)