Skip to content

Releases: pymupdf/PyMuPDF

PyMuPDF 1.23.9rc1 release candidate

02 Jan 16:06
Compare
Choose a tag to compare
Pre-release

PyMuPDF-1.23.9rc1 release candidate is available.

Wheels for Windows, Linux and MacOS, and the sdist, are available on pypi.org and can be installed with:

python -m pip install pymupdf==1.23.9rc1

[Linux-aarch64 wheels are not available.]

Changes in version 1.23.9rc1 (2024-01-02)

  • Default to new "rebased" implementation.

    • The old "classic" implementation is available with import fitz_old as fitz.
    • For more information about why we are changing to the rebased implementation,
      see: #2680
  • Bug fixes (rebased implementation only):

  • Other:

    • Fixed issue with add_redact_annot() mentioned in #2934.
    • Fixed rebased fitz.pymupdf_version_tuple - was previously set to mupdf version.
    • Improved scripts/test.py to help investigation of MuPDF issues.
    • Fixed Page.rotation() to return 0 for non-PDF documents instead of raising an exception.
    • Fixed internal quad detection to cope with any Python sequence.

PyMuPDF-1.23.8 released

19 Dec 12:37
Compare
Choose a tag to compare

PyMuPDF-1.23.8 has been released.

Wheels for Windows, Linux and MacOS, and the sdist, are available on pypi.org and can be installed in the usual way, for example:

python -m pip install --upgrade pymupdf

[Linux-aarch64 wheels are not available yet, they will be build and uploaded later.]

Changes in version 1.23.8 (2023-12-19)

  • Bug fixes (rebased implementation only):

    • Fixed 2634
    • Fixed 2861
    • Fixed 2871
    • Fixed 2886
  • Bug fixes (rebased and classic implementations):

    • Fixed 2885
  • Other:

    • Rebased implementation:

      • Page.insert_htmlbox(): new, much more powerful alternative to Page.insert_textbox() or TextWriter.fill_textbox(), using Story.
      • Story.fit*(): new methods for fitting a Story into an expanded rect.
      • Story.write_with_links(): add support for external links.
      • Document.language(): fixed to use MuPDF's new mupdf.fz_string_from_text_language2().
      • Document.subset_fonts() - fixed.
      • Fixed internal Archive._add_treeitem() method.
      • Fixed fitz_new.__doc__ to contain PyMuPDF and Python version information, and OS name.
      • Removed use of (*args, **kwargs) in API, we now specify keyword args explicitly.
      • Work with new MuPDF Python exception classes.
    • Fixed bug where button_states() returns None when /AP points to an indirect object.

    • Fixed pillow test to not ignore all errors, and install pillow when testing.

    • Added test for fitz.css_for_pymupdf_font() (uses package pymupdf-fonts).

    • Simplified Github Actions test specifications.

    • Updated tests/README.md.

PyMuPDF-1.23.7 released

30 Nov 11:39
Compare
Choose a tag to compare

PyMuPDF-1.23.7 has been released.

Wheels for Windows, Linux and MacOS, and the sdist, are available on pypi.org and can be installed in the usual way, for example:

python -m pip install --upgrade pymupdf

[Linux-aarch64 wheels are not available yet, they will be build and uploaded later.]

Changes in version 1.23.7 (2023-11-30)

  • Bug fixes in rebased implementation, not fixed in classic implementation:

  • Bug fixes (rebased and classic implementations):

  • Use MuPDF-1.23.7.

  • Other:

    • Rebased implementation:

      • Added flake8 code checking to test suite, and made various fixes.
      • Disable diagnostics during Document constructor to match classic implementation.
    • Additional fix to #2553

    • Fixed MuPDF Bug 707324 <https://bugs.ghostscript.com/show_bug.cgi?id=707324>_: Story: HTML table row background color repeated incorrectly

    • Added scripts/test.py, for simple build+test of PyMuPDF git checkout.

    • Added fitz.pymupdf_version_tuple, e.g. (1, 23, 6).

    • Restored mistakenly-reverted fix for #2345.

    • Include any trailing ... repeated <N> times... text in warnings returned by mupdf_warnings() (rebased only).

PyMuPDF-1.23.6 released

06 Nov 19:13
Compare
Choose a tag to compare

PyMuPDF-1.23.6 has been released.

Wheels for Windows, Linux and MacOS, and the sdist, are available on pypi.org and can be installed in the usual way, for example:

python -m pip install --upgrade pymupdf

[Linux-aarch64 wheels are not available yet, they will be build and uploaded later.]

Changes in version 1.23.6 (2023-11-06)

  • Bug fixes:

  • Other:

    • Use MuPDF-1.23.5.
    • Added Document.resolve_names() (rebased implementation only).

PyMuPDF-1.23.5 released

13 Oct 09:26
Compare
Choose a tag to compare

PyMuPDF-1.23.5 has been released.

Wheels for Windows, Linux and MacOS, and the sdist, are available on pypi.org and can be installed in the usual way, for example:

python -m pip install --upgrade pymupdf

