使用 Ghostscript 指定 PDF 页面大小

Posted

技术标签:

【中文标题】使用 Ghostscript 指定 PDF 页面大小【英文标题】:Specifying PDF page size with Ghostscript 【发布时间】:2016-08-30 15:33:49 【问题描述】:

我想在指定页面大小和方向的同时使用 Ghostscript 将 EPS 文件转换为 PDF。我可以将 EPS 文件转换为 PDF 文件:

C:\Program Files (x86)\gs\gs9.19\lib>ps2pdf D:\temp\Dmap-396.eps D:\temp\result.pdf

但我无法更改页面大小或方向。我正在尝试:

ps2pdf D:\temp\Dmap-396.eps D:\temp\result.pdf -dDEVICEWIDTHPOINTS=734.4 -dDEVICEHEIGHTPOINTS=475.2 -dFIXEDMEDIA

您知道如何更改 PDF 的页面大小和方向吗?我对其他工具持开放态度,特别是如果它们可以与 Python 脚本一起使用。

最终我想在 Python 脚本中运行此代码,如下所示,但我收到错误 Unrecoverable error: typecheck in .putdeviceprops

from subprocess import check_output
from subprocess import call
from time import sleep

somecommand = "ps2pdf -dDEVICEWIDTHPOINTS=734.4 
    -dDEVICEHEIGHTPOINTS=475.2 -dFIXEDMEDIA -dPDFFitPage 
    D:\\temp\\Dmap-396-3-9.eps D:\\temp\\result.pdf".split(" ")

call(somecommand, shell=True)

~~~~~~~~~~~~~~~~~~~~~~~~~~ 这是我的工作 Python 脚本:

from subprocess import check_output
from subprocess import call
from time import sleep
import ghostscript

somecommand = "gswin32c -o D:\\temp\\output.pdf -dDEVICEWIDTHPOINTS=734.4 
-dDEVICEHEIGHTPOINTS=475.2 -sDEVICE=pdfwrite -f D:\\temp\\Dmap.eps".split(" ")
call(somecommand, shell=True)

【问题讨论】:

【参考方案1】:

使用 -dDEVICEHEIGHTPOINTS 和 -dDEVICEHEIGHTPOINTS 设置所需的媒体,并设置 -dFIXEDMEDIA。您提供的宽度/高度设置本质上是默认值;在输入请求其他内容之前使用它们。如果你设置了 FIXEDMEDIA 那么它就变成了固定的、不可更改的。

您几乎肯定想要设置 -dPDFFitPage 来缩放内容,以便原始媒体适合新媒体。否则,部分内容会从新尺寸的媒体中脱落。

哦,开关的顺序很重要,它们必须输入之前,你让它们在输入文件之后。与其使用 ps2pdf shell 脚本,不如使用 Ghostscript 本身。

【讨论】:

我更改了选项的顺序,使其为ps2pdf -dDEVICEWIDTHPOINTS=734.4 -dDEVICEHEIGHTPOINTS=475.2 -dFIXEDMEDIA D:\temp\Dmap.eps D:\temp\result.pdf,但我收到错误Unrecoverable error: typecheck in .putdeviceprops。我在 Windows 7 上遇到此错误,当我在 Ubuntu 14.04 上输入它时,它运行得很好。 我将 Python 脚本添加到我想要开始工作的问题中,以便运行 PDF 创建。 最好只使用 Ghostscript 而不是 ps2pdf shell 脚本。如果没有其他原因,您可以确切地看到命令是什么。我认为你的问题是 -d....POINTS 期望是整数,你不能有小数点。因此出现类型检查错误。 很酷,谢谢!我终于让它工作了。这是我的最终命令:gswin32c -o output.pdf -dDEVICEWIDTHPOINTS=734.4 -dDEVICEHEIGHTPOINTS=475.2 -sDEVICE=pdfwrite -f Dmap.eps

以上是关于使用 Ghostscript 指定 PDF 页面大小的主要内容,如果未能解决你的问题,请参考以下文章

使用 ghostscript 删除页面(不提取范围)

Ghostscript.NET.dll 打印pdf到指定打印机

Ghostscript.net 打印 pdf 页面方向

如何使用 Ghostscript 将 PDF 中的页面替换为另一个页面?

将 PDF 页面自定义数字标签与 GhostScript 结合使用

使用 Ghostscript 将 PDF 转换为 TIFF 时保留页面尺寸