Ghostscript:只打印一批文件的最后一页

时间:2015-01-27 15:24:38

标签: batch-file pdf count ghostscript pdftk

我想在Windows命令中仅打印一批.pdf文件的最后一页并将它们组合起来。

每个.pdf文件的页数都有所不同。

我可以用

确定最后一页
gs -q -c "(file.pdf) (r) file runpdfbegin pdfpagecount =" -f file.pdf

但它们如何打印并与Ghostscript结合使用?

2 个答案:

答案 0 :(得分:1)

你不能简单地说' LastPage'您需要单独运行每个文件并在每个文件之间更改FirstPage和LastPage。我还没有尝试过,但有点像:

gs -dFirstPage=10 -dLastPage=10 file1.pdf -dFirstPage=2 -dLastPage=2 file2.pdf....

可能会奏效。当然,您需要为每个文件更正FirstPage和LastPage。这几乎肯定不会在未来的版本中工作,因为FirstPage和LastPage的行为正在发生变化。该工作完成后,您将需要一种不同的方法。

可以编写一个PostScript程序,该程序打开每组PDF文件,确定每个文件的最后一页(使用您已有的代码),并在执行文件之前设置FirstPage和LastPage再次渲染它。

答案 1 :(得分:1)

这个答案不是使用Ghostscript,而是pdftk

对于手头的任务,这是更好的工具。 示例命令:

pdftk             \
    A=file1.pdf   \
    B=file2.pdf   \
    C=file3.pdf   \
  cat             \
    Aend          \
    Bend          \
    Cend          \
  output          \
    result.pdf

这在运行pdftk时使用了2个小技巧:

  1. '为AB和{{处理' Cfile1.pdffile2.pdf 1}}
  2. 附加到句柄的file3.pdf关键字以指示最后一页。
  3. end个句柄可用于指示页面范围,例如pdftk(意为C4-6的第4-6页)或{{1 (意思是file3.pdf的所有奇数页)。

    通过查看Bodd的输出来查找更多选项。

    通常,对此特定类型的作业使用file2.pdf要比使用Ghostscript快得多。

    如果您需要将Ghostscript用于其他功能(即它每次写入PDF输出时基本上构建一个全新的PDF文件),您仍然可以通过pdftk --help运行Ghostscript的。我的猜测是,即使pdftk + result.pdf次运行的总时间也低于让pdftk单独完成所有工作。