将所有 PDF 页面调整为字母大小 - 如何调整或删除 CropBox?
Posted
技术标签:
【中文标题】将所有 PDF 页面调整为字母大小 - 如何调整或删除 CropBox?【英文标题】:Resize all PDF pages to letter size - how to resize or remove CropBox? 【发布时间】:2020-06-05 16:52:43 【问题描述】:我使用的服务要求所有 PDF 页面的大小完全相同。现在,我的 PDF 的第二页是 US letter 大小,但第一页比这小一些 - 我希望第一页也是 letter 大小。
Here's a sample PDF 我开始的内容。以下是pdfinfo
对这个文件的开头所说的:
Creator: pdftk 2.02 - www.pdftk.com
Producer: itext-paulo-155 (itextpdf.sf.net-lowagie.com)
CreationDate: Fri Jun 5 11:37:13 2020 CDT
ModDate: Fri Jun 5 11:37:13 2020 CDT
Tagged: no
UserProperties: no
Suspects: no
Form: AcroForm
javascript: no
Pages: 2
Encrypted: no
Page 1 size: 576 x 755.999 pts
Page 1 rot: 0
Page 2 size: 612 x 792 pts (letter)
Page 2 rot: 0
Page 1 MediaBox: 0.00 0.00 576.00 756.00
Page 1 CropBox: 0.00 0.00 576.00 756.00
Page 1 BleedBox: 0.00 0.00 576.00 756.00
Page 1 TrimBox: 0.00 0.00 576.00 756.00
Page 1 ArtBox: 44.83 151.48 534.17 576.50
Page 2 MediaBox: 0.00 0.00 612.00 792.00
Page 2 CropBox: 0.00 0.00 612.00 792.00
Page 2 BleedBox: 0.00 0.00 612.00 792.00
Page 2 TrimBox: 0.00 0.00 612.00 792.00
Page 2 ArtBox: 0.00 0.00 612.00 792.00
File size: 484669 bytes
Optimized: no
PDF version: 1.
我的第一次尝试是这样的:
gs -dBATCH -dNOPAUSE -q \
-sPAPERSIZE=letter -dFIXEDMEDIA -dPDFFitPage \
-sDEVICE=pdfwrite -sOutputFile=/tmp/output.pdf \
/tmp/input.pdf
pdfinfo
对此的输出是这样说的:
Creator: pdftk 2.02 - www.pdftk.com
Producer: GPL Ghostscript 9.26
CreationDate: Fri Jun 5 11:46:15 2020 CDT
ModDate: Fri Jun 5 11:46:15 2020 CDT
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 2
Encrypted: no
Page 1 size: 603.429 x 792 pts
Page 1 rot: 0
Page 2 size: 612 x 792 pts (letter)
Page 2 rot: 0
Page 1 MediaBox: 0.00 0.00 612.00 792.00
Page 1 CropBox: 4.29 0.00 607.71 792.00
Page 1 BleedBox: 4.29 0.00 607.71 792.00
Page 1 TrimBox: 4.29 0.00 607.71 792.00
Page 1 ArtBox: 51.25 158.69 563.89 603.95
Page 2 MediaBox: 0.00 0.00 612.00 792.00
Page 2 CropBox: 0.00 0.00 612.00 792.00
Page 2 BleedBox: 0.00 0.00 612.00 792.00
Page 2 TrimBox: 0.00 0.00 612.00 792.00
Page 2 ArtBox: 0.00 0.00 612.00 792.00
File size: 143412 bytes
Optimized: no
PDF version: 1.7
此时我使用的服务仍然拒绝我的 PDF 页面大小不匹配,我猜是因为 PDF 的第 1 页设置了 CropBox。
此时我尝试使用以下命令将 CropBox 设置为与 MediaBox 相同的尺寸:
gs -dBATCH -dNOPAUSE -q \
-sPAPERSIZE=letter -dFIXEDMEDIA -dPDFFitPage \
-sDEVICE=pdfwrite -sOutputFile=/tmp/output.pdf \
-c "[/CropBox [0 0 612 792] /PAGES pdfmark" \
-f /tmp/input.pdf
但它似乎没有任何效果 - pdfinfo
仍然相同,除了文件大小在 143435 bytes
稍大。
如何调整或删除我的 PDF 的 CropBox 以使所有内容都以 MediaBox 页面大小呈现?
这是我的 Ghostscript 版本:
GPL Ghostscript 9.26 (2018-11-20)
【问题讨论】:
【参考方案1】:好吧,我发现 this answer 包含一种使用 sed
(!) 删除 CropBoxes 的方法,这似乎对我有用:
sed -i.bak -e "/CropBox/,/]/s#.# #g" /tmp/output.pdf
pdfinfo
:
Creator: pdftk 2.02 - www.pdftk.com
Producer: GPL Ghostscript 9.26
CreationDate: Fri Jun 5 12:03:07 2020 CDT
ModDate: Fri Jun 5 12:03:07 2020 CDT
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 2
Encrypted: no
Page 1 size: 612 x 792 pts (letter)
Page 1 rot: 0
Page 2 size: 612 x 792 pts (letter)
Page 2 rot: 0
Page 1 MediaBox: 0.00 0.00 612.00 792.00
Page 1 CropBox: 0.00 0.00 612.00 792.00
Page 1 BleedBox: 0.00 0.00 612.00 792.00
Page 1 TrimBox: 4.29 0.00 607.71 792.00
Page 1 ArtBox: 51.25 158.69 563.89 603.95
Page 2 MediaBox: 0.00 0.00 612.00 792.00
Page 2 CropBox: 0.00 0.00 612.00 792.00
Page 2 BleedBox: 0.00 0.00 612.00 792.00
Page 2 TrimBox: 0.00 0.00 612.00 792.00
Page 2 ArtBox: 0.00 0.00 612.00 792.00
File size: 143413 bytes
Optimized: no
PDF version: 1.7
希望有更好的方法在 Ghostscript 中执行此操作,而不是通过直接文本编辑来破坏文件,但现在它正在工作,我正在使用的服务正在接受该文件。
【讨论】:
以上是关于将所有 PDF 页面调整为字母大小 - 如何调整或删除 CropBox?的主要内容,如果未能解决你的问题,请参考以下文章
python - svg 或 pdf 的破坏性裁剪和调整大小