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

问题描述 投票:0回答:4

如何读取目录 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
pdf merge ghostscript
4个回答
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

可能足以满足您的需求。


0
投票

这个适用于 php:

if ($handle = opendir('./')) { while (false !== ($entry = readdir($handle))) { if ($entry != "." && $entry != ".." && strtolower(substr($entry, strrpos($entry, '.') + 1)) == 'pdf') {

$str = $str。' '.$条目; }}}

exec( '"C:\Program Files\gs\gs9.53.3 in\gswin64.exe" -dNOPAUSE -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -sOUTPUTFILE=combine.pdf -dBATCH '.$str.'');


-1
投票

我无法使用“files.txt”使其工作,但我正在使用它并且一切正常。

gswin64c -sDEVICE=pdfwrite -dBATCH -dNOPAUSE -sOutputFile="out.pdf" (Get-ChildItem -Path .\*.pdf)

-3
投票

您可以像下面这样执行:

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

参考:

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

© www.soinside.com 2019 - 2024. All rights reserved.