【问题标题】:Trying to understand clipping logic in PDF试图理解 PDF 中的剪辑逻辑
【发布时间】:2020-03-09 03:59:21
【问题描述】:

我在 PDF 中的 deflate 流中有以下说明:

1 g
/GS1 gs
0 792 m
0 792 l
f
q
1 i 
0 792 612 -792 re
0 792 m
W n
0 792.06 612 -792 re
W n
  1. 将颜色设置为灰色。
  2. 加载一些外部字典信息
  3. 0 中启动子路径792
  4. 0 中追加点792
  5. 填充路径.... 为什么要填充 1 个灰色像素?
  6. 保存图形堆栈
  7. 将平滑度设置为 1
  8. 开始一个0792612-792矩形子路径
  9. 开始一个0 792 子路径.... 为什么要覆盖之前的矩形路径?
  10. 0 792 子路径设为剪切路径并移除当前路径。
  11. 开始一个0792.06612-792矩形。
  12. 用上一个剪切路径0792剪切上一个矩形?

我遇到的问题是我没有找到关于剪辑如何工作的好例子。你夹在哪条路径上?如果您之前没有剪辑路径,您会针对什么进行剪辑?

谢谢!

【问题讨论】:

    标签: pdf pdf-generation adobe


    【解决方案1】:

    首先你想知道是对的,你展示的摘录中有很多没有意义。

    例如您的项目 3..5 涉及

    0 792 m
    0 792 l
    f
    

    PDF 规范说明了这样的填充路径:

    如果子路径是退化的(完全由同一坐标上的一个或多个点组成),则应考虑将子路径包含在该点下方的单个设备像素;结果取决于设备,通常没有用处。

    (ISO 32000-2,第 8.5.3.3 节 - 填充)


    你的解释

    0 792 612 -792 re
    0 792 m
    W n
    

    但是,在您的项目 8..10 中是不正确的。特别是你假设最后一行

    将 0 792 子路径设为剪切路径并移除当前路径。

    实际上0 792 m 子路径被忽略了,只有0 792 612 -792 re 矩形与当前剪辑路径相交!

    根据规范剪辑路径相交的工作类似于填充

    子条款 8.5.3.3,“填充”定义了路径内部的内容,并说明了关闭路径和退化路径的规则。对于给定的路径定义,将由 f 运算符填充的同一区域就是将用于剪辑的区域。

    (ISO 32000-2,第 8.5.4 节 - 剪切路径运算符)

    填充会掉落悬垂的0 792 m

    任何打开的子路径在被填充之前都应该被隐式关闭,除非路径中的最后一个子路径是单点打开的子路径(由尾部的 m 运算符指定),它应该被忽略并且不被认为是路径的一部分。

    (ISO 32000-2,第 8.5.3.3 节 - 填充)


    因此你的解释

    0 792.06 612 -792 re
    W n
    

    在您的第 11 和 12 项中

    用上一个剪切路径 0 792 剪切上一个矩形?

    略微偏离:实际上这个矩形剪切了上一个剪切路径最后被另一个几乎相同的矩形剪切。但这几乎比您最初的假设更有意义。


    关于你的明确问题

    你对哪条路径进行剪辑?如果您之前没有剪辑路径,您会针对什么进行剪辑?

    这里的规范说:

    初始剪辑路径应包括整个页面。

    (ISO 32000-2,第 8.5.4 节 - 剪切路径运算符)

    【讨论】:

    • 您好 mkl,感谢您的深入回答。因此,如果我理解正确: 0 792 612 -792 re 0 792 m 是 Path 对象中的 2 个子路径。因为m 是退化的,所以我使用之前的有效子路径rec。剪切路径是开头的整个页面,因此:0 0 612 792 re 被剪切到 0 792 612 -792 re ,然后再次被剪切到 0 792.06 612 -792 re ?
    • "所以如果我理解正确:0 792 612 -792 re 0 792 m 是 Path 对象中的 2 个子路径。因为 m 是退化的,所以我使用之前的有效子路径,rec ." - 因为 m 只是一个尾随 m,所以您 使用前一个有效的子路径。一般来说,由任意数量的子路径组成的整个路径将用于剪辑。
    • "剪切路径是开头的整个页面,所以:0 0 612 792 re 被剪切到 0 792 612 -792 re ,然后再次被剪切到 0 792.06 612 -792 re ?" - 如果整个页面是 612x792 且原点在左下角,是的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    相关资源
    最近更新 更多