后记为PDF比例以适合A4

时间:2018-07-15 23:38:54

标签: linux pdf ghostscript

我需要通过将此13.44x16.44英寸Postscript文件放入页面中来创建A4 PDF文件。我以为ps2pdf可以帮到我,但我无法达到预期的效果。

我使用以下命令创建PDF:

ps2pdf -dFIXEDMEDIA -dPDFFitPage -sPAPERSIZE=a4 ori.postscript salida.pdf
请注意,我使用了-dFIXEDMEDIA-dPDFFitPage来强制将Postscript文件放入A4纸张尺寸,但是显然不起作用。

这是原始文件:

编辑: Here's the original file

original Postscript file

这是结果文件。如您所见,图像的大小并没有调整到适合的大小,而是按原样放置:

resulting PDF file

1 个答案:

答案 0 :(得分:2)

首先; Ghostscript中操作数的顺序很重要,它们以命令行顺序应用。因此,您希望先申请-sPAPERSIZE,然后再申请,先申请-dFIXEDMEDIA,然后再申请-dPDFFitPage之前的两个申请。

我还建议您直接使用Ghostscript,而不要使用ps2pdf脚本。

如果仍然无法解决问题,那么您将需要提供示例文件来显示问题,而我无法通过查看图片告诉您任何信息。

您还应该说明所使用的Ghostscript的操作系统和版本。

编辑

问题是您的PostScript程序不要求媒体大小,它只是利用了当时可能可用的任何媒体。某些程序将调整其内容以适应当前可用的任何媒体,但这不是其中之一。可以剪掉不在当前媒体上的任何内容。

“ FitPage”代码依赖于PostScript程序,请求媒体大小,然后将其与当前(固定)大小进行比较。由此可以算出可以扩展内容的大小,使其适合新媒体。

如果您的程序不要求媒体大小,则Ghostscript无法知道要缩放多少以使其适合。

现在您的程序确实具有BoundingBox注释,但这些只是注释,PostScript使用者将忽略它们。但是您可以使用它们.....

您可以修改PostScript程序的标题以假装其EPS,而不是PostScirpt程序。 :

更改

%!PS-Adobe-2.0

收件人

%!PS-Adobe-2.0 EPSF-3.0

,然后使用-dEPSFitPage代替-dPDFFitPage,它将产生类似您想要的东西(我认为)。请注意,PDFFitPage用于PDF输入,因此无论如何您都不应该真正使用它。对于PostScript输入,您需要-dPSFitPage

或者,请阅读BoundingBox注释并自行应用媒体尺寸请求和原始翻译。

此命令:

gs -sPAPERSIZE=a4 -dFIXEDMEDIA -dPSFitPage -sDEVICE=pdfwrite -sOutputFile=\temp\out.pdf -c "<</PageSize [968 1184]>> setpagedevice -20 -50 translate" -f d:\temp\ori.eps

产生与将文件视为EPS相同的输出。