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 <https://pikepdf.readthedocs.io/en/latest/index.html>`_
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.2.1.tar.gz (992.8 kB view details)

Uploaded Source

Built Distributions

pikepdf-0.2.1-cp36-cp36m-win_amd64.whl (805.6 kB view details)

Uploaded CPython 3.6m Windows x86-64

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

Uploaded CPython 3.6m

pikepdf-0.2.1-cp36-cp36m-macosx_10_6_intel.whl (972.8 kB view details)

Uploaded CPython 3.6m macOS 10.6+ intel

pikepdf-0.2.1-cp35-cp35m-win_amd64.whl (805.6 kB view details)

Uploaded CPython 3.5m Windows x86-64

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

Uploaded CPython 3.5m

pikepdf-0.2.1-cp35-cp35m-macosx_10_6_intel.whl (972.8 kB view details)

Uploaded CPython 3.5m macOS 10.6+ intel

File details

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

File metadata

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

File hashes

Hashes for pikepdf-0.2.1.tar.gz
Algorithm Hash digest
SHA256 94173b5df8c942a71430ac9527a80f94d6bd4fd254e6c6221595b69bbd3bba7e
MD5 08ae1e34cdcc6dd293c9d7296b8be4dc
BLAKE2b-256 2ae7d061ef283032c0a8bfd11b11ce83451bd70b29bda87cc8d960fae81db3ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pikepdf-0.2.1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 2dd0867cd8ddba6269eb4715301d4d3c74a98da5a05f18bca8cfbab03d203a89
MD5 87e6d90d634ce39375527c5b5e731feb
BLAKE2b-256 5bc2a74d339dc65327c1da88f09d4643bad97beae9fee9e80366697e9a4e26af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pikepdf-0.2.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 88b84c516a89321a98200735623ed557739cfd32ac367dd5db9cadd5b59b7f0e
MD5 3552f83cc0e85f17b31f5e51e94e346c
BLAKE2b-256 b5af57e9ea070cdd58406d704c3fbcdc3af409774db4436fc6bc681e758d8d24

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pikepdf-0.2.1-cp36-cp36m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 36bb08a8c4c5b574af3f9c4dfd125dfe63a194c432873d8cc63ad90fc8ee86f8
MD5 c0ca4b772378fd71a09d8edad7993560
BLAKE2b-256 d534c8a5168ab01c9434a477406f83c369097dccc0578e50cdcee247c1c5100e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pikepdf-0.2.1-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 361f512deca1f8da68de1fd60b999121a64af4940a89724d2657334997a8126d
MD5 1e1b48fd0983094e18deb1363a90e46a
BLAKE2b-256 5944b604ebb6cbb34388c1bbf17692b3df4f89a6d6fb38ae42be30a776769646

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pikepdf-0.2.1-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 c662906188b21c27f31175d9a33d51296b1b0537aac257d58cf0db3c6ec181f5
MD5 fc1cbcda0864c24440b0905525dc5e97
BLAKE2b-256 59aa67118ffd50bc7876f8d37d70dc71b608a1105db3ddd3bdfda7391db533cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pikepdf-0.2.1-cp35-cp35m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 8d5064ad75d282dccf89f36b3b29f02a66881eac76c0659f4fce4abb6946299b
MD5 13cdd72b5f6978c3564ab1f0b7b0b8fd
BLAKE2b-256 b6526128a0a155a2e11100a83c4be82f28ade4e35b744642dda246cc60ae895d

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