在 Linux 中从命令行拆分 PDF 文档?

在 Linux 中从命令行拆分 PDF 文档?

我想使用 Linux 中的命令行将 PDF 文档中的页面范围提取到新的 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.pdfoutput-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

  • 安装pip install pdfly更多的
  • 用法pdfly cat in.pdf 2:4 -o out.pdf更多的

一些细节:

 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.

相关内容