嵌入式 JBIG2 Postscript 流未呈现为 PDF
Embedded JBIG2 Postscript stream not being rendered in PDF
我正在学习手写后记。我从下面的 link 中获取了 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',它识别出包含 JBIG2 图像流的 PDF,但据我所知它仍然没有渲染它。
./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)
我注意到这个堆栈溢出 post 指出魔术 header 不应该被包括在内,我目前在上面的例子中。
jbig2 data in pdf is not valid jbig2 data. Wrong magic
无论有无 JBIG2 流中的 8 字节 header,都不会打印任何错误,也不会呈现任何图像。
非常感谢任何想法。
让事情更进一步。您的 Page
对象缺少 Contents
条目。来自 PDF ISO 32000 Table 页面对象中的 30 个条目:
Contents | stream or array (Optional) | A content stream (see 7.8.2, "Content Streams") that shall describe the contents of this page. If this entry is absent, the page shall be empty.
这解释了文档呈现为空白页面的原因。内容包含实际呈现页面的说明,如 Chapter 8 - Graphics
中所述
至少,内容流可能包含两条指令:
A 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
条目添加到现有页面对象 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
当然,您还需要调整 PDF 中的 xref
和尾部词典,以适应更改偏移和 10 0 R
(内容流)作为新对象。
进行上述更改后,xpdf
出现以下错误:
Syntax Error (1224): Unknown segment type in JBIG2 stream
Syntax Error (34044): Unexpected EOF in JBIG2 stream
您需要处理的 JBIG2 流中的数据仍有问题。
我正在学习手写后记。我从下面的 link 中获取了 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',它识别出包含 JBIG2 图像流的 PDF,但据我所知它仍然没有渲染它。
./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)
我注意到这个堆栈溢出 post 指出魔术 header 不应该被包括在内,我目前在上面的例子中。
jbig2 data in pdf is not valid jbig2 data. Wrong magic
无论有无 JBIG2 流中的 8 字节 header,都不会打印任何错误,也不会呈现任何图像。
非常感谢任何想法。
让事情更进一步。您的 Page
对象缺少 Contents
条目。来自 PDF ISO 32000 Table 页面对象中的 30 个条目:
Contents | stream or array (Optional) | A content stream (see 7.8.2, "Content Streams") that shall describe the contents of this page. If this entry is absent, the page shall be empty.
这解释了文档呈现为空白页面的原因。内容包含实际呈现页面的说明,如 Chapter 8 - Graphics
中所述至少,内容流可能包含两条指令:
A 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
条目添加到现有页面对象 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
当然,您还需要调整 PDF 中的 xref
和尾部词典,以适应更改偏移和 10 0 R
(内容流)作为新对象。
进行上述更改后,xpdf
出现以下错误:
Syntax Error (1224): Unknown segment type in JBIG2 stream
Syntax Error (34044): Unexpected EOF in JBIG2 stream
您需要处理的 JBIG2 流中的数据仍有问题。