создать гиперссылку оглавления и вставить в существующий PDF

11

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

Я ищу подходящий набор инструментов (предпочтительно CLI-ориентированных) для выполнения этого в Linux; все инструменты, на которые я смотрел до сих пор, похоже, не предлагают решения. Я опытный программист, и я более чем рад написать код, если потребуется (желательно в Ruby / Python / Perl / shell) для анализа моего текстового файла и преобразования его в индекс с гиперссылкой, но я не могу найти нужные инструменты решить это. Я думаю, что часть проблемы заключается в том, что гиперссылки должны указывать на один и тот же файл, но их цели не будут существовать до тех пор, пока ToC не будет объединен с исходным PDF.

Я также знаком с различными языками разметки, например Markdown, reStructuredText, TeX, LaTeX, org-mode, и идеальное решение будет использовать один из них в качестве промежуточного шага для создания гиперссылки ToC.

Адам Спирс
источник
6
Проверьте этот очень похожий вопрос на TeX StackExchange: Добавление оглавления в существующий PDF
rickhg12hs
1
@ rickhg12hs - почему бы не написать это здесь как ответ?
СЛМ
Ответ написан. Надеемся, что @Terdon скоро снимет пометку для удаления.
rickhg12hs
На самом деле @terdon пометил его для удаления. Может быть, он сможет это
снять
Отказался от @terdon. Ответ воспроизведен ниже.
rickhg12hs

Ответы:

7

В целом это взято из @Herbert, отвечающего на очень похожий вопрос о TeX StackExchange:

Добавление оглавления в существующий PDF

используйте пакет pdfpagesи затем:

\documentclass{article}
\usepackage{pdfpages}
\usepackage{hyperref}

\begin{document}

\tableofcontents
\clearpage\phantomsection
\addcontentsline{toc}{section}{The first section name}% or chapter
\includepdf[pages={1-10},linktodoc,linktodocfit=/Fit]{texte/dtk/dtk11-1/komoedie.pdf}
\clearpage\phantomsection
\addcontentsline{toc}{section}{The second section name}% or chapter
\includepdf[pages={11-19},linktodoc,linktodocfit=/Fit]{texte/dtk/dtk11-1/komoedie.pdf}
\clearpage\phantomsection
\addcontentsline{toc}{section}{The third section name}% or chapter
\includepdf[pages={20-29},linktodoc,linktodocfit=/Fit]{texte/dtk/dtk11-1/komoedie.pdf}
\clearpage\phantomsection
\addcontentsline{toc}{section}{The forth section name}% or chapter
\includepdf[pages={21-39},linktodoc,linktodocfit=/Fit]{texte/dtk/dtk11-1/komoedie.pdf}

\end{document}
оборота rickhg12hs
источник
При копировании ответов от других, пожалуйста, пометьте свой вопрос как вики сообщества .
Восстановите Монику - М. Шредер
@ MartinSchröder Откуда вы взялись за это правило?
Михаил Мрозек
@MichaelMrozek: Это стандартно для tex.se: Это не ваш ответ, поэтому вы не должны получать кредит.
Восстановите Монику - М. Шредер
Карма клики взломали меня.
rickhg12hs