【发布时间】:2022-01-27 05:56:52
【问题描述】:
我正在尝试创建一个包含单色 1 位图像的 PDF 文件,但将图像配置为透明,其中包含白色像素(以便图像下方的内容可见)。图片使用DeviceGray色彩空间,BitsPerComponent为1。
我正在使用Mask 条目和一个指定应该被屏蔽的颜色范围的数组。我的 PDF 规范副本将此称为“彩色键掩码”。由于图像是双色调的,所以这个颜色范围只是[1 1](白色)。
但是,我根本无法让它工作。图片下的内容从不显示。我尝试过调整范围值、更改图像过滤器、调整周围的图形状态 - 均无济于事。
唯一有效的方法是将图像色彩空间从 DeviceGray 更改为 DeviceRGB 并相应调整 Mask 范围,但这会增加 PDF 文件中这些图像的大小,我做不到。
在双色调DeviceGray 图像上使用色键掩码的正确方法是什么?
这是我认为应该有效但无效的图像:
6 0 obj
<<
/Length 8800
/Type /XObject
/Subtype /Image
/Filter /ASCIIHexDecode
/BitsPerComponent 1
/Width 350
/Height 100
/ColorSpace /DeviceGray
/Mask [1 1]
>>
stream
FFFF<snip>FFFC
endstream
endobj
编辑:为完整的上下文添加完整的示例 PDF 文件。该文件包含带有文本“XYZ”的图像,以及在 XYZ 图像下方运行的线,该线被图像隐藏但在文本下应该可见:
%PDF-1.4
%צה
1 0 obj
<<
/Type /Catalog
/Version /1.4
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/MediaBox [0.0 0.0 612.0 792.0]
/Parent 2 0 R
/Contents 4 0 R
/Resources 5 0 R
>>
endobj
4 0 obj
<<
/Length 53
>>
stream
0 396 m
612 396 l
S
q
90 0 0 80 261 356 cm
/Im1 Do
Q
endstream
endobj
5 0 obj
<<
/XObject <<
/Im1 6 0 R
>>
>>
endobj
6 0 obj
<<
/Length 1920
/Type /XObject
/Subtype /Image
/Filter /ASCIIHexDecode
/BitsPerComponent 1
/Width 90
/Height 80
/ColorSpace /DeviceGray
/Mask [1 1]
>>
stream
FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FE0FFF8307FFF8380000FFC0FF07FF0783FFF0780000FFC0FF87FE0FC3FFF0F80000FFC0FF83FE0FC1FFE0F80000FFC0FFC1FC1FE0FFC1FFFFE0FFC0FFE0F83FF0FFC3FFFFC1FFC0FFF0F87FF07F83FFFF83FFC0FFF0707FF83F07FFFF07FFC0FFF820FFFC3F0FFFFF07FFC0FFFC21FFFC1E0FFFFE0FFFC0FFFC01FFFE1C1FFFFC1FFFC0FFFE03FFFF0C3FFFF83FFFC0FFFF07FFFF003FFFF07FFFC0FFFF07FFFF807FFFF07FFFC0FFFE03FFFFC0FFFFE0FFFFC0FFFC01FFFFC0FFFFC1FFFFC0FFFC21FFFFE1FFFF83FFFFC0FFF820FFFFE1FFFF83FFFFC0FFF0707FFFE1FFFF07FFFFC0FFF0F87FFFE1FFFE0FFFFFC0FFE0F83FFFE1FFFC1FFFFFC0FFC1FC1FFFE1FFFC1FFFFFC0FFC3FE1FFFE1FFF83FFFFFC0FF83FE0FFFE1FFF07FFFFFC0FF07FF07FFE1FFE0FFFFFFC0FE0FFF83FFE1FFE000007FC0FE1FFFC3FFE1FFE000007FC0FC1FFFC1FFE1FFE000007FC0F83FFFE0FFE1FFE000007FC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFC0
endstream
endobj
xref
0 7
0000000000 65535 f
0000000015 00000 n
0000000078 00000 n
0000000135 00000 n
0000000247 00000 n
0000000352 00000 n
0000000399 00000 n
trailer
<<
/Root 1 0 R
/ID [<DF10D2517650DA8AC34FF5D6B9B046EA> <DF10D2517650DA8AC34FF5D6B9B046EA>]
/Size 7
>>
startxref
2505
%%EOF
编辑 2:感谢iPDFdev's confirmation 这确实可行,我深入研究了读者方面。原来是SumatraPDF有bug,我用的旧版Acrobat Reader也有bug。
更新 Acrobat Reader 后,简化的示例正在运行,但涉及表单的更复杂的示例仍然无法运行 - 似乎这可能是 PDF 规范中未被广泛使用或经过实战考验的领域其他,甚至在 Acrobat Reader 中。由于兼容性问题,我可能会暂时远离DeviceGray + bitonal + Mask 组合,并改用效率较低的SMask 选项。
所有示例(简单的和复杂的)都在 iOS、Chrome 和 Firefox 查看器中正常工作,所以我只是碰巧选择了两个最差的阅读器选项来测试它。
【问题讨论】:
-
Adobe Reader 或 PDFBox 或两者或其他查看器中的渲染是否错误?
-
它在 Adobe Reader 或 SumatraPDF 中没有按预期呈现——所以我的工作假设是它是创建方面的问题,而不是渲染方面的问题(即我做错了什么)。
-
This 是 Adobe Reader 向我展示的内容。该行not在文本下看起来hidden...(读者还想保存一个修复后的副本。难怪,所有交叉引用偏移都是错误的...)
-
Acrobat 和 Xodo 显示图像下方的线条,SumatraPF 不显示。可能是 SumatraPDF 中的一个错误
-
PDFBox 正确显示文件。
标签: pdf pdf-generation pdfbox