我需要通过将此13.44x16.44英寸Postscript文件放入页面中来创建A4 PDF文件。我以为ps2pdf
可以帮到我,但我无法达到预期的效果。
我使用以下命令创建PDF:
ps2pdf -dFIXEDMEDIA -dPDFFitPage -sPAPERSIZE=a4 ori.postscript salida.pdf
请注意,我使用了-dFIXEDMEDIA
和-dPDFFitPage
来强制将Postscript文件放入A4纸张尺寸,但是显然不起作用。
这是原始文件:
这是结果文件。如您所见,图像的大小并没有调整到适合的大小,而是按原样放置:
答案 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相同的输出。