debugging 如何调试PDF文件?

p5cysglq  于 2023-01-31  发布在  其他
关注(0)|答案(8)|浏览(181)

很多时候,我创建一个PDF无论是编程和可能有一个问题,例如,一些特定的字母可能没有显示好,或者我可能有编码问题等。
有什么方法可以调试PDF吗?例如,查看它的详细结构?

2uluyalo

2uluyalo1#

有很多免费的工具可以让你看到PDF的内部,解压缩和解密(给定密码)。
RUPsforiText浮现在我的脑海中(但我有偏见),我不知道有没有iTextSharp的等价物,它是一个带有PDF对象树视图的GUI(所有这些应用程序都有)。
有些会让你在树中编辑PDF,但不多,我相信Windjack的PDF CanOpener会(沿着其他一些你期望从商业Acrobat插件中获得的漂亮功能)。
在必要时,〈在此插入最喜欢的文本编辑器〉可以工作...但不要尝试更改任何内容。PDF是二进制格式:字节偏移量很重要。如果您的文本编辑器将\n更改为\r\n(或试图将其解释为UTF-8、或、或、或),您的PDF将严重损坏。请不要这样做。
最后,为了查找间接引用,我对给定的对象编号进行了大量的搜索。查找单个数字引用总是很痛苦,因为“4 obj”出现在每10个对象的末尾(14,24,34,1234,等等).一个regex搜索,寻找“行的开始-4 obj-行的结束”将是伟大的,但我一般使用记事本,所以这是不可能(而且我也不是一个很喜欢正则表达式的人)。

PS:即使有一个漂亮的Acrobat插件(不是开罐器,从很久以前就有了),我仍然需要时不时地打开一个文本编辑器。

Acrobat在加载PDF时会不时地进行修改(大多数是为了修复问题),如果你想知道真正的内容,你需要以其他方式查看PDF。当你试图调试一个损坏的PDF时,acrobat是你最不需要的。

PPS:Acrobat在它的高级-〉印前检查配置文件中还有一个漂亮的“pdf语法检查”。它还检查了各种PDF/* 标准(PDF/X,PDF/A-1 [a和b]等),可访问性,等等。当你试图遵从时,它们是无价的。不完全是你所要求的调试工具,但仍然非常方便。
购买力平价:“比较“两个PDF几乎是不可能的,除非编写一个自定义工具来为你做这件事。(带大小)和字段(使用类型、标志etc)* 以可预测的顺序 * 并将其转储到一个文本文件中,这样我就可以对文件进行比较...但直接对两个PDF进行比较是毫无意义的。“相同”的文件有太多的方法可以进行比较(对象顺序、字典键顺序、压缩级别等)。

yrwegjxp

yrwegjxp2#

嗯,前几天我想调试一些我用pdfLaTeX生成的PDF文件,我发现Adobe [Acrobat] Reader不是很有帮助,因为我生成的稍微无效的PDF会像没有问题一样打开,它们只是无法 * 关闭 *。这使得TeX/查看/编辑周期有点痛苦,因为我必须在再次使用TeX之前终止整个Reader进程。
我使用Ghostscript取得了更好的效果,在我的例子中,这是通过GSview的方式,因为我使用的是Windows;如果我使用的是Linux,我会使用gv来代替,这不仅不会阻止我重新执行文件(即使它还开着),它能产生几乎无法理解的错误信息,而不是假装一切正常,这已经足够好了。看看我在PDF代码中搞砸了什么,最后生成我在这篇tex.SE答案中给出的示例
如果我能弄清楚如何告诉Ghostscript在错误消息中包含更多的细节,那就太好了(实际上,如果我看手册的正确部分足够长的时间,我可能会看到),但通过将PDF与Ghostscript错误消息和Adobe's PDF reference进行比较,不难弄清楚我搞砸了什么。(我链接到存档页面是因为那里的PDF参考完全由Adobe制作,并且比主页上的ISO PDF标准具有更高的排版质量和更小的尺寸。)
当然,为了在文本编辑器中理解它,页面流不被压缩可能是很重要的,所以我建议你弄清楚如何指示你的软件不压缩它们,或者找到一些东西来在以后再次解压缩它们。
因此,简而言之:
1.不要使用Adobe [Acrobat] Reader(除非你认为你的PDF是好的,无论如何)。
1.请务必使用Ghostscript(通常通过GSviewgv)。
1.请尝试指示您的软件避免压缩页面流。
1.请务必使用文本编辑器查看PDF(最好设置为"PostScript"模式,因为语法密切相关)。
1.请务必使用the PDF reference

lxkprmvk

lxkprmvk3#

您可以使用CanOpener、PDFedit或Acrobat等工具查看PDF的结构(我在http://www.jpedal.org/PDFblog/2010/09/useful-pdf-tools-pdfedit/上写了一篇关于此主题的博客文章)

mv1qrgav

mv1qrgav5#

这是我在Linux中通常做的事情:

  • 安装qpdf包并运行qpdf --qdf --object-streams=disable orig.pdf decoded.pdf,现在你可以在文本编辑器中打开decoded.pdf并查看pdf源代码。
  • 我还在Linux上安装了PDFedit,它有一个gui程序,可以让你从一个舒适的图形界面检查所有的pdf结构。RUP是一个类似的应用程序,它们都可以在Flathub中获得(无论你的Linux发行版如何,都很容易安装):

https://flathub.org/apps/details/net.sourceforge.Pdfedit
https://flathub.org/apps/details/com.itextpdf.RUPS

9wbgstp7

9wbgstp76#

另一个工具是pdfstreamdumper
https://github.com/dzzie/pdfstreamdumper
它实际上是非常直观的
分析javascript /as 3代码等已经内置了相当多的东西
(十六进制查看器/重构器(去阻塞器)等)

ldxq2e6h

ldxq2e6h7#

只要在文本编辑器中打开它。PDF实际上是一个ASCII文件(它可以包含嵌入的二进制数据)。

4nkexdtk

4nkexdtk8#

您也可以使用PDFBox jar来调试pdf文件:java -jar pdf框-应用程序.*.jar PDF调试器文件. pdf

相关问题