如何设置Ghostscript的printf%d偏移量?

时间:2012-03-24 17:16:09

标签: printf ghostscript

如何指定自动命名单个输出文件的偏移量?这可能也适用于其他程序,但我现在需要它为Ghostscript工作,并且可以提供我的示例命令以供参考。

以下命令将a.pdf的每个单独的页面输出为单独的.png文件(0.png,1.png,2.png等等...)我想要做的是先说一下23 .png,24.png,25.png等...有没有办法可以通过命令行传递这个?显然(%d,23).png不起作用,但也许有另一种方法可以做到这一点?

gswin32c -q -dNOPAUSE -sDEVICE=tiffg4 -sOutputFile=%d.png a.pdf -c quit

谢谢!

修改 看起来像-dFirstPage做了类似的事情来抵消多页输入的起始页面,但我似乎找不到这样的输出。

最终编辑: 我会把这个问题留给那些可能想要提出更好想法的人,但这就是我最终用Python做的事情。 (此方法可能适用于任何可以访问命令行的语言)

输出从23.png开始并循环直到a.pdf EOF

import os
from pyPdf import PdfFileReader

offset = 22
totalpages = PdfFileReader.getNumPages()

start = 1

while start <= totalpages:
    os.command('gswin32c -q \
                         -dNOPAUSE \
                         -dFirstPage=start \
                         -dLastPage=start \
                         -sDEVICE=tiffg4 \
                         -sOutputFile='+str(start+offset)+'.png \ 
                          a.pdf \
                         -c \
                          quit')
    start = start+1

1 个答案:

答案 0 :(得分:0)

(顺便说一句,你不能使用-o %03d.png000.png来启动输出文件 - 它将以001.png作为第一页开头....另外,你的{{1无论您使用什么后缀输出文件,都会输出TIFF G4文件,而不是PNG文件。)

我只能想到一个难看的解决方法来实现你想要的。由于Ghostscript可以在同一个命令行中处理各种输入文件和命令行源,但仍然可以一次性写入输出,因此您可以在您感兴趣的文件之前预处理22页的文件:

-sDEVICE=tiffg4

现在只需删除前22个TIFF文件,真实PDF的第一页就在 gs \ -o %03.tiff \ -sDEVICE=tiffg4 \ 22page.pdf \ the-real-pdf.pdf

另一种方法是这样做:

023.tiff

请参阅22 gs \ -o %03.tiff \ -sDEVICE=tiffg4 \ -c "showpage showpage showpage showpage" \ -c "showpage showpage showpage showpage" \ -c "showpage showpage showpage showpage" \ -c "showpage showpage showpage showpage" \ -c "showpage showpage" \ -f the-real-pdf.pdf 个命令?它导致Ghostscript在showpage文件轮到之前处理22个空页的PostScript输入。甚至更好:

-f the-real-pdf.pdf

要为TIFF创建PNG文件,只需使用 gs \ -o %03.tiff \ -sDEVICE=tiffg4 \ -c "$(for i in $(seq 1 22); do echo showpage; done)" \ -f the-real-pdf (或-sDEVICE=pngalphapngmonopng256)...