pymupdf / PyMuPDF

PyMuPDF is a high performance Python library for data extraction, analysis, conversion & manipulation of PDF (and other) documents.
https://pymupdf.readthedocs.io
GNU Affero General Public License v3.0
4.52k stars 446 forks source link

pixmap.invert_irect(pixmap.irect) take 7 seconds #3498

Closed manateelazycat closed 1 month ago

manateelazycat commented 1 month ago

Description of the bug

I am the author of eaf-pdf-viewer (https://github.com/emacs-eaf/eaf-pdf-viewer). One of the features of this PDF reader is to support dark mode.

Recently, I don’t know whether it is pymupdf or the upgrade of the underlying library that causes pixmap.invert_irect(pixmap.irect) to be very slow. It takes 6 to 7 seconds to execute it once.

The problematic code is at: https://github.com/emacs-eaf/eaf-pdf-viewer/blob/0b79e9000551200b6a0d2206de14b87d9ed3c9c9/eaf_pdf_page.py#L198

How to reproduce the bug

  1. Start emacs with dark theme
  2. Install EAF
  3. Open any pdf file
  4. pixmap.invert_irect(pixmap.irect) block EAF

PyMuPDF version

1.24.4

Operating system

Linux

Python version

3.12

截图 2024-05-17 23-51-02

manateelazycat commented 1 month ago

And when invert_direct is called, the returned pixmap is wrong. There is a black rectangle on the right and the font is hollow.

JorjMcKie commented 1 month ago

Can we have a PDF page please and the code which produces a pixmap from it? To accept a bug, we can only deal with reproducible data requiring no extra installations.

JorjMcKie commented 1 month ago

Closing this for lack of response for more than a week.