我有一堆PDF文档,所有这些文档都包含我要删除的标题页.
有没有办法以编程方式删除它们?
我找到的大多数PDF实用程序只能合并文档,但不能删除页面.在打印对话框中,我可以选择第2页,然后打印到文件,但我找不到以编程方式访问此功能的任何方法.
使用pdftk.
要删除第8页:
pdftk in.pdf cat 1-7 9-end output out.pdf
Run Code Online (Sandbox Code Playgroud)
仅供记录:您也可以使用 Ghostscript:
gs \
-o removed-page-1-from-input.pdf \
-sDEVICE=pdfwrite \
-dFirstPage=2 \
/path/to/input.pdf
Run Code Online (Sandbox Code Playgroud)
然而,pdftk
对于更好的工具是工作(并已推荐给你)。
此外,这个 Ghostscript 命令行可能会更改 input.pdf 中的一些属性,因为它本质上是重新提炼它。这可能是理想的改变,也可能不是。要控制此行为的各个方面(或抑制其中的某些方面),需要具有更多参数的更复杂的命令行。
pdftk 将按原样重新使用每个页面的原始 PDF 对象。
Ghostscript 也有附加参数-dLastPage
。与-dFirstPage
此一起允许提取页面范围。
最新版本采用了新参数-sPageList
. 这可以像这样使用:
-sPageList="1, 5-10, 12-"
Run Code Online (Sandbox Code Playgroud)
从输入文档中提取第 1、5-10 和 12-last 页。但是,我还没有(还)亲自测试过这个新功能,我不确定它的工作可靠性。
对于旧版本的 Ghostscript(以及最新版本),它应该可以将具有不同参数的相同输入 PDF 多次提供给相同的 GS 调用,以从文档中提取不连续的页面选择。您甚至可以通过这种方式组合来自不同文档的页面:
gs \
-o selected-pages.pdf \
-sDEVICE=pdfwrite \
-dFirstPage=2 \
-dLastPage=2 \
in1.pdf \
\
-dFirstPage=10 \
-dLastPage=15 \
in1.pdf \
\
-dFirstPage=1 \
-dLastPage=1 \
in1.pdf \
\
-dFirstPage=4 \
-dLastPage=6 \
in2.pdf
Run Code Online (Sandbox Code Playgroud)
注意事项:将使用非嵌入字体或相同字体名称但使用不同编码和/或不同子集(具有相同字体名称前缀)的不同文档中的页面组合在一起可能会导致结果出现错误的 PDF。
归档时间: |
|
查看次数: |
2609 次 |
最近记录: |