PyMuPDF 1.23.6__tar.gz → 1.23.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/PKG-INFO +1 -1
  2. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/READMErb.md +1 -1
  3. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/changes.txt +69 -0
  4. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/_config.h +2 -2
  5. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/fitz.i +9 -5
  6. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/helper-fields.i +16 -0
  7. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/table.py +163 -236
  8. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/utils.py +1 -3
  9. PyMuPDF-1.23.8/fitz/version.i +7 -0
  10. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/mupdf.tgz +0 -0
  11. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/pyproject.toml +1 -1
  12. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/scripts/gh_release.py +83 -54
  13. PyMuPDF-1.23.8/scripts/test.py +143 -0
  14. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/setup.py +4 -4
  15. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/src/__init__.py +2033 -1709
  16. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/src/__main__.py +10 -4
  17. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/src/extra.i +6 -4
  18. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/src/utils.py +289 -190
  19. PyMuPDF-1.23.8/tests/README.md +73 -0
  20. PyMuPDF-1.23.8/tests/resources/test_2553-2.pdf +0 -0
  21. PyMuPDF-1.23.8/tests/resources/test_2634.pdf +0 -0
  22. PyMuPDF-1.23.8/tests/resources/test_2788.pdf +177 -0
  23. PyMuPDF-1.23.8/tests/resources/test_2791_content.pdf +0 -0
  24. PyMuPDF-1.23.8/tests/resources/test_2791_coverpage.pdf +413 -0
  25. PyMuPDF-1.23.8/tests/resources/test_2861.pdf +0 -0
  26. PyMuPDF-1.23.8/tests/resources/test_2871.pdf +21059 -67
  27. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_2548.py +16 -6
  28. PyMuPDF-1.23.8/tests/test_2634.py +65 -0
  29. PyMuPDF-1.23.8/tests/test_2791.py +83 -0
  30. PyMuPDF-1.23.8/tests/test_2886.py +31 -0
  31. PyMuPDF-1.23.8/tests/test_flake8.py +58 -0
  32. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_font.py +19 -0
  33. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_general.py +64 -0
  34. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_geometry.py +7 -0
  35. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_insertpdf.py +24 -0
  36. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_pixmap.py +8 -5
  37. PyMuPDF-1.23.8/tests/test_story.py +231 -0
  38. PyMuPDF-1.23.8/tests/test_tables.py +146 -0
  39. PyMuPDF-1.23.8/tests/test_tesseract.py +55 -0
  40. PyMuPDF-1.23.8/tests/test_textbox.py +238 -0
  41. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_toc.py +26 -0
  42. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/wdev.py +1 -1
  43. PyMuPDF-1.23.6/fitz/version.i +0 -6
  44. PyMuPDF-1.23.6/setup-old.py +0 -907
  45. PyMuPDF-1.23.6/tests/README.md +0 -91
  46. PyMuPDF-1.23.6/tests/test_story.py +0 -32
  47. PyMuPDF-1.23.6/tests/test_tables.py +0 -32
  48. PyMuPDF-1.23.6/tests/test_tesseract.py +0 -34
  49. PyMuPDF-1.23.6/tests/test_textbox.py +0 -146
  50. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/COPYING +0 -0
  51. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/MANIFEST.in +0 -0
  52. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/README.md +0 -0
  53. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/__init__.py +0 -0
  54. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/__main__.py +0 -0
  55. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/helper-annot.i +0 -0
  56. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/helper-convert.i +0 -0
  57. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/helper-defines.i +0 -0
  58. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/helper-devices.i +0 -0
  59. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/helper-fileobj.i +0 -0
  60. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/helper-geo-c.i +0 -0
  61. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/helper-geo-py.i +0 -0
  62. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/helper-globals.i +0 -0
  63. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/helper-other.i +0 -0
  64. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/helper-pdfinfo.i +0 -0
  65. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/helper-pixmap.i +0 -0
  66. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/helper-portfolio.i +0 -0
  67. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/helper-python.i +0 -0
  68. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/helper-select.i +0 -0
  69. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/helper-stext.i +0 -0
  70. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/fitz/helper-xobject.i +0 -0
  71. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/pipcl.py +0 -0
  72. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/pytest.ini +0 -0
  73. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/src/fitz.py +0 -0
  74. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/001003ED.pdf +0 -0
  75. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/1.pdf +0 -0
  76. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/2.pdf +0 -0
  77. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/2201.00069.pdf +0 -0
  78. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/3.pdf +0 -0
  79. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/4.pdf +0 -0
  80. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/Bezier.epub +0 -0
  81. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/PragmaticaC.otf +0 -0
  82. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/bug1945.pdf +0 -0
  83. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/bug1971.pdf +0 -0
  84. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/chinese-tables.pdf +0 -0
  85. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/chinese-tables.pickle +0 -0
  86. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/circular-toc.pdf +0 -0
  87. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/cython.pdf +0 -0
  88. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/cython.pickle +0 -0
  89. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/full_toc.txt +0 -0
  90. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/full_toc2.txt +0 -0
  91. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/github_sample.pdf +0 -0
  92. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/has-bad-fonts.pdf +0 -0
  93. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/image-file1.pdf +0 -0
  94. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/img-transparent.png +0 -0
  95. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/joined.pdf +0 -0
  96. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/metadata.txt +0 -0
  97. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/nur-ruhig.jpg +0 -0
  98. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/quad-calc-0.pdf +0 -0
  99. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/simple_toc.txt +0 -0
  100. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/symbol-list.pdf +0 -0
  101. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/symbols.txt +0 -0
  102. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test-2333.pdf +0 -0
  103. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test-2462.pdf +0 -0
  104. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test2093.pdf +0 -0
  105. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test2182.pdf +0 -0
  106. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test2238.pdf +0 -0
  107. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test_1645_expected.pdf +0 -0
  108. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test_1645_expected_1.22.pdf +0 -0
  109. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test_1824.pdf +0 -0
  110. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test_2108.pdf +0 -0
  111. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test_2270.pdf +0 -0
  112. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test_2533.pdf +0 -0
  113. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test_2548.pdf +0 -0
  114. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test_2553.pdf +0 -0
  115. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test_2596.pdf +0 -0
  116. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test_2608_expected +0 -0
  117. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test_2635.pdf +0 -0
  118. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test_2645_1.pdf +0 -0
  119. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test_2645_2.pdf +0 -0
  120. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test_2645_3.pdf +0 -0
  121. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test_2710.pdf +0 -0
  122. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/test_2730.pdf +0 -0
  123. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/type3font.pdf +0 -0
  124. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/v110-changes.pdf +0 -0
  125. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/resources/widgettest.pdf +0 -0
  126. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/run_compound.py +0 -0
  127. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_annots.py +0 -0
  128. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_badfonts.py +0 -0
  129. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_crypting.py +0 -0
  130. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_docs_samples.py +0 -0
  131. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_drawings.py +0 -0
  132. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_embeddedfiles.py +0 -0
  133. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_extractimage.py +0 -0
  134. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_imagebbox.py +0 -0
  135. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_insertimage.py +0 -0
  136. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_linequad.py +0 -0
  137. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_metadata.py +0 -0
  138. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_nonpdf.py +0 -0
  139. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_object_manipulation.py +0 -0
  140. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_optional_content.py +0 -0
  141. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_pagedelete.py +0 -0
  142. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_pagelabels.py +0 -0
  143. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_showpdfpage.py +0 -0
  144. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_textextract.py +0 -0
  145. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_textsearch.py +0 -0
  146. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_widgets.py +0 -0
  147. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/tests/test_word_delimiters.py +0 -0
  148. {PyMuPDF-1.23.6 → PyMuPDF-1.23.8}/valgrind.supp +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyMuPDF
