2013-02-25 74 views
8

我一直在尝试使用pdftk来检查由Nitro Reader创建的压缩pdf流的信息,但pdftk不会泄漏流。它不会产生任何错误,但除了重新排序pdf对象之外,它似乎没有做任何事情。 Here是其中一个pdf的最小示例。pdftk不会解压缩数据流

pdftk test.pdf output test-d.pdf uncompress 

当我在其他pdf上尝试pdftk时,它似乎工作正常。如果我手动提取数据流并在Python中使用zlib解压缩它们,它们会正确解压缩。此外,如果我在Adobe Reader中打开PDF并重新保存,则pdftk可以正确处理所产生的PDF。

我已经手动检查了Nitro pdf以尽我所能,并且它似乎是一个有效的pdf。我对这里发生的事情感到非常困惑。

作为问题的背景,我有数以百计的这些pdf,我正在尝试搜索某些关键字,如果我可以自动解压缩,我应该可以做这些关键字。

PDFTK版本1.45
Windows 7家庭高级版SP1
硝基阅读器2.0版本2.5.0.36

谢谢, 詹姆斯

回答

2

我收到了来自开发人员对此问题的回答。原来是pdftk处理/DecodeParms [null]行的错误。

如果解码参数为空,作者可能会忽略/DecodeParms行,但符合标准的读者应该了解它。我试用了pdftk的新版本,问题似乎解决了。

6

如果没有连接到pdftk,您可以使用qpdf。例如,您可以使用:

$ qpdf --stream-data=uncompress input.pdf output.pdf 

对于什么是值得的,如果存在斑点,它们仍可能显示为二进制。虽然,流的其余部分将被解压(使用pdftkqpdf)。 qpdf允许您解压全部或只有流。

qpdf手册:

当指定--stream数据解压缩=,qpdf将尝试 除去它支持任何非有损滤波器。这包括 /FlateDecode,/ LZWDecode,/ ASCII85Decode和/ ASCIIHexDecode。这 可以非常有用的检查各种流的内容。

pdftk也可能发生同样的情况。