ps2pdf、pdfcrop、pdftops、epstool 和 epstopdf 如何在后台调用 GhostScript?

ps2pdf、pdfcrop、pdftops、epstool 和 epstopdf 如何在后台调用 GhostScript?

我想知道直接调用 GhostScript 的语法以获得与以下每个命令相同的效果。

  1. ps2pdf input.ps
  2. pdfcrop --hires input
  3. pdftops -eps input.pdf
  4. epstool --copy --bbox input.eps output.eps
  5. epstopdf --hires input.eps

答案1

您可以通过查看这些工具的源代码来获得这些信息。它们大多数都是脚本,根据命令行选项编译 Ghostscript 选项列表并在最后执行它。为了自动解码变量$OPTIONS等,您可以复制这些脚本并在最终命令前添加一个,这样它就会打印在终端中而不是执行。一个更简单的替代方法是使用shell 调试模式(至少对于和)echo启动它们,它会打印所有执行的命令。$SHELL -x script --argsshbash

对于您的 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但它们所做的不仅仅是简单的调用,所以我只给出它们使用的主要选项。您必须阅读代码才能确切了解:

  1. -sDEVICE=pdfwrite
  2. -sDEVICE=bbox
  3. 不基于 ghostscript!
  4. -sDEVICE=bbox
  5. -sDEVICE=pdfwrite

相关内容