【问题标题】:How to merge all PDF's in a directory with ghostscript如何使用ghostscript合并目录中的所有PDF
【发布时间】:2018-10-09 14:14:39
【问题描述】:

如何使用batchscript 读取目录 d:\ 中包含的文件,而不是像这样一个一个文件。我尝试了以下方法:

@echo off

"C:\Program Files\gs\gs9.25\bin\gswin32c.exe" -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 -dPDFSETTINGS=/printer -dColorImageResolution=90 -dAutoRotatePages=/None -dBATCH -dNOPAUSE -sOutputFile=d:\d\koran.pdf *d:\a\01.pdf d:\a\02.pdf d:\a\03.pdf d:\a\04.pdf d:\a\05.pdf d:\a\06.pdf d:\a\07.pdf d:\a\08.pdf d:\a\09.pdf d:\a\10.pdf d:\a\11.pdf d:\a\12.pdf d:\a\13.pdf d:\a\14.pdf d:\a\15.pdf d:\a\16.pdf d:\a\17.pdf d:\a\18.pdf d:\a\19.pdf d:\a\20.pdf d:\a\21.pdf d:\a\22.pdf d:\a\23.pdf d:\a\24.pdf*

exit

【问题讨论】:

    标签: pdf merge ghostscript


    【解决方案1】:

    Ghostscript 不会“合并”PDF 文件。它通过解释其输入的内容来创建新的 PDF 文件,这不是一回事。你应该阅读文档here

    您还没有说您尝试过的命令有什么问题,如果您不这样做,它将很难帮助您。

    最可能的问题是您在输入文件名的开头和结尾放置了 * 字符。 Ghostscript 本身不匹配通配符,它​​希望您告诉它您要单独处理的每个文件。所以为了处理一个目录的文件就是先得到一个所有文件的列表,然后告诉Ghostscritp依次使用这些文件。

    您可以使用 Ghostscript @filename 语法(记录在 here)告诉 Ghostscript 像使用命令行一样使用文件的内容。

    所以你需要做的就是想出一个shell脚本,它将文件名从一个文件夹写入一个文件。这不是 Ghostscript 问题,完全取决于您使用的操作系统。

    对于 Windows 类似:

    dir /B *.pdf >> files.txt
    gswin32c -sDEVICE=pdfwrite -dBATCH -dNOPAUSE -sOutputFile=\temp\out.pdf @files.txt
    del files.txt
    

    可能足以满足您的需求。

    【讨论】:

    • Merge 是 PDFCreator 等使用的术语。无论如何,这个脚本比当前版本的 PDFCreator 更加用户友好,可以合并 pdf 文件!
    • PDFCreator 与 Ghostscript 开发人员无关,我们不对他们的错误信息负责 :-)
    • 我必须在 Windows 11、GhostScript 9.55.0、powershell 控制台中将“@files.txt”参数放在双引号中。
    • 我不知道为什么,但由于我的硬件无法运行 Windows 11,我不得不相信你的话。
    【解决方案2】:

    你可以像下面这样执行:

    gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=merged.pdf *.pdf
    

    参考:

    https://gist.github.com/moaazsidat/b94185e9cfdba9e3cfb5bc90407e6397

    【讨论】:

    • 这不适用于 Windows 11 命令控制台 (powershell) 中的 GhostScript 9.55.0。 github参考链接的内容暗示通配符方法不起作用并提供了很好的替代方法(没有通配符)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 2017-08-05
    • 2021-11-06
    • 2011-12-30
    • 1970-01-01
    相关资源
    最近更新 更多