Skip to main content

Read and write PDFs with Python, powered by qpdf

Project description

pikepdf is a Python library allowing creation, manipulation and repair of PDF files. It is provides a wrapper around QPDF.

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

This package is in pre-alpha.

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

  • Can read and write PDFs with any type of PDF encryption (except public key)

  • Supports all PDF compression filters

  • Supports PDF object streams

  • Supports PDF 1.3 through 1.7

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

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

  • Automatically recovers and repairs damaged PDFs

  • 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

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, and requires some knowledge of the PDF specification.

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 ./python_example

Note that this requires the user building python_example 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

About Python 2.7

The author’s priority is building a great PDF library for Python for future applications, which means there isn’t time to target Python 2.7. Currently the C++ source compiles and links correctly, so all that is necessary is backporting Python 3 source files.

It was recently confirmed that the C++ code base compiles and links with Python 2.7. One would need to backport the Python source files and fix any test suite regressions. Pull requests are welcome.

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.1.tar.gz (963.5 kB view details)

Uploaded Source

Built Distributions

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

Uploaded CPython 3.6m

pikepdf-0.1.1-cp36-cp36m-macosx_10_6_intel.whl (884.6 kB view details)

Uploaded CPython 3.6m macOS 10.6+ intel

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

Uploaded CPython 3.5m

pikepdf-0.1.1-cp35-cp35m-macosx_10_6_intel.whl (884.6 kB view details)

Uploaded CPython 3.5m macOS 10.6+ intel

File details

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

File metadata

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

File hashes

Hashes for pikepdf-0.1.1.tar.gz
Algorithm Hash digest
SHA256 52916efb8eb0c66be18d8f76c118afd20e73ea9cce8fad635e11e9bf061d0c7a
MD5 b9790dc3eef293151a367d3e17a60aa3
BLAKE2b-256 e938bdd12911a78795bf91b2a50fd497ee8d019b657f2f6f9d8843a64e25c197

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pikepdf-0.1.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 0387bebc1a3ae9e28bde17a28e0e62aea53a3b70ae4cdd1f379730328c88d36d
MD5 bad117f89f4d522c6b002f0ea4bd2b89
BLAKE2b-256 733a69f4bc4602a5cc794e8d820037fd525a247b364a676f4a8df5e4205bd87e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pikepdf-0.1.1-cp36-cp36m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 55ba860ed2ef3610548e407c7ed89e26535158b9d4cf4cba2a21f19d5acf6efe
MD5 dd3de6fea647568189166e04401f2aff
BLAKE2b-256 025749865d0c1b39a4b28a7e5c5a0f8dfc213298352a0547b662b507d8906199

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pikepdf-0.1.1-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e8c3be4bbdfb0a5f20f2266523323a66ca2858856808922c7f317f383593cd4c
MD5 7e289342710cca4e37dccb01448356d4
BLAKE2b-256 443b8dc60cb7847a9f4fda1a23cc2e5b7bda28a14c6a3e7dbc977f35ce78c4c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pikepdf-0.1.1-cp35-cp35m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 235d178c78a9cf37eefca04195b154d9ca0b1238746b907e2448598cbcb4a4b4
MD5 3ac342e630fb999d684ce01342722001
BLAKE2b-256 0350a1c916f7450e53101445bd434bd95c60f242f77d4a098efcbe408511ee1a

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