Skip to main content

Read and write PDFs with Python, powered by qpdf

Project description

pikepdf
=======

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

.. |travis| image:: https://img.shields.io/travis/pikepdf/pikepdf/master.svg?label=Linux%2fmacOS%20build
:target: https://travis-ci.org/pikepdf/pikepdf
:alt: Travis CI build status (Linux and macOS)

.. |windows| image:: https://img.shields.io/appveyor/ci/jbarlow83/pikepdf/master.svg?label=Windows%20build
:target: https://ci.appveyor.com/project/jbarlow83/pikepdf
:alt: AppVeyor CI build status (Windows)

.. |pypi| image:: https://img.shields.io/pypi/v/pikepdf.svg
:target: https://pypi.org/project/pikepdf/
:alt: PyPI


|travis| |windows| |pypi|

pikepdf is based on `QPDF <https://github.com/qpdf/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

.. code-block:: python

# 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
-----------

Binary wheels are available for Linux, macOS, and Windows for x64 systems.
32-bit wheels will be added if anyone requests them.

- ``pip install pikepdf``

The binary wheels should work on most systems work on Linux distributions 2012
and newer, macOS 10.11 and newer (for Homebrew), Windows 7 and newer.

**From source (GCC or Clang)**

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 .``

**On Windows (Requires Visual Studio 2015)**

pikepdf requires a C++11 compliant compiler (i.e. Visual Studio 2015 on
Windows). See our continuous integration build script in ``.appveyor.yml``
for detailed instructions.

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%\..\..\VC\vcvarsall.bat" x64``
- ``set DISTUTILS_USE_SDK=1``
- ``set MSSdk=1``
- download `qpdf binaries for MSVC <https://github.com/qpdf/qpdf/releases/download/release-qpdf-8.0.2/qpdf-8.0.2-bin-msvc64.zip>`_
- ``pip install .``

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 <https://www.microsoft.com/en-us/download/details.aspx?id=48145>`__.

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 <https://www.mozilla.org/en-US/MPL/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.
We exclude Exhibit B, so pikepdf is compatible with secondary licenses.
At your option may additionally distribute pikepdf under a secondary license.

`Informally <https://www.mozilla.org/en-US/MPL/2.0/FAQ/>`_, 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.10.tar.gz (980.9 kB view details)

Uploaded Source

Built Distributions

pikepdf-0.1.10-cp36-cp36m-win_amd64.whl (802.8 kB view details)

Uploaded CPython 3.6m Windows x86-64

pikepdf-0.1.10-cp36-cp36m-manylinux1_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.6m

pikepdf-0.1.10-cp36-cp36m-macosx_10_6_intel.whl (936.6 kB view details)

Uploaded CPython 3.6m macOS 10.6+ intel

pikepdf-0.1.10-cp35-cp35m-win_amd64.whl (802.8 kB view details)

Uploaded CPython 3.5m Windows x86-64

pikepdf-0.1.10-cp35-cp35m-manylinux1_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.5m

pikepdf-0.1.10-cp35-cp35m-macosx_10_6_intel.whl (936.6 kB view details)

Uploaded CPython 3.5m macOS 10.6+ intel

File details

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

File metadata

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

File hashes

Hashes for pikepdf-0.1.10.tar.gz
Algorithm Hash digest
SHA256 03340e3c38b38fca2cbb2a95e135897441ae217e8d51f682bc2e01de099ad1de
MD5 e6cd6e345ed25334dfd96a38173be6ae
BLAKE2b-256 73cda4c8249890f30954dcc79173565ab118972eac66df8975cc0f07b768514a

See more details on using hashes here.

File details

Details for the file pikepdf-0.1.10-cp36-cp36m-win_amd64.whl.

File metadata

File hashes

Hashes for pikepdf-0.1.10-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 e1a86aae15746086fdfe2b6a63131c173b3548fc7e1983053e48d4887e8fbd28
MD5 01d4294e2972f8f5ea9643130a72f02d
BLAKE2b-256 983255bdaa6d8c59347da0be601cacc9955635481a0d1160df53107501093b23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pikepdf-0.1.10-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 adff452938d704eafe79899a6cd42788bf6c30769c94f2134068649d69ef8bfe
MD5 8f0f8a1df95beaf5ebf4ac2db4d96558
BLAKE2b-256 3ccac8ef1606846611aa01ff72d5114ecd90152ceea31dcc05a1cbaad148eb68

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pikepdf-0.1.10-cp36-cp36m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 9d215c472392539370324ab6b17a97f107da6fecc3d7a76cf01a5362e9149189
MD5 17cc59db0bb893fc62c601a928a98196
BLAKE2b-256 55f7dc1787dd52430cb2b9e730f35bb8799177980425fa2f3e7e9d012f74dea6

See more details on using hashes here.

File details

Details for the file pikepdf-0.1.10-cp35-cp35m-win_amd64.whl.

File metadata

File hashes

Hashes for pikepdf-0.1.10-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 c2c60173406f615d576d312b893fbba7888033c9d413c38714c3f7ef146c9b50
MD5 0391817bc9b4732ec971e998f0bf01e6
BLAKE2b-256 ff4f762f85323964750b427df552b3992e67dcf1da42c1801d6b624a418a821b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pikepdf-0.1.10-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ec4987b98f436166885a4ac450a26045ac827a82f4b6c246b875dc62e5c8b42e
MD5 1e2a50246e58f8af1623bc8dce7ae888
BLAKE2b-256 be2f266a0952912850582d7db66c9d1107cd652a6d0f0e03b5081085249d06b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pikepdf-0.1.10-cp35-cp35m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 4aa60ee245f470859c90dbbfdd840b799e1199fc3b20ad27dd8b4ccf86a01793
MD5 976b27f5e344845abaa666f5d65f4e93
BLAKE2b-256 911c73789abc27b00170ea478bd987eacd38f9a7d4f92f67f23a433934a736a7

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