这是一个红色框:
162 86 m 162 286 l 362 286 l 362 86 l h
1 0 0 rg f
Run Code Online (Sandbox Code Playgroud)
如何添加部分透明度?
我已经阅读了PDF规范的透明度部分,但似乎只能找到模型和公式,而不是如何实际将Alpha添加到填充中。
正如OP所指出的那样,PDF规范中有一整节涉及透明度。这是由于采用了多种透明方法。下节将说明最适合OP上下文的方法:
11.6.4.4恒定的形状和不透明度
图形状态(请参见“图形状态”)中的当前alpha常数参数应为两个标量值(一个用于笔划,一个用于所有其他绘画操作),以用于恒定形状(f_k)或恒定不透明度(q_k)分量在颜色合成公式中。
注1:该参数类似于绘制基本对象时使用的当前颜色。
在将透明组的结果绘制到其背景上时,也应应用不描边的alpha常数。
笔划和非笔划的alpha常数应分别由图形状态参数字典中的CA和ca条目设置(请参见“图形状态参数字典”)。如前所述,对于软掩膜,处于图形状态的alpha源标志应确定alpha常数是解释为形状值(true)还是不透明度值(false)。
因此,您首先必须在页面资源中定义适当的图形状态参数字典,例如:
/Resources<</ExtGState<<
/GS1 <</ca 0.5>>
>>>>
Run Code Online (Sandbox Code Playgroud)
现在,您可以在内容流中使用这些命名的图形状态参数:
/GS1 gs
1 0 0 rg
162 86 m
162 286 l
362 286 l
362 86 l
h
f
Run Code Online (Sandbox Code Playgroud)
如果在绿色格子上绘制,结果将如下所示:

顺便说一下,OP的原始内容流片段中有一个错误
162 86 m 162 286 l 362 286 l 362 86 l h
1 0 0 rg f
Run Code Online (Sandbox Code Playgroud)
此处的颜色设置操作介于路径定义(162 ... l h)和路径填充操作(f)之间。比较图9 –规范中的图形对象,这是无效的,在构建路径(和可选的剪切路径运算符)之后,必须立即执行路径绘制操作。(许多PDF查看器确实接受无效的操作顺序,但是仍然无效)。
即将进行的操作的alpha值不必恒定。相反,它可以例如由带有径向阴影的遮罩控制。
实际上,如果您这样定义图形状态参数:
/Resources<</ExtGState<<
/SMask<</Type/Mask/S/Luminosity/G 1 0 R
>>>>
Run Code Online (Sandbox Code Playgroud)
而对象1 0是此XObject:
1 0 obj
<<
/Group<</CS/DeviceGray/S/Transparency>>
/Type/XObject
/Resources<</Shading<<
/Sh1<<
/Coords[262 186 10 262 186 190]
/ColorSpace/DeviceRGB
/ShadingType 3
/Extend[true true]
/Function <</Domain[0 1]/FunctionType 2/N 1/C1[0 0 0]/C0[1 1 1]>>
>>
>>>>
/Subtype/Form
/BBox[0 0 500 400]
/Matrix [1 0 0 1 0 0]
/Length 10
/FormType 1
>>stream
/Sh1 sh
endstream
Run Code Online (Sandbox Code Playgroud)
您将获得上面绘制在绿色格子上的内容流片段:

| 归档时间: |
|
| 查看次数: |
1274 次 |
| 最近记录: |