【问题标题】:How to convert all folder pdfs to png using ghostscript如何使用ghostscript将所有文件夹pdf转换为png
【发布时间】:2017-08-08 12:36:47
【问题描述】:

我想将文件夹的所有 pdf 转换为 png 图像,比如如果我在文件夹名称 test1.pdf 和 test2.pdf 中有两个 pdf 有两个页面,那么它应该生成 test1-1.png ,test1-2.png ,test2-1.png,test2-2.png。 我正在使用这个命令行,我应该放置什么而不是 '#-%d.png'?

gs -dNOPAUSE -dBATCH -sDEVICE=png16m -sOutputFile="/var/www/pdf_png/pdfs/#-%d.png" /var/www/pdf_png/pdfs/*.pdf

【问题讨论】:

    标签: ghostscript


    【解决方案1】:

    你不能单独使用 Ghostscript 来完成,你需要编写一个 shell 脚本来在每个源文件上调用 Ghostscript。

    question 中有一个脚本,您可以根据自己的目的进行调整

    【讨论】:

    • 感谢您的回复先生,我在 $(find "C:/pdfthumbs/input/test_pdf/" -name "*.pdf"); do e="$(basename $i '.pdf')-%d.png";gswin -dNOPAUSE -dBATCH -sDEVICE=png16m -sOutputFile="C:/pdfthumbs/input/test_images/"$e $i;完成它在 ubuntu 中工作,但同样的事情不适用于“win64”。
    • 嗯,这是因为 Windows 命令 shell 不是 bash,所以 bash 脚本无法工作。我向你指出了这个问题,因为你似乎在使用 Linux。如果您在 Ghostscript 标记下搜索该站点,您会发现适用于 Windows 的类似解决方案。
    【解决方案2】:
    find . -type f -iname "*.pdf" -exec sh -c 'gs -dNOPAUSE -dBATCH -sDEVICE=pngalpha -r300 -sOutputFile=$1.png $1' x {} \;
    

    注意:这仍然会输出FILENAME.pdf.png,但是嘿...这是一个单行...

    说明

    • find 命令查找所有pdf 文件并将它们通过-exec 传递给sh
    • {} 表示文件名,但为了在命令中使用两次,它必须使用 sh -c 技巧作为位置参数传递
    • 如果您想知道字符 x 作为 $0 参数传递,因为通常 $0 是 shellname
    • \; 是用于表示命令结束的字符

    【讨论】:

      猜你喜欢
      • 2011-09-08
      • 2013-12-27
      • 1970-01-01
      • 2013-09-25
      • 2010-11-01
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      • 2017-11-15
      相关资源
      最近更新 更多