我有一个 PDF 文件,我想更改其页面大小;我们就这么称呼它吧file.pdf
。我得到了另一个 PDF 文件,它将作为模型file.pdf
;我们就这么称呼它吧model.pdf
。
澄清一下:我希望的页面与的页面file.pdf
同等。model.pdf
使用pdfinfo
onmodel.pdf
我得到以下相关信息:
Tagged: no
Form: none
Pages: 22
Encrypted: no
Page size: 612 x 783 pts
Page rot: 0
MediaBox: 0.00 0.00 720.00 891.00
CropBox: 54.00 54.00 666.00 837.00
BleedBox: 54.00 54.00 666.00 837.00
TrimBox: 54.00 54.00 666.00 837.00
ArtBox: 54.00 54.00 666.00 837.00
File size: 3324788 bytes
Optimized: no
PDF version: 1.7
我不太明白这些*Box
字段的前两列是什么意思,但是通过谷歌搜索,我得出的结论是我的目标是该MediaBox
字段的最后两列。所以,我想file.pdf
成为720x891
,并且我认为单位是pts
。
所以我找到了这个名为which的工具pdfposter
,它应该能够更改PDF页面的大小,并且我这样做了(注意我已经将点转换为英寸):
pdfposter -m10x12.375inch file.pdf new_file.pdf
一切都很顺利,但是当我检查时new_file.pdf
我pdfinfo
得到:
Tagged: no
Form: none
Pages: 32
Encrypted: no
Page size: 630.22 x 891 pts
Page rot: 0
MediaBox: 54.33 32.60 774.33 923.60
CropBox: 54.33 32.60 684.55 923.60
BleedBox: 54.33 32.60 684.55 923.60
TrimBox: 54.33 32.60 630.22 891.00
ArtBox: 54.33 32.60 630.22 891.00
File size: 3005203 bytes
Optimized: no
PDF version: 1.3
显然出了问题,因为新 PDF 页面的大小是 ,774.33x923.60
而不是720x891
;此外,前两列从 改为MediaBox
,0.00 0.00
我54.33 32.60
不知道为什么或它意味着什么。
我也尝试过使用pdfjam
,但它只是在边框上添加了更多空白,同时保持 PDF 的内容不变。
所以我的问题是:如何将我的file.pdf
页面大小更改为model.pdf
.
笔记:对我来说,调整大小后的 PDF 与原始 PDF 具有相同的质量非常重要。
答案1
您可以使用 pdfjam 和参数--papersize
来设置输出纸张尺寸。如果您想做的不仅仅是一起调整页面及其内容的大小,您可能还需要使用--scale
和。--offset
pdfjam --papersize="$(LC_ALL=C pdfinfo model.pdf | LC_ALL=C awk '/^Page size:/ {printf "{%fbp,%fbp}", $3, $5}')" file.pdf new_file.pdf
答案2
您可以尝试使用 Ghostscript,它有无数的选项,包括设置输出大小(以磅为单位):
gs -o output.pdf -sDEVICE=pdfwrite -dFIXEDMEDIA -dPDFFitPage \
-dDEVICEWIDTHPOINTS=720 -dDEVICEHEIGHTPOINTS=891 -dBATCH \
-dSAFER file.pdf
不确定你是否愿意-dPDFFitPage
,但你可以尝试有或没有。
答案3
ps2pdf
使用电子书设置对我来说效果非常好,例如将图像扫描的 pdf 从 3 MB 减少到 150 kB。
ps2pdf -dPDFSETTINGS=/ebook input.pdf output.pdf