【问题标题】:Preserve file name Ghostscript保留文件名 Ghostscript
【发布时间】:2015-04-03 16:27:07
【问题描述】:

是否可以转换 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 来解决这个问题?

【问题讨论】:

    标签: pdf ghostscript


    【解决方案1】:

    在 linux 上,您可以使用缓冲区。我使用linux工具sponge来实现这个。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        您可以将这些指令组合在一起,例如在 exec(); 中的一行中。用于 PHP。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-16
          • 1970-01-01
          • 2016-10-18
          • 1970-01-01
          • 2011-07-09
          • 2012-02-24
          • 1970-01-01
          相关资源
          最近更新 更多