这是一个红色框:
162 86 m 162 286 l 362 286 l 362 86 l h
1 0 0 rg f
如何为其添加部分透明度?
我已经阅读了PDF规范的透明度部分,但我似乎只能找到模型和公式,而不是如何在填充中实际添加alpha。
答案 0 :(得分:3)
正如OP指出的那样,{em>透明度主题的PDF specification中有一整节。这是由于应用透明度的多种方式。 OP的上下文最合适的方式将在下一节中解释:
11.6.4.4恒定形状和不透明度
图形状态下的当前alpha常量参数(参见“图形状态”)应为两个标量值 - 一个用于笔划,一个用于所有其他绘制操作 - 用于恒定形状( f_k )或 颜色合成公式中的常量不透明度( q_k )组件。
注1:此参数类似于绘制基本对象时使用的当前颜色。
在将透明度组的结果绘制到背景上时,也应该应用非描边alpha常量。
stroking和nonstroking alpha常量应分别由图形状态参数字典中的 CA 和 ca 条目设置(请参阅“图形状态参数字典”) 。如前面针对软掩码所述,图形状态中的alpha源标志应确定alpha常量是否被解释为形状值( true )或不透明度值( false )
因此,您首先必须在页面资源中定义适当的图形状态参数字典,例如:
/Resources<</ExtGState<<
/GS1 <</ca 0.5>>
>>>>
现在,您可以在内容流中使用这些命名的图形状态参数:
/GS1 gs
1 0 0 rg
162 86 m
162 286 l
362 286 l
362 86 l
h
f
如果画在绿色格子上,结果如下:
顺便说一句,OP的原始内容流片段中存在错误
162 86 m 162 286 l 362 286 l 362 86 l h
1 0 0 rg f
此处的颜色设置操作位于路径定义(162 ... l h
)和路径填充操作(f
)之间。这是无效的,比较规范中的图9 - 图形对象,在路径构造(和可选的剪切路径操作符)之后,路径绘制操作必须立即执行。 (许多PDF查看器确实接受了无效的操作顺序,但它仍然无效)。
即将进行的操作的alpha值不必是常数。相反,它可以例如用一个带有径向阴影的面具来控制。
的确,如果您定义图形状态参数如下:
/Resources<</ExtGState<<
/SMask<</Type/Mask/S/Luminosity/G 1 0 R
>>>>
并且对象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
你得到的是在绿色格子上绘制的上述内容流片段: