【问题标题】:How to set custom page size with Ghostscript如何使用 Ghostscript 设置自定义页面大小
【发布时间】:2012-09-22 10:13:20
【问题描述】:

我以 600 dpi,~ 9.36x12.67 英寸扫描了一些材料,并准备好 PostScript (PS) 格式。

现在,当我尝试使用 Ghostscript (GS) 将 PS 转换为 PDF 时,我得到了剪辑输出,因为我假设 GS 的默认页面大小设置为 A4。我在这里找到了可用的 GS 模板:http://www.ghostscript.com/doc/9.06/Use.htm#Known_paper_sizes 但没有一个与我的 PS 文件的尺寸非常匹配,所以:

我可以指示 GS 输出自定义尺寸吗?如果可以,如何输出?

-sPAPERSIZE 指令似乎只接受预定义的模板名称,如链接文档中所示。

【问题讨论】:

    标签: pdf ghostscript


    【解决方案1】:

    您可以使用 -gNNNNxMMMM 设置使用的页面大小,其中 NNMN 是 720 dpi(720 像素 == 1 英寸)时以 像素 为单位的宽度,MMMM 是 720 dpi 时以像素为单位的高度.

    或者您可以使用-dDEVICEWIDTHPOINTS=w -dDEVICEHEIGHTPOINTS=h 在 PostScript points 中设置自定义大小(72 磅 == 1 英寸)。

    如果我没记错的话,9.36 英寸 ≈= 674 点12.67 英寸 ≈= 912 点

    您还必须申请 -dPDFFitPage 才能使您的输入适合页面。

    所以你可以使用任何一个

    gs                          \
       -o output.pdf            \
       -sDEVICE=pdfwrite        \
       -dDEVICEWIDTHPOINTS=674  \
       -dDEVICEHEIGHTPOINTS=912 \
       -dPDFFitPage             \
        input.ps
    

    gs                   \
       -o output.pdf     \
       -sDEVICE=pdfwrite \
       -r600             \
       -g8112x7596       \
       -dPDFFitPage      \
        input.ps
    

    【讨论】:

    • 我想你想使用 -r720 来获得 720 dpi。无论如何感谢您的回答
    • 我有一个使用 Ghostscriptsharp(C# 实现)的应用程序。它只是一个 .dll,没有用于自定义页面大小的所有命令行选项(我可以找到)。关于如何在这个包装器中实现它的任何想法?
    • rasterizer.CustomSwitches.Add("-dMySwitch");
    【解决方案2】:

    什么对我有用:

    gs -sDEVICE=pdfwrite -r720 -g4308x6066 -dPDFFitPage -o out.pdf in.pdf

    4308x6066 是像素数,-r720 是每英寸的像素数。

    所以这里我们有 720dpi,例如 5 英寸,这将是 3600 像素。

    【讨论】:

      【解决方案3】:

      我发现 gs 正在裁剪我的输出,即使我已将页面强制为最大标准尺寸 A0。

      原因是 groff / grops 发送给 gs 的 PostScript 文档包含覆盖 Ghostscript 选择的 %%DocumentMedia 规范。

      解决方案是为groff 提供命令行标志-p-P48i,48i-p 告诉groff 将选项的其余部分传递给grops-P48i,48igrops 将纸张尺寸设置为 48 英寸 x 48 英寸。

      【讨论】:

        【解决方案4】:

        我使用的是 GhostPDL 9.10,虽然我的 8.5x13 纸张尺寸在 https://www.ghostscript.com/doc/current/Use.htm#Known_paper_sizes 列为 flsa-sPAPERSIZE=flsa 开关没有效果,但纸张尺寸仍然是 Letter。

        -g5100x7800 开关的正确单位匹配我的-r600(不是720); -g 有效。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-13
        • 2014-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-17
        • 2011-02-25
        • 1970-01-01
        相关资源
        最近更新 更多