![ps2pdf、pdfcrop、pdftops、epstool 和 epstopdf 如何在后台调用 GhostScript?](https://linux22.com/image/238423/ps2pdf%E3%80%81pdfcrop%E3%80%81pdftops%E3%80%81epstool%20%E5%92%8C%20epstopdf%20%E5%A6%82%E4%BD%95%E5%9C%A8%E5%90%8E%E5%8F%B0%E8%B0%83%E7%94%A8%20GhostScript%EF%BC%9F.png)
我想知道直接调用 GhostScript 的语法以获得与以下每个命令相同的效果。
ps2pdf input.ps
pdfcrop --hires input
pdftops -eps input.pdf
epstool --copy --bbox input.eps output.eps
epstopdf --hires input.eps
答案1
您可以通过查看这些工具的源代码来获得这些信息。它们大多数都是脚本,根据命令行选项编译 Ghostscript 选项列表并在最后执行它。为了自动解码变量$OPTIONS
等,您可以复制这些脚本并在最终命令前添加一个,这样它就会打印在终端中而不是执行。一个更简单的替代方法是使用shell 调试模式(至少对于和)echo
启动它们,它会打印所有执行的命令。$SHELL -x script --args
sh
bash
对于您的 1. 我得到:
gs -P- -dSAFER -q -P- -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sstdout=%stderr -sOutputFile=input.pdf -P- -dSAFER -c .setpdfwrite -f input.ps
2 号是一个 Perl 脚本,仅使用 GS 进行 BBox 提取(正如fixbb
我在您的另一个问题中提到的我的脚本一样):
gs -sDEVICE=bbox -dBATCH -dNOPAUSE -c 保存 pop -f 输入.pdf
3 号是一个程序,不是脚本,并且libpoppler
在内部用于进行转换,而不是 Ghostscript。
第四点。再次简单地使用 Ghostscript 进行 BBox 提取,然后将其放入其他未更改的文件中。这里 BBox 首先被写入临时文件。
“gs”-dNOPAUSE-dBATCH-sDEVICE = bbox-c“> setpagedevice”-f“/ tmp / gsviewnIk3kp”
第 5 个用途(使用选项显示--debug
):
gs -q -dNOPAUSE -dSAFER -sDEVICE=pdfwrite -sOutputFile=input.pdf -dPDFSETTINGS=/prepress -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -dAutoRotatePages=/None - -c quit
答案2
问题出在哪里?cat `which ps2pdf`
在 Linux 或type ....
Windows 下执行 (不知道它是否具有与 Linux 相同的“哪个”功能)。
epstool
是一个程序,而不是脚本。
答案3
其中大部分是 shell/perl 脚本,因此您可以轻松了解它们的作用。gs
但它们所做的不仅仅是简单的调用,所以我只给出它们使用的主要选项。您必须阅读代码才能确切了解:
-sDEVICE=pdfwrite
-sDEVICE=bbox
- 不基于 ghostscript!
-sDEVICE=bbox
-sDEVICE=pdfwrite