使用 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 结合使用