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

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

有没有人有任何修复损坏 PDF 的建议或程序?当我打开文件时,我收到“打开此文档时出错。文件已损坏,无法修复。”似乎有很多工具,但没有一个是我可以称之为信誉良好的。是否有任何基于开源 Linux 的解决方案可以解决此问题?

答案1

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

在 Linux 上,尝试以下命令:

 gs \
  -o repaired.pdf \
  -sDEVICE=pdfwrite \
  -dPDFSETTINGS=/prepress \
   corrupted.pdf

在 Windows 上,尝试这个:

 gswin32c.exe ^
  -o repaired.pdf ^
  -sDEVICE=pdfwrite ^
  -dPDFSETTINGS=/prepress ^
   corrupted.pdf

答案2

我有一个损坏的 PDF 文件print.pdf,Ghostscript 无法打开它,但常用的图形 Linux PDF 查看器(Okular、Evince)可以正常打开。(在我的情况下,当在十六进制编辑器中打开时,文件开头有乱码,而不是 PDF 标头。)

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

pdftocairo -pdf print.pdf print_repaired.pdf

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

答案3

mutool项目页面手册页)将修复损坏的 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.

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

答案4

由于 Chrome、Chromium 和 Firefox 可以打开 PDF 并打印为 PDF,因此如果它们能够正确呈现,那么这可能会起作用。这也可以用于修改格式、页数等。

LibreOffice 还可以读写 PDF

GIMP 也可以读取和写入 PDF,尽管在处理多页文档时它并不是最实用的应用程序

一般来说,如果您安装的任何应用程序可以打开损坏的 PDF 文件,并且您安装了“打印为 PDF”打印机,那么您就可以开始了

相关内容