裁剪PDF / 使用Ghostscript添加裁剪框

10
我有几百个PDF需要裁剪,我愿意裁剪实际文档或者只是在每个文档中添加一个裁剪框,这样当打开PDF时就能显示正确的可视区域。
如何使用Ghostscript(v8.71)来做到这一点?我找到了以下命令: gs -sDEVICE=pdfwrite -sOutputFile=marked.pdf [/CropBox [54 54 1314 810] /PAGES pdfmark original.pdf 我已经尝试过这个命令(和我能想到的所有变体),但总是会出现错误,例如: Error: /undefinedfilename in ([/CropBox) 我尝试移动命令的参数,但没有任何效果。有人知道怎么做吗?
更新:修正语法后仍然没有裁剪框,请参见以下结果: pdfinfo -box -f 1 -l 3 original.pdf
Producer:       PDFlib 7.0.2 (PHP5/Linux)
CreationDate:   Wed Oct 21 11:41:04 2009
ModDate:        Wed Oct 21 13:38:22 2009
Tagged:         no
Pages:          1
Encrypted:      no
Page    1 size: 1423 x 918 pts
Page    1 MediaBox:     0.00     0.00  1423.00   918.00
Page    1 CropBox:      0.00     0.00  1423.00   918.00
Page    1 BleedBox:    54.00    54.00  1369.00   864.00
Page    1 TrimBox:      0.00     0.00  1423.00   918.00
Page    1 ArtBox:       0.00     0.00  1423.00   918.00
File size:      914373 bytes
Optimized:      no
PDF version:    1.4`


查询结果: pdfinfo -box -f 1 -l 3 marked.pdf


Producer:       GPL Ghostscript 8.71
CreationDate:   Wed Apr 27 15:43:38 2011
ModDate:        Wed Apr 27 15:43:38 2011
Tagged:         no
Pages:          1
Encrypted:      no
Page    1 size: 1423 x 918 pts
Page    1 MediaBox:     0.00     0.00  1423.00   918.00
Page    1 CropBox:      0.00     0.00  1423.00   918.00
Page    1 BleedBox:     0.00     0.00  1423.00   918.00
Page    1 TrimBox:      0.00     0.00  1423.00   918.00
Page    1 ArtBox:       0.00     0.00  1423.00   918.00
File size:      392382 bytes
Optimized:      no
PDF version:    1.4
更新:已发布示例PDF文件 -

可裁剪的.pdf
不可裁剪的.pdf


注意:本文涉及IT技术内容,翻译时应注意专业性和准确性。

您的Ghostscript命令实际上“运行”了,生成了新的输出——但是它忽略了您(错误的)pdfmark参数(尝试将其解释为传递给它的文件名)。在输出文件中,Ghostscript使所有的“框”都相同。 - Kurt Pfeifle
1个回答

10

你正在正确的道路上,尝试使用pdfmark/Ghostscript添加CropBox。但是你的语法并不完全正确。

请尝试以下语法:

 gs \
  -sDEVICE=pdfwrite \
  -o marked.pdf \
  -c "[/CropBox [54 54 1314 810] /PAGES pdfmark" \
  -f original.pdf

1
@Brian:展示一下这个命令的输出:pdfinfo -box -f 1 -l 3 original.pdf,我会告诉你一些例子数值,你可以用它们来实现真正的CropBox效果... - Kurt Pfeifle
1
@Brian:如果你使用“-o marked.pdf”,就可以避免出现“GS>”提示。 - Kurt Pfeifle
1
@Brian:注意,如果您能够获得替换原始CropBox定义的字符数与原始字符数相同(如上例),那就是真正的好运。您可以在替换中插入任意数量的空格,或者去掉/CropBox [之后的空格,使其成为/CropBox[,这样也不会有问题。但是如果您增加了总字符数,您将会看到“文件已损坏,并需要重新构建Xref部分”的消息... - Kurt Pfeifle
1
是的...pdfmark似乎不能修改已经存在的内容,它只能添加到已有的内容中。您可以使用“页面”pdfmark而不是“页”pdfmark,但首先需要知道有多少页。另一方面,PS是一种完整的编程语言,因此您可以构想编写一个可以检查页面计数并正常工作的程序。理论上。 - Mark Storer
1
回答Cropping a PDF using Ghostscript 9.01的说法是,如果命令行参数/CropBox在文件中已经定义,则会被忽略。解决方法是预处理文件并更改大小写,例如/crOPbOX,以便忽略内部设置。 - matt wilkie
显示剩余17条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接