add_bookmarks
Add top-level bookmarks
Usage
pdftl
<input>add_bookmarks<spec>...output<file>[<option>...]
Details
Add one or more top-level bookmarks to a PDF.
Each <spec> has the format:
<page_range><delimiter><title><delimiter>[(<options>)]
<delimiter> must be a single non-alphanumeric, non-parenthesis character
(e.g., /, !, #). The same delimiter must be used on both sides of the title.
Page range
The page range selects which pages receive bookmarks. Each matched page gets
its own bookmark. Standard pdftl page-spec syntax applies (see pdftl help pages).
A bare range without a delimiter adds a bookmark pointing to page 1 using an empty title — use the full spec form for any real usage.
Title
The title string supports {variable} substitution, using the same variables
as add_text:
{page}— current page number (1-based){n}or{count}— 1-based sequential counter within the matched pages of the current spec{total}— total number of pages in the PDF{filename}— input filename including extension{filename_base}— input filename without extension{filepath}— full path to the input file
Variables are expanded per page: {filename_base} p.{page} on a 10-page
document produces ten distinct titles.
Options
Options are comma-separated key=value pairs inside parentheses:
position=<pos> Where in the top-level bookmark list to insert this batch.
head — prepend before all existing bookmarks (default).
tail — append after all existing bookmarks.
No other options are currently supported, but the parenthesised syntax is
an extension point (e.g., bold=true, color=... may be added later).
Ordering of multiple specs
All head specs are collected in argument order and prepended as a batch.
All tail specs are collected in argument order and appended as a batch.
The final outline is:
<head batch> <existing bookmarks> <tail batch>
Within each batch, bookmarks are ordered by the sequence the page range produces
them — so a reversed range 3-1/{title}/ produces three bookmarks in the order
page 3, page 2, page 1.
Examples
Add a top-level bookmark for page 1 titled with the filename (prepended)
pdftl in.pdf add_bookmarks '1/{filename_base}/' output out.pdf
Same but appended after existing bookmarks
pdftl in.pdf add_bookmarks '1/{filename_base}/(position=tail)' output out.pdf
Add a bookmark for each of pages 1-3, titled ‘Chapter N’ for N=1,2,3
pdftl in.pdf add_bookmarks '1-3/Chapter {page}/' output out.pdf
Add a bookmark for each of pages 2,5,6, titled ‘Chapter N’ for N=2,3,4
pdftl in.pdf add_bookmarks '3,5,6/Chapter {n+1}/' output out.pdf
Prepend a title bookmark and append an appendix bookmark
pdftl in.pdf add_bookmarks '1/{filename_base}/(position=head)' '5/Appendix/(position=tail)' output out.pdf
Add one bookmark per page, appended
pdftl in.pdf add_bookmarks '1-end/{page}: {filename_base}/(position=tail)' output out.pdf
Tags: in_place, bookmarks, outlines, add
Source: pdftl.operations.add_bookmarks
Read online: https://pdftl.readthedocs.io/en/latest/operations/add_bookmarks.html
Type: Operation