我的 PDF 文件包含以下命令:
1.0 0 0 -1.0 0 810.0 cm
1.0 0 0 1.0 0 0 cm
1.0 0 0 1.0 9.0 9.0 cm
-9.0 -9.0 m 621.0 -9.0 l 621.0 801.0 l -9.0 801.0 l h
q
1.0 1.0 1.0 rg f
Q
q
1.0 0 0 1.0 0 0 cm
/Div <</MCID 0>> BDC
q
/GS_0-0-0-0x0 gs
q
q
q
1.0 0 0 1.0 -25.98 -17.82 cm
Q
q
1.0 0 0 1.0 -25.98 -17.82 cm
0 0 m 666.0 0 l 666.0 144.2 l 0 144.2 l h
q
.2392 .2784 .3215 rg f
Q
Q
Q
Q
Q
第 4 行和第 20 行绘制了一个矩形。第 6 行和第 22 行有一个填充命令“f”。
在第 6 行调用“f”会清除当前向量路径,但是第 7 行的“Q”应将其返回。因此第 22 行应该绘制两个矩形,但 PDF 查看器只绘制一个矩形。我的问题是,哪个命令完全清除第 22 行之前的第一个矩形?
最佳答案
一方面,通过查看 KenS 在 his comment 中提出的规范,您可以看到 q 不会保存当前路径。 。如果您使用 ISO 规范(ISO 32000-1 或 ISO 32000-2),您将在第 8.4.1 节中找到“设备独立图形状态参数”和“设备相关图形状态参数”表。您将看到存储在那里的唯一路径是剪切路径。
但是您还可以通过考虑何时允许 q 指令来看到 q 不会保存当前路径:您会特别发现在定义路径之后下一条指令必须是路径绘制指令或紧随其后的剪切路径指令。因此,在下一个 q 指令之前,路径已经被使用(因此被丢弃)!所以q没有机会保存当前路径。 (有关规范性引用,请查看 ISO 32000-1 或 ISO 32000-2 中的图 9 – 图形对象)。
顺便说一句,上面的第二段告诉您,您的示例无效,您在路径定义和路径绘制之间放置的 q 和 rg 指令都是不允许的.
关于你的问题:
My question is, which command exactly clears the first rectangle before the line 22?
由于您的示例指令序列无效,因此结果未定义。但由于图形状态中没有当前路径的元素,因此您尤其不应期望该路径在 Q 之后重新出现。
关于PDF 命令 - q - Q 是否保存路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72227675/