Разделить PDF по закладкам

Вопрос или проблема

Как я могу разбить PDF на основе границ закладок?

Допустим, например, есть закладка с названием “Глава 1”, которая указывает на страницу 10, и закладка с названием “Глава 2”, которая указывает на страницу 20.

Я хочу извлечь страницы с 10 по 19 в файл под названием “Глава 1.pdf”, используя названия закладок (без необходимости вручную получать страницы, которые я хочу извлечь).

Связанный вопрос на StackOverflow.

Вы можете использовать pdfextbook для извлечения закладок PDF на Linux.

Это свободное программное обеспечение.

Он доступен на PyPI, так что вы можете установить его с помощью pipx:

pipx install pdfextbook

Он использует pdftk для чтения закладок из файла, fzf для того, чтобы позволить пользователю выбрать, какую закладку извлечь, и снова pdftk для извлечения закладок страниц.

Гораздо проще использовать любой один кросс-платформенный инструмент командной строки.

Здесь, используя всего один исполняемый файл на Windows, мы видим, что тестовый исходный файл имеет размер 4 КБ, но при разбивке каждый файл будет логически почти таким же большим, так как каждый требует аналогичных ресурсов. Поэтому во многих случаях не очень хорошая идея разбивать файлы, которые имеют большие перекрытия в использовании ресурсов.

cpdf>dir chapters.pdf|find "."

2024-10-14  16:41             4,269 Chapters.pdf

cpdf>cpdf -list-bookmarks chapters.pdf

0 "Обложка" 1 "[1/XYZ 0 845.550161 null]"
0 "Глава 1" 10 "[10/XYZ 0 841.889771 null]"
0 "Глава 2" 20 "[20/XYZ 0 845.550161 null]"
0 "Глава 3" 30 "[30/XYZ 0 845.550161 null]"
0 "Указатель" 40 "[40/XYZ 0 845.550161 null]"

cpdf>cpdf -split-bookmarks 0 Chapters.pdf -utf8 -o @B.pdf

cpdf>dir cover.pdf "chapter ?.pdf" index.pdf|find "."

2024-10-14  16:51             3,863 Cover.pdf
2024-10-14  16:51             3,919 Глава 1.pdf
2024-10-14  16:51             3,912 Глава 2.pdf
2024-10-14  16:51             3,920 Глава 3.pdf
2024-10-14  16:51             3,742 Указатель.pdf

cpdf>

Вы можете протестировать, что получится при повторном объединении, чтобы проверить, чтобы результат не имел слишком большого перекрытия.

cpdf -merge cover.pdf "chapter ?.pdf" index.pdf -o Reclaimed.pdf

cpdf>dir reclaimed.pdf|find "."

2024-10-14  17:01             4,340 Reclaimed.pdf

Таким образом, в этом случае минимальное количество перекрытия.

.

Ответ или решение

Для разделения PDF-документа на части по границам закладок можно использовать несколько методов, включая как специальные инструменты, так и более обобщенные команды. В данном ответе мы рассмотрим наиболее эффективные способы, используя libre программное обеспечение и командные утилиты.

Использование pdfextbook на Linux

Одним из наиболее удобных решений для извлечения страниц PDF на основе закладок является использование библиотеки pdfextbook. Данная библиотека доступна через PyPI и её можно установить следующим образом:

pipx install pdfextbook

Основные шаги:

  1. Установка зависимостей: Убедитесь, что на вашем компьютере установлены утилиты pdftk и fzf, так как они необходимы для работы pdfextbook.
  2. Использование pdfextbook: Запустите команду для извлечения закладок из вашего PDF-файла. Программа предложит выбрать закладку, по которой вы хотите извлечь диапазон страниц.

Одним из примеров использования pdfextbook может быть следующий:

pdfextbook chapters.pdf

Альтернативный метод с использованием cpdf

Если вам нужно более простое решение, вы можете использовать командную утилиту cpdf, которая является кроссплатформенной и поддерживает работу с закладками. Установите cpdf, затем выполните следующие действия:

  1. Просмотрите закладки PDF-документа:
cpdf -list-bookmarks chapters.pdf

Это покажет список всех закладок с указанием соответствующих страниц.

  1. Разделите PDF на основании закладок:
cpdf -split-bookmarks 0 Chapters.pdf -utf8 -o @B.pdf

Эта команда создаст отдельные файлы для каждой закладки с именами, содержащими названия закладок.

  1. Проверьте созданные файлы:
dir *.pdf

Вы сможете увидеть все извлеченные файлы, такие как Cover.pdf, Chapter 1.pdf, Chapter 2.pdf и т.д.

Проверка на перекрытия

После разделения вы можете проверить, насколько сильно страничные ресурсы пересекаются при слиянии:

cpdf -merge cover.pdf "chapter ?.pdf" index.pdf -o Reclaimed.pdf

Проверьте размер нового файла, чтобы убедиться, что он находится в допустимых пределах и минимизирует перекрытия.

Заключение

Использование закладок для разделения PDF-документов является эффективным способом управления содержимым. Как библиотека pdfextbook, так и утилита cpdf предоставляют функционал для выполнения этой задачи. Выбор между ними зависит от ваших предпочтений и окружения (Linux, Windows и т.д.).

Используя эти инструменты и методы, вы сможете легко извлекать нужные страницы из PDF-файлов, основываясь на закладках, что существенно облегчит работу с большими документами.

Оцените материал
Добавить комментарий

Капча загружается...