3
- Version: 1.23.6
3
+ Version: 1.23.8
4
4
  Summary: A high performance Python library for data extraction, analysis, conversion & manipulation of PDF (and other) documents.
5
5
  Description-Content-Type: text/markdown
6
6
  Author: Artifex
@@ -1,4 +1,4 @@
1
- # PyMuPDF 1.23.6
1
+ # PyMuPDF 1.23.7
2
2
 
3
3
  This wheel contains MuPDF shared libraries for use by PyMuPDF.
4
4
 
@@ -2,6 +2,75 @@ Change Log
2
2
  ==========
3
3
 
4
4
 
5
+ **Changes in version 1.23.8 (2023-12-19)**
6
+
7
+ * Bug fixes (rebased implementation only):
8
+
9
+ * **Fixed** `2634 <https://github.com/pymupdf/PyMuPDF/issues/2634>`_: get_toc and set_toc do not behave consistently for rotated pages
10
+ * **Fixed** `2861 <https://github.com/pymupdf/PyMuPDF/issues/2861>`_: AttributeError in getLinkDict during PDF Merge
11
+ * **Fixed** `2871 <https://github.com/pymupdf/PyMuPDF/issues/2871>`_: KeyError in getLinkDict during PDF merge
12
+ * **Fixed** `2886 <https://github.com/pymupdf/PyMuPDF/issues/2886>`_: Error in Skeleton for Named Link Destinations
13
+
14
+ * Bug fixes (rebased and classic implementations):
15
+
16
+ * **Fixed** `2885 <https://github.com/pymupdf/PyMuPDF/issues/2885>`_: pymupdf find tables too slow
17
+
18
+ * Other:
19
+
20
+ * Rebased implementation:
21
+
22
+ * `Page.insert_htmlbox()`: new, much more powerful alternative to `Page.insert_textbox()` or `TextWriter.fill_textbox()`, using `Story`.
23
+ * `Story.fit*()`: new methods for fitting a Story into an expanded rect.
24
+ * `Story.write_with_links()`: add support for external links.
25
+ * `Document.language()`: fixed to use MuPDF's new `mupdf.fz_string_from_text_language2()`.
26
+ * `Document.subset_fonts()` - fixed.
27
+ * Fixed internal `Archive._add_treeitem()` method.
28
+ * Fixed `fitz_new.__doc__` to contain PyMuPDF and Python version information, and OS name.
29
+ * Removed use of `(*args, **kwargs)` in API, we now specify keyword args explicitly.
30
+ * Work with new MuPDF Python exception classes.
31
+
32
+ * Fixed bug where `button_states()` returns None when `/AP` points to an indirect object.
33
+ * Fixed pillow test to not ignore all errors, and install pillow when testing.
34
+ * Added test for `fitz.css_for_pymupdf_font()` (uses package `pymupdf-fonts`).
35
+ * Simplified Github Actions test specifications.
36
+ * Updated `tests/README.md`.
37
+
38
+
39
+ **Changes in version 1.23.7 (2023-11-30)**
40
+
41
+ * Bug fixes in rebased implementation, not fixed in classic implementation:
42
+
43
+ * **Fixed** `2232 <https://github.com/pymupdf/PyMuPDF/issues/2232>`_: Geometry helper classes should support keyword arguments
44
+ * **Fixed** `2788 <https://github.com/pymupdf/PyMuPDF/issues/2788>`_: Problem with get_toc in pymupdf 1.23.6
45
+ * **Fixed** `2791 <https://github.com/pymupdf/PyMuPDF/issues/2791>`_: Experiencing small memory leak in save()
46
+
47
+ * Bug fixes (rebased and classic implementations):
48
+
49
+ * **Fixed** `2736 <https://github.com/pymupdf/PyMuPDF/issues/2736>`_: Failure when set cropbox with mediabox negative value
50
+ * **Fixed** `2749 <https://github.com/pymupdf/PyMuPDF/issues/2749>`_: RuntimeError: cycle in structure tree
51
+ * **Fixed** `2753 <https://github.com/pymupdf/PyMuPDF/issues/2753>`_: Story.write_with_links will ignore everything after the first "page break" in the HTML.
52
+ * **Fixed** `2812 <https://github.com/pymupdf/PyMuPDF/issues/2812>`_: find_tables on landscape page generates reversed text
53
+ * **Fixed** `2829 <https://github.com/pymupdf/PyMuPDF/issues/2829>`_: [cannot create /Annot for kind] is still printed despite #2345 is closed.
54
+ * **Fixed** `2841 <https://github.com/pymupdf/PyMuPDF/issues/2841>`_: Unexpected KeyError when using scrub with fitz_new
55
+
56
+ * Use MuPDF-1.23.7.
57
+
58
+ * Other:
59
+
60
+ * Rebased implementation:
61
+
62
+ * Added flake8 code checking to test suite, and made various fixes.
63
+ * Disable diagnostics during Document constructor to match classic implementation.
64
+
65
+ * Additional fix to `2553 <https://github.com/pymupdf/PyMuPDF/issues/2553>`_: Invalid characters in versions >= 1.22
66
+ * Fixed `MuPDF Bug 707324 <https://bugs.ghostscript.com/show_bug.cgi?id=707324>`_: Story: HTML table row background color repeated incorrectly
67
+ * Added `scripts/test.py`, for simple build+test of PyMuPDF git checkout.
68
+ * Added `fitz.pymupdf_version_tuple`, e.g. `(1, 23, 6)`.
69
+ * Restored mistakenly-reverted fix for `2345 <https://github.com/pymupdf/PyMuPDF/issues/2345>`_: Turn off print statements in utils.py
70
+ * Include any trailing `... repeated <N> times...` text in warnings returned by `mupdf_warnings()` (rebased only).
71
+
72
+
73
+
5
74
  **Changes in version 1.23.6 (2023-11-06)**
