【问题标题】:GhostScript Batch Mode?GhostScript 批处理模式?
【发布时间】:2011-11-17 20:58:53
【问题描述】:

我正在使用 GhostScript 将 PDF 转换为 PNG,问题是对于我正在调用的每个页面:

gs -sDEVICE=pnggray -dBATCH -dNOPAUSE -dFirstPage=10 -dLastPage=10 -r600 -sOutputFile=image_10.png pdf_file.pdf

这不好,例如,我想传递 dFirstPage=10 dLastPage=30 并使 GhostScript 自动提取文件名中带有 PAGE-NUMBER 的单独 png 文件中的每个页面,而无需使用不同的 sOutputFile 再次启动它。 .

我知道这可能很简单,但我想念它......

另外,如果有人能告诉我需要传递什么参数以使 ghostscript 完全静音运行,并且没有任何输出到控制台,那就太好了。

编辑:将 %d 添加到输出参数会添加运行次数,而不是页数。例如:

-dFirstPage=10 -dLastPage=15 -sOutputFile=image_%d.png

结果:

image_1.png、image_2.png、image_3.png 等...而不是: image_10.png、image_11.png、image_12.png ...

【问题讨论】:

  • 要让 ghostscript 静默运行,您可以使用选项 -sstdout=/dev/null。关于您问题的第一部分:阅读手册页我找不到任何有用的命令行。也许您可以编写一个小脚本来执行 GS 并重命名输出文件。

标签: linux bash ghostscript


【解决方案1】:

将此保存为文件

 #!/bin/bash
 case $# in [!3] ) printf "usage : ${0##*/} stPage endPage File\n" >&2 ;; esac
 stPage=$1
 endPage=$2
 (( endPage ++ ))
 file=$3
 i=$stPage
 while (( i < endPage  )) ; do
    gs  -sstdout=/dev/null -sDEVICE=pnggray -dBATCH -dNOPAUSE -dPage=$i -r600 -sOutputFile=image_$i.png ${file}

   (( i ++ ))
 done

查看ghost脚本手册看是否有-dPage=${num}选项,否则使用 -dFirstPage=${i} -dLastPage=${i}.

然后让它可以执行chmod 755 batch_gs.sh

最后用参数运行它

  batch_gs.sh 3 5 fileName

(轻微测试)。

我希望这会有所帮助。

【讨论】:

  • 我使用了几乎相同的 bash 脚本,问题是再次在每个页面上启动 ghostscript。虽然启动一次会导致执行速度更快(谈论数千页)。
  • 您可能需要编辑您的问题以指明这些限制。祝你好运。
【解决方案2】:

不幸的是,您想要做的事情是不可能的。也可以在这里和这里查看我的答案。

如果您想一次性完成所有 PNG 转换(无需为每个新页面重新启动 Ghostscript),您必须接受这样一个事实,即%d 宏总是以第一个 输出编号开始 em> 页面为1,当然你会获得更好的性能。

如果您不喜欢最终结果中的这种命名约定,您必须执行第二步,将结果文件重命名为其最终名称。

假设您的初始输出文件命名为 image_1.png ... image_15.png,但您希望它们命名为 image_25.png ... image_39.png,那么执行此操作的核心命令是:

 for i in $(seq 1 15); do
     mv image_${i}.png image_$(( ${i} + 24)).png
 done

注意,如果两个数字范围相交,这将出错,因为该命令会覆盖您尚未重命名的输入文件之一。为了保存,不要使用mv,而是先使用cp在临时子目录中复制新文件:

 for i in $(seq 1 15); do
     cp -a image_${i}.png temp/image_$(( ${i} + 14)).png
 done

【讨论】:

    猜你喜欢
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 2021-08-31
    • 2020-02-12
    • 2015-12-06
    相关资源
    最近更新 更多