2013-02-25 23 views
8

私はpdftkを使用して、Nitro Readerによって作成された圧縮pdfストリームの情報を検査しようとしていますが、pdftkはストリームを圧縮解除しません。エラーは発生しませんが、pdfオブジェクトを並べ替えること以外は何もしないようです。 Hereは、これらのpdfsの最小の例です。pdftkはデータストリームを解凍しません

pdftk test.pdf output test-d.pdf uncompress 

他のpdfsでpdftkを試してみるとうまくいくようです。データストリームを手動で抽出してPythonでzlibを使用して解凍すると、適切に解凍されます。また、Adobe Readerでpdfを開いて再保存すると、pdftkはpdfファイルで正常に動作します。

私は手作業でニトロのpdfを自分の能力で検査しましたが、それは有効なpdfと思われます。私はここで何が起こっているのか非常に混乱しています。

問題の背景として、私はこれらのpdfを何百も持っており、特定のキーワードを検索しようとしていますが、私が解凍を自動化できるならばできるはずです。

pdftkバージョン1.45
Windows 7のホームプレミアムSP1
ニトロリーダー2バージョン2.5.0.36

おかげで、 ジェームズ

答えて

2

私はこの質問に対する回答を開発者から受け取りました。 pdftk/DecodeParms [null]の行を処理する方法でバグと判明しました。

デコードパラメータがnullの場合、ライターは/DecodeParms行を省略することができますが、準拠した読者はどちらかを理解する必要があります。私はpdftkの新バージョンを試してみましたが、問題は解決しているようです。

6

あなたがpdftkに添付されていない場合は、qpdfを使用することができます。たとえば、次のように使用することができます。

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

ブロブがある場合は、バイナリとして表示される可能性があります。ただし、残りのストリームは圧縮されません(pdftkまたはqpdfのいずれか)。 qpdfを使用すると、すべてのストリームまたはストリームのみを解凍できます。

qpdfマニュアルから:

--streamデータ=解凍が指定されている場合、qpdfは それがサポートする任意の非非可逆フィルタを削除しようとします。これには、 /FlateDecode、/ LZWDecode、/ ASCII85Decode、および/ ASCIIHexDecodeが含まれます。この は、さまざまなストリームの内容を検査するのに非常に便利です。

pdftkでも同じことが起こる可能性があります。

関連する問題