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


79

有人对修复损坏的PDF有任何建议或步骤吗?当我打开文件时,我得到“打开此文档时出错。文件已损坏,无法修复。” 那里似乎有无数的工具,但我无法形容这些工具有信誉。可能有基于开源Linux的解决方案吗?


恐怕开源PDF工具非常糟糕。你在用什么
2011年


不喜欢任何工具的外观,因为它们看起来像无数的“注册表清理器”。一直在尝试Adobe Pro,并且刚刚开始寻找Ghostscript或PDFForge是否具有任何维修开关。
蒂姆·亚历山大

Ghostscript可以,但是肯定不比Acrobat好。完全是骨头。
2011年

6
@Satanicpuppy我不同意::我经常使用ghostscript重建损坏或质量低劣的pdf,并且效果非常好。
Eddie B

Answers:


99

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
Ghostscript在呈现pdf方面做得非常出色……我经常使用gs重建pdf来提高字体质量。
Eddie B

1
与/ screen相比,/ prepress使质量确实不错。谢谢。
Dolanor

我收到“读取XREF表时发生错误”。这意味着什么?
Geremia

这意味着内部目录(PDF必须包含作为XREF表的内容)有错误,指向PDF对象的错误字节偏移量。Ghostscript很可能修复了该错误,并在输出中插入了正确的XREF表。您可以通过再次通过Ghostscript运行输出来检查此情况,并查看此消息是否仍然出现。
Kurt Pfeifle

37

我的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
+1读取了我的Quartz生成的PDF,而没有任何抱怨,并立即开始生成输出。Ghostscript,Adobe Acrobat Pro和其他公司坚持首先重建我的120GB pdf。
Orwellophile 2013年

这对于我遇到的至少一个奇怪的PDF无效,但这似乎是一个不错的开始。
Brian Peterson 2014年

1
在Ghostscript想要删除页面上某些任意元素的PDF上完美运行。
2014年

Ghostscript无法阅读文档,但这就像一个魅力。顺便说一句,我是在Windows上使用新的linux子系统完成的,太酷了!
HyLian

24

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。例如,您可以尝试当前的最佳答案Origami,它具有基于GTK的查看器。


3
该解决方案比上面提供的解决方案“更好”,或者比其他解决方案更好,因为它不“打印” PDF文件,并且保持链接,可点击项等处于活动状态。对我来说,这比使用ghostscript听起来更优雅或开罗。
Speredenn 2015年

1
不幸的是,mutool clean并不能解决所有可能的错误。我的文件在字体和内容流中存在各种错误,而mutool会保留这些错误。
Dominik Honnef

1
@DominikHonnef您始终可以尝试使用可分解PDF的工具/框架,并允许您查看所有零件而无需渲染它们。那应该使您能够直接获取文本,脚本,图像等。看到这个答案的工具列表:reverseengineering.stackexchange.com/q/1526/8210
jmiserez

唯一对我有用的东西!
jamadagni

这样做效果更好,因为它不会渲染pdf来检查文档。
riccs_0x

10

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

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

%%EOF

具有相同的功能,Adobe Reader无法打开,但本机Mac,Chrome和Firefox PDF插件可以正常显示PDF文件。原因也是在上传过程中在最后一行添加了额外的“ NUL”。
蒂罗2014年

我有两个PDF %%EOF。第一次%%EOF使用十六进制编辑器后,我删除了所有内容。现在一切正常。
阿德里安
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.