什么是 PDF 描边、非描边和填充?

What is PDF stroking, non-stroking and filling?

我刚开始使用 Apache PDFBox,我对应用于文本和线条时的描边、非描边和填充的含义感到非常困惑。

请有人给我指出参考/指南,解释这些术语的含义(对于初学者)以及它们之间的区别。

很简单。考虑一个位于 0,0 和 50 个单位宽和高的矩形。这被描述为顶点位于 0,0 0,50 50,50 和 50,0

的路径

现在,如果您用黑色描边路径(想象一下使用钢笔沿路径绘制)。你得到的是一个黑色的正方形,正方形的内部就是你画边框之前纸上的任何东西(可能什么都没有,所以很白)。

如果你填充路径,你会得到一个填充的正方形,但没有绘制边框。

如果您填充 描边路径,您会得到一个带边框的填充正方形。因为填充和描边颜色可以不同,所以您可以用一种颜色填充正方形,用另一种颜色绘制边框。

参见 PDF 参考,第 4.4 节"Path Construction and Painting"


更新(按-kp-)

我从官方 PDF-1.7 规范中复制了以下 table:

此 table 显示了不同的 文本呈现模式 。在这里,您也可以 strokefill 或两者都对字形形状进行操作。您甚至可以既不描边也不填充,但仍然定义形状:也就是说,您会得到 invisible 文本——一种非常有用的模式,用于将 OCR-ed 文本放置在扫描图像!它使文本可搜索、copy'n'paste-able 和 screen-reader 可识别。

我目前正在写一本书 The ABC of PDF with iText,向您介绍所有这些原则。

您谈论的是 "Graphics State" 和用于在页面上定义对象的语法。此语法存储在内容流中。

暂时忽略 "Text State"("Graphics State" 的子集),想法是创建路径和形状(形状是闭合路径)。这些路径和形状可以使用描边和填充运算符绘制。如果您填充一条路径,则需要定义您使用的是非零缠绕规则还是奇偶规则(如果您在大学阶段学习过几何,那么您已经遇到过这些规则)。

描边和填充运算符将使用当前图形状态的颜色。将使用描边颜色绘制线条。形状将使用非描边颜色填充。

您可以从 Leanpub 下载免费电子书,了解更多信息。