PyMuPDF
PyMuPDF copied to clipboard
regression: fill_textbox: IndexError: pop from empty list
Description of the bug
On 1.24.3 (but not on 1.24.2) fill_textbox generates some kind of exceptions that print to the screen but do not raise in Python.
How to reproduce the bug
Here's a MWE:
import fitz
print(fitz.version)
doc = fitz.open()
page = doc.new_page()
r = fitz.Rect(-15.0, 43.0, 115.0, 67.0)
tw = fitz.TextWriter(page.rect)
print("\nabout to fill the textbox\n")
excess = tw.fill_textbox(r, "test", fontsize=8, align=fitz.TEXT_ALIGN_CENTER)
print("\nhello, we got here")
On my Fedora 39 system, this gives:
('1.24.3', '1.24.2', '20240509000001')
about to fill the textbox
../../../.local/lib/python3.12/site-packages/pymupdf/__init__.py:87:exception_info: exception_info:
Traceback (most recent call last):
File "/home/cbm/.local/lib/python3.12/site-packages/pymupdf/utils.py", line 4686, in fill_textbox
line, tl = new_lines.pop(0)
^^^^^^^^^^^^^^^^
IndexError: pop from empty list
hello, we got here
I've also seen this on Ubuntu 22.04.
PyMuPDF version
1.24.3
Operating system
Linux
Python version
3.12
The box details don't matter too much. Here's an updated version that shows the file is actually written, and contains the text. Not sure if this is harmful or just cosmetic.
import fitz
print(fitz.version)
doc = fitz.open()
page = doc.new_page()
r = fitz.Rect(10, 10, 300, 300)
tw = fitz.TextWriter(page.rect)
print("\nabout to fill the textbox\n")
excess = tw.fill_textbox(r, "blah blah blah blah")
print(excess)
tw.write_text(page, color=(0, 0, 0))
print("\nhello, we got here")
doc.save("foo.pdf")
Still true in 1.24.4
Thanks for this, i've reproduced it. Investigating some more now.
It turns out that this is a change of a diagnostic, not a change in behaviour.
I've disabled the diagnostic in my tree so it'll won't appear in a future release.
Fixed in 1.24.5.