b466520453
- Update to 10.0.2 - Fixed presentation of strings using unparse_content_stream - if the stream can be represented using PdfDocEncoding, it is rendered in that way for ease of reading. :issue:682 - Reformatted C++ source. - Changes from 10.0.1 - Fixed issue with performing equality test on dictionaries with cyclic subgraphs. :issue:677 - Changes from 10.0.0 Breaking changes for v10.x: - Dropped Python 3.9 compatibility, since it is end of life. Python 3.10 through 3.14 are supported. - Dropped macOS 13 support, since it is end of life. - Dropped macOS 14 Intel wheels, because GitHub doesn't provide a way to build them - macOS 15 Intel works fine. - Dropped deprecated method Pdf.check() (use .check_pdf_syntax()). pikepdf now declares unstable "support" for freethreading, and does not publish freethreading wheels. All tests seem to pass, but that's because the existing tests don't try to create race conditions. Must be compiled manually.
Nico Krapp2025-11-17 07:18:49 +00:00
241decae35
- update to 9.11.0: - Upgraded to cibuildwheel 3.1.4. - We now build wheels for the CPython 3.14 prerelease (but without freethreading, since lxml does not release wheels with freethreading). - Now using uv for building. - Fixed broken link in documentation. - Migrated all remaining uses of "dumb" pointer holders to `py::smart_holder. - Updated contributing guidelines and build steps. - Fixed type signature of AttachedFileSpec to clarify its usage. - Fixed missing default /Decode for image masks. {issue}664 - Fixed a missing dependency for ReadTheDocs documentation generation. - Upgraded to pybind11 3.0, which is now required. Changed many of our pointer holder types to use the py::smart_holder. - Pdf.check() is now deprecated, in favor of Pdf.check_pdf_syntax(). - Use explicit page number substitution in mupdf to avoid problems in how it names output files. {issue}661 - Upgraded to cibuildwheel 3.0.0. - C++-20 compiler is now required for building pikepdf. - Fixed a reference counting test on Python 3.14a. - We no longer build PyPy wheels by default. - If a folder named ../qpdf is found, we automatically use that as the companion qpdf when building. For developers this means building works without setting environment variables. Environment variables can still be set to redirect to specific installation. - Introduced a new {class}DimensionedFont` to avoid breaking changes in other code (mainly OCRmyPDF) that subclasses
Dirk Mueller2025-09-30 11:27:33 +00:00
6db6aebbbd
- update to 9.4.2: * Internal type assertion error messages from qpdf that previously triggered a RuntimeError will now raise a PdfError. Generally these errors only occur in corrupted files. * When we are updating XMP in the processing of saving, errors from updating XML are wrapped differently to clarify the context in which the error occurs. * Fixed a process abort in JBIG2 handling related to cleanup of Python objects owned by C++ code. * Fixed inconsistent behavior when setting metadata records to an empty value. :issue:622 * Added missing Python 3.13 wheels for a few platforms that were missing them, mainly ARM Linux, musllinux/Alpine, and Windows. * Since Homebrew has ended support for macOS 12, macOS 13 is now the minimum requirement for Intel macOS. * Suppressed some spurious warnings during build tests. * Integrated OSS Fuzz. * Prevented generation of PDF date strings with invalid trailing apostrophes, while still accepting them. * Improved error message on parsing invalid date strings. * Dropped support for Python 3.8 (end of life October 2024). * Fixed some inconsistencies with the pikepdf.Rectangle class. * Python 3.13 with free-threading added to test matrix. * Removed wheel package as build requirement since modern packing no longer needs it. * Updated C++/Python exception translation to new pybind11 2.12.0+ protocol, fixing possible undefined behavior in multithreaded applications. * pybind11 2.12.0 is now required. * qpdf 11.9.1 is now used to build wheels.
Dirk Mueller2024-11-21 10:04:58 +00:00
6d9456f89d
- update to 8.15.1: * Reformat with ruff. * Various updates to build procedures and wheel generation
Dirk Mueller2024-05-02 08:23:42 +00:00
aac6f6daeb
Accepting request 1167774 from devel:languages:python
Ana Guerrero2024-04-15 18:18:10 +00:00
cb103c3b50
- update to 8.15.0: * Rebuild wheels with QPDF 11.9.0. * Relaxed dependency requirements on lxml, now that that project is publishing wheels for less common platforms again.
Dirk Mueller2024-04-15 09:03:28 +00:00
6d9e9960f9
Accepting request 1163291 from devel:languages:python
Ana Guerrero2024-03-28 12:55:35 +00:00
d52ca3622a
- update to 8.14.0: * Added QPDF_FUTURE environment variable for compile time testing of new QPDF features. * Added new code to suppress console window from appearing on Windows in some situations when decoding JBIG2. * Updated GitHub Actions versions.
Dirk Mueller2024-03-28 10:44:05 +00:00
1c61ad703a
Accepting request 1158438 from devel:languages:python
Ana Guerrero2024-03-17 21:14:49 +00:00
096a847e66
- update to 8.13.0: * Enabled PyPy 3.10 support. * Rebuilt wheels with QPDF 11.8.0. * Improved test coverage slightly. * Minor performance improvement when using file streams. * Minor update to metadata documentation.
Dirk Mueller2024-03-16 10:01:09 +00:00
d162769d1b
Accepting request 1157520 from devel:languages:python
Ana Guerrero2024-03-13 21:20:51 +00:00
e04fdebdf9
Accepting request 1141499 from devel:languages:python
Ana Guerrero2024-01-25 17:42:05 +00:00
23530bcbd1
- update to 8.11.2: * Fixed handling of XMP metadata when metadata contains objects in a default namespace. * Replaced all relative imports with absolute imports. * Rebuilt with QPDF 11.7.0. * Added support for setting page boxes to a rectangle directly, e.g. `page.mediabox = rectangle` - previously rectangle had to manually converted to an array. * Fixed rendering of PDF and individual pages in Jupyter/IPython. Newer versions of these tools are now pickier about what types of data they render, and don't render PDFs directly; we now provide SVG which works well. Requires installation of MuPDF as before. * Fixed rendering of inline images in Jupyter/IPython, which was not implemented. * Fixed build process to use new artifacts v4 actions on GitHub.
Dirk Mueller2024-01-22 22:45:36 +00:00
3fd7404c16
Accepting request 1135318 from devel:languages:python
Ana Guerrero2023-12-28 22:02:03 +00:00
0dfda51f24
- update to 8.10.1: * Rebuilt with QPDF 11.6.4. * Replaced use of a custom C++ logger with sharing QPDF's. It is still relayed to the Python logger. * Added a simpler API for adding attachments from bytes data. * Deprecated use of Object.parse(str) in favor of Object.parse(bytes). The former, unfortunately, implemented some operations backwards are used in a page with multiple compression filters * Documentation updates.
Dirk Mueller2023-12-27 14:01:56 +00:00
dde5110848
Accepting request 1133036 from devel:languages:python
Ana Guerrero2023-12-14 21:03:29 +00:00
2f65cbf3f6
Accepting request 1132933 from home:jonapap
Martin Hauke2023-12-14 09:41:02 +00:00
3270c54b3c
Accepting request 1132902 from home:ecsos:python
Dirk Mueller2023-12-14 08:09:20 +00:00
8806678452
Accepting request 1119887 from devel:languages:python
Ana Guerrero2023-10-24 18:09:14 +00:00
85a4cd8f15
Accepting request 1119380 from home:uncomfyhalomacro:branches:devel:languages:python
Markéta Machová2023-10-24 07:53:18 +00:00
c9db95fd7d
Accepting request 1100657 from devel:languages:python
Ana Guerrero2023-07-26 11:23:43 +00:00
5fdedb3adc
Accepting request 1100619 from home:ecsos:python
Markéta Machová2023-07-25 14:32:28 +00:00
c44f037cb5
- update to 8.2.1: * Support for Python 3.7 is dropped. * Added Page.form_xobjects, which returns all Form XObjects that are used in a page * Fixed an issue with extracting images that were compressed with multiple compression filters * Improved Object.repr() to avoid printing the entire contents of large object trees such as those in PDFs with structural element trees. * Fixed error when attempting to convert XMP metadata to DocumentInfo when the author was omitted. * Added a method to add items to the document table of contents. * Adjusted stream preview (with __repr__) so it does not attempt to decompress very long * Removed uses of deprecated function datetime.utcnow() * Adjusted timeline of potentially flaky hypothesis test. * PyPy 3.10 is now supported on some platforms. * PyPy 3.8 support will be dropped in the next major release
Dirk Mueller2023-07-24 07:54:45 +00:00
b5de9d078f
- update to 6.2.8.post1: * Drop PyPy3.7 from wheel builds, since dependencies (lxml, Pillow) no longer provide it. * Fixed some tests that randomly failed on Windows due to newline handling issues.
Dirk Mueller2023-05-10 06:40:18 +00:00
5b6c316af5
- update to 6.2.7: * Removed a debug message during mmap. * Fixed errors when using AccessMode.mmap * Fixed noisy log message. * Made some flakey tests less flakey. * Fixed deprecated information in setup.cfg. Thanks @mgorny. * Rebuild binary wheels using zlib 1.2.13. Source build unchanged.
Dirk Mueller2023-01-02 19:10:56 +00:00
426bf2fb90
- update to 5.1.0: * Rebuild against QPDF 10.6.3. * Improvements to Makefile for Apple Silicon wheels. * Fix issue where Pdf.check() would report a failure if JBIG2 decoder was not installed and the PDF contains JBIG2 content. * Some errors and inconsistencies are in the "pdfdoc" encoding provided by pikepdf have been corrected, in conjunction with fixes in libqpdf. * libqpdf 10.6.2 is required. * Previously, looking up the number of a page, given the page, required a linear search of all pages. We now use a newer QPDF API that allows quicker lookups. * Fixed gcc linker error with linking to a source-compiled version of qpdf. Thanks @jerkenbilt. * Fixed dead/obsolete link to old QPDF manual. Thanks @m-holger. * Rebuild binary wheels against qpdf 10.5.0. Note 10.6.0 has been released but requires further changes so does not work yet. * Removed some workarounds to support now-unsupported versions of pybind11. * Adjusted hypothesis test settings so it does not randomly fail on PyPy. * Mention vector vs raster images in documentation. * JBIG2 decoding is now more tightly integrated. In particular, we can now decode more types of JBIG2 image and they can be decoded using either the object or image interface. * Switch to tomli for TOML parsing. * Refactor image tests to use hypothesis more effectively and use more random issues, fixing many errors along the way. * Fixed two instances of a Python object being copied without the GIL held. May have caused some instability. Thanks @rwgk. * Further improvements to handling of 2- and 4-bit per component images. Major refactoring of relevant code and improved testing. * Mark pybind11 2.9 as supported. Thanks @QuLogic. * Improved support for images with bits per component set to values between 2 and 7 inclusive.
Dirk Mueller2022-03-27 18:26:34 +00:00