使用ghostscript删除页面(不提取范围)

时间:2014-04-04 19:41:17

标签: pdf ghostscript

我知道ghostscript可以使用-dfirstpage -dlastpage只从一系列页面中创建一个文件,但我需要让它(或其他命令行程序)删除任何页面范围不是的pdf中的第二页明确告诉。我认为这会容易得多,因为大多数打印机都允许你指定“1,3-end”,我一直在使用PDFCreator这样做。

我能想到的一种方式(非常非常混乱)是提取第1页,将第3页提取到结尾,然后合并两个pdf。但我也不知道如何让GS确定页数。

2 个答案:

答案 0 :(得分:4)

首先确定,如果您使用Ghostscript的pdfwrite设备,则提取,删除或执行任何其他操作'对源PDF文件进行操作。我继续重申这一点,但我会再说一遍。

当您通过Ghostscript传递输入文件时,它完全被解释为传递给设备的一系列图形基元,通常设备会将基元渲染到位图。在“高水平”的情况下在pdfwrite PDF文件的情况下,如pdfwrite这样的设备,基元被重新分配到一个全新的文件中。

这种灵活性允许输入多种不同的页面描述语言(PostScript,PDF,PCL,PCL-XL,XPS),然后以几种不同的高级格式输出(PostScript,EPS,PDF,XPS, PCL,PCL-XL)。

但新文件与原文无关,除了它的外观。

现在,已经解决了这个问题......您可以使用“< c; toolin'中提供的pdf_info.ps PostScript程序。 Ghostscript安装目录,要获取有关PDF文件的各种信息,您可以获得的一件事是PDF中的页数。您也不需要打扰,使用-dLastPage = 1运行文件一次,然后使用-dFirstPage = 2再次运行它(不要设置LastPage),然后运行两个结果文件以创建一个文件每个页面的组合。

答案 1 :(得分:3)

使用合适的工具完成工作!

出于KenS概述的原因,Ghostscript并不是您想要实现的最佳工具。这项任务的更好工具是pdftk。要从input.pdf中删除第二页,您应该运行以下命令行:

pdftk  input.pdf  cat 1 3-end  output output.pdf