Skip to main content

Read and write PDFs with Python, powered by qpdf

Project description

pikepdf is a Python library for reading and writing PDF files.

pikepdf is based on QPDF, a powerful PDF manipulation and repair library.

Python + QPDF = “py” + “qpdf” = “pyqpdf”, which looks like a dyslexia test. Say it out loud, and it sounds like “pikepdf”.

Python 3.5 and 3.6 are fully supported.

Features:

  • Editing, manipulation and transformation of existing PDFs

  • Based on the mature, proven QPDF C++ library

  • Reading and writing encrypted PDFs, with all encryption types except public key

  • Supports all PDF compression filters

  • Supports PDF 1.3 through 1.7

  • Can create “fast web view” (linearized) PDFs

  • Creates standards compliant PDFs that pass validation in other tools

  • Automatically repairs damaged PDFs, just like QPDF

  • Can manipulate PDF/A, PDF/X and other types without losing their metadata marker

  • Implements more of the PDF specification than existing Python PDF tools

  • For convenience, renders PDF pages or embedded PDF images in Jupyter notebooks and IPython

# Elegant, Pythonic API
pdf = pikepdf.open('input.pdf')
num_pages = len(pdf.pages)
del pdf.pages[-1]
pdf.save('output.pdf')

pikepdf is documented and actively maintained. Commercial support is available.

This library is similar to PyPDF2 and pdfrw – it provides low level access to PDF features and allows editing and content transformation of existing PDFs. Some knowledge of the PDF specification may be helpful. It does not have the capability to render a PDF to image.

Python 2.7 and earlier versions of Python 3 are not currently supported but support is probably not difficult to achieve. Pull requests are welcome.

Installation

On Unix (Linux, macOS)

Binary wheels are available for x86-64 Linux platforms and Intel macOS. 32-bit wheels will be added if anyone needs them.

  • pip install pikepdf

From source

A C++11 compliant compiler is required, which includes most recent versions of GCC (4.8 and up) and clang (3.3 and up). A C++14 compiler is recommended.

libqpdf 7.0.0 is required at compile time and runtime. Many platforms have not updated to this version, so you may need to install this program without a package manager.

  • clone this repository

  • install libjpeg, zlib and qpdf on your platform, including headers

  • pip install ./pikepdf

On Windows (Requires Visual Studio 2015)

Windows is not currently part of continuous integration, so this might not work.

  • For Python 3.5:

    • clone this repository

    • pip install ./pikepdf

pikepdf requires a C++11 compliant compiler (i.e. Visual Studio 2015 on Windows). Running a regular pip install command will detect the version of the compiler used to build Python and attempt to build the extension with it. We must force the use of Visual Studio 2015.

::
  • clone this repository

  • “%VS140COMNTOOLS%....VCvcvarsall.bat” x64

  • set DISTUTILS_USE_SDK=1

  • set MSSdk=1

  • pip install ./pikepdf

Note that this requires the user building pikepdf to have registry edition rights on the machine, to be able to run the vcvarsall.bat script.

Windows runtime requirements

On Windows, the Visual C++ 2015 redistributable packages are a runtime requirement for this project. It can be found here.

Building the documentation

Documentation for the example project is generated using Sphinx. Sphinx has the ability to automatically inspect the signatures and documentation strings in the extension module to generate beautiful documentation in a variety formats. The following command generates HTML-based reference documentation; for other formats please refer to the Sphinx manual:

  • cd pikepdf/docs

  • make html

License

pikepdf is provided under the Mozilla Public License 2.0 license (MPL) that can be found in the LICENSE file. By using, distributing, or contributing to this project, you agree to the terms and conditions of this license.

Informally, MPL 2.0 is a not a “viral” license. It may be combined with other work, including commercial software. However, you must disclose your modifications to pikepdf in source code form. In other works, fork this repository on Github or elsewhere and commit your contributions there, and you’ve satisfied the license.

The tests/resources/copyright file describes licensing terms for the test suite and the provenance of test resources.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pikepdf-0.1.5.tar.gz (968.5 kB view details)

Uploaded Source

Built Distributions

pikepdf-0.1.5-cp36-cp36m-manylinux1_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.6m

pikepdf-0.1.5-cp36-cp36m-macosx_10_6_intel.whl (904.4 kB view details)

Uploaded CPython 3.6m macOS 10.6+ intel

pikepdf-0.1.5-cp35-cp35m-manylinux1_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.5m

pikepdf-0.1.5-cp35-cp35m-macosx_10_6_intel.whl (904.4 kB view details)

Uploaded CPython 3.5m macOS 10.6+ intel

File details

Details for the file pikepdf-0.1.5.tar.gz.

File metadata

  • Download URL: pikepdf-0.1.5.tar.gz
  • Upload date:
  • Size: 968.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pikepdf-0.1.5.tar.gz
Algorithm Hash digest
SHA256 aa0d642b36670095ac1c2379c76a4f87210d0c40bba081220f40fa9009839e43
MD5 3ecd27340bd9d3d0a29b101236638c39
BLAKE2b-256 8cb1e19139a6f0c3467c2278d21a9d0f906b27d782c55acf83adee3da89117f6

See more details on using hashes here.

File details

Details for the file pikepdf-0.1.5-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for pikepdf-0.1.5-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 3c9423575076d9e4b8d275c9690dad8af0354e45cf8b013a3ae10260d6dd4304
MD5 5f8a38e083e583945d358d8d7eab48ae
BLAKE2b-256 5daade1712925a2564e4e4685435bad54ccc6f6d578917dbce173707611420ec

See more details on using hashes here.

File details

Details for the file pikepdf-0.1.5-cp36-cp36m-macosx_10_6_intel.whl.

File metadata

File hashes

Hashes for pikepdf-0.1.5-cp36-cp36m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 a9b578dcf88107c25184f0b3605b7c18977cb193978998d1fc3b80daab6f013d
MD5 9adfce1fe387259acd13157d18d11b6d
BLAKE2b-256 1b2ce1edab7289ad2265f2f9b673f443c5f7f813cb6e19f7753ff7cb405e0bbe

See more details on using hashes here.

File details

Details for the file pikepdf-0.1.5-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for pikepdf-0.1.5-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 59bd6d8ec06dc5c861d2b8e1674c438a70f82ba7580bdfc3e391e6b9dac0d209
MD5 b13b1058a693632442c1cff4ded24497
BLAKE2b-256 fd0cb5b873dc37cb646b2e242acd36405445dfa17e5d42e4b27923486eca4e33

See more details on using hashes here.

File details

Details for the file pikepdf-0.1.5-cp35-cp35m-macosx_10_6_intel.whl.

File metadata

File hashes

Hashes for pikepdf-0.1.5-cp35-cp35m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 885598e05f35182f86d5fe1ec019ae876523e7e0e7e987d4d6badaa06cce165c
MD5 305d837777318d2e65b5527d21d94e55
BLAKE2b-256 e88226c5318ee6af6f21a42ebe77e877fb8e9cc0dc7c912a0dbb4a27450c94ca

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page