合并的PDF空白

时间:2012-09-11 16:38:25

标签: pdf batch-file merge ghostscript

尝试在.bat文件中使用GhostScript 9.06 64bit合并目录中的所有pdf

以下,make merged.pdf,但它是1页空白

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

4 个答案:

答案 0 :(得分:2)

您不能在Ghostscript命令行上指定通配符,就像那样简单。

由于GS没有找到名为'* .pdf'的文件,因此它没有执行任何标记操作,在这种情况下,您会得到一个空白文件。

答案 1 :(得分:1)

Ghostscript本身不能进行通配符扩展。

如果你从可以进行通配符扩展的shell中调用gs ... *.pdf,它仍然可以工作。

您链接的网站与您上面使用的代码存在差异:

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

  2. 链接网页中的代码是Unix shell,它在 Ghostscript看到自己的命令行之前执行通配符扩展。当Ghostscript看到它时,已经发生了通配符扩展。

  3. 您必须找到批处理文件的解决方案,首先将(扩展的)* .pdf文件名存储在变量%mypdfs%中,然后执行call gswin64c ... %mypdfs%

答案 2 :(得分:1)

您无法从命令行指定通配符,但可以使gswin32c运行命令文件。

作为'命令文件'只需要将开关分隔开任意数量的空白区域(空格,制表符,换行符),并且文件大小没有限制,我们可以创建一个满足您需要的文件

echo -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf > files.gsx
dir *.pdf /b >> files.gsx

创建此文件 files.gsx 后,您可以使用

创建文件
  

gswin32c @ files.gsx

将合并所有文件

答案 3 :(得分:1)

我做了以下事情来解决这个问题:

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