我目前正在编写一个小工具(Python + pyPdf)来测试PDF以确保打印机符合性。
唉,我已经对第一项任务感到困惑:检测PDF是否至少有3mm'出血'(没有打印任何内容的页面周围)。我已经知道我无法检测完整文档的出血,因为似乎没有全局文档。然而,在页面上我总共可以检测到五个不同的框:
mediaBox
bleedBox
trimBox
cropBox
artBox
我阅读了有关这些方框的pyPdf documentation,但我唯一理解的是mediaBox
,它似乎代表整个页面大小(即纸张)。
bleedBox
很明显应该来定义出血,但似乎并非总是如此。
我注意到的另一件事是,例如PDF,所有这些盒子在每页上都有完全相同的大小(完全没有出血),但是当我打开它时会出现大量的流血;这使我认为单个文本元素有自己的偏移量。
所以,显然,只计算mediaBox
和bleedBox
的出血不是一个可行的选择。
如果有人能够了解这些盒子实际上是什么以及我可以从中得出什么结果(例如,一个盒子总是小于另一个盒子),我会非常高兴。
奖金问题:有人可以告诉我documentation中提到的“默认用户空间单元”究竟是什么?我很确定这会在我的机器上引用mm
,但我想在任何地方执行mm
。
答案 0 :(得分:20)
引用Adobe发布的PDF规范ISO 32000-1:2008:
14.11.2页面边界
14.11.2.1概述
可以为成品介质准备PDF页面,例如a 纸张,或作为印刷过程的一部分,其中的内容 将页面放在中间介质上,例如胶片或 强制复制板块。在后一种情况下,重要的是 区分中间页面和完成的页面。该 中间页面通常可能包含额外的生产相关 落在外面的内容,例如出血或打印机标记 完成页面的边界。要处理此类案例,请使用PDF页面 maydefine多达五个单独的边界来控制各种 成像过程的各个方面:
媒体框定义了物理媒体的边界 页面将被打印。它可能包括任何扩展区域 围绕完成的页面进行出血,打印标记或其他 目的。它还可以包括靠近介质边缘的区域 由于输出的物理限制而无法标记 设备。落在此边界之外的内容可以安全地丢弃 而不影响PDF文件的含义。
裁剪框定义页面内容所在的区域 应在显示或打印时剪裁(裁剪)。与其他不同 在框中,裁剪框在物理页面方面没有明确的含义 几何或预期用途;它只是在页面上施加剪辑 内容。但是,在没有其他信息的情况下(如 在JDF或PJTF作业单中指定的拼版指令) 裁剪框确定页面的内容应如何定位在 输出媒介。默认值是页面的媒体框。
出血框(PDF 1.3)定义了内容所在的区域 在生产环境中输出时,页面应被剪裁。 这可能包括容纳所需的任何额外的出血区域 切割,折叠和修剪设备的物理限制。该 实际打印页面可能包括落在外面的打印标记 流血的盒子。默认值是页面的裁剪框。
修剪框(PDF 1.3)定义了预期的尺寸 修剪后完成页面。它可能小于媒体盒 允许与生产相关的内容,例如打印说明, 剪痕或彩条。默认值是页面的裁剪框。
艺术框(PDF 1.3)定义了页面有意义的范围 页面所预期的内容(包括潜在的空白区域) 创造者。默认值是页面的裁剪框。
页面对象字典在MediaBox中指定这些边界, CropBox,BleedBox,TrimBox和ArtBox条目分别(参见 表30)。所有这些都是在默认用户空间中表示的矩形 单位。作物,流血,装饰和艺术盒通常不应该 超出媒体框的界限。如果他们这样做,他们就是 有效地减少了他们与媒体盒的交集。数字 图86示出了这些边界之间的关系。 (裁剪框 未在图中显示,因为它没有定义的关系 任何其他边界。)
接下来有一个漂亮的图形显示这些相互关联的框:
在很多情况下只设置媒体框的原因是
如果PDF用于电子消费(即在电脑上阅读),其他盒子几乎不重要;以及
即使在印前环境中,它们也不再像过去那样必要了,参见article佩德罗在评论中提及。
关于您的“红利问题”:用户空间单位默认为1/72英寸;但是,从PDF 1.6开始,可以使用页面字典中的UserUnit条目将其更改为该大小的任何(不必要的整数)倍数。在现有PDF中更改它实际上是将其缩放,因为用户空间单位是页面的设备无关坐标系中的基本单位。因此,除非您想要更新页面描述中的每个命令,引用坐标以保持页面尺寸,否则您不希望强制执行毫米级用户空间单元...;)