【问题标题】:Ghostscript: print only last page of batch of filesGhostscript:仅打印一批文件的最后一页
【发布时间】:2015-03-26 06:33:14
【问题描述】:
我想在 Windows 命令上仅打印一批 .pdf 文件的最后一页并将它们组合起来。
每个 .pdf 文件的页数各不相同。
我可以用
确定最后一页
gs -q -c "(file.pdf) (r) file runpdfbegin pdfpagecount =" -f file.pdf
但是如何打印它们并与 Ghostscript 结合呢?
【问题讨论】:
标签:
batch-file
pdf
count
ghostscript
pdftk
【解决方案1】:
这个答案不是使用Ghostscript,而是pdftk。
对于手头的任务,这是更好的工具。 示例命令:
pdftk \
A=file1.pdf \
B=file2.pdf \
C=file3.pdf \
cat \
Aend \
Bend \
Cend \
output \
result.pdf
这使用了运行 pdftk 时可用的 2 个小技巧:
-
'句柄'
A、B 和 C 用于 file1.pdf、file2.pdf 和 file3.pdf
-
end 关键字附加到句柄以指示最后一页。
pdftk 句柄可用于指示页面范围,例如C4-6(表示file3.pdf 的第4-6 页)或Bodd(表示所有奇数页file2.pdf)。
通过查看pdftk --help 的输出找到更多选项。
通常,使用 pdftk 处理这种特定类型的作业比使用 Ghostscript 快得多。
如果您需要将 Ghostscript 用于它的其他功能(即它基本上每次写入 PDF 输出时都会构建一个全新的 PDF 文件),您仍然可以通过 Ghostscript 运行result.pdf。我的猜测是,即使是 pdftk + gs 运行的总时间也将低于让 gs 单独完成所有工作。
【解决方案2】:
您不能简单地说“LastPage”,您需要单独运行每个文件并在每个文件之间更改 FirstPage 和 LastPage。我还没有尝试过,但类似:
gs -dFirstPage=10 -dLastPage=10 file1.pdf -dFirstPage=2 -dLastPage=2 file2.pdf....
可能会奏效。当然,您需要为每个文件正确设置 FirstPage 和 LastPage。这几乎肯定不会在未来的版本中起作用,因为 FirstPage 和 LastPage 的操作正在发生变化。完成这项工作后,您将需要一种不同的方法。
您可以编写一个 PostScript 程序,该程序打开一组 PDF 文件中的每一个,确定每个文件的最后一页(使用您已有的代码)并在执行文件之前设置 FirstPage 和 LastPage再次渲染它。