Php 将裁剪框和分格框添加到现有PDF
对于一个项目,我需要在现有的PDF文件中添加一个裁剪和bleedbox。我尝试了很多东西,但由于某些原因,我没有让它发挥作用。我甚至无法放大PDF文件来为盒子腾出空间。我在这个很棒的网站上也找不到它。Ghostscript中有没有函数或方法可以执行这样的操作 有人能给我一个提示,告诉我正确的方向吗?你不能(准确地)用Ghostscript来做这件事,因为GS并不是简单地“修改”一个现有的PDF文件,当你通过GS发送PDF文件时,它会完全解释它,并根据比特创建一个全新的PDF文件 您可以使用pdfmark(在PDF文件完成后执行)来添加裁剪框和/或出血框,但是您创建的PDF文件将与开始创建的PDF文件不同Php 将裁剪框和分格框添加到现有PDF,php,ghostscript,Php,Ghostscript,对于一个项目,我需要在现有的PDF文件中添加一个裁剪和bleedbox。我尝试了很多东西,但由于某些原因,我没有让它发挥作用。我甚至无法放大PDF文件来为盒子腾出空间。我在这个很棒的网站上也找不到它。Ghostscript中有没有函数或方法可以执行这样的操作 有人能给我一个提示,告诉我正确的方向吗?你不能(准确地)用Ghostscript来做这件事,因为GS并不是简单地“修改”一个现有的PDF文件,当你通过GS发送PDF文件时,它会完全解释它,并根据比特创建一个全新的PDF文件 您可以使用pdf
你不能用pdftk这样的东西吗?如果我想在现有PDF的源代码中这样做,我会使用以下过程: 1.在QPDF的帮助下解压PDF源代码 QPDF在此处可用:。它是一个命令行工具,用于实现“PDF文件上的结构化、内容保留转换” 在这里,我将输入的PDF转换为可编辑的PDF,可以在任何文本编辑器中轻松加载和修改:
qpdf \
--qdf \
--object-streams=disable \
input.pdf \
editable.pdf
请注意,“可编辑”PDF中可能仍有一些二进制blob(如字体或ICC资源)。因此,您的文本编辑器应该能够优雅地处理这些问题
2.在您选择的文本编辑器中修改未打包(可编辑)的PDF
使用您选择的文本编辑器根据需要添加(或修改)/CropBox
和/BleedBox
值。(如果使用VIm,请使用VIm-b
运行它)
(我假设您很清楚PDF规范对各种/*框
值施加了哪些形式和语义限制,否则请阅读一些有关这些值的内容……)
所有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
>>
endobj
并将其另存为“edited.pdf”
请注意,保存此修改后的PDF后,它将“损坏”,因为附加行将使PDF的目录(即其xref
部分)无效,并且许多PDF阅读器将无法打开它而不会弹出错误或警告消息
因此,需要最后一步:
3.在QPDF的帮助下重新打包并修复已编辑的PDF
您将看到来自QPDF的警告,告诉您输入PDF需要对其xref
部分进行一些修复
%% 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
>>
qpdf edited.pdf modified.pdf