Pdf. Оглавление. pdf.tocgen
Pdf. Оглавление. pdf.tocgen.
Содержание
1 Общая информация
- Репозиторий: https://github.com/Krasjet/pdf.tocgen
- Сайт: https://krasjet.com/voice/pdf.tocgen/
2 Установка
- Устанавливается как python-пакет:
1pipx install pdf.tocgen
3 Рабочий процесс
Пакет pdf.tocgen состоит из 3 отдельных программ:
pdfxmeta
: извлечь метаданные (атрибуты шрифта, позиции) заголовков в создать файл рецепта;pdftocgen
: создать оглавление из рецепта;pdftocio
: импортировать оглавление в документ PDF.
Используем
pdfxmeta
для поиска метаданных заголовков и генерации фильтры заголовков с использованием автоматической настройки:1pdfxmeta -p <page> -a 1 in.pdf "Section" >> recipe.toml 2pdfxmeta -p <page> -a 2 in.pdf "Subsection" >> recipe.toml
- Здесь
<page>
есть номер страницы в файле.
- Здесь
Файл
recipe.toml
будет содержать несколько фильтров заголовков.Пример файла рецепта будет выглядеть так:
Передадим рецепт программе
pdftocgen
для создания оглавления:1pdftocgen in.pdf < recipe.toml
В результате получим текст оглавления следующего вида:
1"Preface" 5 2 "Bottom-up Design" 5 3 "Plan of the Book" 7 4 "Examples" 9 5 "Acknowledgements" 9 6"Contents" 11 7"The Extensible Language" 14 8 "1.1 Design by Evolution" 14 9 "1.2 Programming Bottom-Up" 16 10 "1.3 Extensible Software" 18 11 "1.4 Extending Lisp" 19 12 "1.5 Why Lisp (or When)" 21 13"Functions" 22 14 "2.1 Functions as Data" 22 15 "2.2 Defining Functions" 23 16 "2.3 Functional Arguments" 26 17 "2.4 Functions as Properties" 28 18 "2.5 Scope" 29 19 "2.6 Closures" 30 20 "2.7 Local Functions" 34 21 "2.8 Tail-Recursion" 35 22 "2.9 Compilation" 37 23 "2.10 Functions from Lists" 40 24"Functional Programming" 41 25 "3.1 Functional Design" 41 26 "3.2 Imperative Outside-In" 46 27 "3.3 Functional Interfaces" 48 28 "3.4 Interactive Programming" 50
Его можно сразу импортировать в файл PDF с помощью
pdftocio
:1$ pdftocgen in.pdf < recipe.toml | pdftocio -o out.pdf in.pdf
Можно отредактировать оглавление перед его импортом:
4 Примеры использования
4.1 pdftocio
Отобразить существующее оглавление PDF-файла в stdout:
1pdftocio doc.pdf
Записать существующее оглавление PDF-файла в файл с именем toc:
1pdftocio doc.pdf > toc
Записать оглавление из toc-файла в doc.pdf:
1pdftocio doc.pdf < toc
Указать имя выходного PDF-файла:
1pdftocio -o out.pdf doc.pdf < toc
Скопировать оглавление из doc1.pdf в doc2.pdf:
1pdftocio -v doc1.pdf | pdftocio doc2.pdf
- Флаг
-v
помогает сохранить вертикальные позиции заголовков при копировании.
- Флаг
Вывести оглавление для чтения:
1pdftocio -H doc.pdf
4.2 pdftocgen
Применить существующий рецепт
recipe.toml
к файлуdoc.pdf
(результат дублируется вstdout
):1pdftocgen doc.pdf < recipe.toml
Вывести оглавление в файл с именем
toc
:1pdftocgen doc.pdf < recipe.toml > toc
Импортировать созданное оглавление в файл PDF и вывести в doc_out.pdf:
1pdftocgen doc.pdf < recipe.toml | pdftocio -o doc_out.pdf doc.pdf
Вывести сгенерированное оглавление для чтения:
1pdftocgen -H doc.pdf < recipe.toml
Если вы хотите включить вертикальное положение на странице для каждого заголовка, используйте флаг
-v
:1pdftocgen -v doc.pdf < recipe.toml
4.3 pdfxmeta
Искать слово
Anaphoric
во всем PDF:1pdfxmeta onlisp.pdf "Anaphoric"
Вывести результат в виде фильтра заголовков с автоматическими настройками:
1pdfxmeta -a 1 onlisp.pdf "Anaphoric"
Поиск без учета регистра
Anaphoric
во всем PDF:1pdfxmeta -i onlisp.pdf "Anaphoric"
Использование регулярного выражения для поиска без учета регистра
Anaphoric
в PDF-файле:1pdfxmeta onlisp.pdf "[Aa]naphoric"
Поиск только на странице 203:
1pdfxmeta -p 203 onlisp.pdf "anaphoric"