使用 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.NET.dll 打印pdf到指定打印机
如何使用 Ghostscript 将 PDF 中的页面替换为另一个页面?