合并PDF空白
正在尝试使用.bat文件中的GhostScript 9.06 64位合并目录中的所有PDF 下面是merged.pdf,但只有一页空白合并PDF空白,pdf,batch-file,merge,ghostscript,Pdf,Batch File,Merge,Ghostscript,正在尝试使用.bat文件中的GhostScript 9.06 64位合并目录中的所有PDF 下面是merged.pdf,但只有一页空白 call gswin64c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf *.pdf 如果我真的指定了要合并的PDF,它可以正常工作。有什么好处 call gswin64c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=me
call gswin64c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf *.pdf
如果我真的指定了要合并的PDF,它可以正常工作。有什么好处
call gswin64c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf 1.pdf 2.pdf 3.pdf
不能在Ghostscript命令行上指定通配符,就这么简单
由于GS没有找到名为“*.pdf”的文件,因此它没有执行任何标记操作,在本例中,您将得到一个空白文件。Ghostscript无法自行执行通配符扩展 如果您调用
gs…*。pdf
在一个可以进行通配符扩展的shell中,它仍然可以工作
您链接到的站点和上面使用的代码存在差异:
调用gswin64c…
。但正如所说,Ghostscript不能扩展通配符本身您必须为批处理文件找到解决方案,首先将(扩展)*.pdf文件名存储在变量
%mypdfs%
中,然后调用gswin64c…%mypdfs%您不能从命令行指定通配符,但可以让gswin32c
运行命令文件
由于“命令文件”只要求开关之间有任意数量的空格(空格、制表符、换行符),并且文件大小没有限制,我们可以制作一个满足您需要的文件
echo -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf > files.gsx
dir *.pdf /b >> files.gsx
创建此文件files.gsx后,您可以使用
gswin32c@files.gsx
所有文件都将被合并为了解决这个问题,我做了以下工作: 1.
dir/B*.pdf>do.bat
2.)用记事本打开do.bat
,用空格替换\r\n
3.)插入:c:\Programs\gs\gs9.07\bin\gswin64-dNOPAUSE-sDEVICE=pdfwrite-sOutputFile=merged.pdf
然后执行do.bat
瞧,我想这些网站都错了吧?必须有一个简单的方法来做到这一点。我无法想象任何人指定要合并的所有PDF的名称。是的,所有这些站点都是错误的,Ghostscript在Windows中不处理命令shell通配符(请注意,您引用的站点描述的是Linux中的行为)。很抱歉,你觉得这很难相信,但事实确实如此。虽然当我在这里尝试同样的事情时,我实际上得到了一个错误“undefinedfilename”。也许你也这么认为,但你没有选择提及它?我并不是说我觉得很难相信。我只是确认那些网站是错误的,或者正如你在Linux中所说的那样。谢谢你的确认。我发现很难相信的是,没有办法循环遍历文件名,就像(*.pdf中的%%f),而是合并而不是转换。很抱歉,这也给出了一个未定义的文件名。请看,我认为这样做会起作用,但它似乎覆盖了合并的文件,因此,最终得到的pdf变量中只有最后一个.pdf<对于(*.pdf)中的%%f,请务必调用gswin64c-q-dNOPAUSE-dBATCH-sDEVICE=pdfwrite-sOutputFile=merged.pdf“%%~nf.pdf”
我使用两个.cmd文件使其正常工作