返回

PDF 自动分割:根据书签拆分合并的 PDF

Linux

利用书签自动分割 PDF

问题:

处理合并的 PDF 时,有时我们希望根据书签将其分割成单独的部分。然而,如果我们没有原始页码信息,此任务可能会变得困难。

解决方法:

利用 Linux 工具,我们可以根据书签自动分割 PDF。此方法涉及以下步骤:

  1. 安装必要软件包

    • pdftk
    • poppler-utils
  2. 提取书签和页码范围

    • 使用 pdftk 提取 PDF 中的书签和页码范围信息。
  3. 解析书签和页码范围

    • 编写一个 Python 脚本来解析提取的信息,将书签与页码范围配对。
  4. 分割 PDF

    • 使用 pdftk 根据页码范围将 PDF 分割成单独的部分,每个部分对应一个书签。

示例:

我们有一个名为 merged.pdf 的合并 PDF,其中包含三个书签:

  • Chapter 1
  • Chapter 2
  • Chapter 3

按照上述方法,我们可以将其分割为三个单独的 PDF:

  • Chapter 1.pdf
  • Chapter 2.pdf
  • Chapter 3.pdf

代码实现:

Python 脚本如下:

import re

with open('dump.txt') as f:
    data = f.read()

# 提取书签
bookmarks = re.findall(r'BookmarkTitle: (.+?)\n', data)

# 提取页码范围
page_ranges = re.findall(r'Page: (\d+)\n', data)

# 将书签与页码范围配对
bookmark_page_ranges = dict(zip(bookmarks, page_ranges))

分割 PDF 的命令如下:

for bookmark, page_range in bookmark_page_ranges.items():
    output_file = f'{bookmark}.pdf'
    pdftk input.pdf cat {page_range} output {output_file}

常见问题解答:

1. 此方法是否适用于所有 PDF 文件?

  • 此方法适用于具有有效书签的 PDF 文件。

2. 我可以自定义分割后 PDF 的输出名称吗?

  • 是的,您可以在 output_file 变量中指定自定义名称。

3. 如何处理嵌套书签?

  • 此方法不适用于嵌套书签。

4. 是否有其他分割 PDF 的方法?

  • 是的,还有其他方法,例如使用 Adobe Acrobat Pro 或其他 PDF 编辑工具。

5. 我可以将此方法用于其他任务吗?

  • 此方法也可以用于从 PDF 中提取特定页面。