2012-11-05 54 views
3

我目前正在编写一个小工具(Python + pyPdf)来测试打印机符合性的PDF。PDF流血检测

唉,我已经对第一个任务感到困惑了:检测PDF是否至少有3mm“流血”(边框没有任何内容被打印)。我已经知道,我无法检测到整个文件的流血,因为似乎没有全球文件。在页面上,但是我可以检测一共有五个不同的盒子:

  • mediaBox
  • bleedBox
  • trimBox
  • cropBox
  • artBox

我读了关于那些方框的pyPdf documentation ,但我唯一了解的是mediaBox,它似乎代表整个页面大小(即该论文)。

bleedBox很明显应该定义出血,但似乎并不总是如此。

我注意到的另一件事是,例如对于PDF,所有这些盒子在每一页上都具有完全相同的大小(意味着没有出血),但是当我打开它时出现大量流血;这导致我认为单个文本元素有它们自己的偏移量。

因此,显然,只需计算出mediaBoxbleedBox的出血不是一个可行的选择。

如果有人能够说明这些盒子的实际内容以及我可以从中得出的结论(例如,一个盒子总是小于另一个盒子),我会感到非常高兴。

奖金的问题:谁能告诉我究竟是什么“默认用户空间单位”documentation提到?我很确定这是指在我的机器上使用mm,但我想要在各处强制执行mm

+0

This [article](http ://www.prepressure.com/pdf/basics/page_boxes)可能会对PDF页面框的含义有所了解。 –

回答

18

从PDF规范ISO 32000-1:2008引述公布由Adobe:

14.11.2页边界

14.11.2.1一般

PDF页面可以为成品介质中制备两种,例如 纸张,或作为印前过程的一部分,其中页面的内容 被放置在中间介质上,例如胶片或 施加的再生盘。在后一种情况下,重要的是要区分中间页面和完成页面。中间页面通常可能包含其他生产相关的内容,例如流血或打印机标记,它们落在完成页面的边界之外。为了处理这种情况下,一个PDF 页maydefine多达五个单独的边界,以控制成像过程的各个 方面:

  • 媒体盒限定在其上 页面是物理介质的边界被打印。它可能包括围绕完成页面的任何扩展区域 以用于出血,打印标记或其他此类目的。它也可能包括靠近介质 边缘的区域,因为输出 设备的物理限制而无法标记。超出此范围的内容可以安全地丢弃 而不会影响PDF文件的含义。

  • 裁切框定义显示或打印时页面内容应被裁剪(裁剪)的区域。与其他 框不同,裁剪框在物理几何或预期用途方面没有定义的含义;它仅仅在页面 内容上施加剪辑。但是,如果没有附加信息(例如在JDF或PJTF作业传票中指定的 拼版指令),则 裁切框将确定如何将页面内容放置在 输出介质上。默认值是页面的媒体框。

  • 流血框(PDF 1.3)定义页面在生产环境中输出时应剪切的内容的区域。 这可能包括任何额外的出血区域,以适应切割,折叠和修剪设备的物理限制。实际打印的页面可能包含打印标记,该打印标记不在 出血框中。默认值是页面的剪裁框。

  • 修剪框(PDF 1.3)定义修整后 修整页面的预期尺寸。它可能比媒体框小,允许 允许与生产相关的内容,例如打印指令, 剪切标记或彩条。默认值是页面的剪裁框。

  • 艺术盒(PDF 1.3)定义了页面 创作者设计的有意义的 内容(包括潜在空白空间)的范围。默认值是页面的剪裁框。

页面对象字典指定在媒体框, 裁剪框,出血框,裁切框,和框项这些边界,分别为(见 表30)。所有这些都是以默认用户空间 单位表示的矩形。作物,出血,修剪和艺术框通常不会延伸到媒体框的边界之外。如果他们这样做,他们是 有效地减少到他们与媒体箱的交集。图 86显示了这些边界之间的关系。 (图中未显示裁剪框 ,因为它与任何其他边界没有定义关系。)

下面有显示彼此相对于那些箱子一个不错的图形:

PDF boxes illustrated

为什么在很多情况下,只有媒体框设置的原因,是

  1. 如果用于电子消费的PDF文件(即在计算机上阅读)其他文件夹无关紧要;和

  2. 即使在印前环境,他们不再像以前那样必要了,参见。 Pedro在他的评论中提到了article

关于您的“奖励问题”:用户空间单位默认为1/72英寸;但从PDF 1.6开始,可以使用页面字典中的UserUnit条目将其更改为任何(不必是整数)大小的倍数。在现有的PDF中对其进行更改基本上将其缩放,因为用户空间单位是页面设备无关坐标系中的基本单位。因此,除非要更新页面描述中的每个命令(指向坐标以保持页面尺寸),否则不会强制执行毫米用户空间单位......;)

+0

你是我的英雄。下一次,我可能会先咨询规格^^ 我会upvote您的帖子,但没有足够的代表;对不起。 – phryk

+0

+1图片说明 – user269867

+0

@mkl,为downvotes道歉。尽管我对删除我的答案感到愤怒,但没有亲自下决心.DI有一位非常有创造力的朋友来访问谁(知道我在生气)使用这种情况,我的无人计算机和账户对我做了一个精心的恶作剧, downvoted许多答案。幼稚的,我必须说,但一个真正的聪明的恶作剧,显然服务于我的目的,使我自己在StackOverflow社区。 :D至少我希望有人对我的帐户有一个很好的笑。 :D – AlexRebula