Если у вас есть только один файл, вот способ, которым вы можете сделать это, используя pdfTeX
. Это может быть немного запутанным, но я знаю TeX (и не знаю других инструментов), и он делает свое дело, когда мне это нужно.
Вот пример файла, который скопирует полное содержимое вашего input.pdf
и добавит оглавление, содержащее ссылки на некоторые номера страниц.
% Set page size... this is A4, change to whatever you need
\pdfpagewidth=210mm
\pdfpageheight=297mm
% TeX always adds unwanted 1in left and top margins, this counteracts them.
\advance\hoffset by -1in
\advance\voffset by -1in
% This macro inserts a verbatim copy of one page from the source into the output.
\def\copypage#1{%
\pdfximage page #1 {input.pdf}%
\shipout\vbox{\pdfrefximage\pdflastximage}}
% Determine the total number of pages
\pdfximage{input.pdf}
\newcount\total
\total=\pdflastximagepages
% Define an iterator to copy the whole file
\def\copy{%
\copypage{\the\pageno} % Copy the page given by current page number
\advance\pageno by 1 % Increase page number by one
\ifnum\pageno > \total
\let\copy\relax % After the last page has been copied, stop
\fi
\copy} % This repeats the cycle until \copy is redefined to \relax at the very end
\copy % Run the cycle
% Here you add your outline
\pdfoutline goto page 1 {/Fit} count 2 {Chapter}
\pdfoutline goto page 1 {/Fit} count -3 {Section}
\pdfoutline goto page 1 {/Fit} {Item}
\pdfoutline goto page 2 {/Fit} {Item}
\pdfoutline goto page 3 {/Fit} {Item}
\pdfoutline goto page 4 {/Fit} count 1 {Section}
\pdfoutline goto page 4 {/Fit} count -2 {Subection}
\pdfoutline goto page 1 {/Fit} {Item}
\pdfoutline goto page 5 {/Fit} {Item}
\end
Как использовать команду \pdfoutline
:
- Всегда указывайте номер страницы, даже для заголовков разделов, которые не должны использоваться напрямую
- Замените "Глава", "Предмет" и т.д. Желаемыми заголовками
- Укажите счетчик для элементов, которые содержат подэлементы (обратите внимание, что нет команды "закрытие", поэтому TeX должен знать счет заранее)
- РЕДАКТИРОВАТЬ благодаря harrymc: сделайте счет отрицательным, если вы хотите, чтобы элемент с подпунктами был закрыт по умолчанию, оставьте его положительным, если вы хотите, чтобы он был открыт
После подготовки этого входного файла, сохраните его как, скажем, output.tex
и обработайте его с помощью pdftex
. Вуаля, это создает output.pdf
с новым блестящим ToC.