Pdf. Оглавление. pdf.tocgen

Pdf. Оглавление. pdf.tocgen.

Содержание

1 Общая информация

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 будет содержать несколько фильтров заголовков.

  • Пример файла рецепта будет выглядеть так:

     1[[heading]]
     2level = 1
     3greedy = true
     4font.name = "Times-Bold"
     5font.size = 19.92530059814453
     6
     7[[heading]]
     8level = 2
     9greedy = true
    10font.name = "Times-Bold"
    11font.size = 11.9552001953125
    
  • Передадим рецепт программе 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
    
  • Можно отредактировать оглавление перед его импортом:

    1pdftocgen in.pdf < recipe.toml > toc
    2pdftocio in.pdf < toc
    

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"
    

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие