我想使用 Linux 中的命令行将 PDF 文档中的页面范围提取到新的 PDF 文档中。请注意:
- PDFtk——PDF 工具包对我来说失败了:
$ pdftk 输入.pdf cat 1 详细输出 输出.pdf 错误:无法打开 PDF 文件: 输入.pdf 遇到错误。未创建输出。 完成。输入错误,因此没有创建输出。
从这里:
您(应该)知道 Pdftk 只不过是一个用 GCJ 编译的非常古老的 iText(一个 Java-PDF 库)版本,并扩展了一些命令行功能。
上述声明中的关键词是“VERY OLD”。
- 多价也失败了:
$ java -classpath /path/to/Multivalent20091027.jar 工具.pdf.Split -第 1 页输入.pdf 线程“main”中的异常 java.lang.NoClassDefFoundError: tool/pdf/Split 原因:java.lang.ClassNotFoundException:tool.pdf.Split 在 java.net.URLClassLoader$1.run(URLClassLoader.java:202) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:306) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247) 无法找到主类:tool.pdf.Split。程序将退出。
事实证明,这是一个有点棘手的软件:即使它在SourceForge上,并且说这里那
Practical Thought 慷慨地提供了这些工具供在命令行上免费使用
然而,这里它说:
浏览器是开源的。文档工具是免费赠品,并非开源。
这最终澄清了转换 - 粘合(拼版)PDF文档 - VoidCC:
从官方 sourceforge 网站链接的所有 Multivalent 版本都缺少工具包。
(编辑:似乎有一个包含工具的旧 Multivalent 版本,请参阅 SO 链接;但由于它看起来有点像废弃软件,我宁愿不使用它)
最后,我想避免使用本质上是 LaTeX 前端的工具,例如pdfjam。
Linux 下有没有这样的 PDF 分割命令行工具的选项?
答案1
我发现 pdfseparate 非常方便将范围拆分为单个页面。您可以将所有页面提取到名为 的文件中output-page1.pdf
,output-page2.pdf
如下所示:
pdfseparate input.pdf output-page%d.pdf
input.pdf
您可以使用第一页和最后一页标志提取第 1 - 5 页-f 1 -l 5
,
pdfseparate -f 1 -l 5 input.pdf output-page%d.pdf
如果您想将它们重新组合成页面范围,例如一个文档中的第 1-3 页和另一个文档中的第 4-5 页,您可以使用配套程序 pdfunite,如下所示:
pdfunite output-page1.pdf output-page2.pdf output-page3.pdf final-pages1-3.pdf
pdfunite output-page4.pdf output-page5.pdf final-pages4-5.pdf
我相信这些工具是 poppler 的一部分,可能已经安装在您的系统上。
答案2
对我来说,在 debian 上使用 pdftk 2.02 是可行的,但我认为它也应该适合您。
pdftk input.pdf cat 2-4 output out1.pdf
对于必须将单个 pdf 拆分为多个文件的一般情况,我找不到使用 pdftk 的方法,因此我使用 Bash 脚本。
答案3
您可以使用pdfjam
以下语法使用该工具
pdfjam <input-file> <page-ranges> -o <output-file>
页面范围的示例如下
3,67-70,80
来源:https://tex.stackexchange.com/questions/79623作者:Vincent Nivoliers
答案4
您可以使用pdfly
:
一些细节:
Page ranges refer to the previously-named file. A file not followed by a page
range means all the pages of the file.
PAGE RANGES are like Python slices.
Remember, page indices start with zero.
Page range expression examples:
: all pages.
-1 last page.
22 just the 23rd page.
:-1 all but the last page.
0:3 the first three pages.
-2 second-to-last page.
:3 the first three pages.
-2: last two pages.
5: from the sixth page onward.
-3:-1 third & second to last.
The third, "stride" or "step" number is also recognized.
::2 0 2 4 ... to the end.
3:0:-1 3 2 1 but not 0.
1:10:2 1 3 5 7 9
2::-1 2 1 0.
::-1 all pages in reverse order.