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

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

Содержание

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

2 Установка

  • Устанавливается как python-пакет:
    pipx install pdf.tocgen
    

3 Рабочий процесс

  • Пакет pdf.tocgen состоит из 3 отдельных программ:

    • pdfxmeta : извлечь метаданные (атрибуты шрифта, позиции) заголовков в создать файл рецепта;
    • pdftocgen : создать оглавление из рецепта;
    • pdftocio : импортировать оглавление в документ PDF.
  • Используем pdfxmeta для поиска метаданных заголовков и генерации фильтры заголовков с использованием автоматической настройки:

    pdfxmeta -p <page> -a 1 in.pdf "Section" >> recipe.toml
    pdfxmeta -p <page> -a 2 in.pdf "Subsection" >> recipe.toml
    
    • Здесь <page> есть номер страницы в файле.
  • Файл recipe.toml будет содержать несколько фильтров заголовков.

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

    [[heading]]
    level = 1
    greedy = true
    font.name = "Times-Bold"
    font.size = 19.92530059814453
    
    [[heading]]
    level = 2
    greedy = true
    font.name = "Times-Bold"
    font.size = 11.9552001953125
    
  • Передадим рецепт программе pdftocgen для создания оглавления:

    pdftocgen in.pdf < recipe.toml
    
  • В результате получим текст оглавления следующего вида:

    "Preface" 5
        "Bottom-up Design" 5
        "Plan of the Book" 7
        "Examples" 9
        "Acknowledgements" 9
    "Contents" 11
    "The Extensible Language" 14
        "1.1 Design by Evolution" 14
        "1.2 Programming Bottom-Up" 16
        "1.3 Extensible Software" 18
        "1.4 Extending Lisp" 19
        "1.5 Why Lisp (or When)" 21
    "Functions" 22
        "2.1 Functions as Data" 22
        "2.2 Defining Functions" 23
        "2.3 Functional Arguments" 26
        "2.4 Functions as Properties" 28
        "2.5 Scope" 29
        "2.6 Closures" 30
        "2.7 Local Functions" 34
        "2.8 Tail-Recursion" 35
        "2.9 Compilation" 37
        "2.10 Functions from Lists" 40
    "Functional Programming" 41
        "3.1 Functional Design" 41
        "3.2 Imperative Outside-In" 46
        "3.3 Functional Interfaces" 48
        "3.4 Interactive Programming" 50
    
  • Его можно сразу импортировать в файл PDF с помощью pdftocio:

    $ pdftocgen in.pdf < recipe.toml | pdftocio -o out.pdf in.pdf
    
  • Можно отредактировать оглавление перед его импортом:

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

4 Примеры использования

4.1 pdftocio

  • Отобразить существующее оглавление PDF-файла в stdout:

    pdftocio doc.pdf
    
  • Записать существующее оглавление PDF-файла в файл с именем toc:

    pdftocio doc.pdf > toc
    
  • Записать оглавление из toc-файла в doc.pdf:

    pdftocio doc.pdf < toc
    
  • Указать имя выходного PDF-файла:

    pdftocio -o out.pdf doc.pdf < toc
    
  • Скопировать оглавление из doc1.pdf в doc2.pdf:

    pdftocio -v doc1.pdf | pdftocio doc2.pdf
    
    • Флаг -v помогает сохранить вертикальные позиции заголовков при копировании.
  • Вывести оглавление для чтения:

    pdftocio -H doc.pdf
    

4.2 pdftocgen

  • Применить существующий рецепт rcp.toml к файлу doc.pdf (результат дублируется в stdout):

    pdftocgen doc.pdf < rcp.toml
    
  • Вывести оглавление в файл с именем toc:

    pdftocgen doc.pdf < rcp.toml > toc
    
  • Импортировать созданное оглавление в файл PDF и вывести в doc_out.pdf:

    pdftocgen doc.pdf < rcp.toml | pdftocio -o doc_out.pdf doc.pdf
    
  • Вывести сгенерированное оглавление для чтения:

    pdftocgen -H doc.pdf < rcp.toml
    
  • Если вы хотите включить вертикальное положение на странице для каждого заголовка, используйте флаг -v:

    pdftocgen -v doc.pdf < rcp.toml
    

4.3 pdfxmeta

  • Искать слово Anaphoric во всем PDF:

    pdfxmeta onlisp.pdf "Anaphoric"
    
  • Вывести результат в виде фильтра заголовков с автоматическими настройками:

    pdfxmeta -a 1 onlisp.pdf "Anaphoric"
    
  • Поиск без учета регистра Anaphoric во всем PDF:

    pdfxmeta -i onlisp.pdf "Anaphoric"
    
  • Использование регулярного выражения для поиска без учета регистра Anaphoric в PDF-файле:

    pdfxmeta onlisp.pdf "[Aa]naphoric"
    
  • Поиск только на странице 203:

    pdfxmeta -p 203 onlisp.pdf "anaphoric"
    

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

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

Похожие