保留文件名Ghostscript

时间:2015-04-03 16:27:08

标签: pdf ghostscript

是否可以转换PDF文件并将输出使用相同的名称作为输入PDF?

我知道通过单独的重命名命令可以解决这个问题。但是我想弄清楚是否可以用GS来完成。

现在,我可以通过以下方式更改PDF版本:

gswin32c -q -dNOPAUSE -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 \
         -sOutputFile=a.pdf -dBATCH b.pdf

但是输入文件和输出文件名必须不同,如果我做这样的事情......

gswin32c -q -dNOPAUSE -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 \
         -sOutputFile=b.pdf -dBATCH b.pdf

......它不起作用。

我认为当文件试图覆盖自身时,内部的某些东西会搞砸。

有没有办法只使用Ghostscript解决这个问题?

3 个答案:

答案 0 :(得分:3)

不,当您使用Ghostscript处理输入和输出PDF时,不能使用相同的文件名(除非您使用与输入相比的输出使用不同的目录路径)。

答案 1 :(得分:0)

在Linux上,您可以使用缓冲区。我使用linux工具sponge实现了这一目标。

这对我来说可以减小文件大小,例如:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=- big.pdf | sponge big.pdf

答案 2 :(得分:0)

一个非常简单的解决方案是强制覆盖原始文件:

gs -sDEVICE=pdfwrite -sOutputFile=temp.pdf file.pdf; mv -f temp.pdf file.pdf

你可以在 exec() 的一行中组合这些命令;用于 PHP。