This page has summary information about developing the PyPDF library.

This project started as Python fork of the FPDF PHP library. Later, code for native reading TTF fonts was added. FPDF has not been updated since 2011. See also the TCPDF library.

Until 2015 the code was developed at Google Code. Now the main repository is at Github.

You can also view the old repository, old issues, and old wiki.

After being committed to the master branch, code documentation is automatically uploaded to the Read the Docs site.

Repository structure

  • [attic] - folder with old code and useful, but unsupported things
  • [docs] - documenation folder
  • [examples] - some examples
  • [fpdf] - library source
  • [test] - test suite (see Testing)
  • [tools] - some utilities
  • [tutorial] - tutorials (see also Tutorial)
  • LICENSE - license information
  • setup.cfg - wheel configuration (see wheel)
  • - distutils installer (see Python Packaging User Guide)
  • mkdocs.yml - config for MkDocs



To get the master branch of the code:

git clone

You can also use issues and pull requests at Github.


Testing described in the standalone page Testing.


Documentation is in the docs subfolder in Markdown format. To build it, the mkdocs utility is used, which is directed by mkdocs.yml.

To build documentation, run in the repository root:

mkdocs build

HTML files are generated in a html subfolder.

To continiously rebuild docs on changing any .md files use:

mkdocs serve

Then open a browser at http://localhost:8000. (The port and address can be changed.)

Note: mkdocs internally checks the consistency of internal links. But somehow code like this:

[Page Name][refe/PageName,md]

leads to nowhere and gives no error. To avoid this use:

grep -r * -e ',md'

And output should link to this page only.

See also

Project Home, Frequently asked questions, Unicode, Python 3, Testing.