我需要创建一个A4 PDF文件,把这个13.44x16.44英寸的Postscript文件放入页面。我以为ps2pdf能帮到我,但我不能得到想要的效果。
我使用此命令创建PDF:
ps2pdf -dFIXEDMEDIA -dPDFFitPage -sPAPERSIZE=a4 ori.postscript salida.pdf
请注意,我使用了-dFIXEDMEDIA-dPDFFitPage来强制将Postscript文件调整为A4纸张大小,但这些显然不起作用。
这是原始文件:
编辑:Here's the original file
linux - 后记为PDF比例以适合A4-LMLPHP
这就是结果文件。如您所见,图像的大小并没有调整到合适的大小,而是按如下方式放置:
linux - 后记为PDF比例以适合A4-LMLPHP

最佳答案

首先,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处理文件相同的输出。

关于linux - 后记为PDF比例以适合A4,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51353015/

10-10 04:06