10

Nitro Readerによって作成された圧縮されたpdfストリームからの情報を検査するためにpdftkを使用しようとしていますが、pdftkはストリームを収縮させません。エラーは発生しませんが、pdfオブジェクトを並べ替える以外には何もしないようです。 これらのPDFの1つの最小限の例を次に示します

    pdftk test.pdf output test-d.pdf uncompress

他のPDFでpdftkを試してみると、うまくいくようです。データストリームを手動で抽出し、Pythonでzlibを使用して解凍すると、正しく解凍されます。また、Adobe ReaderでPDFを開いて再保存すると、pdftkは結果のpdfで正常に機能します。

Nitro pdfを可能な限り手動で検査しましたが、有効なpdfのようです。私はここで何が起こっているのか非常に混乱しています。

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

pdftkバージョン1.45Windows7
Home Premium SP1
NitroReader2バージョン2.5.0.36

ありがとう、ジェームズ

4

2 に答える 2

13

に接続していない場合は、 qpdfpdftkを使用できます。たとえば、次を使用できます。

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

価値があるのは、ブロブがある場合でも、それらはバイナリとして表示される可能性があることです。ただし、ストリームの残りの部分は圧縮されません(またはのいずれpdftkqpdf)。 qpdfすべてまたはストリームのみを解凍できます。

qpdfマニュアルから:

--stream-data = uncompressが指定されている場合、qpdfはサポートしている非可逆フィルターを削除しようとします。これには、/ FlateDecode、/ LZWDecode、/ ASCII85Decode、および/ASCIIHexDecodeが含まれます。これは、さまざまなストリームのコンテンツを検査するのに非常に役立ちます。

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

于 2013-03-22T22:59:56.883 に答える
3

開発者からこの質問への回答を受け取りました。pdftk回線の処理方法にバグがあることが判明しました/DecodeParms [null]

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

于 2013-08-26T06:40:34.283 に答える