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
Built Distributions
File details
Details for the file pikepdf-0.1.6.tar.gz
.
File metadata
- Download URL: pikepdf-0.1.6.tar.gz
- Upload date:
- Size: 968.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0e09b064d590f27200593abac92fb60ec436dad7e1a9491c3f7ce4d1de9072bd |
|
MD5 | f354bc220ec656f1a63afe059f9dd073 |
|
BLAKE2b-256 | faf1379fb2c5c72e913956f7d6e4d6d267686459677ddcbbdbae7958200a2e3b |
File details
Details for the file pikepdf-0.1.6-cp36-cp36m-manylinux1_x86_64.whl
.
File metadata
- Download URL: pikepdf-0.1.6-cp36-cp36m-manylinux1_x86_64.whl
- Upload date:
- Size: 6.0 MB
- Tags: CPython 3.6m
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c4cd7b85d0da823c7fbdd0f8b6cf2818b1063a2427747dd3ba83d4b4f980d18 |
|
MD5 | d6d2ec061829c5502d8841fee972f0d1 |
|
BLAKE2b-256 | 46b8b409ed2f7933f953f1bc014dd65a22f83badf0141be9669054cd7c2e3dd8 |
File details
Details for the file pikepdf-0.1.6-cp36-cp36m-macosx_10_6_intel.whl
.
File metadata
- Download URL: pikepdf-0.1.6-cp36-cp36m-macosx_10_6_intel.whl
- Upload date:
- Size: 904.4 kB
- Tags: CPython 3.6m, macOS 10.6+ intel
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9de8e604601a633182f5970b720ebdd947b3823fff3f378965e58863f9242735 |
|
MD5 | d665d48a0920c8262440d6f924c2ad30 |
|
BLAKE2b-256 | 44937fc8b631ae03eeecba55a1277e9d246d83cedb4fe4a879e1aea89cbb231e |
File details
Details for the file pikepdf-0.1.6-cp35-cp35m-manylinux1_x86_64.whl
.
File metadata
- Download URL: pikepdf-0.1.6-cp35-cp35m-manylinux1_x86_64.whl
- Upload date:
- Size: 6.0 MB
- Tags: CPython 3.5m
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a25833d3d2dc5cbeca238ddcf034245b6ac4b00420787b4233b1bf67ad94666 |
|
MD5 | 7c63135b2483f24d34fda3eface3fd43 |
|
BLAKE2b-256 | fd420430e7aba33a89e2035b6e9d28b52452895c8a0896d053a467dbcb705a1a |
File details
Details for the file pikepdf-0.1.6-cp35-cp35m-macosx_10_6_intel.whl
.
File metadata
- Download URL: pikepdf-0.1.6-cp35-cp35m-macosx_10_6_intel.whl
- Upload date:
- Size: 904.4 kB
- Tags: CPython 3.5m, macOS 10.6+ intel
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 116e19b615ff8eadcdc962bda075ea0d78d3f7514167e3f0e909df24e71d5f8e |
|
MD5 | 146aaa16908ba5ab1b8c93e90466d242 |
|
BLAKE2b-256 | ea7d61f7c4398b2344b4fb00027294797b2661d39366406db8d109c8a7df97c9 |