软包装图稿以PDF页面沟通时,“页面范围”并不只对应一个名称。Adobe的PDPage参考资料既说明页面自然大小,也分别说明显示打印区域、全部内容的边界和指定上下文中的可见内容边界。这里按文档定义区分这些静态对象,没有调用软件改动图稿。[1]

PDPage首先是文档中的一个页面,对应PDF Page对象。资料列出的关联对象包括页面上被绘制的图形对象、绘制所需资源、注释,以及可选的缩略图。注释因此在页面对象的说明中有自己的位置,并不只是“文字、图形、图像”清单里一个可以默认忽略的名称;后面的可见边界定义还会专门处理它。

MediaBox表达页面的自然大小,原文以一张A4纸的尺寸为例。CropBox则表达该页要显示和打印的区域。两项都用用户空间中的矩形来描述,却分别指向自然页面范围和显示打印范围:相同的矩形表达形式,没有使两项定义自动合并。这里没有给任何包装文件设定尺寸。

全部内容边界是另一种范围。PDPageGetBBox的文字定义,是包围页面所有文字、图形和图像的矩形。这个定义的中心是三类内容所在的包络,而不是纸张名称或显示打印区域。将它与MediaBox并列,能够看到“页面本身多大”与“所有所列内容由什么矩形包围”分别有自己的定义依据,不能只因都使用边界框便互换名称。

可见内容边界又增加了条件。PDPageGetVisibleBBox包围的是给定optional-content context中可见的文字、图形和图像。相比全部内容边界,它不仅保留内容类别,还指定在哪一个可选内容上下文里判断可见。因此,这份定义中的“可见”带有明确参照,不能被无条件改写成某个页面上全部内容的同义词。原文没有把它定义为全部内容框与CropBox的交集。

是否纳入注释,还由includeAnnots单独说明。为true时,注释也作为内容考虑,但必须可见才会影响这个边界;为false时,注释完全不被考虑。两个条件不能缩成一句“页面里有注释就扩大边界”:第一种情况仍有可见性前提,第二种则直接排除注释。这是可见边界对内容范围的定义,不是本文已经删掉、显示或隐藏某条实际注释。

可以用一个明确的假设理解注释条件:同一页的文字、图形和图像已经围成某个矩形,另有一条可见注释位于这个矩形之外。当includeAnnots为false时,这条注释不参与可见边界;为true且仍可见时,它才进入边界所考虑的内容。若那条注释落在原有矩形内部,纳入它也不必让外缘变大。“考虑注释”与“矩形一定扩大”因此是两件事。再设两份记录采用不同的可选内容上下文,那么即使页码相同,参与可见边界的内容集合也未必相同。比较这两份记录时,应先确认上下文和注释条件是否一致,再解释边界差别;单凭两个矩形不同,还不能推出文件中的图形对象已经被移动。这是从定义推出的对照情境,并非一次软件测试。

页面框的查询说明则把几何结果与存在标记分开。PDPageGetBox给出指定页面框与MediaBox的交集;其true或false返回值另说明,请求的框是否已在页面中指定。矩形回答的是范围,标记回答的是是否指定,它们不是同一个信息。文档还说明,请求CropBox或MediaBox时分别对应各自的专用接口;本文不把未指定标记解释成页面空白或印刷不合格。

连矩形的位置参照也有两种明确说法。DefaultMatrix所描述的旋转、裁剪后空间,以左下为原点,Y向增加方向表示;FlippedMatrix同样针对旋转、裁剪后的空间,却以左上为原点,Y递减。两项比较保留了同一个页面处理语境,但原点和纵向变化方向不同。于是,资料里只有“坐标”二字而没有空间名称,仍少了一项定义已经给出的参照关系;这里没有计算或执行坐标转换。

以上为页面几何对象的术语解释,不涉及图稿修改或印刷设置。

资料来源:
[1] [PD_Layer.PDPage (PDFL) — Acrobat API Reference](https://opensource.adobe.com/dc-acrobat-sdk-docs/pdflsdk/apireference/PD_Layer/PDPage.html)

信息来源

本文基于上述公开资料整理,未使用来源页面的图片、视频或嵌入媒体。