Changes in version 1.23.5 (2023-10-11)

  • Bug fixes:

  • Other:

    • Use MuPDF-1.23.4.
    • Fix optimisation flags with system installs.
    • Fixed the problem that the clip parameter does not take effect during table recognition
    • Support Pillow mode "RGBa"
    • Support extra word delimiters
    • Support checking valid PDF name objects

PyMuPDF-1.23.4 released

27 Sep 08:24
Compare
Choose a tag to compare

PyMuPDF-1.23.4 has been released.

Wheels for Windows, Linux and MacOS, and the sdist, are available on pypi.org and can be installed in the usual way, for example:

python -m pip install --upgrade pymupdf

Changes in version 1.23.4 (2023-09-26)

  • Improved build instructions.

  • Fixed Tesseract in rebased implementation.

  • Improvements to build/install with system MuPDF.

  • Fixed Pyodide builds.

  • Fixed rebased bug in _insert_image().

  • Bug fixes:

PyMuPDF-1.23.3 released

01 Sep 14:55
Compare
Choose a tag to compare

PyMuPDF-1.23.3 has been released.

Wheels for Windows, Linux and MacOS, and the sdist, are available on pypi.org and can be installed in the usual way, for example:

python -m pip install --upgrade pymupdf

Changes in version 1.23.3 (2023-08-31)

  • Fixed use of Tesseract for OCR.

PyMuPDF-1.23.2 released

28 Aug 15:31
Compare
Choose a tag to compare

PyMuPDF-1.23.2 has been released.

Wheels for Windows, Linux and MacOS, and the sdist, are available on pypi.org and can be installed in the usual way, for example:

python -m pip install --upgrade pymupdf

Changes in version 1.23.2 (2023-08-28)

PyMuPDF-1.23.1 released

24 Aug 16:29
Compare
Choose a tag to compare

PyMuPDF-1.23.1 has been released.

Wheels for Windows, Linux and MacOS, and the sdist, are available on pypi.org and can be installed in the usual way, for example:

python -m pip install --upgrade pymupdf

Changes in version 1.23.1 (2023-08-24)

  • Updated README and package summary description.

  • Fixed a problem on some Linux installations with Python-3.10
    (and possibly earlier versions) where import fitz failed with
    ImportError: libcrypt.so.2: cannot open shared object file: No such file or directory.

  • Fixed incompatible architecture error on MacOS arm64.

  • Fixed installation warning from Poetry about missing entry in wheels'
    RECORD files.

PyMuPDF-1.23.0 released

23 Aug 15:29
Compare
Choose a tag to compare

PyMuPDF-1.23.0 has been released.

Wheels for Windows, Linux and MacOS, and the sdist, are available on pypi.org and can be installed in the usual way, for example:

python -m pip install --upgrade pymupdf

Changes in version 1.23.0 (2023-08-22)

  • Add method find_tables() to the Page object.

    This allows locating tables on any supported document page, and
    extracting table content by cell.

  • New "rebased" implementation of PyMuPDF.

    The rebased implementation is available as Python module
    fitz_new. It can be used as a drop-in replacement with import fitz_new as fitz.

  • Python-independent MuPDF libraries are now in a second wheel called
    PyMuPDFb that will be automatically installed by pip.

    This is to save space on pypi.org - a full release only needs one
    PyMuPDFb wheel for each OS.

  • Bug fixes:

  • Other changes:

    • Dropped support for Python-3.7.

    • Fix for wrong page / annot /Contents cleaning.

      We need to set pdf_filter_options::no_update to zero.

    • Added new function get_tessdata().

    • Cope with problem /Annot arrays.

      When copying page annotations in method Document.insert_pdf we
      previously did not check the validity of members of the /Annots
      array. For faulty members (like null or non-dictionary items) this
      could cause unnecessary exceptions. This fix implements more checks
      and skips such array items.

    • Additional annotation type checks.

      We did not previously check for annotation type when getting /
      setting annotation border properties. This is now checked in
      accordance with MuPDF.

    • Increase fault tolerance.

      Avoid exceptions in method insert_pdf() when source pages contains
      invalid items in the /Annots array.

    • Return empty border dict for applicable annots.

      We previously were returning a non-empty border dictionary even for
      non-applicable annotation types. We now return the empty dictionary
      {} in these cases. This requires some corresponding changes in the
      annotation .update() method, namely for dashes and border width.

    • Restrict set_rect to applicable annot types.

      We were insufficiently excluding non-applicable annotation types
      from set_rect() method. We now let MuPDF catch unsupported
      annotations and return False in these cases.

    • Wrong fontsize computation in page.get_texttrace().

      When computing the font size we were using the final text
      transformation matrix, where we should have taken span->trm
      instead. This is corrected here.

    • Updates to cope with changes to latest MuPDF.

      pdf_lookup_anchor() has been removed.

    • Update fill_textbox to better respect rect.width

      The function norm_words in fill_textbox had a bug in its last
      loop, appending n+1 characters when actually measuring width of n
      characters. It led to a bug in fill_texbox when you tried to write
      a single word mostly composed of "wide" letters (M,m, W, w...),
      causing the written text to exceed the given rect.

      The fix was just to replace n+1 by n.

    • Add script_focus and script_blur options to widget.