如何读取目录 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
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
可能足以满足您的需求。
这个适用于 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.'');
我无法使用“files.txt”使其工作,但我正在使用它并且一切正常。
gswin64c -sDEVICE=pdfwrite -dBATCH -dNOPAUSE -sOutputFile="out.pdf" (Get-ChildItem -Path .\*.pdf)
您可以像下面这样执行:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=merged.pdf *.pdf
参考:
https://gist.github.com/moaazsidat/b94185e9cfdba9e3cfb5bc90407e6397