diff --git a/src/__init__.py b/src/__init__.py index 86317017f..c2588e120 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -11912,7 +11912,7 @@ def get_cdrawings(self, extended=None, callback=None, method=None): assert isinstance(page, mupdf.FzPage), f'{self.this=}' clips = True if extended else False prect = mupdf.fz_bound_page(page) - if 1 or g_use_extra: + if g_use_extra: rc = extra.get_cdrawings(page, extended, callback, method) else: rc = list() @@ -23514,7 +23514,10 @@ def jm_checkrect(dev): ): return 0 # not a rectangle - # we have a rect, replace last 3 "l" items by one "re" item. + # we have a rect + dev.lastpoint = ll # last point is the start of the first line + + # replace last 3 "l" items by one "re" item. if ul.y < lr.y: r = mupdf.fz_make_rect(ul.x, ul.y, lr.x, lr.y) orientation = 1 diff --git a/src/extra.i b/src/extra.i index f7da7bf19..7af38ee1f 100644 --- a/src/extra.i +++ b/src/extra.i @@ -2467,8 +2467,10 @@ jm_checkrect(jm_lineart_device* dev) ur.x != lr.x) { goto drop_out; // not a rectangle } + // we have a rect + dev->lastpoint = fz_make_point(ll.x, ll.y); // set last point to start of first line - // we have a rect, replace last 3 "l" items by one "re" item. + // replace last 3 "l" items by one "re" item. if (ul.y < lr.y) { r = fz_make_rect(ul.x, ul.y, lr.x, lr.y); orientation = 1; diff --git a/tests/resources/test_5122.pdf b/tests/resources/test_5122.pdf new file mode 100644 index 000000000..ccfe445d2 Binary files /dev/null and b/tests/resources/test_5122.pdf differ diff --git a/tests/test_5122.py b/tests/test_5122.py new file mode 100644 index 000000000..31432f690 --- /dev/null +++ b/tests/test_5122.py @@ -0,0 +1,12 @@ +import os +import pymupdf + +def test_5122(): + script_dir = os.path.dirname(__file__) + filename = os.path.join(script_dir, "resources", "test_5122.pdf") + doc = pymupdf.open(filename) + page = doc[0] + path=page.get_drawings()[0] + rect_tl = path["items"][0][1].tl + line_p1 = path["items"][1][1] + assert line_p1 == rect_tl