Хорошо, вот quick'n'dirty способ сделать три работы сразу:
- Объединить ваши 400 одной страницы PDF-файлов.
- Создать документ верхнего уровня ToC (Содержание).
- Создайте закладку PDF для каждой страницы.
Включает использование установки LaTeX.
Вы можете начать с пустого шаблона LaTeX подобно следующему:
\documentclass[]{article}
\usepackage{pdfpages}
\usepackage{hyperref}
\hypersetup{breaklinks=true,
bookmarks=true,
pdfauthor={},
pdftitle={},
colorlinks=true,
citecolor=blue,
urlcolor=blue,
linkcolor=magenta,
pdfborder={0 0 0}}
\begin{document}
{
\hypersetup{linkcolor=black}
\setcounter{tocdepth}{3}
% Comment next line in or out if you want a ToC or not:
\tableofcontents
}
%% Here goes your additional code:
%% 1 line per included PDF!
\end{document}
Сейчас как раз перед последней строкой этого шаблона, вставить одну строку на внешний файл PDF вы хотите включить.
В случае, если вы хотите создать TOC, он должен быть отформатирован следующим образом:
\includepdf[pages={<pagenumber>},addtotoc{<pagenumber>,<section>,<level>,\
<heading>,<label>}]{pdffilename.pdf}
В случае, если вы уверены, что каждый включенный PDF является 1-страничный документ, это упрощает это:
\includepdf[addtotoc{<pagenumber>,<section>,<level>,\
<heading>,<label>}]]{pdffilename.pdf}
Здесь все следующих пяти параметров для addtotoc
, в порядке, указанном для файлов, которые будут отображаться в записях и в ToC. См ниже для конкретного примера:
<pagenumber>
: Количество страницы, вставленной документа, который будет связан с. (В вашем случае всегда «1», потому что вы вставляете только одностраничные документы, однако вы можете вставить 5-страничный документ и ссылку на страницу 3 вставленного PDF).
<section>
: Название раздела LaTeX. Может быть section
, subsection
, subsubsection
... В вашем случае «раздел».
<level>
: Уровень раздела LaTeX. В вашем случае «1».
<heading>
: Это строка. Используется для текста закладки
<label>
: Это должно быть уникально для каждой закладки. Используется в PDF-файле для перехода к правильной странице при нажатии закладки.
Чтобы проверить это быстро, я использовал Ghostscript для создания 20 1-страницы PDF документы:
for i in {1..20}; do
gs -o p${i}.pdf -sDEVICE=pdfwrite \
-c "/Helvetica findfont 30 scalefont setfont \
100 600 moveto \
(Page ${i}) show \
showpage";
done
С помощью этих тестовых файлов я мог бы сделать строки для вставки в шаблон выглядеть эти:
\includepdf[addtotoc={1,section,1,Page 1 (First),p1}]{p1.pdf}
\includepdf[addtotoc={1,section,1,Page 2,p2}]{p2.pdf}
\includepdf[addtotoc={1,section,1,Page 3,p3}]{p3.pdf}
[...]
\includepdf[addtotoc={1,section,1,Page 11 (In the Middle),p11}]{p11.pdf}
[...]
\includepdf[addtotoc={1,section,1,Page 20 (Last),p20}]{p20.pdf}
Сохраните шаблон с вставленной строки, выполните следующую команду дважды:
pdflatex template.tex
pdflatex template.tex
Полученный файл будет иметь закладки, глядя, как это в Preview.app:
Примечание: LaTeX доступен для OSX с помощью двух методов:
Я добавлю один или два метода для вставки закладки в командной строке тоже позже или в ближайшие дни, если у меня есть больше времени.
На данный момент это один должен сделать, потому что я никогда не показывал здесь на SO, AFAICR.
Но я думал, потому что вы дали фон «Я слияние 1-страницы PDF-файлов, и это медленно, а теперь я хочу, чтобы добавить закладки тоже ...», я мог бы показать, как это сделать с одним единственным методом.
ПОДСКАЗКА: Один из других методов будет использовать pdftk
, которые IS доступна для Mac OS X!
Я не уверен, что у вас есть код для создания PDF-файла или только самого PDF-файла. Если первое, нам понадобится гораздо больше деталей. – Roland
Спасибо @Roland, я добавил информацию о томе. – drmariod
[pdftk] (https://www.pdflabs.com/docs/pdftk-version-history/) может обновлять/вставлять закладки. Кроме того, вот потенциально полезный поток на [stats.SO] (http://unix.stackexchange.com/questions/17065/add-and-edit-bookmarks-to-pdf) – hrbrmstr