后记为 PDF 缩放以适合 A4

Postscript to PDF scale to fit into A4

我需要通过将这个 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

这是生成的文件。如您所见,图片没有调整大小以适合,而是按原样放置:

首先; Ghostscript 中操作数的顺序很重要,它们按命令行顺序应用。因此,您可能希望在应用 -dFIXEDMEDIA 之前应用 -sPAPERSIZE 在应用 -dFIXEDMEDIA 之前应用 -sPAPERSIZE ,在应用 -dPDFFitPage.

之前应用这两个应用

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

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

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

编辑

问题是您的 PostScript 程序不请求媒体大小,它只是利用当时可用的任何媒体。有些程序会重新调整其内容以适应当前可用的任何媒体,这不是其中之一。任何不在当前媒体上的内容都可以被剪掉。

'FitPage' 代码依赖于请求媒体大小的 PostScript 程序,然后将其与当前(固定)大小进行比较。从中可以计算出内容的缩放比例,使其适合新媒体。

如果您的程序不请求媒体大小,那么 Ghostscript 就无法知道要将其缩放多少才能适合。

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

您可以修改 PostScript 程序的 header 以假装它是 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 处理文件相同的输出。