如何通过单个 GhostScript 调用进行转换、压缩和裁剪?

如何通过单个 GhostScript 调用进行转换、压缩和裁剪?

我使用 TeXLive 2010,并按照以下 6 步工作流程完成工作。我希望尽可能减少步骤数,因为我将把工作流程应用于基于 Web 的系统。

  1. latex %1
  2. dvips %1
  3. ps2pdf -dPDFSETTINGS#/prepress %1.ps
  4. gswin32c -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dSAFER -dNOPAUSE -dQUIET -dBATCH -sOutputFile=%1-temp.pdf %1.pdf
  5. pdfcrop --hires %1-temp.pdf %1.pdf
  6. pdftops -eps %1.pdf

我知道步骤 3、4 和 5 在内部调用 GhostScript。简而言之,如何将它们组合成单个 GhostScript 调用?

我目前的努力

我尝试按如下方式结合步骤 3 和 4,并且有效。

  1. latex %1
  2. dvips %1
  3. ps2pdf -dCompatibilityLevel=1.5 -dPDFSETTINGS#/prepress %1.ps
  4. rename %1.pdf %1-temp.pdf
  5. pdfcrop --hires %1-temp.pdf %1.pdf
  6. pdftops -eps %1.pdf

我仍然对结合上述步骤 3 和步骤 5 感兴趣。

答案1

您不能合并步骤 3 和步骤 5。步骤 3 和步骤 4 用于-sDEVICE=pdfwrite合并。步骤 5 用于-sDEVICE=bbox查找 bbox。您需要单独运行 gs 才能使用单独的设备。

您可以将rename %1.pdf %1-temp.pdf步骤 3改为 ,从而用 消除修订后的步骤 4。ps2pdf -dCompatibilityLevel#1.5 -dPDFSETTINGS#/prepress %1.ps %1-temp.pdf顺便说一下,我需要将=改为。#-dCompatibilityLevel#1.5

不值得进一步优化。如果您计划在用户提供的代码的 Web 系统上运行此代码,则请注意所有安全风险。您最好添加到-Rdvips并注意在内部pdfcrop执行pdftexpdfcrop --restricted有点帮助)等等。

相关内容