wygeneruj hiperłącza spisu treści i wstaw do istniejącego pliku PDF

11

Mam istniejący plik PDF (bez odpowiedniego pliku źródłowego) oraz plik tekstowy, który jest listą elementów odnoszących się do sekcji w pliku PDF, wraz z numerem strony dla każdego elementu. Chciałbym wygenerować nowy plik PDF, który zaczyna się od wygenerowanego indeksu spisu treści, a następnie treści oryginalnego pliku PDF. Wygenerowany indeks należy połączyć hiperłączem, aby kliknięcie dowolnego elementu automatycznie przeskoczyło na stronę zawierającą odnośną sekcję.

Szukam odpowiedniego zestawu narzędzi (najlepiej zorientowanych na CLI), aby to osiągnąć w systemie Linux; wszystkie narzędzia, na które patrzyłem do tej pory, nie wydają się oferować rozwiązania. Jestem doświadczonym programistą i chętnie piszę kod w razie potrzeby (najlepiej w Ruby / Python / Perl / shell), aby przeanalizować mój plik tekstowy i przekonwertować go na indeks hiperłącza, ale nie mogę znaleźć odpowiednich narzędzi rozwiązać to. Myślę, że część problemu polega na tym, że hiperłącza muszą wskazywać w tym samym pliku, ale ich cele nie będą istniały, dopóki ToC nie zostanie połączone z oryginalnym plikiem PDF.

Znam również różne języki znaczników, np. Markdown, reStructuredText, TeX, LaTeX, org-mode, a idealne rozwiązanie wykorzystałoby jeden z nich jako pośredni krok do wygenerowania hiperłącza ToC.

Adam Spiers
źródło
6
Sprawdź to bardzo podobne pytanie na TeX StackExchange: Dodawanie spisu treści do istniejącego pliku PDF
rickhg12hs
1
@ rickhg12hs - dlaczego nie napisać tego jako odpowiedzi tutaj?
slm
Odpowiedź napisana. Mam nadzieję, że @Terdon wkrótce usunie zaznaczenie do usunięcia.
rickhg12hs
Właściwie @terdon oznaczył to do usunięcia. Może uda mu się odznaczyć
rickhg12hs
Zrezygnował z @terdon. Odpowiedź replikowana poniżej.
rickhg12hs

Odpowiedzi:

7

Zostało to wzięte w całości z @Herbert odpowiadającego na bardzo podobne pytanie na TeX StackExchange:

Dodawanie spisu treści do istniejącego pliku PDF

użyj pakietu, pdfpagesa następnie:

\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
źródło
Podczas kopiowania odpowiedzi od innych osób zaznacz swoje pytanie jako wiki społeczności .
Przywróć Monikę - M. Schröder
@ MartinSchröder Skąd pomysł na tę zasadę?
Michael Mrozek
@MichaelMrozek: To standard w tex.se: To nie jest twoja odpowiedź, więc nie powinieneś otrzymać kredytu.
Przywróć Monikę - M. Schröder
Kabały Karma mnie rozwalają.
rickhg12hs