合并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

正在尝试使用.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=merged.pdf 1.pdf 2.pdf 3.pdf

不能在Ghostscript命令行上指定通配符,就这么简单


由于GS没有找到名为“*.pdf”的文件,因此它没有执行任何标记操作,在本例中,您将得到一个空白文件。

Ghostscript无法自行执行通配符扩展

如果您调用
gs…*。pdf
在一个可以进行通配符扩展的shell中,它仍然可以工作

您链接到的站点和上面使用的代码存在差异:

  • 您的代码是DOS批处理,使用
    调用gswin64c…
    。但正如所说,Ghostscript不能扩展通配符本身

  • 链接网页中的代码是unixshell,它在Ghostscript看到自己的命令行之前进行通配符扩展。当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文件使其正常工作