我必须将给定的PDF从A4(210mm*297mm
)更改为216mm*303mm
。
每个尺寸的额外6毫米应设置为每侧3毫米的白色边框。 PDF页面的原始内容应以输出页面为中心。
我尝试了convert
:
convert in.pdf -bordercolor "#FFFFFF" -border 9 out.pdf
这给了我完全所需的结果但是我在PDF中松散了原始图像的清晰度。这有点模糊。
我还检查了
convert in.pdf out.pdf
根本没有任何变化,但也搞砸了图像。
所以我尝试了Ghostcript但没有得到任何结果。我迄今为止从德国方面找到的最佳方法是:
gs -sOutputFile=out.pdf -sDEVICE=pdfwrite -g6120x8590 \
-c "<</Install{1 1 scale 8.5 8.5}>> setpagedevice" \
-dNOPAUSE -dBATCH in.pdf
但是我得到错误:/ typecheck in - .postinstall - 。
答案 0 :(得分:3)
默认情况下,Imagemagick将输入的PDF文件转换为72dpi的图像。这是非常低的分辨率,因为你经历了第一次。 Imagemagick的输出始终是光栅图像,因此如果您的输入PDF是文本,它将不再是。
如果你不介意输出PDF越来越大,你可以简单地增加Imagemagick使用-density
选项探测原始PDF的比例,如下所示:
convert -density 600 in.pdf -bordercolor "#FFFFFF" -border 9 out.pdf
我使用了600,因为它是适合OCR的最佳点。我建议尝试300,450,600,900和1200,并选择最好的不会变得难以置信的巨大。
答案 1 :(得分:2)
在媒体上移动内容并不是特别困难,但它确实意味着改变大多数PDF操作包避免的PDF文件的内容流,这是有充分理由的。
上面引用的代码实际上不起作用,它在操作数堆栈上留下了垃圾,PLRM明确声明它后跟一个隐式initgraphics
,它将重置所有标准参数。
您可以尝试设置/BeginPage
过程来翻译原点,这可能会起作用:
<</BeginPage {8.5 8.5 translate} >> setpagedevice
请注意,您不是简单地操纵原始PDF文件; Ghostscript获取原始PDF文件,将其解释为图形基元,然后将这些基元重新组合成新的PDF文件,这有影响......例如,如果图像是原始的DCT编码(JPEG),它将被解压缩在传递到输出文件之前。您可能不想重新应用DCT编码,因为这会引入可见的伪像。
更简单的替代方案,但涉及多个处理步骤,因此更有可能出现问题,首先使用ps2write
设备将PDF转换为PostScript,指定媒体大小,以及-dCenterPages
开关,然后使用pdfwrite
设备将生成的PostScript转换为新的PDF文件。
答案 2 :(得分:0)
而不是
-g6120x8590 \
-c "<</Install{1 1 scale 8.5 8.5}>> setpagedevice"
(这是错的),您应该使用:
-g6120x8590 \
-c "<</Install{8.5 8.5 translate}>> setpagedevice"
或
-g6120x8590 \
-c "<</Install{3 25.4 div 72 mul dup translate}>> setpagedevice"
(让Ghostscript计算&#34; 3mm == 8.5pt
&#34;本身...)