如何使用 Ghostscript 合并目录中的所有 PDF

Ari*_*rik 3 pdf merge ghostscript

我怎样才能读取目录 d:\ 中包含的文件而batchscript不是像这样一个一个的文件。我已经尝试过以下方法:

@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
Run Code Online (Sandbox Code Playgroud)

Ken*_*enS 5

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

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

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

您可以使用 Ghostscript @filename 语法(记录在此处记录)告诉 Ghostscript 使用文件的内容,就好像它是命令行一样。

因此,您需要做的就是编写一个 shell 脚本,它将文件夹中的文件名写入文件中。这不是 Ghostscript 问题,完全取决于您使用的操作系统。

对于 Windows 来说:

dir /B *.pdf >> files.txt
gswin32c -sDEVICE=pdfwrite -dBATCH -dNOPAUSE -sOutputFile=\temp\out.pdf @files.txt
del files.txt
Run Code Online (Sandbox Code Playgroud)

可能足以满足您的需求。

  • 在 Windows 10 上使用 powershell:`Get-ChildItem -Path D:\*.pdf -name | 输出文件 files.txt` 和 `gswin64c -sDEVICE=pdfwrite -dBATCH -dNOPAUSE -sOutputFile=D:/out.pdf "@files.txt"` (3认同)