PDF出血检测

Posted

技术标签:

【中文标题】PDF出血检测【英文标题】:PDF bleed detection 【发布时间】:2012-10-25 12:58:15 【问题描述】:

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

唉,我已经对第一个任务感到困惑:检测 PDF 是否有至少 3 毫米的“出血”(没有打印的页面周围的边框)。我已经知道我无法检测到完整文档的出血,因为似乎没有全局文件。然而,在页面上,我总共可以检测到五个不同的框:

mediaBox bleedBox trimBox cropBox artBox

我阅读了有关这些框的pyPdf documentation,但我唯一理解的是mediaBox,它似乎代表了整个页面大小(即纸张)。

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

我注意到的另一件事是,例如PDF,所有这些框在每一页上都有完全相同的大小(意味着根本没有出血),但是当我打开它时,会有大量的出血;这让我认为各个文本元素都有自己的偏移量。

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

如果有人能阐明这些盒子到底是什么以及我能从中得出什么结论(例如,一个盒子总是比另一个小),我会非常高兴。

额外问题:谁能告诉我documentation 中提到的“默认用户空间单元”到底是什么?我很确定这指的是我机器上的mm,但我想在任何地方强制执行mm

【问题讨论】:

这个article 可能会进一步阐明 PDF 页面框的含义。 【参考方案1】:

引自 Adob​​e 发布的 PDF 规范 ISO 32000-1:2008:

14.11.2 页面边界

14.11.2.1 常规

可以为完成的媒体准备 PDF 页面,例如 一张纸,或作为印前过程的一部分,其中内容 页面被放置在中间介质上,例如胶片或 强加复制版。在后一种情况下,重要的是 区分中间页和完成页。这 中间页面通常可能包含额外的生产相关的 内容,如出血或打印机标记,不在 完成页面的边界。为了处理这种情况,PDF 页面 可以定义多达五个独立的边界来控制各种 成像过程的各个方面:

媒体框定义了物理媒体的边界, 该页面将被打印。它可能包括任何扩展区域 围绕完成页面的出血、印刷标记或其他类似情况 目的。它还可能包括靠近介质边缘的区域 由于输出的物理限制而无法标记 设备。超出此边界的内容可以安全地丢弃 不影响PDF文件的意思。

裁剪框定义页面内容所在的区域 显示或打印时应被剪裁(裁剪)。不同于其他 框,裁剪框在物理页面方面没有定义的含义 几何形状或预期用途;它只是在页面上施加剪辑 内容。但是,在没有其他信息的情况下(例如 JDF 或 PJTF 作业单中指定的拼版指令), 裁剪框确定页面内容应如何放置在 输出介质。默认值为页面的媒体框。

出血框 (PDF 1.3) 定义了 在生产环境中输出时应裁剪页面。 这可能包括容纳 切割、折叠和修整设备的物理限制。这 实际打印的页面可能包含超出范围的打印标记 出血盒。默认值为页面的裁剪框。

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

艺术框 (PDF 1.3) 定义了页面有意义的范围 页面预期的内容(包括潜在的空白) 创造者。默认值为页面的裁剪框。

页面对象字典在 MediaBox 中指定这些边界, 分别为 CropBox、BleedBox、TrimBox 和 ArtBox 条目(请参阅 表 30)。它们都是在默认用户空间中表示的矩形 单位。裁剪、出血、修剪和艺术框通常不得 超出媒体框的边界。如果他们这样做,他们是 有效地减少了它们与媒体框的交集。数字 图86说明了这些边界之间的关系。 (裁剪框 图中未显示,因为它与 任何其他边界。)

接下来有一个漂亮的图形显示了这些框之间的关系:

在很多情况下只设置媒体框的原因是

    对于用于电子消费(即在计算机上阅读)的 PDF,其他框几乎无关紧要;和

    即使在印前环境中,它们也不再像以前那样需要,参见。 articlePedro 在他的评论中提到。

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

【讨论】:

你是我的英雄。下次我可能会先查阅规范^^ 我会支持你的帖子,但没有足够的代表;很抱歉。 @mkl,对不赞成票表示歉意。尽管我对删除我的一个答案感到很生气,但我并没有亲自投票。:DI 有一位非常有创意的朋友来访,他(知道我很生气)使用这种情况以及我无人看管的计算机和帐户对我进行了精心的恶作剧和否决了许多答案。我必须说很幼稚,但一个真正聪明的恶作剧显然是为了让我在 *** 社区中拥抱自己。 :D 至少我希望有人对我的帐户开怀大笑。 :D @AlexRebula 没问题,反转脚本运行已经完成了它的工作。关于您的deleted answer:对堆栈溢出的期望是答案包含一些帮助,而无需遵循链接;可以添加链接以进行详细讨论,但关键信息应已在答案中。例如,您编辑后的答案不会作为“仅链接答案”被删除。我投票支持重新开放,但这个过程可能需要一些时间。

以上是关于PDF出血检测的主要内容,如果未能解决你的问题,请参考以下文章

关于ID导出PDF出血线的问题

用OSSIM平台轻松发现“心脏出血”漏洞

如何获取PDF页面的出血盒大小?

将裁剪框和出血框添加到现有 PDF

INDESIGN设置出血的问题,急急!!

怎么检测PDF文件是不是损坏