PDF 命令 - q - Q 是否保存路径?

标签 pdf pdf-generation postscript

我的 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 – 图形对象)。


顺便说一句,上面的第二段告诉您,您的示例无效,您在路径定义和路径绘制之间放置的 qrg 指令都是不允许的.

关于你的问题:

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/

相关文章:

在 pdf 输出的标题中渲染 logo.png Shiny - Rmarkdown

java - Android 应用程序中的自定义 PDF 查看器,需要免费或一次性许可的解决方案

java - 在 Mac 和 Windows 上从 swing 打印 - Postscript 支持在哪里?

iphone - 如何在 iOS 中使用 PDFView 和 PDFThumbnailView?

c# - iTextSharp - 从 PictureBox 控件中获取图像并将其插入到 PDF 文件中

ruby-on-rails-3 - 生产服务器上的 wicked_pdf

printing - 确定接收到的数据是 PostScript 还是 PCL

html - 如何使用 html 在新选项卡中打开指向 pdf 文件的链接

pdf-generation - 禁止编辑但允许在 Java iText/PDF 中提取页面

c - 如何处理计算器溢出?