создать гиперссылку оглавления и вставить в существующий 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}

При копировании ответов от других, пожалуйста, пометьте свой вопрос как вики сообщества .
Восстановите Монику - М. Шредер

@ MartinSchröder Откуда вы взялись за это правило?
Михаил Мрозек

@MichaelMrozek: Это стандартно для tex.se: Это не ваш ответ, поэтому вы не должны получать кредит.
Восстановите Монику - М. Шредер

Карма клики взломали меня.
rickhg12hs
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.