尝试在 PDF 中添加阴影

Trying to do shading in a PDF

我正在使用一些 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

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 个元素。