2

Postscript を手で書くことを学んでいます。以下のリンクから JBIG2 イメージを取得しました (ここの例では amb_1.jb2 が使用されています: http://jbig2dec.sourceforge.net/ubc/main.html )。 PDFファイル。

問題のPDFはこちらです。 https://gist.github.com/brandonprry/277cbbc581be4e8eaa403a16403a6996

私が試した PDF リーダーで開いてもエラーはありませんが、画像がレンダリングされません。

埋め込まれた JBIG2 イメージ ストリーム (9 0 obj) をレンダリングするには何が欠けていますか? MuPDF ツール 'mutool info' を使用すると、PDF に JBIG2 イメージ ストリームが含まれていることが認識されますが、私が知る限り、まだレンダリングされません。

./mutool info /media/psf/Home/tmp/testcases/0adcc9f8-c421-47d6-93ad-9f6efc2e360b.pdf 
/media/psf/Home/tmp/testcases/0adcc9f8-c421-47d6-93ad-9f6efc2e360b.pdf:

PDF-1.4
Info object (3 0 R):
<</CreationDate(D:20051122152833-05'00')/Creator(PdfCompressor 3.0.84)/Producer(CVISION Technologies)>>
Pages: 1

Retrieving info from pages 1-1...
Mediaboxes (1):
    1   (7 0 R):    [ 0 0 967.68 1728 ]

Fonts (3):
    1   (7 0 R):    Type1 'Helvetica' (4 0 R)
    1   (7 0 R):    Type1 'Times-Roman' (5 0 R)
    1   (7 0 R):    Type1 'Courier' (6 0 R)

Images (1):
    1   (7 0 R):    [ ASCIIHex JBIG2 ] 10x10 1bpc DevGray (9 0 R)

このスタック オーバーフローの投稿に気付いたのですが、マジック ヘッダーが含まれていないことに注意してください。現在、上記の例に含まれています。

PDF の jbig2 データは、有効な jbig2 データではありません。間違った魔法

JBIG2 ストリームの 8 バイト ヘッダーの有無にかかわらず、エラーは出力されず、画像はレンダリングされません。

どんな考えでも大歓迎です。

4

1 に答える 1

1

物事をもう少し進めるために。PageオブジェクトにContentsエントリがありません。PDF ISO 32000 Table 30 Entries in a page object:

目次 | ストリームまたは配列 (オプション) | このページのコンテンツを記述するコンテンツ ストリーム (7.8.2「コンテンツ ストリーム」を参照)。このエントリがない場合、ページは空になります。

これは、ドキュメントが空のページにレンダリングされる理由を説明しています。コンテンツには、第 8 章 - グラフィックスで説明されているように、ページを実際にレンダリングするための指示が含まれています。

少なくとも、コンテンツ ストリームには次の 2 つの命令が含まれている可能性があります。

画像のcmスケーリングまたは変換を行う (Concat Matrix) コマンド。デフォルトでは、0, 0 (左下) に配置され、画像はスケーリングされずに表示されます。

Do実際に画像を出力するコマンドです。

(x,y) = (50, 100) に変換され、画像を出力するコンテンツ ストリームの例を次に示します。

10 0 obj <<
  /Length 25
>> stream
1 0 0 1 50 100 cm
/I0 Do
endstream
endobj

(/Lengthはコンテンツ ストリームの長さです)。

/Contentsこれは、既存の Page オブジェクトへのエントリとして追加する必要があります0 7 R

7 0 obj <<
  /Type /Page
  /Contents 10 0 R
  /MediaBox [ 0 0 967.68 1728 ]
  /Parent 1 0 R
  /Resources 8 0 R
>>
endobj

もちろん、変更のオフセットと(コンテンツ ストリーム) を新しいオブジェクトとしてxref収容するために、PDF 内の および トレーラー ディクショナリを調整する必要もあります。10 0 R

上記の変更を行った後、から次のエラーが発生しxpdfます。

Syntax Error (1224): Unknown segment type in JBIG2 stream
Syntax Error (34044): Unexpected EOF in JBIG2 stream

作業が必要な JBIG2 ストリーム内のデータにはまだ何か問題があります。

于 2016-11-07T03:57:48.740 に答える