6
75
 
7
76
  * Bug fixes:
@@ -17,8 +17,8 @@
17
17
  //
18
18
  // Alternative licensing terms are available from the licensor.
19
19
  // For commercial licensing, see <https://www.artifex.com/> or contact
20
- // Artifex Software, Inc., 1305 Grant Avenue - Suite 200, Novato,
21
- // CA 94945, U.S.A., +1(415)492-9861, for further information.
20
+ // Artifex Software, Inc., 39 Mesa Street, Suite 108A, San Francisco,
21
+ // CA 94129, USA, for further information.
22
22
 
23
23
  #ifndef FZ_CONFIG_H
24
24
 
@@ -6929,20 +6929,24 @@ def get_oc_items(self) -> list:
6929
6929
  doc = self.parent
6930
6930
  if doc == None:
6931
6931
  raise ValueError("orphaned object: parent is None")
6932
+
6932
6933
  if not doc.is_pdf:
6933
6934
  raise ValueError("is no PDF")
6935
+
6934
6936
  valid_boxes = ("CropBox", "BleedBox", "TrimBox", "ArtBox")
6937
+
6935
6938
  if boxtype not in valid_boxes:
6936
6939
  raise ValueError("bad boxtype")
6940
+
6941
+ rect = Rect(rect)
6937
6942
  mb = self.mediabox
