Read, write, and edit PDF files with borb, a pure Python library

This page summarizes the projects mentioned and recommended in the original post on

Our great sponsors
  • Sonar - Write Clean Python Code. Always.
  • InfluxDB - Build time-series-based applications quickly and at scale.
  • SaaSHub - Software Alternatives and Reviews
  • borb

    borb is a library for reading, creating and manipulating PDF files in python.

    Page numbers are part of the PageInfo object within a PDF, but it looks like currently this is generated naively [0], so I don't think multiple numbering schemes are currently supported by this library.


  • xournalpp

    Xournal++ is a handwriting notetaking software with PDF annotation support. Written in C++ with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and Windows 10. Supports pen input from devices such as Wacom Tablets.

    So, are there decent lower-level (e.g. C++ or even C) libraries for doing this, which this library wraps? Or does this actually do the nitty-gritty PDF innards itself?

    As for myself, I've not had to automate work on PDFs, luckily; for manual manipulation and annotation I've found Xournal++ sort of useful ( Inkscape can also be used with some questionable PDFs.

  • Sonar

    Write Clean Python Code. Always.. Sonar helps you commit clean code every time. With over 225 unique rules to find Python bugs, code smells & vulnerabilities, Sonar finds the issues while you focus on the work.

  • borb-examples

    And the example repository shows off its capabilities better too:

  • HexaPDF

    Versatile PDF creation and manipulation for Ruby

    If you want to do something like this in Ruby, have a look at HexaPDF - - which provides a full-blown implementation for reading and writing PDFs and is quite mature already (n.b. I'm the author).

    It is licensed AGPL+Commercial but if you just use it for yourself, this does not matter as you can use the AGPL.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts