尝试在 PDF 中进行着色
Posted
技术标签:
【中文标题】尝试在 PDF 中进行着色【英文标题】:Trying to do shading in a PDF 【发布时间】:2022-01-23 14:13:18 【问题描述】:我正在使用一些 PDF 创建库并对其进行调整以完成更多工作。我目前正在尝试对形状进行着色。在阅读了大量示例后,我似乎无法让它工作。这是目前我创建的一个简单的 PDF,它应该有一个带阴影的正方形,但它是空白的。谁能告诉我为什么?
%PDF-1.3
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/Contents 4 0 R>>
endobj
4 0 obj
<</Length 42>>
stream
2 J
0.57 w
10 10 50 50 re
q
W n
/Sh1 sh
Q
endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R ]
/Count 1
/MediaBox [0 0 595.28 841.89]
>>
endobj
5 0 obj
<<
/FunctionType 2
/Range [0.0 1.0]
/Domain [0.0 1.0]
/C0 [0.1]
/C1 [0.0705882]
/N 1
>>
endobj
6 0 obj
<<
/ShadingType 2
/ColorSpace /DeviceRGB
/Coords [15.000 15.000 45.000 30.000]
/Function 5 0 R
/Domain [0 1]
/Extend [true true]
>>
endobj
2 0 obj
<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
>>
>>
endobj
/Shading <<
/Sh1 6 0 R
>>
7 0 obj
<<
/Producer (New Affinity xxxxxxxxxxxxxxxxxx [www.newaffinity.com])
/CreationDate (D:20211113101858)
>>
endobj
8 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 9
0000000000 65535 f
0000000177 00000 n
0000000516 00000 n
0000000009 00000 n
0000000087 00000 n
0000000264 00000 n
0000000367 00000 n
0000000620 00000 n
0000000740 00000 n
trailer
<<
/Size 9
/Root 8 0 R
/Info 7 0 R
>>
startxref
843
%%EOF
【问题讨论】:
虽然这很可能不是问题:在 re 和 W 之间执行 q 是不允许的。因此,绘制结果取决于实现。 从 0.1 到 0.07 也很可能难以察觉。单个值对 DeviceRGB 有意义吗? 感谢这些 cmets - 我已经将 q 移到了前面,并将颜色设置为: /C0 [0 0 0] /C1 [1 1 1] 仍然只是一个空白页:( 我只需要看到一个有效的,这样我就可以从它向后工作 - 但大多数 PDF 压缩了我想看到的位! 谢谢 - 唉 - 这是我用来做这个的例子之一! 【参考方案1】:PDF 文件不正确,/Shading 资源字典在对象之外。
2 0 obj
<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
>>
>>
endobj
/Shading <<
/Sh1 6 0 R
>>
把它放在对象里面:
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << >>
/Shading << /Sh1 6 0 R >>
>>
endobj
将着色颜色空间设置为 /DeviceGray,设置 /C0 [0],设置 /C1 [1](用于演示以增加可见性),然后将显示着色。 如果你想使用 /DeviceRGB,那么 /C0 和 /C1 数组必须有 3 个元素,而 /Range 必须有 6 个元素。
【讨论】:
对,在所有小问题中,我没有看到大问题。哦,好吧... 非常感谢!这一直困扰着我一段时间! :)以上是关于尝试在 PDF 中进行着色的主要内容,如果未能解决你的问题,请参考以下文章