【问题标题】:How to set fill alpha in PDF如何在 PDF 中设置填充 alpha
【发布时间】:2015-04-13 14:36:57
【问题描述】:

这是一个红框:

162 86 m 162 286 l 362 286 l 362 86 l h
1 0 0 rg f

如何为其添加部分透明度?

我已阅读 PDF 规范的透明度部分,但我似乎只能找到模型和公式,而不是如何实际将 alpha 添加到填充。

【问题讨论】:

    标签: pdf alpha fill


    【解决方案1】:

    正如 OP 所指出的,PDF specification 中有一个关于透明度主题的完整部分。这是由于有多种应用透明度的方法。以下部分解释了最适合 OP 上下文的方式:

    11.6.4.4 恒定形状和不透明度

    图形状态(参见“图形状态”)中的当前 alpha 常数参数应该是两个标量值——一个用于笔划,一个用于所有其他绘画操作——用于恒定形状(f_k) 或 颜色合成公式中的恒定不透明度 (q_k) 组件。

    注意 1 此参数类似于绘制基本对象时使用的当前颜色。

    在将透明度组的结果绘制到其背景上时,也应应用非描边 alpha 常量。

    描边和非描边 alpha 常数应分别由图形状态参数字典中的 CAca 条目设置(参见“图形状态参数字典”) .如前所述,对于软遮罩,图形状态中的 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<<
      /GS1 << /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 
    

    你得到了上面绘制在绿色格子上的内容流片段:

    【讨论】:

    • @Jindra 确实,看起来像是复制粘贴遗漏。
    猜你喜欢
    • 2016-01-15
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 2010-11-17
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    相关资源
    最近更新 更多