6938
6943
  rect = Rect(rect[0], mb.y1 - rect[3], rect[2], mb.y1 - rect[1])
6939
- rect = Rect(JM_TUPLE3(rect))
6940
- if rect.is_infinite or rect.is_empty:
6941
- raise ValueError("rect is infinite or empty")
6942
- if rect not in mb:
6943
- raise ValueError("rect not in mediabox")
6944
+ if not (mb.x0 <= rect.x0 < rect.x1 <= mb.x1 and mb.y0 <= rect.y0 < rect.y1 <= mb.y1):
6945
+ raise ValueError(f"{boxtype} not in MediaBox")
6946
+
6944
6947
  doc.xref_set_key(self.xref, boxtype, "[%g %g %g %g]" % tuple(rect))
6945
6948
 
6949
+
6946
6950
  def set_cropbox(self, rect):
6947
6951
  """Set the CropBox. Will also change Page.rect."""
6948
6952
  return self._set_pagebox("CropBox", rect)
@@ -1097,6 +1097,14 @@ class Widget(object):
1097
1097
  for x in apnt:
1098
1098
  nstates.append(x.split()[0])
1099
1099
  states["normal"] = nstates
1100
+ if APN[0] == "xref":
1101
+ nstates = []
1102
+ nxref = int(APN[1].split(" ")[0])
1103
+ APN = doc.xref_object(nxref)
1104
+ apnt = APN.split("/")[1:]
1105
+ for x in apnt:
1106
+ nstates.append(x.split()[0])
1107
+ states["normal"] = nstates
1100
1108
  APD = doc.xref_get_key(xref, "AP/D")
1101
1109
  if APD[0] == "dict":
1102
1110
  dstates = []
@@ -1105,6 +1113,14 @@ class Widget(object):
1105
1113
  for x in apdt:
1106
1114
  dstates.append(x.split()[0])
1107
1115
  states["down"] = dstates
1116
+ if APD[0] == "xref":
1117
+ dstates = []
1118
+ dxref = int(APD[1].split(" ")[0])
1119
+ APD = doc.xref_object(dxref)
1120
+ apdt = APD.split("/")[1:]
1121
+ for x in apdt:
1122
+ dstates.append(x.split()[0])
1123
+ states["down"] = dstates
1108
1124
  return states
1109
1125
 
1110
1126
  def on_state(self):