【问题标题】:Postscript to PDF scale to fit into A4Postscript 到 PDF 缩放以适合 A4
【发布时间】:2018-12-23 11:33:04
【问题描述】:

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

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

【问题讨论】:

    标签: linux pdf ghostscript


    【解决方案1】:

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

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

    如果这仍然对您不起作用,那么您将需要提供一个示例文件来显示问题,我无法通过查看图片来告诉您任何事情。

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

    编辑

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

    “FitPage”代码依赖于请求媒体尺寸的 PostScript 程序,然后将其与当前(固定)尺寸进行比较。从中可以计算出要扩展多少内容以适应新媒体。

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

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

    您可以修改 PostScript 程序的标头以假装它是 EPS 而不是 PostScirpt 程序。 :

    改变

    %!PS-Adobe-2.0
    

    %!PS-Adobe-2.0 EPSF-3.0
    

    然后使用-dEPSFitPage 而不是-dPDFFitPage 然后它会产生(我认为)你想要的东西。请注意, PDFFitPage 用于 PDF 输入,因此您不应该真的使用它。对于 PostScript 输入,您需要 -dPSFitPage

    或者,阅读 BoundingBox cmets 并自己应用媒体大小请求和原点转换。

    这个命令:

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

    【讨论】:

    • 嗨@KenS,感谢您的回答。我改变了参数的顺序,但我得到了相同的结果。我使用的 Ghostscript 版本是 Ubuntu 16.04 64 位上的 9.18。我还添加了指向原始文件的链接以供下载和测试。
    • 很好的答案!,我终于使用 -dEPSFitPage 来产生我想要的结果。非常感谢。
    猜你喜欢
    • 2012-10-03
    • 1970-01-01
    • 2017-07-08
    • 2015-07-03
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    相关资源
    最近更新 更多