我正在使用一项服务,要求所有PDF页面大小均相同。现在,我的PDF的第二页是美国字母大小,但第一页要比美国字母大小小-我也希望第一页也要是字母大小。
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的第一页设置了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)
好吧,我发现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中有一种更好的方法,而不是通过直接文本编辑来破坏文件,但目前它正在运行,并且我正在使用的服务现在正在接受文件。