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

Posted

技术标签:

【中文标题】使用 ghostscript 删除页面(不提取范围)【英文标题】:Use ghostscript to delete a page (not extracting a range) 【发布时间】:2014-04-04 19:41:16 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

为工作使用正确的工具!

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

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

【讨论】:

【参考方案2】:

首先确定,如果您使用 Ghostscript 的 pdfwrite 设备,则您在源 PDF 文件上提取、删除或执行任何其他“操作”操作。我不断重申这一点,但我要再说一遍。

当您通过 Ghostscript 传递输入文件时,它会被完全解释为一系列传递给设备的图形基元,通常设备会将这些基元渲染为位图。在 pdfwrite 等“高级”设备的情况下,原语被重新组合成一个全新的文件,而 pdfwrite 则是一个 PDF 文件。

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

但新文件与原文件没有任何关系,除了外观。

现在,已经解决了这个问题...您可以使用 Ghostscript 安装的“工具”目录中提供的 pdf_info.ps PostScript 程序来获取有关 PDF 文件的各种信息,其中之一是您可以获得的是 PDF 中的页数。您也无需费心,使用 -dLastPage=1 运行文件一次,然后使用 -dFirstPage=2 再次运行它(不要设置 LastPage),然后运行两个结果文件以创建一个包含每个页面的文件结合起来。

【讨论】:

以上是关于使用 ghostscript 删除页面(不提取范围)的主要内容,如果未能解决你的问题,请参考以下文章

来自 Ghostscript 的页面超出范围错误的 PDF 尺寸

Ghostscript Pdf Transparant Objects删除

将 PDF 页面自定义数字标签与 GhostScript 结合使用

Ghostscript 多页 PDF 转 PNG

使用 Ghostscript 在一个 postscript 批次中打印单独的 PDF 文件

使用 Ghostscript 打印时页面裁剪和旋转不正确