3

I have a program in Python (using pyPDF) that merges a bunch of different PDF documents. Sometimes, the resulting pdf is fine, except for some blank pages in the middle. When I view these documents with Acrobat Reader, I get an error message saying "insufficient data for image". When I view the documents with FoxIT Reader, I get some blank pages and a munged image.

The only odd thing about the PDF that creates the blank pages is that it seems to be PDF Version 1.4, and PyPdf seems to create files with PDF Version 1.3.

1) Does the version thing sound like the root cause of my problem?

2) Is there a way to get PyPdf to handle this correctly?

4

3 に答える 3

2

これは、実際には .pdf ファイルではなく、Windows に関連している可能性があります。

http://support.microsoft.com/kb/2506795

幸運を!

于 2012-04-12T23:23:14.367 に答える
2

私はこの問題を抱えていましたが、16進エディターで元のpdfとPyPDFを並べて見ることで、それを理解することができました。

問題は、PyPDF が実際に 1 バイトを残すことにあるようです。おそらく、各画像ストリームの最初のバイトが欠落しているように見えます。PyPDFファイルにバイトを追加すると、pdfはエラーなしで正常に開きました。

于 2013-01-18T03:57:57.720 に答える
1

画像 XObject ストリームの形式が正しくないと思われます。問題のある PDF にアクセスできない場合、ほとんどの人は推測するしかありません。

たとえば、pdf 情報で画像が幅 10 ピクセル、高さ 10 ピクセル、ピクセルあたり 8 ビットであると示されている場合、ストリームは 100 バイトに解凍する必要があります。それ未満に圧縮解除された場合、表示されているようなエラーが発生すると予想されます。

これは、たまたま使用している画像形式に関係なく、おそらく pypdf のバグです。

IIRC、PDFにはスキャンラインのパディングはなく、ワード境界も考慮されていませんが、必要に応じて最後のビットがバイトにパディングされます。混乱するとバイト数が多くなりすぎる可能性がありますが、これはここでは問題ではありません。

また、色空間が悪い可能性もあります。インデックス付きカラー画像 (gif) を持っていて、RGB 画像に途中まで変換するが、元のインデックス付きカラー バイトを使用する場合、ピクセルあたり n*3 ビットを期待するストリームが得られますが、ピクセルあたり n ビットを持ちます。

これは、pypdf で修正された古いバグである可能性があります。現在のバージョンを使用していますか?

于 2011-02-01T00:28:30.163 に答える