将裁剪框和出血框添加到现有 PDF
Posted
技术标签:
【中文标题】将裁剪框和出血框添加到现有 PDF【英文标题】:Add crop- and bleedboxes to an existing PDF 【发布时间】:2014-07-14 11:11:22 【问题描述】:对于一个项目,我需要在现有 PDF 中添加裁剪框和出血框。我已经尝试了很多东西,但由于某种原因我没有让它工作。我什至无法放大 PDF 为这些盒子腾出空间。我也无法在这个很棒的网站上找到它。 Ghostscript中是否有函数或方法可以做这样的事情?
谁能给我一个提示,让我朝着正确的方向前进?
【问题讨论】:
【参考方案1】:您不能(完全)使用 Ghostscript 执行此操作,因为 GS 不会简单地“修改”现有的 PDF 文件,当您通过 GS 发送 PDF 文件时,它会完全解释它并从位。
您可以使用 pdfmark(在 PDF 文件完成后执行)添加裁剪框和/或出血框,但您创建的 PDF 文件将与您开始使用的不同。
你不能用 pdftk 之类的东西来做这个吗?
【讨论】:
【参考方案2】:如果我想在现有 PDF 的源代码中执行此操作,我将使用以下过程:
1。借助QPDF解压PDF源代码
QPDF 可在此处获得:qpdf.sf.net/。它是一个命令行工具,用于实现“对 PDF 文件进行结构性、内容保留的转换”。
在这里,我将输入的 PDF 转换为可编辑的 PDF,我可以在任何文本编辑器中轻松加载和修改:
qpdf \
--qdf \
--object-streams=disable \
input.pdf \
editable.pdf
请注意,“可编辑”PDF 中可能仍存在一些二进制 blob(例如字体或 ICC 资源)。因此,您的文本编辑器应该能够优雅地处理这些。
2。在您选择的文本编辑器中修改解压(可编辑)的 PDF
使用您选择的文本编辑器根据需要添加(或修改)/CropBox
和 /BleedBox
值。 (如果您使用 VIm,请使用 vim -b
运行它。)
(我假设您很清楚 PDF 规范对各种 /*Box
值施加了哪些形式和语义限制——否则请阅读一些关于它们的信息......)
所有 PDF 将包含至少一个(或多个)/MediaBox
条目。寻找他们。对于/MediaBox
的每次出现,添加您的其他框值。
2a。示例:
假设您的文本编辑器显示了这部分 PDF 源代码:
%% Page 1
%% Original object ID: 11 0
3 0 obj
<<
/Contents 5 0 R
/MediaBox [
0
0
595
841
]
/Parent 2 0 R
/Resources <<
/Font <<
/F0 9 0 R
/F1 10 0 R
>>
/ProcSet [
/PDF
/Text
]
>>
/Type /Page
>>
结束对象
您可以添加以下行:/CropBox [10 200 370 600]
添加一个 CropBox(这会将整个页面的显示或打印部分限制在定义的区域):
%% Page 1
%% Original object ID: 11 0
3 0 obj
<<
/Contents 5 0 R
/MediaBox [
0
0
595
841
]
/CropBox [10 200 370 600]
/Parent 2 0 R
/Resources <<
/Font <<
/F0 9 0 R
/F1 10 0 R
>>
/ProcSet [
/PDF
/Text
]
>>
/Type /Page
>>
结束对象
并将其保存为'edited.pdf'。
请注意,在保存此修改后的 PDF 后,它将被“损坏”,因为附加行将使 PDF 的 目录(即其xref
部分)无效,并且许多 PDF 阅读器将无法打开它而不会弹出错误或警告消息。
因此,需要最后一步:
3。借助 QPDF 重新打包和修复编辑好的 PDF
qpdf edited.pdf modified.pdf
您会看到来自 QPDF 的警告,告诉您输入的 PDF 需要对其xref
部分进行一些修复...
【讨论】:
以上是关于将裁剪框和出血框添加到现有 PDF的主要内容,如果未能解决你的问题,请参考以下文章
使用 imagemagick 将剪切/裁剪标记添加到 pdf
如何使用带有页面特定裁剪框数组的 ghostscript 裁剪多页 pdf
Imagemagick / ghostscript将裁剪标记添加到pdf