simplebookmarker 0.2.1

Add PDF bookmarks from a simple indented text file
simplebookmarker-0.2.1 is not a library.

simplebookmarker

simplebookmarker provides the sbm command, which adds PDF bookmarks from an indented plain-text table of contents.

Installation

cargo install simplebookmarker

Usage

Given book.pdf and book.txt, run:

sbm book

The result is written to book_bm.pdf.

To replace book.pdf atomically instead of creating a new file, run:

sbm book --in-place

--inplace is also accepted. In-place mode writes and syncs a temporary file in the same directory before replacing the original PDF. It cannot be combined with --output.

To check the bookmark text without writing a PDF, run:

sbm book --dry-run

Dry-run mode loads the PDF, parses the bookmark text, reports valid entries, blank lines, malformed lines, and out-of-range page numbers, then exits without modifying or writing any PDF.

To export existing PDF bookmarks back to the text format, run:

sbm book --export

This writes book.txt by default. To choose the exported bookmark file, pass a path after --export. When only --input is used, the default export path is the input PDF path with a .txt extension.

sbm book --export existing-bookmarks.txt

Existing PDF bookmarks are preserved. When an input entry points to a page that already has a bookmark, the default behavior is to create another bookmark:

sbm book --on-existing create

To update the title of an existing bookmark on the same page instead, use:

sbm book --on-existing update

Update mode matches existing same-page bookmarks once each, in document order. It keeps their hierarchy and changes only their titles. If no unmatched bookmark exists on that page, a new bookmark is created. In-place mode defaults to update unless --on-existing is set explicitly.

To discard all existing PDF bookmarks before adding bookmarks from the text file, run:

sbm book --from-zero

--from-zero cannot be combined with --on-existing because existing bookmarks are not preserved.

Input, bookmark, and output paths can also be set explicitly:

sbm --input source.pdf --bookmarks contents.txt --output result.pdf

Run sbm --help for all options.

Bookmark format

Each valid line starts with a one-based PDF page number and a title. A hyphen between the page number and title is optional. Indent child bookmarks with one tab or four spaces per level.

1-Introduction
    3-Background
        5-History
10 First chapter

Blank and malformed lines are ignored. Entries with page zero or a page number beyond the end of the PDF are also ignored. If indentation skips a level, the entry is attached at the deepest available level.

License

MIT

Release process

Run the Release workflow from GitHub Actions and choose patch, minor, or major. It updates Cargo.toml and Cargo.lock, runs all checks, commits the new version to main, pushes a matching vX.Y.Z tag, publishes to crates.io, and creates the GitHub Release. Publishing uses the CARGO_REGISTRY_TOKEN secret in the crates.io environment.

See RELEASE_CHECKLIST.md for the complete development and release checklist.