Code Monkey home page Code Monkey logo

pdf-bookmark's Introduction

PDF-Bookmark

PyPI

PDF-Bookmark is a tool for importing and exporting pdf bookmark with the bmk format.

Installation

$ pip install pdf-bookmark

pdf-bookmark utilizes PDFtk and Ghostscript to export and import pdf bookmarks. They must be installed before running pdf-bookmark.

PDFtk

PDFtk is used here to export bookmark from pdf file. The java port pdftk-java may also be OK.

On Arch Linux, pdftk-java could be installed by:

$ sudo pacman -S pdftk java-commons-lang

Verify the installation:

$ pdftk --version

Ghostscript

Ghostscript is used here to import bookmark to pdf file.

On Arch Linux, it could be installed by:

$ sudo pacman -S ghostscript

Verify the installation:

$ gs --version

bmk format

The bmk format is used to describe the bookmark of a pdf file. It will be used to import bookmark into a pdf file.

bmk format is easy to write. It looks quite like the content of a book. So you can copy the content and modify from it.

Each line represents a bookmark item. The title and the page number are separated by at least 4 dots ".".

The level of a bookmark is specified by the indentation of spaces. The default indentation is 2 spaces, and the number of spaces could be configured with inline command.

This is a simple example of a bmk file.

序................1
Chapter 1................4
Chapter 2................5
  2.1 Section 1................6
    2.1.1 SubSection 1................6
    2.1.2 SubSection 2................8
  2.2 Section 2................12
Chapter 3................20
Appendix................36

Import the bookmark and create a new pdf file:

$ pdf-bookmark -p input.pdf -b bookmark.bmk -o new.pdf

Export bmk format

The bmk format could also be exported from a pdf file with bookmark. You may also modify the bookmark from the exported one.

$ pdf-bookmark -p input.pdf

Inline command

There could also be inline commands in the file to do more controls on the bookmark. These commands start with !!! and modify some properties of bookmark. The new property will affect bookmarks after the line until it is changed again.

It is normal that the main body of a pdf file does not start from the first page of pdf, and the page number is not always arabic.

!!! collapse_level = 2

!!! num_style = Roman
Preface................I
Content................IV

!!! new_index = 12
!!! num_style = Arabic
Introduction................1
Chapter 1................4
Chapter 2................5
  2.1 Section 1................6
  2.2 Section 2................7
Chapter 3................10
Appendix................11

With these inline commands, you do not need to recalculate the index number for each page.

Here are all supported inline commands:

  • new_index. Default: 1. The following bookmark index will be recalculated from the new index number (new_index + page - 1).
  • num_start. Default: 1. Specify the number of first page if it does not start from 1 (new_index + page - num_start).
  • num_style. Default: Arabic. The page number style. Could be Arabic, Roman and Letters.
  • collapse_level. Default: 0. On which level the bookmarks are collapsed. 0 means expand all.
  • level_indent. Default: 2. Number of indentation spaces for a new level.

pdf-bookmark command

The pdf-bookmark command is installed by pip install pdf-bookmark.

usage: pdf-bookmark [-h] [-f {bmk,none,pdftk,pdfmark,json}]
                    [-l COLLAPSE_LEVEL] [-b BOOKMARK] [-p PDF] [-o OUTPUT_PDF]

Import and export PDF bookmark

optional arguments:
  -h, --help            show this help message and exit
  -f {bmk,none,pdftk,pdfmark,json}, --format {bmk,none,pdftk,pdfmark,json}
                        the output format of bookmark
  -l COLLAPSE_LEVEL, --collapse-level COLLAPSE_LEVEL
                        the min level to be collapsed, 0 to expand all
  -b BOOKMARK, --bookmark BOOKMARK
                        the bookmark file to be imported
  -p PDF, --pdf PDF     the input PDF file
  -o OUTPUT_PDF, --output-pdf OUTPUT_PDF
                        the output PDF file

Example

Import bookmark

This will import the bmk bookmark into a pdf file:

$ pdf-bookmark -p input.pdf -b bookmark.bmk -o new.pdf

If you would like to have a quite output:

$ pdf-bookmark -p input.pdf -b bookmark.bmk -f none -o new.pdf

Export bookmark

This will export the bmk bookmark to stdout from a pdf file:

$ pdf-bookmark -p input.pdf

The output format could be changed to pdfmark, json:

$ pdf-bookmark -p input.pdf -f pdfmark
$ pdf-bookmark -p input.pdf -f json

Change the collapse level

This will only change the collapse level of the pdf.

$ pdf-bookmark -p input.pdf -l 2 -o new.pdf

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.