将裁剪框和出血框添加到现有 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

Ghostscript:如何将 STDIN 自动裁剪为“边界框”并写入 PDF?

PDF怎么裁剪页面,PDF裁剪页面的操作步骤

PyPdf2无法添加多个裁剪页面