考虑this PDF。我正在尝试使用以下命令将其转换为标准字母大小 (8.5 x 11)。
gs -dFIXEDMEDIA -dBATCH -dNOPAUSE -sPAPERSIZE=letter \
-dPDFFitPage -q -sDEVICE=pdfwrite -sOutputFile=out.pdf \
dean08mapreduce.pdf
Here is pdfinfo
在输出上。
Producer: GPL Ghostscript 9.10
CreationDate: Mon Nov 17 18:25:01 2014
ModDate: Mon Nov 17 18:25:01 2014
Tagged: no
Form: none
Pages: 7
Encrypted: no
Page size: 596.225 x 792 pts
Page rot: 0
File size: 126908 bytes
Optimized: no
PDF version: 1.4
Here is pdfinfo
在原文上:
Producer: Creo Normalizer JTP
CreationDate: Fri Dec 21 09:09:07 2007
ModDate: Fri Dec 21 14:46:23 2007
Tagged: no
Form: AcroForm
Pages: 7
Encrypted: no
Page size: 603 x 801 pts
Page rot: 0
File size: 235239 bytes
Optimized: yes
PDF version: 1.3
请注意,输出具有正确的高度,但宽度不正确。它有效地8.3 x 11
, not 8.5 x 11
.
我已经尝试过解决方案here and here但都没有达到我的要求。
我怎样才能强制PDF完全正确8.5 x 11
?
我不介意是否需要在两侧添加一点空白。
双重转换不是一个好的计划,您可能在每一步都会引入问题,特别是因为 PostScript 不支持 PDF 的图形模型(特别是它不支持透明度)
您的问题是原始 PDF 文件包含 CropBox,它由 Ghostscript pdfwrite 设备保留。 pdfinfo 的输出告诉您 PDF 文件的大小,并将 CropBox 考虑在内。 MediaBox 实际上是 612x792,即 8.5x11,这正是您想要的。
高度给出不同的原因是因为新的 MediaBox 位于原始 CropBox 内部,因此它是给出的两个框的交集。
如果您不希望保留 CropBox,则必须构建新的 CropBox 页面或 PAGES pdfmark 并将其作为 PostScript 发送。这并非完全不重要。在您的情况下,每个页面都有一个 CropBox(它不是整个文档的单个默认值),因此您需要覆盖每个页面上的 CropBox。为此,您需要定义一个 /EndPage 过程,该过程使用 pdfmark 设置所需的 CropBox,然后发送该结果before您处理 PDF 文件。
This :
gs -sDEVICE=pdfwrite \
-dDEVICEWIDTHPOINTS=612 -dDEVICEHEIGHTPOINTS=792 -dFIXEDMEDIA \
-sOutputFile=out.pdf \
-c "<</EndPage {0 eq {[/CropBox [0 0 612 792] /PAGE pdfmark true}{false}ifelse}>> setpagedevice" \
-f dean08mapreduce.pdf
为我工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)