From f95f0e5ab5acec3322efa2f8c51cce42f6c12743 Mon Sep 17 00:00:00 2001 From: "Jorj X. McKie" Date: Wed, 27 Nov 2024 09:53:39 -0400 Subject: [PATCH 01/16] Add page recolor method --- docs/document.rst | 11 ++++++++--- docs/page.rst | 9 +++++++++ src/__init__.py | 13 +++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/docs/document.rst b/docs/document.rst index 4a21c04c4..0f60bc2a4 100644 --- a/docs/document.rst +++ b/docs/document.rst @@ -923,14 +923,14 @@ For details on **embedded files** refer to Appendix 3. .. method:: get_page_fonts(pno, full=False) - PDF only: Return a list of all fonts (directly or indirectly) referenced by the page. + PDF only: Return a list of all fonts (directly or indirectly) referenced by the page object definition. :arg int pno: page number, 0-based, `-∞ < pno < page_count`. :arg bool full: whether to also include the referencer's :data:`xref`. If *True*, the returned items are one entry longer. Use this option if you need to know, whether the page directly references the font. In this case the last entry is 0. If the font is referenced by an `/XObject` of the page, you will find its :data:`xref` here. :rtype: list - :returns: a list of fonts referenced by this page. Each entry looks like + :returns: a list of fonts referenced by the object definition of the page. Each entry looks like **(xref, ext, type, basefont, name, encoding, referencer)**, @@ -958,7 +958,12 @@ For details on **embedded files** refer to Appendix 3. .. note:: * This list has no duplicate entries: the combination of :data:`xref`, *name* and *referencer* is unique. - * In general, this is a superset of the fonts actually in use by this page. The PDF creator may e.g. have specified some global list, of which each page only makes partial use. + * In general, this is a true superset of the fonts actually in use by this page. The PDF creator may e.g. have specified some global list, of which each page make only partial use. + * Be aware that font names returned by some variants of :meth:`Page.get_text` (respectively :ref:`TextPage` methods) need not (exactly) equal the base font name shown here. Reasons for any differences include: + + - This method always shows any subset prefixes (the pattern ``ABCDEF+``), whereas text extractions do not do this by default. + - Text extractions use the base library to access the font name, which has a length cap of 31 bytes and generally interrogates the font file binary to access the name. Method ``get_page_fonts()`` however looks at the PDF definition source. + - Text extractions work for all supported document types in exactly the same way -- not just for PDFs. Consequently they do not contain PDF-specifics. .. method:: get_page_text(pno, output="text", flags=3, textpage=None, sort=False) diff --git a/docs/page.rst b/docs/page.rst index 7f3fa7754..6883270b5 100644 --- a/docs/page.rst +++ b/docs/page.rst @@ -106,6 +106,7 @@ In a nutshell, this is what you can do with PyMuPDF: :meth:`Page.load_widget` PDF only: load a specific field :meth:`Page.load_links` return the first link on a page :meth:`Page.new_shape` PDF only: create a new :ref:`Shape` +:meth:`Page.recolor` PDF only: change the colorspace of objects :meth:`Page.remove_rotation` PDF only: set page rotation to 0 :meth:`Page.replace_image` PDF only: replace an image :meth:`Page.search_for` search for a string @@ -1924,6 +1925,14 @@ In a nutshell, this is what you can do with PyMuPDF: :arg int rotate: An integer specifying the required rotation in degrees. Must be an integer multiple of 90. Values will be converted to one of 0, 90, 180, 270. + .. method:: recolor(components=1) + + PDF only: Change the colorspace components of all objects on page. + + :arg int components: The desired count of color components. Must be one of 1, 3 or 4, which results in color space DeviceGray, DeviceRGB and DeviceCMYK respectively. The method affects text, images and vector graphics. For instance, with the default value 1, a page will be converted to gray-scale. + + The changes made are **permanent** and cannot be reverted. + .. method:: remove_rotation() PDF only: Set page rotation to 0 while maintaining appearance and page content. diff --git a/src/__init__.py b/src/__init__.py index 814a1d28c..1f6f20911 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -8694,6 +8694,19 @@ def annots(self, types=None): annot._yielded=True yield annot + def recolor(self, components=1): + """Convert colorspaces of objects on the page. + + Valid values are 1, 3 and 4. + """ + if components not in (1, 3, 4): + raise ValueError("components must be one of 1, 3, 4") + pdfdoc = _as_pdf_document(self.parent) + ropt = mupdf.pdf_recolor_options() + ropt.num_comp = components + ropts = mupdf.PdfRecolorOptions(ropt) + mupdf.pdf_recolor_page(pdfdoc, self.number, ropts) + @property def artbox(self): """The ArtBox""" From 421b688cb4efbbffe8068acb817d80643b43fcf1 Mon Sep 17 00:00:00 2001 From: "Jorj X. McKie" Date: Wed, 27 Nov 2024 12:33:12 -0400 Subject: [PATCH 02/16] Gracefully handle missing xref object Do not raise if no object exists at xref for method "Document.xref_object(xref)". --- src/__init__.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/__init__.py b/src/__init__.py index 1f6f20911..42cb41feb 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -6105,17 +6105,18 @@ def xref_object(self, xref, compressed=0, ascii=0): """Get xref object source as a string.""" if self.is_closed: raise ValueError("document closed") - if g_use_extra: - ret = extra.xref_object( self.this, xref, compressed, ascii) - return ret pdf = _as_pdf_document(self) xreflen = mupdf.pdf_xref_len(pdf) if not _INRANGE(xref, 1, xreflen-1) and xref != -1: raise ValueError( MSG_BAD_XREF) - if xref > 0: - obj = mupdf.pdf_load_object(pdf, xref) - else: - obj = mupdf.pdf_trailer(pdf) + try: + if xref > 0: + obj = mupdf.pdf_load_object(pdf, xref) + else: + obj = mupdf.pdf_trailer(pdf) + except Exception: + message(f"No object at {xref=}") + return "null" res = JM_object_to_buffer(mupdf.pdf_resolve_indirect(obj), compressed, ascii) text = JM_EscapeStrFromBuffer(res) return text @@ -6166,7 +6167,7 @@ def xref_stream(self, xref): xreflen = mupdf.pdf_xref_len( pdf) if not _INRANGE(xref, 1, xreflen-1) and xref != -1: raise ValueError( MSG_BAD_XREF) - if xref >= 0: + if xref > 0: obj = mupdf.pdf_new_indirect( pdf, xref, 0) else: obj = mupdf.pdf_trailer( pdf) @@ -6184,7 +6185,7 @@ def xref_stream_raw(self, xref): xreflen = mupdf.pdf_xref_len( pdf) if not _INRANGE(xref, 1, xreflen-1) and xref != -1: raise ValueError( MSG_BAD_XREF) - if xref >= 0: + if xref > 0: obj = mupdf.pdf_new_indirect( pdf, xref, 0) else: obj = mupdf.pdf_trailer( pdf) From 5d54b40cf76c002d145ac73f421044f8af79f02f Mon Sep 17 00:00:00 2001 From: "Jorj X. McKie" Date: Sat, 30 Nov 2024 09:40:41 -0400 Subject: [PATCH 03/16] Image stamp annotation support --- docs/document.rst | 11 +++++++++++ docs/images/img-imagestamp.png | Bin 0 -> 163567 bytes docs/page.rst | 31 +++++++++++++++++++----------- src/__init__.py | 34 ++++++++++++++++++++++++++++++++- 4 files changed, 64 insertions(+), 12 deletions(-) create mode 100644 docs/images/img-imagestamp.png diff --git a/docs/document.rst b/docs/document.rst index 0f60bc2a4..61b246e83 100644 --- a/docs/document.rst +++ b/docs/document.rst @@ -96,6 +96,7 @@ For details on **embedded files** refer to Appendix 3. :meth:`Document.pdf_catalog` PDF only: :data:`xref` of catalog (root) :meth:`Document.pdf_trailer` PDF only: trailer source :meth:`Document.prev_location` return (chapter, pno) of preceding page +:meth:`Document.recolor` PDF only: execute :meth:`Page.recolor` for all pages :meth:`Document.reload_page` PDF only: provide a new copy of a page :meth:`Document.resolve_names` PDF only: Convert destination names into a Python dict :meth:`Document.save` PDF only: save the document @@ -594,6 +595,16 @@ For details on **embedded files** refer to Appendix 3. To maintain a consistent API, for document types not supporting a chapter structure (like PDFs), :attr:`Document.chapter_count` is 1, and pages can also be loaded via tuples *(0, pno)*. See this [#f3]_ footnote for comments on performance improvements. + + .. method:: recolor(components=1) + + PDF only: Change the color component counts for all object types text, image and vector graphics for all pages. + + :arg int components: desired color space indicated by the number of color components: 1 = DeviceGRAY, 3 = DeviceRGB, 4 = DeviceCMYK. + + The typical use case is 1 (DeviceGRAY) which converts the PDF to grayscale. + + .. method:: reload_page(page) * New in v1.16.10 diff --git a/docs/images/img-imagestamp.png b/docs/images/img-imagestamp.png new file mode 100644 index 0000000000000000000000000000000000000000..58fc2cb16b7951b464a08e44b22e1aed2e36b416 GIT binary patch literal 163567 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

dr`g0SI4t2 zz~0gPk0|vbV%eSr{FqS4WQ$zK)Hn#x1qd3U{FeCm*JqdmUyt=F6}7`Hahxx=^0RjQ zh#}Y31LNq{6Sr1QsdSvQ^zA^1mAQ6H!X!JTCiqmg2$U<$M^L%In7_0FnfZox&gp^m zwsY6n7mBs&Hg450LOSE0SVvMENB-W=i`oLolwT@>fzY&=T1p=PG{vi3n} z6`QYwj5%A<4omP3ExW!Q5>!HS(>5f%+|u92;DaNibO{Gm zAh~CLa|w6H`oJ5FzE+2)uC|4u(a_g}w&&grmAnb7_y*ZnIzsx+3s+h6FQ=wZUQ`!h zeb(;+-&gkuRA|%XZZ-OZzi?e-_|iBmyD!F=3Rp=V#!oQn162F;gAs~^ZkU6Qb@z$~ zk>YCa?r!qI#=YXnMZ3;)%yj1dm5u5j0Xws-7-!XT8vj`BzwPbPyb!~%;$2yInH{vX zMbmOU(mXx8*flsP%TFshrR#Dw@>+9lBzt35Jg@Q;+=6G+*Ps1re5+srf29YP*^DIe zQz}uwqDbTf$MXpqC1@}TX&XMd_?jH*nebd}g#1l;4A~d(3-5aI8En7&z}bArry2Ni zDDmvv!=?q9T`sbQAAyOcfEW!0K9$ioD{m+oG=U2)?V;7alzt*ff)+V|emi5c?^+o3 zRfA2X-WXsKMo=1~(A+&a$%@hZb91Y!nwajpy-_|Cqr%{shf!PvEWmCaxe8zxA$kjyLx8P`)>Az zb{m5N{c~e=EUtF8clXpRi9bt^c4vxk33BB%QWQ=(FBd);K&{jPpwl4-7HLN8`69m5 zvK7($+XrL<@18`cv}NtV^|Gx>0*9*GAFrQ78A#T(aQEEkdbP-U&Bjpm`Y$nPwV;m9 zyEvu0Rd%Gpyq}O%g=mtmant7@Kkl9@IlS!Gq5bPB+Yh+P-Kr*tc~yLZ$BoS+;Oe== z7+J4vvnK}J>>U@%#oTN*(S7Il=xn76D_jt?AvB@!YfRAYH^)wfA44C`BFU#fu`WLD z)+xe#z}HD{pnnE+DGU1R>G)`-P^JcrALSB4kC-323y*wu-aEX;AqVSWsstRTzO4lD~*#?4-XB$?VyaK{8B_%W}>Z6$Y zi;jSsupS1PT78Jjn?Z>W0#p!9|6Vuc!Pn%*O()aoQyeY)DZV53i+PfmPF}F@dlP-`g~VM^P`fenX9CIy<$Baw z?&oy?_WSD|E*ZlC=qE(mMoVx8prwYpksN)Y#Z~6vP%~Wb+>fPc-J>fro7i@L{;Y zw3tGZzOh0QWG5bMWjUbxYtjo=M3ZPtc9k;O9Dbpii4S-vuHt}-iZQ7Dj!BVTrjQNzK+y`Ev0L4my@^Zo=0z7G^b9_$;Qcgn7vbqz)a5b@uitrLk>NJ; zT|@q*b$*eVpW#u4jrPWXX7o^iq1qW*eik&%a~pPR7fB>8{#4uj&i7Ek?91t= za>!93AUTEZAr4}Az~j%pk$N*yz@_M)3-d2MrnliqqMshW9$bG)@cI*`)(4?7YUXT4 z;J2(i%~qenYneU0BBqFEL`f(AmMtYGoAUWrPO*^j0PaY2nnJbk;bGdkdSdfJ=zY3Y zmeYyn8$oL~5s}=fosFfp`&ZCX zWSA1mhrYAJ;SAKN`m>C^c)4&&Nh+LXNy=gl50{5eUwoR|=~kV|%=C z8{gW4(@q2yeKyG%@H2t=&TM8r{GH&)SUSURmCrbH9EYr5W3}Wpj-2w_&g3zZaU$3( zk8&Q9Ez`Y6Mam1=J{*;}fXAyY{OxLJ0{%^cBsRf~d)*#(w=RkHKU(#_yX$JdySP(F zJNjSWb#8Bag5{p^Y3{Ql#zmBPb)Km+sQWb^YC+SZik1tV{ya>AwS-Tv(ALs~LU9W{ zh!q>~*}gH+^&WzNjJTyW+;BIVc-`ZIETxr5>Z&upzOUwue^}}Ys_}S0k}-cc<@Lt! z?To6Tkz=FGdg!NTl2xs-JUKGdd(z~pQS!Z|I0$tyD??`Q=>V!Q^562?SNNz-RoO<% z+n*-PD|~{xO)bU~npr7FJt*j;z@3b~Jl2dvjVU+8nB-Z+M>`yds&Y74kg#^f)C1sl zw981cWpOg!3C#?VfZ55q?Lg#QR)jqxv0{sl9z(T6doWGBp&4J+R>Of(>+Wwjxdld$ zjU_^iId86oys^*j{hwWdp`U2ozbT{`iESMZyfO^kW01K+=(e~1aOp1h4%`3MA0@fc zetmH3jo$G;TQY+#;q)hv^D$5QWN6?=mKp^UY)7e^A^&WW;#q=cUTuS9vgH1dgjru) zQOhy46p+A`$L#q#&#d=suivqmph5q`wy?jN$isq@&_f; z5-ali^hC|?Wfnqph2=O7d3Qg?hcKJFa1kVGnQA9Br>Gm8zKz%WXUvU~7&+2L(BY1W zTJ*}-u*J$CzxJTc%BW{_irlNwJ(4i$0pbywU(yvYWG95zcTMsBXM#vS69`A&L%9XU zreVsgX91f{e_Us&&%9Z)Kpc85qSacszjr{CmBVto&qCGtY+T`C+8MGp{U_|ZqSzH$ zyuk6(aexgqjlspWVc5JZeXsQ%e*nKANJE<;`+xT$W;VUwJk{F2myRBCI=*o~+Q#tr z9Q`k7jqdiogOBzNtZUs7FOKAXp=(yIDt+EAmRiz1J^qHVWX^r2JpM=R8uDY@1#yk| z%{csSOBNgRl%~e7C)kD~ad{q_bIlE*!lVYRTRCS*AMx6?X#ICNf*Zs6Q;owIbj`{|0ua)=CJYLui0bPC~c|qd6;{LRz^)Y zqUq3ELU)ha(Bo4)qSg52bjnPZ6S5yHQqXyaS)D>a50&`K$4Qj10*__tmUNapk${>v zeLs(&ZoYH}#)k6MQ*gKM0n??Oh{jbb#(F)FP9v|k!3?zTWZ!b=;nn&!pg4t52D*aJ zBhJl8@yS@WJ{Q@2VykOgS5;RX;!t5bi&)KQ|K|e1d>HhN`OA4NG^$v^sDSCd*Xx|! zel939#Y_8$Wo^P(bas3F9LF*XONDG!RWBBxN16u~kD3jT{>tEUuQ#My;lsrAuDtcB zTsV?C+l{XK^_`OJ=53kmo!gaXUX)-F(q{3Yqp2o@<;)3dp;|^u}Z;cc7#>=Z{5Qb0&Hxs z(mHeL(FW}pZ>lv4zMF+`8ht6LGS27;U%ej$mf^f+x-Z{#U1L>S>U9Azex?IJU+o^1P^*rZ#p3r0e za&!fg(3Ne}%5NH=X1)Cq^3vY0z9)cARH2%v3iV7c60AxJ$AmUA09h?ryxIs3PDZh4 zJfJVRav1OxHi=?F#%F0nDN_BCexD@^QBI*o2R*aZUp#$O#lY4ELCd}tRgCMY@eJpQ zE_$Se!gRv1+JLU*haJUD`?>i&Y&9}IR<_&t@0E_itn|wt@;$D*+dmnpz$1JBLafN% zr?Y#4ewR_k%U>jKINWF-(Otv_ycvQrc$DKU6`ri%Nd!t^eb%D+{oxVC*+bBY`-cy- z)zv4uy1HE}m^LCkiRws9ZR?@0e-@1<)^(rmHTZZH)8}PMpzgwF2iy26Y`RUqq(G;_ z)Y(jGS0V%xrXofUy2r<{FezuK*!Av7T6&HEiR^#ccG5K+#;2cytMrXvBp^igC^4GJ zs_3x0L(EBuK9%ftrAN=SUkd3O>he@)-ciqThrBsqUe{I`#(hgL6JY#`6o6^BqRE-0 z@jNBw>wB(u8eDHx(l$L=Tb;cP>sp!Js0_xB0$!2cXQ!T{>N%ISb+7XLtR-N-qTKLe z?^J$^|G#GKeF$dO>=TEgzAQ>cwBIbTkt*b(zr7umsHu6~UFUX-PkH=m|(2egB68oX{ zA-#yteG&$5>fidl^gGp`xNQFsjQW>7=dxm6(4G2)*+e7EHtSzs{WHUZdwJUh|NT{@ z^Sc7nm_`2g3LIBqteSB{@V?!9DVfHX;H_EL_YFBNGoH@c-_){2 zT(^IfXm1YO@l>p54V_f|qyOeW+?cG96pQ01^Sea*%fEhjF7gj}DH` zf1dGWU+#a)Z8rY8IHmtQD*5kS;7<8hs2?%%RqH=b3&48fYg{|oM%>+RIn6uXi|FUM zLO|`m-elkYxIJ;o<)6(a6iYB2d0Y}Vsxg)6ff>wt^~hpjGq!2HLD zHys%G>yt|{chv9nUCW5wBIKy>q_?5lZ{BA)M|59qr6cSA`!zAvGB_;VDI%3oOx^oX zPBD}ns{ov6{$zfq$N%6+0YkvMeKpUcNUFq0BWoWlX#4lH{`)l~0x>V?JONhVqk?b= z9A30bgxnoxPM|mzzC(Jld)198F0KT!P*XY%I@yW@E}xmWhLZ*i=+ za${iH;(vnvBj3>%x^Q)6EHD#)Kcy$v|kk2!z&(7*q>y8Q7W9;8P#73x$M-T3XrttEZh_vK|DRpeA9yD4F{ zD*&4cb~3i9fKlI;izW!Xw>gsCjp+cGG0f_-1mE8NMn<*hcWv*HgE!?GgD;bxUhrVG z5(aoh?e6S6-t*;2KMw)<{FnZ>-+%wybNfsTQ>?D5v+BX$xE{rji~IaPd?3J}_iYjI ztDjX4(W4?5;=@~JXDz2Si6PB>BD;6zcy%;$Nqg@(DOKkTAIUwNVX|5tKu^TEeed*n^{9%um6FN0BV}yDSJl`3`IaF=t2K8W`ZPRv8Gx|;YH zc81Zq4=ySM_DB<(Mmmf~~6*5w=JQJL*nYFU-n z-0eg@Cz)<{5B?DSbqI@r({kBYOA4ciM zU@?vr7Y`lePw|VNPZ@Qyq{c4Fy|Ff=uzE!!695>;OhdOI@0IB%Bx&z!0w4gu&Zx;> z@blGJCiZ>Y2m2sNg7|3pssJSE4TqnGSV2Q43L#4MS@*We93HKkOsLez)Ae#_MdHMF zGus^@v8ow2D66r)+IfC?IqL7g_@ol35nYhxBlY0Qb|!7F-_0zO_ZD+YsQ?EiHoGW7 zxFYodzFXO8 zJPzIJ+^SK`#xv%1oQ&Co`}K%Tr(#-Bc2psY$pp)s+}Anh=W}82BxILcnP2Uz zvt1{|Cab2yr!`GmIh_sIb$^I^ifacK-5lGdo8!y{x_!Q}af}=yGN*GMI)~ilR8K`>;2}moE*Vb^3_W2D#JSAArtQ(OB=pn zt{c*iV4z)`=sc`v&%sWOXWi2|z{2?z?Yeso3&EPtA>WQ?y@>tak zpF|S>CEC>5Hs?i!>n!YirTf8b%K4KPH;(7kzBD6sMTO!vQ|OH1;gh4(Tl!QN?~^OD z<|8kb7Or%*q0J?#x|c&1?{$gig5h=s#Y1-~mBZAja5P<wl8-crBN-MNh14C@)hEw$%4A>hhUE&R(HV!u>f)Q=RcuxjJWvw zqX-1`>j>n1Ty_Ei05iL@Mri?9btO^?A6I5WdL{7EITsrrS0QvP_Bz<}<;$1p;4I-G z9)fg$((#NBr}U-A&$f!z^9;}M&Y2RsFE`g0tNroJa=U{eUt25vHSEj`M?P5?XmnT^ z{J7Jow8%9x(6T5f{5l|LAtG{4w$TmVwIzbIo6NWRMk6VQOc!)1ukYb<8uvHqnNQXq0hKN>E><8V7 zZe~L5NMNFfM1wjIoSjE zQ27Yx^@qu2;U|=6vm5`)CHk|ywer=`m8t%0<`gSXYIm-F)G#$#+J9E`uDQcD!M;cA z#5VELNyQYnJU!C>0+Gt|sNw{zzYbj_nYP*$EtQ;bA~Kml!E-(EVPab4T5jfUKa?JkBdxdj5nPt${oTCGGQR@CjHK8k!G=1-tW zR0!_Ti#;u@d}aCvcy|OG=Iwnjk~cJvN^L^D3RMmW^3<%%>wnD@SZ&QARjJZf_LunBnnUZ0cpew&c?C`pUq6zy4W$U3$lX(Gzq>NN`)=bM zsWb0fEO6b~8HA@Qx$3Imf6j4y*iAxrC#Gs77^_DNEUolA{nDZI`X$vXz4O+9Ux{5m zK(wOeRHIE3n*Bx79CY6%Hwqwz#im5JJci@o63@!Vp!A2Eu#T7+%S^*YF%o-4(H{%b zeLfl;cnmF!o-g^bOj|-PB7XytIJhSEcg+p`f(ux2ZANx2#p*(g^Rz=tpGPaB$jAO^ zm=wq!ZX4!SB;Jr~OkvlK$LO(qjBuaLB60G(x!Z+Ef=Jqlff9D(8|TGCaIcM2<7#?! z>eN+)qu&V~MVNoH=X*ZJRTn`apw}8n`yY9EkKq#$E8p9#+}np3UeJN+;@^9Z-JPIu zwCPdECtIUU+hjBf-r?S6ev#aq!*+|@^th;Kk38@|T+WpXiRV?ZFwNdPzEM+8R%jJ5h>Y|C{&FRF(gLIIur_0T95D6_Wtl*_%v8Rjr zSP&?@(b8*UAk(Q$X_yX5@GbYgO^Vsig8-n-sTh!^VZWp`SdMu_>jiU68U8^7v7zv& zQ3dx|X|%az!bp6B^erckc9I0&V zl9dau#!96)Z|2{VHI4GUjxt6UH0t!;`#tgaE-N<%Th!tc=a>Kt~Z)aPu<+tF?>IIffti?08bv(NF&m6{D?7L?sb5I6R zQR~BWU@XfIPa;;B<(^exKZugFFeI6h_{8mxmrx?j*G2`mkz{b_g#qCk{^;}B_2hS- zri}6Y4sn*7muhpZ{}tV0!a@?_p;6pRri%X2`ZbIvlLtd5=1$)n_>!PjNH7&Pl@kz5 zXUb1PjovGEn@CHbZ!^{5%^=B!E#YVIgRseX3MB~u6$hj?Nr<<^+y@Q2{U<0h$SQE|+ zZ9EOfn<_L>J@OVCIw;P2DXgvi!ATF?Fy0nyI_ZAkIAqky)} zTh{NYQ{@Aa@%>w_cw*3P@*3OaSgECB*7Oo~;XPn*vzDtt}xSh&NJ% znn>7o>UB~RxO%>q+qgZrI<<+qSCFmQFr;Qm{%RxHu;S%FOqT?4-6QvbSjW1S?-TyB z7SQ0a-o*Zq_OLZHN5c&zff+=S;c3$9DcS&^yDj!>EzY}<0dP&1so3{?euV@~;XWT4Feh&+*U6n$<6+C$^t&imp=rj;jg&Lc4kzu2@r*N#oFG zPLU&*BBg*;aAvBq<)K`f8N-EecSZ%9b|tgA#AQ+X`{Aj?%UMxbhd%GMczFcE-a%5) zL#~u?Xe0W_sKUH%;r5;;b-~=uU{!-ec5p1j*4-NiMA6Lc@MHzbkNiKqT~|~STcZ|H zK|~NisS>1Pq{h&Dml{NAMp}RfBvb*B-lZeGcjPF7gc1zBhZayodJ#eqDFT7e;l|Vc z`@h|%J5PJ*)06tK zn$-f|Wue0*KkbpO?_fa?pZ7lNbRuvKp4Tjq(1@ni*`wLy`&cY*?D|v<9zf6Q{Z=&G;QlweBOA6f@2LacU#OyU%>`cZ z_HkqD^gD+6XL*?LFYkQV9X%r&Z^g z(N8T)ah22!9RUk)^a)Q(SB44i>C*I0GEp%O@yA|m!QolyRpd%Orza`A*V2tsvB~^F z^R6%hbQ@@0C}g#ln303zMvQf-l4$zA^xYDmffceGhNVY=8LL!UiKE%?dt(DCGKQCZ z<(#;6X8G66wt^nY6K84a%w_@Cv0=tJ7ahL3I3)G>_KjIPVncvfJ>(T9kDE>f&)0`& zW$II|Mk++th*Q)(mS{&G(mvrp%3^3OPx}3a(F?fNh$_$flVSJ^Q=Ab2?iJzaW}`{{ zXrH&`|Ey0je7{G}NWP`6XsGtxEfsy}#n9?^-tNt$pUlxM--SrNfmji|SWG`Rq-I&( zd4NzWOQ@9)*fIDn9-M|yh^5s)(LmiZJ^Jp%3!n|Baq+8ebpFn=PEvT^{qQ-b!>k>K z%d}daM!AFYSauAww?ea(d72m6m?)`S1a1|H9%GXn_EJ4$YNZ`zD~_$PhhIP zwdwhUc6Le(Qy21g>A_xGQ6lP&eo(9P@<|(}ciNts$n#{yc>bdKyc(}VQzY5899InB zelAY&gUHFX3Aq4v%YOXIu_1or%4xTa&*)Y5G+2M&Vv>~)P~9CKs@dmOd?M*7@&kL* zu})9CX9by=@ifQjxR9q6tU6hu*&DUB^aT@I394vW z<%ujc-t{b)^H&+10_N=<%ph|s_2mjd#EyhHBA^>@(&|~|R)9q5GmgUSs$P>{3z7sJ z@2BXVt~xxSJ!S+hSkRqIH=@deTf4}lW?LYw!`5V7!N@o75qaJSmLUcC*p6tPn}O)rTtj#Hmz?=3Bc|D)g^_DP z^k+?rA;9K$HT(6;Zf3>`Ci$m_-_rv0uTCYcR*aduvRU~5@!=n&$gK|l7gFT%MhSxg zpB&~*fl(%Ek9Z0BjsKf??hrqOJp2T`~fi5b|aoz1Ioqux7@jys5j{m19JN%CwyKISH(4;iL zr=#M0&Ge!0qSpyBR7wn^`$q=cmU05GEH?D5vd)Z^QEf^M5~>Od!(8m*Xr87u<~H=i zT1T2+MN896%xAV3$l?w#5mB1ex~p?5VGtam8-Y^fgZuNjZ%Qm%# zmF2Xii1EHBTQW5iAKSK_RQCxT@VcS#ZgIuBK{RkZV+j&Y-rF*v_LBjUh}Tn4Qt8t# zq&o>7LCPef?-foZFu(jyO?KRv5=31~i+rzD1yiKvoi zoHoOrB~`*mW|Fb{rU+PjX{(^??QVJ15N%JFiF25VIUv2!!S={jv)F%q!$3i~OhU~5 zxd!nUZdvhXo4lN|+75u43*lw0StstOD`7kLrnxsKO!kN-;f1jGiGmgH23=E5qt-IrGg#ua-;^b3>EoxGiCA#3nzi*k#YccVDp zu{hJNuAxXHDOlHp{Z_T@)WKus%VLxarZ34)mxKeDg`0L0=}h@a*^i(hS(u%T;lW$T z&b0ebhHP(vN`wv*+@XcTtDK~8z0V$S;!0@KjGD~jX5cl+n>M&nIMvWH_UotQi$m%i zU_qslK}ew}{5tusoLR+y8?bac$-2pIB9YQjhKriCMQ={BTN53X$mDI2>?1j-QJ%Ek z*H={fBwS&3jr${IS=loL*vw>Z^KRZuv_LGvG+Z<+X9rRAi^KU$8G=VkKeOK8!-MICMd$S3CP z)lDqcf&evTV|`)=kP(7t6lk}@WZ_lSWuuZ0I6M8H(w&nIHp}Nm(KNg~Lv8#j%i-zo zrQDpd@z-8Ri&m))8ul^s+^kzHdW;5H2+*WzRb=?#G8XiVI+q78&_D5q#s+^%mWzq` zfvE-61h-_f_FK##`Y~{(*Uz2~Ur8YuiH#I-U8mRfhNgxBRtGLu$Xq|xK2v%mZ4UBv z4DvfOtF(CZdLaUUDS7!&Df%?_BJ1;zPU4JG)HiiN zjuAzv(1T*T+?vRUiK~`#&FdL(I8PjVANuC`ASR*UO$w zZ;~_AxZI&gRW<;mT_LB7`*uI19gMFG*e2sTo@>&a zMSgg0pyeKK=1vvO8xx(1^0bpi(@llie;N`ESsMoF&YC0Kqec%^%$M6vChQPpJ_M_f ze-`rltj4ofNiwxiP8PMFB={|h)ovE*-pv>9orKGR&&C+u_zm&KwVWTfNPq^{>+5Zk z!sD!|)Ka18Tnx79jPp3zF4pCY(o^mNNRPW!&JQ=MSHHx)i~%d#m>Iv?tf$hzpaiq> zP&*if|930N#TW)Xk;%7QSb>}oTTyR6oOFtM48pic6SgL&7e+- zfzU<&+m`CX3N9~cp7dsQF`QgT368gJ6_cX(4pnc6zJFcxN0@d0Md?_kuEGdXigL#> zAL@Yw+1&Q$X{UvrAXA2Erbo%iSz1{Ty&AX(c(oAqRiz;PE{i%7kHGEJpPF()%u1%O zgX0lAO?;j%+_I737t$0X>F?w8HJ|Z8%HrL1{I1^gDGfpept!M*^haf)c$$*5OtZl` zoC(M;z}85=nEFQn`jf3zasp~nnkuwBkuaN1)uTskDz)oR1r4A+4M8f};A+Kapm;F@ z_{p`-<{&zU5bHoYc&J0l#?a)1_;GQ5WlyudMnTj{fSe>Os~YSrw^;o=BiB0hRx`=w z9?YiT&lYg>@r;3RysSI7prKLJ*`XI*J?mX=Yke+eXBYjw@yEvP%1;jj-fdKYgBbG} z7;eBBq)ImYXl?D2-WQi-OUN0tg+!E!f<$@tQcg+$j3pm$U9|U-Vh>{;9Xkwa(5#?f zd^aw|?^6}K@#yxjWD>pYV=e1vQUk@Y{g)>mmc-i9t7Sy?^JvMgV%1g`Wny!a=X)`g zq*SbNcD(q!#pC*Z-3PP1MND5ZZ%?o7T&i+z_kNC_*z3l`^uLU}<5rT1{Jsv21G5?b zrcMw<;!gvy4E$2dTS0UE!Yv4P{+;yG$kVV@CJ8{%j(mq_ek;x;?nz9C;MXms1&QYE z>jcFxSCcDs)YYf!vmr*db7D9cyW&<~8Y))>gcN!zZ&FEX?xw&j(XD_P$8mgBejBj4 z)K|o2K2!s&tC6ZhuujU+4%IQB>@DOEY^R1rb=lKSIhSeJ8dmF zzWi_E8UKSs$uw#kCM&RHyAt66MEJoV35lAPXgSp7DxAhaRP#A{Ox-a>l==oi)l*EV zGVCiKcUD|iu^Fxnko-!{uv=1M)iJH@&^xq3I7_GI&{t&X@9Rx0Hi{CYO`!bw-`1_h zW2Fw6J0vd+Gk6HCe2zg)Y=m6%&u$tAFBDnq%|8}{PX4(2J@oUX=boG&5FV(>A7=J3 zEejW%maY7yTia`*xwLQTjQQ$(gFfJPQVo*ofn*3-BTJ$qBk!@4vxDI}X^u>_u-#YC z*}JU+s?61U(ppQc16!L2?K>bq>{}A6{CcQsls1s&;yZ$fr%2SrU3GFPi(YuL_1>dk zv9NC=UFxvF=&~v6q>J@_0Qg`phF0za!bNwF^GZQ9fzf&ds90+ho_=Mj>F#i1#I-CH zgaiJD>wb1~+yBOX7$kiOH=o%e-3qH#(`|<(>?S{tvm9x<- zJ`t9K6@sH_Euh@&?PcMtZl^<+a5w&QO@h@>uEMv54D)c<&8dAt-g#q2 z`B26e-ebA@u#a^Eyp>%(XRgI$8)R-sl7|un`)9?llPhT3Zt31d(YCn~mv^4T|v^Zh=b+%``efo=>AbcM$+=5J7ggDU*B8m=l z?gmzm5tRc5Rc*4_qFyspt>#%cWP`Dv7y!iOHi%3>e0yZh7kCLxuW%9!OJ&wQH*mv- z!}c~6^k(}B4h3K6n4g{qWIU7on`Y`*nDnvA)ys)wGwd z+Rdc%!TDKG8brCl8QkKD&a5m&vzfj?9EcvXOI{*nk^L;N?KTboWXm{W#@;v^ybP1^ zk(png`Cu8!-3|`dHBCcy`90*C{SbeMZ2w`qrmx`cPn}jjk(qS~|Kj#ryDv|h?uw6b zF=&yoOPkc+YoF;NsW}`wHL2oAJ6-JFf@euK8XA>Q<0A4_8}ZDey<<%b?GblB;Vh-L$!6Z)=KMt!FRubNH6%;3$^dG z&FT=tp|E)C@G$j+f1h&XO~4L)!+Fy$GKG@@(%K$&OUEEND`IrDF#C{uxtM@W5T_y%d_DdKmu{SY*)1u8|+V2%}(oE7;>4HP$&YUJUwz zOO+BymiNx_wyB#YaMQAnkJw=krUG2@nSc8!kjMU92$ zQ7{jnc@mIw`kBk9Al#{HXftYT@qH4WB#PcZ$0MDUS*J$xk^E2sb~#}R?6q5pLr!Hh za&yGX#c`kMko3;0T-AFQ@_b$bc+1qbYYWiqJ6RiIdS2exlOz%K#6qphjPddh!Xjv9 znijwqUzSd`m~xR>iS*NLz2<<4_^fABOOQ{?iK2PCS-|XXK3v{}J!dutY_Mhr#h>QjLdnwVB_)mneoBdeo&;w;C$AQD*ncw z&zS5JG1nv-UtLekvRj_!p7M?V}1A>)a{bR?&I%-rtnCO`!SV z?XB{2NqNYopwpw)Q63Wc`R`4ce_Jsp$S?2BQ0rgW!iNL-pubyn^XZE#M7aUJ`cTS9 zSpHXL0RKJ<{OQJa?w_Nhuc?30h6+on{i~<;ulp|-2r2Z*_3iGyT%mP8{)f-_&sd5o z^bP*OGXCHF%HQ`alEj|-&pE%Z_J6OV+&ZUdC@A59q>ATXARQ0Y^i(U9Erb6D9B6pF literal 0 HcmV?d00001 diff --git a/docs/page.rst b/docs/page.rst index 6883270b5..0dc9281d4 100644 --- a/docs/page.rst +++ b/docs/page.rst @@ -536,24 +536,33 @@ In a nutshell, this is what you can do with PyMuPDF: There is also the `pdf2docx extract tables method`_ which is capable of table extraction if you prefer. - .. method:: add_stamp_annot(rect, stamp=0) + .. method:: add_stamp_annot(rect, stamp=0, *, image=None) - PDF only: Add a "rubber stamp" like annotation to e.g. indicate the document's intended use ("DRAFT", "CONFIDENTIAL", etc.). + PDF only: Add a "rubber stamp"-like annotation to e.g. indicate the document's intended use ("DRAFT", "CONFIDENTIAL", etc.). Instead of text, an image may also be shown. :arg rect_like rect: rectangle where to place the annotation. - :arg int stamp: id number of the stamp text. For available stamps see :ref:`StampIcons`. + :arg multiple image: if not ``None``, an image specification is assumed and the ``stamp`` parameter will be ignored. Valid argument types are + + * a string specifying an image file path, + * a ``bytes``, ``bytearray`` or ``io.BytesIO`` object for an image in memory, and + * a :ref:`Pixmap`. + + 1. **Text-based stamps** - .. note:: - - * The stamp's text and its border line will automatically be sized and be put horizontally and vertically centered in the given rectangle. :attr:`Annot.rect` is automatically calculated to fit the given **width** and will usually be smaller than this parameter. + * :attr:`Annot.rect` is automatically calculated as the largest rectangle with an aspect ratio of ``width/height = 3.8`` that fits in the provided ``rect``. Its position is vertically and horizontally centered. * The font chosen is "Times Bold" and the text will be upper case. - * The appearance can be changed using :meth:`Annot.set_opacity` and by setting the "stroke" color (no "fill" color supported). - * This can be used to create watermark images: on a temporary PDF page create a stamp annotation with a low opacity value, make a pixmap from it with *alpha=True* (and potentially also rotate it), discard the temporary PDF page and use the pixmap with :meth:`insert_image` for your target PDF. + * The appearance can be modified using :meth:`Annot.set_opacity` and by setting the "stroke" color. By PDF specification, stamp annotations have no "fill" color. + + .. image:: images/img-stampannot.* + 2. **Image-based stamps** - .. image:: images/img-stampannot.* - :scale: 80 + * At first, a rectangle is computed like for text stamps: vertically and horizontally centered, aspect ratio ``width/height = 3.8``. + * Into that rectangle, the image will be inserted aligned left and vertically centered. The resulting image boundary box becomes :attr:`Annot.rect`. + * The annotation can be modified via :meth:`Annot.set_opacity`. This is a way to display images without alpha channel with transparency. Setting colors has no effect on image stamps. + + .. image:: images/img-imagestamp.* .. method:: add_widget(widget) @@ -1929,7 +1938,7 @@ In a nutshell, this is what you can do with PyMuPDF: PDF only: Change the colorspace components of all objects on page. - :arg int components: The desired count of color components. Must be one of 1, 3 or 4, which results in color space DeviceGray, DeviceRGB and DeviceCMYK respectively. The method affects text, images and vector graphics. For instance, with the default value 1, a page will be converted to gray-scale. + :arg int components: The desired count of color components. Must be one of 1, 3 or 4, which results in color spaces DeviceGray, DeviceRGB or DeviceCMYK respectively. The method affects text, images and vector graphics. For instance, with the default value 1, a page will be converted to gray-scale. The changes made are **permanent** and cannot be reverted. diff --git a/src/__init__.py b/src/__init__.py index 42cb41feb..dac24ba5c 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -5444,6 +5444,19 @@ def resolve_link(self, uri=None, chapters=0): pno = mupdf.fz_page_number_from_location(self.this, loc) return pno, xp, yp + def recolor(self, components=1): + """Change the color component count on all pages. + + Args: + components: (int) desired color component count, one of 1, 3, 4. + + Invokes the same-named method for all pages. + """ + if not self.is_pdf: + raise ValueError("is no PDF") + for i in range(self.page_count): + self.load_page(i).recolor(components) + def resolve_names(self): """Convert the PDF's destination names into a Python dict. @@ -8604,11 +8617,30 @@ def add_squiggly_annot( q = CheckMarkerArg(quads) return self._add_text_marker(q, mupdf.PDF_ANNOT_SQUIGGLY) - def add_stamp_annot(self, rect: rect_like, stamp: int =0) -> Annot: + def add_stamp_annot(self, rect: rect_like, stamp: int =0, *, image=None) -> Annot: """Add a ('rubber') 'Stamp' annotation.""" + if isinstance(image, Pixmap): + buf = image.tobytes() + elif isinstance(image, str): + buf = pathlib.Path(image).read_bytes() + elif isinstance(image, (bytes, bytearray)): + buf = image + elif isinstance(image, io.BytesIO): + buf = image.getvalue() + else: + buf = None old_rotation = annot_preprocess(self) try: annot = self._add_stamp_annot(rect, stamp) + if buf: + fzbuff = mupdf.fz_new_buffer_from_copied_data(buf) + img = mupdf.fz_new_image_from_buffer(fzbuff) + mupdf.pdf_set_annot_stamp_image(annot, img) + self.parent.xref_set_key(annot.xref, "Name", "null") + self.parent.xref_set_key( + annot.xref, "Contents", "(Image Stamp)") + buf = None + fzbuff = None finally: if old_rotation != 0: self.set_rotation(old_rotation) From 901d09c91c9d538b03e27ffe077ad640529611ea Mon Sep 17 00:00:00 2001 From: "Jorj X. McKie" Date: Sat, 30 Nov 2024 09:47:58 -0400 Subject: [PATCH 04/16] Update changes.txt --- changes.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/changes.txt b/changes.txt index 147eaea1d..5ce2adaf2 100644 --- a/changes.txt +++ b/changes.txt @@ -12,6 +12,13 @@ Change Log * **Fixed** `4004 `_: Segmentation Fault When Updating PDF Form Field Value * **Fixed** `3751 `_: apply_redactions causes part of the page content to be hidden / transparent +* Other: + + * New Page method "recolor" which changes the color component count of text, image and vector graphic objects. + * New Document method "recolor" invokes the same-named "Page" method for all pages in the PDF. + * Image support for "Stamp" annotations. + * Accessing the object definition for an (orphaned) cross reference number no longer raises an exception. + **Changes in version 1.24.14 (2024-11-19)** From ddf0da26e97a8aebf9008f1838f9ed9da956247c Mon Sep 17 00:00:00 2001 From: "Jorj X. McKie" Date: Fri, 6 Dec 2024 05:05:19 -0400 Subject: [PATCH 05/16] Update Table "to_markdown" information --- docs/page.rst | 6 +++--- docs/pymupdf4llm/api.rst | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/page.rst b/docs/page.rst index 0dc9281d4..cbcadfec5 100644 --- a/docs/page.rst +++ b/docs/page.rst @@ -492,7 +492,7 @@ In a nutshell, this is what you can do with PyMuPDF: * ``bbox``: the bounding box of the table as a tuple `(x0, y0, x1, y1)`. * ``cells``: bounding boxes of the table's cells (list of tuples). A cell may also be `None`. * ``extract()``: this method returns the text content of each table cell as a list of list of strings. - * ``to_markdown()``: this method returns the table as a **string in markdown format** (compatible to Github). Supporting viewers can render the string as a table. This output is optimized for **small token** sizes, which is especially beneficial for LLM/RAG feeds. Pandas DataFrames (see method `to_pandas()` below) offer an equivalent markdown table output which however is better readable for the human eye. + * ``to_markdown()``: this method returns the table as a **string in markdown format** compatible to Github. Supporting viewers can render the string as a table. This output is optimized for **small token sizes**, which is especially beneficial for LLM/RAG feeds. Pandas DataFrame (see method `to_pandas()` below) also offers a markdown output. While better readable for the human eye, it generally is a larger string than produced by the native method. * `to_pandas()`: this method returns the table as a `pandas `_ `DataFrame `_. DataFrames are very versatile objects allowing a plethora of table manipulation methods and outputs to almost 20 well-known formats, among them Excel files, CSV, JSON, markdown-formatted tables and more. `DataFrame.to_markdown()` generates a Github-compatible markdown format optimized for human readability. This method however requires the package `tabulate `_ to be installed in addition to pandas itself. * ``header``: a `TableHeader` object containing header information of the table. * ``col_count``: an integer containing the number of table columns. @@ -504,11 +504,11 @@ In a nutshell, this is what you can do with PyMuPDF: * ``bbox``: the bounding box of the header. * `cells`: a list of bounding boxes containing the name of the respective column. * `names`: a list of strings containing the text of each of the cell bboxes. They represent the column names -- which are used when exporting the table to pandas DataFrames, markdown, etc. - * `external`: a bool indicating whether the header bbox is outside the table body (`True`) or not. Table headers are never identified by the `TableFinder` logic. Therefore, if `external` is true, then the header cells are not part of any cell identified by `TableFinder`. If `external == False`, then the first table row is the header. + * `external`: a bool indicating whether the header bbox is outside the table body (`True`) or not. Table headers are never identified by the `TableFinder` logic. Therefore, if `external` is true, then the header cells are not part of any cell identified by `TableFinder`. If `external == False`, then the first original table row is the header. Please have a look at these `Jupyter notebooks `_, which cover standard situations like multiple tables on one page or joining table fragments across multiple pages. - .. caution:: The lifetime of the `TableFinder` object, as well as that of all its tables **equals the lifetime of the page**. If the page object is deleted or reassigned, all tables are no longer valid. + .. caution:: The lifetime of the `TableFinder` object, as well as that of all its tables **equals the lifetime of the page**. If the page object is deleted or reassigned, all **table objects are no longer valid.** The only way to keep table content beyond the page's availability is to **extract it** via methods `Table.to_markdown()`, `Table.to_pandas()` or a copy of `Table.extract()` (e.g. `Table.extract()[:]`). diff --git a/docs/pymupdf4llm/api.rst b/docs/pymupdf4llm/api.rst index 53ca304bb..17b1363c3 100644 --- a/docs/pymupdf4llm/api.rst +++ b/docs/pymupdf4llm/api.rst @@ -16,7 +16,7 @@ The |PyMuPDF4LLM| API Prints the version of the library. -.. method:: to_markdown(doc: pymupdf.Document | str, *, pages: list | range | None = None, hdr_info: Any = None, write_images: bool = False, embed_images: bool = False, dpi: int = 150, image_path="", image_format="png", image_size_limit=0.05, force_text=True, margins=(0, 50, 0, 50), page_chunks: bool = False, page_width: float = 612, page_height: float = None, table_strategy="lines_strict", graphics_limit: int = None, ignore_code: bool = False, extract_words: bool = False, show_progress: bool = True) -> str | list[dict] +.. method:: to_markdown(doc: pymupdf.Document | str, *, pages: list | range | None = None, filename=None, hdr_info: Any = None, write_images: bool = False, embed_images: bool = False, dpi: int = 150, image_path="", image_format="png", image_size_limit=0.05, force_text=True, margins=(0, 50, 0, 50), page_chunks: bool = False, page_width: float = 612, page_height: float = None, table_strategy="lines_strict", graphics_limit: int = None, ignore_code: bool = False, extract_words: bool = False, show_progress: bool = True) -> str | list[dict] Read the pages of the file and outputs the text of its pages in |Markdown| format. How this should happen in detail can be influenced by a number of parameters. Please note that there exists **support for building page chunks** from the |Markdown| text. @@ -24,6 +24,8 @@ The |PyMuPDF4LLM| API :arg list pages: optional, the pages to consider for output (caution: specify 0-based page numbers). If omitted all pages are processed. + :arg filename: optional. Use this if you want to provide or override the file name. This may especially be useful when the document is opened from memory streams (which have no name and where thus ``doc.name`` is the empty string). This parameter will be used in all places where normally ``doc.name`` would have been used. + :arg hdr_info: optional. Use this if you want to provide your own header detection logic. This may be a callable or an object having a method named `get_header_id`. It must accept a text span (a span dictionary as contained in :meth:`~.extractDICT`) and a keyword parameter "page" (which is the owning :ref:`Page ` object). It must return a string "" or up to 6 "#" characters followed by 1 space. If omitted, a full document scan will be performed to find the most popular font sizes and derive header levels based on them. To completely avoid this behavior specify `hdr_info=lambda s, page=None: ""` or `hdr_info=False`. :arg bool write_images: when encountering images or vector graphics, images will be created from the respective page area and stored in the specified folder. Markdown references will be generated pointing to these images. Any text contained in these areas will not be included in the text output (but appear as part of the images). Therefore, if for instance your document has text written on full page images, make sure to set this parameter to `False`. From d545aa2440e420ae191291e0946833e1d85fb00a Mon Sep 17 00:00:00 2001 From: "Jorj X. McKie" Date: Mon, 2 Dec 2024 05:25:56 -0400 Subject: [PATCH 06/16] Update table.py --- src/table.py | 176 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 119 insertions(+), 57 deletions(-) diff --git a/src/table.py b/src/table.py index b9301e65a..871ded7b5 100644 --- a/src/table.py +++ b/src/table.py @@ -79,6 +79,7 @@ from collections.abc import Sequence from dataclasses import dataclass from operator import itemgetter +import weakref # ------------------------------------------------------------------- # Start of PyMuPDF interface code @@ -1367,33 +1368,57 @@ def char_in_bbox(char, bbox) -> bool: return table_arr - def to_markdown(self, clean=True): + def to_markdown(self, clean=False, fill_empty=True): """Output table content as a string in Github-markdown format. - If clean is true, markdown syntax is removed from cell content.""" + If "clean" then markdown syntax is removed from cell content. + If "fill_empty" then cell content None is replaced by the values + above (columns) or left (rows) in an effort to approximate row and + columns spans. + + """ output = "|" + rows = self.row_count + cols = self.col_count + cells = self.extract()[:] # make local copy of table text content + + if fill_empty: # fill "None" cells where possible - # generate header string and MD underline + # for rows, copy content from left to right + for j in range(rows): + for i in range(cols - 1): + if cells[j][i + 1] is None: + cells[j][i + 1] = cells[j][i] + + # for columns, copy top to bottom + for i in range(cols): + for j in range(rows - 1): + if cells[j + 1][i] is None: + cells[j + 1][i] = cells[j][i] + + # generate header string and MD separator for i, name in enumerate(self.header.names): - if name is None or name == "": # generate a name if empty + if not name: # generate a name if empty name = f"Col{i+1}" - name = name.replace("\n", " ") # remove any line breaks + name = name.replace("\n", "
") # use HTML line breaks if clean: # remove sensitive syntax name = html.escape(name.replace("-", "-")) output += name + "|" output += "\n" + # insert GitHub header line separator output += "|" + "|".join("---" for i in range(self.col_count)) + "|\n" # skip first row in details if header is part of the table j = 0 if self.header.external else 1 # iterate over detail rows - for row in self.extract()[j:]: + for row in cells[j:]: line = "|" for i, cell in enumerate(row): - # output None cells with empty string - cell = "" if cell is None else cell.replace("\n", " ") + # replace None cells with empty string + # use HTML line break tag + cell = "" if not cell else cell.replace("\n", "
") if clean: # remove sensitive syntax cell = html.escape(cell.replace("-", "-")) line += cell + "|" @@ -1462,22 +1487,19 @@ def _get_header(self, y_tolerance=3): page = self.page y_delta = y_tolerance - def top_row_is_bold(bbox): - """Check if row 0 has bold text anywhere. - - If this is true, then any non-bold text in lines above disqualify - these lines as header. + def row_has_bold(bbox): + """Check if a row contains some bold text. - bbox is the (potentially repaired) row 0 bbox. + If e.g. true for the top row, then it will be used as (internal) + column header row if any of the following is true: + * the previous (above) text line has no bold span + * the second table row text has no bold span - Returns True or False + Returns True if any spans are bold else False. """ - for b in page.get_text("dict", flags=TEXTFLAGS_TEXT, clip=bbox)["blocks"]: - for l in b["lines"]: - for s in l["spans"]: - if s["flags"] & 16: - return True - return False + blocks = page.get_text("dict", flags=TEXTFLAGS_TEXT, clip=bbox)["blocks"] + spans = [s for b in blocks for l in b["lines"] for s in l["spans"]] + return any([bool(s["flags"] & 16) for s in spans]) try: row = self.rows[0] @@ -1489,44 +1511,54 @@ def top_row_is_bold(bbox): # return this if we determine that the top row is the header header_top_row = TableHeader(bbox, cells, self.extract()[0], False) - # one-line tables have no extra header + # 1-line tables have no extra header if len(self.rows) < 2: return header_top_row - # x-ccordinates of columns between x0 and x1 of the table + # 1-column tables have no extra header if len(cells) < 2: return header_top_row - col_x = [ - c[2] if c is not None else None for c in cells[:-1] - ] # column (x) coordinates + # assume top row is the header if second row is empty + row2 = self.rows[1] # second row + if all([c is None for c in row2.cells]): + return header_top_row # Special check: is top row bold? - # If first line above table is not bold, but top-left table cell is bold, - # we take first table row as header - top_row_bold = top_row_is_bold(bbox) + top_row_bold = row_has_bold(bbox) + + # assume top row is header if it is bold and any cell + # of 2nd row is non-bold + if top_row_bold and not row_has_bold(row2.bbox): + return header_top_row - # clip = area above table + # column coordinates (x1 values) in top row + col_x = [c[2] if c is not None else None for c in cells[:-1]] + + # clip = page area above the table # We will inspect this area for text qualifying as column header. clip = +bbox # take row 0 bbox clip.y0 = 0 # start at top of page clip.y1 = bbox.y0 # end at top of table - spans = [] # the text spans inside clip - for b in page.get_text("dict", clip=clip, flags=TEXTFLAGS_TEXT)["blocks"]: - for l in b["lines"]: - for s in l["spans"]: - if ( - not s["flags"] & 1 and s["text"].strip() - ): # ignore superscripts and empty text - spans.append(s) + blocks = page.get_text("dict", clip=clip, flags=TEXTFLAGS_TEXT)["blocks"] + # non-empty, non-superscript spans above table, sorted descending by y1 + spans = sorted( + [ + s + for b in blocks + for l in b["lines"] + for s in l["spans"] + if not (white_spaces.issuperset(s["text"]) or s["flags"] & 1) + ], + key=lambda s: s["bbox"][3], + reverse=True, + ) select = [] # y1 coordinates above, sorted descending line_heights = [] # line heights above, sorted descending line_bolds = [] # bold indicator per line above, same sorting - # spans sorted descending - spans.sort(key=lambda s: s["bbox"][3], reverse=True) # walk through the spans and fill above 3 lists for i in range(len(spans)): s = spans[i] @@ -1541,7 +1573,7 @@ def top_row_is_bold(bbox): line_bolds.append(bold) continue - # get last items from the 3 lists + # get previous items from the 3 lists y0 = select[-1] h0 = line_heights[-1] bold0 = line_bolds[-1] @@ -1565,13 +1597,13 @@ def top_row_is_bold(bbox): if select == []: # nothing above the table? return header_top_row - select = select[:5] # only accept up to 5 lines in any header + select = select[:5] # accept up to 5 lines for an external header - # take top row as header if text above table is too far apart + # assume top row as header if text above is too far away if bbox.y0 - select[0] >= line_heights[0]: return header_top_row - # if top table row is bold, but line above is not: + # accept top row as header if bold, but line above is not if top_row_bold and not line_bolds[0]: return header_top_row @@ -1738,7 +1770,7 @@ class TableFinder: """ def __init__(self, page, settings=None): - self.page = page + self.page = weakref.proxy(page) self.settings = TableSettings.resolve(settings) self.edges = self.get_edges() self.intersections = edges_to_intersections( @@ -1942,7 +1974,7 @@ def make_chars(page, clip=None): # We are ignoring Bézier curves completely and are converting everything # else to lines. # ------------------------------------------------------------------------ -def make_edges(page, clip=None, tset=None, add_lines=None): +def make_edges(page, clip=None, tset=None, paths=None, add_lines=None, add_boxes=None): global EDGES snap_x = tset.snap_x_tolerance snap_y = tset.snap_y_tolerance @@ -1995,16 +2027,20 @@ def are_neighbors(r1, r2): return True return False - def clean_graphics(): + def clean_graphics(npaths=None): """Detect and join rectangles of "connected" vector graphics.""" - - paths = [] # paths relevant for table detection - for p in page.get_drawings(): - # ignore fill-only graphics if they do not simulate lines, - # which means one of width or height are small. + if npaths is None: + allpaths = page.get_drawings() + else: + allpaths = npaths[:] # paths relevant for table detection + paths = [] + for p in allpaths: + # If only looking at lines, we ignore fill-only path + # except when simulating lines, i.e. width or height + # are small. if ( - p["type"] == "f" - and lines_strict + lines_strict + and p["type"] == "f" and p["rect"].width > snap_x and p["rect"].height > snap_y ): @@ -2039,7 +2075,7 @@ def clean_graphics(): return new_rects, paths - bboxes, paths = clean_graphics() + bboxes, paths = clean_graphics(npaths=paths) def is_parallel(p1, p2): """Check if line is roughly axis-parallel.""" @@ -2210,6 +2246,25 @@ def make_line(p, p1, p2, clip): if line_dict: EDGES.append(line_to_edge(line_dict)) + if add_boxes is not None: # add user-specified rectangles + assert isinstance(add_boxes, (tuple, list)) + else: + add_boxes = [] + for box in add_boxes: + r = Rect(box) + line_dict = make_line(path, r.tl, r.bl, clip) + if line_dict: + EDGES.append(line_to_edge(line_dict)) + line_dict = make_line(path, r.bl, r.br, clip) + if line_dict: + EDGES.append(line_to_edge(line_dict)) + line_dict = make_line(path, r.br, r.tr, clip) + if line_dict: + EDGES.append(line_to_edge(line_dict)) + line_dict = make_line(path, r.tr, r.tl, clip) + if line_dict: + EDGES.append(line_to_edge(line_dict)) + def page_rotation_set0(page): """Nullify page rotation. @@ -2291,7 +2346,9 @@ def find_tables( text_x_tolerance=3, text_y_tolerance=3, strategy=None, # offer abbreviation - add_lines=None, # optional user-specified lines + add_lines=None, # user-specified lines + add_boxes=None, # user-specified rectangles + paths=None, # accept vector graphics as parameter ): global CHARS, EDGES CHARS = [] @@ -2345,7 +2402,12 @@ def find_tables( make_chars(page, clip=clip) # create character list of page make_edges( - page, clip=clip, tset=tset, add_lines=add_lines + page, + clip=clip, + tset=tset, + paths=paths, + add_lines=add_lines, + add_boxes=add_boxes, ) # create lines and curves tables = TableFinder(page, settings=tset) From cb4c71ea7f4c0233be8e6bdd65f20b0c4952964c Mon Sep 17 00:00:00 2001 From: "Jorj X. McKie" Date: Wed, 27 Nov 2024 09:53:39 -0400 Subject: [PATCH 07/16] Add page recolor method --- docs/document.rst | 11 ++++++++--- docs/page.rst | 9 +++++++++ src/__init__.py | 13 +++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/docs/document.rst b/docs/document.rst index 4172a61ca..81c6bd224 100644 --- a/docs/document.rst +++ b/docs/document.rst @@ -924,14 +924,14 @@ For details on **embedded files** refer to Appendix 3. .. method:: get_page_fonts(pno, full=False) - PDF only: Return a list of all fonts (directly or indirectly) referenced by the page. + PDF only: Return a list of all fonts (directly or indirectly) referenced by the page object definition. :arg int pno: page number, 0-based, `-∞ < pno < page_count`. :arg bool full: whether to also include the referencer's :data:`xref`. If *True*, the returned items are one entry longer. Use this option if you need to know, whether the page directly references the font. In this case the last entry is 0. If the font is referenced by an `/XObject` of the page, you will find its :data:`xref` here. :rtype: list - :returns: a list of fonts referenced by this page. Each entry looks like + :returns: a list of fonts referenced by the object definition of the page. Each entry looks like **(xref, ext, type, basefont, name, encoding, referencer)**, @@ -959,7 +959,12 @@ For details on **embedded files** refer to Appendix 3. .. note:: * This list has no duplicate entries: the combination of :data:`xref`, *name* and *referencer* is unique. - * In general, this is a superset of the fonts actually in use by this page. The PDF creator may e.g. have specified some global list, of which each page only makes partial use. + * In general, this is a true superset of the fonts actually in use by this page. The PDF creator may e.g. have specified some global list, of which each page make only partial use. + * Be aware that font names returned by some variants of :meth:`Page.get_text` (respectively :ref:`TextPage` methods) need not (exactly) equal the base font name shown here. Reasons for any differences include: + + - This method always shows any subset prefixes (the pattern ``ABCDEF+``), whereas text extractions do not do this by default. + - Text extractions use the base library to access the font name, which has a length cap of 31 bytes and generally interrogates the font file binary to access the name. Method ``get_page_fonts()`` however looks at the PDF definition source. + - Text extractions work for all supported document types in exactly the same way -- not just for PDFs. Consequently they do not contain PDF-specifics. .. method:: get_page_text(pno, output="text", flags=3, textpage=None, sort=False) diff --git a/docs/page.rst b/docs/page.rst index 7f3fa7754..6883270b5 100644 --- a/docs/page.rst +++ b/docs/page.rst @@ -106,6 +106,7 @@ In a nutshell, this is what you can do with PyMuPDF: :meth:`Page.load_widget` PDF only: load a specific field :meth:`Page.load_links` return the first link on a page :meth:`Page.new_shape` PDF only: create a new :ref:`Shape` +:meth:`Page.recolor` PDF only: change the colorspace of objects :meth:`Page.remove_rotation` PDF only: set page rotation to 0 :meth:`Page.replace_image` PDF only: replace an image :meth:`Page.search_for` search for a string @@ -1924,6 +1925,14 @@ In a nutshell, this is what you can do with PyMuPDF: :arg int rotate: An integer specifying the required rotation in degrees. Must be an integer multiple of 90. Values will be converted to one of 0, 90, 180, 270. + .. method:: recolor(components=1) + + PDF only: Change the colorspace components of all objects on page. + + :arg int components: The desired count of color components. Must be one of 1, 3 or 4, which results in color space DeviceGray, DeviceRGB and DeviceCMYK respectively. The method affects text, images and vector graphics. For instance, with the default value 1, a page will be converted to gray-scale. + + The changes made are **permanent** and cannot be reverted. + .. method:: remove_rotation() PDF only: Set page rotation to 0 while maintaining appearance and page content. diff --git a/src/__init__.py b/src/__init__.py index 7ed758abd..b3bd7fa6d 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -8629,6 +8629,19 @@ def annots(self, types=None): annot._yielded=True yield annot + def recolor(self, components=1): + """Convert colorspaces of objects on the page. + + Valid values are 1, 3 and 4. + """ + if components not in (1, 3, 4): + raise ValueError("components must be one of 1, 3, 4") + pdfdoc = _as_pdf_document(self.parent) + ropt = mupdf.pdf_recolor_options() + ropt.num_comp = components + ropts = mupdf.PdfRecolorOptions(ropt) + mupdf.pdf_recolor_page(pdfdoc, self.number, ropts) + @property def artbox(self): """The ArtBox""" From b3eacb0323399f09fdc0b6105e29e5f0d2893f93 Mon Sep 17 00:00:00 2001 From: "Jorj X. McKie" Date: Wed, 27 Nov 2024 12:33:12 -0400 Subject: [PATCH 08/16] Gracefully handle missing xref object Do not raise if no object exists at xref for method "Document.xref_object(xref)". --- src/__init__.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/__init__.py b/src/__init__.py index b3bd7fa6d..d6b5b49f2 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -6091,17 +6091,18 @@ def xref_object(self, xref, compressed=0, ascii=0): """Get xref object source as a string.""" if self.is_closed: raise ValueError("document closed") - if g_use_extra: - ret = extra.xref_object( self.this, xref, compressed, ascii) - return ret pdf = _as_pdf_document(self) xreflen = mupdf.pdf_xref_len(pdf) if not _INRANGE(xref, 1, xreflen-1) and xref != -1: raise ValueError( MSG_BAD_XREF) - if xref > 0: - obj = mupdf.pdf_load_object(pdf, xref) - else: - obj = mupdf.pdf_trailer(pdf) + try: + if xref > 0: + obj = mupdf.pdf_load_object(pdf, xref) + else: + obj = mupdf.pdf_trailer(pdf) + except Exception: + message(f"No object at {xref=}") + return "null" res = JM_object_to_buffer(mupdf.pdf_resolve_indirect(obj), compressed, ascii) text = JM_EscapeStrFromBuffer(res) return text @@ -6152,7 +6153,7 @@ def xref_stream(self, xref): xreflen = mupdf.pdf_xref_len( pdf) if not _INRANGE(xref, 1, xreflen-1) and xref != -1: raise ValueError( MSG_BAD_XREF) - if xref >= 0: + if xref > 0: obj = mupdf.pdf_new_indirect( pdf, xref, 0) else: obj = mupdf.pdf_trailer( pdf) @@ -6170,7 +6171,7 @@ def xref_stream_raw(self, xref): xreflen = mupdf.pdf_xref_len( pdf) if not _INRANGE(xref, 1, xreflen-1) and xref != -1: raise ValueError( MSG_BAD_XREF) - if xref >= 0: + if xref > 0: obj = mupdf.pdf_new_indirect( pdf, xref, 0) else: obj = mupdf.pdf_trailer( pdf) From 2fb58c98e1a9989de6f1d9ee99f5140342134af9 Mon Sep 17 00:00:00 2001 From: "Jorj X. McKie" Date: Sat, 30 Nov 2024 09:40:41 -0400 Subject: [PATCH 09/16] Image stamp annotation support --- docs/document.rst | 11 +++++++++++ docs/images/img-imagestamp.png | Bin 0 -> 163567 bytes docs/page.rst | 31 +++++++++++++++++++----------- src/__init__.py | 34 ++++++++++++++++++++++++++++++++- 4 files changed, 64 insertions(+), 12 deletions(-) create mode 100644 docs/images/img-imagestamp.png diff --git a/docs/document.rst b/docs/document.rst index 81c6bd224..b248d4889 100644 --- a/docs/document.rst +++ b/docs/document.rst @@ -96,6 +96,7 @@ For details on **embedded files** refer to Appendix 3. :meth:`Document.pdf_catalog` PDF only: :data:`xref` of catalog (root) :meth:`Document.pdf_trailer` PDF only: trailer source :meth:`Document.prev_location` return (chapter, pno) of preceding page +:meth:`Document.recolor` PDF only: execute :meth:`Page.recolor` for all pages :meth:`Document.reload_page` PDF only: provide a new copy of a page :meth:`Document.resolve_names` PDF only: Convert destination names into a Python dict :meth:`Document.save` PDF only: save the document @@ -594,6 +595,16 @@ For details on **embedded files** refer to Appendix 3. To maintain a consistent API, for document types not supporting a chapter structure (like PDFs), :attr:`Document.chapter_count` is 1, and pages can also be loaded via tuples *(0, pno)*. See this [#f3]_ footnote for comments on performance improvements. + + .. method:: recolor(components=1) + + PDF only: Change the color component counts for all object types text, image and vector graphics for all pages. + + :arg int components: desired color space indicated by the number of color components: 1 = DeviceGRAY, 3 = DeviceRGB, 4 = DeviceCMYK. + + The typical use case is 1 (DeviceGRAY) which converts the PDF to grayscale. + + .. method:: reload_page(page) * New in v1.16.10 diff --git a/docs/images/img-imagestamp.png b/docs/images/img-imagestamp.png new file mode 100644 index 0000000000000000000000000000000000000000..58fc2cb16b7951b464a08e44b22e1aed2e36b416 GIT binary patch literal 163567 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

dr`g0SI4t2 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 literal 0 HcmV?d00001 diff --git a/docs/page.rst b/docs/page.rst index 6883270b5..0dc9281d4 100644 --- a/docs/page.rst +++ b/docs/page.rst @@ -536,24 +536,33 @@ In a nutshell, this is what you can do with PyMuPDF: There is also the `pdf2docx extract tables method`_ which is capable of table extraction if you prefer. - .. method:: add_stamp_annot(rect, stamp=0) + .. method:: add_stamp_annot(rect, stamp=0, *, image=None) - PDF only: Add a "rubber stamp" like annotation to e.g. indicate the document's intended use ("DRAFT", "CONFIDENTIAL", etc.). + PDF only: Add a "rubber stamp"-like annotation to e.g. indicate the document's intended use ("DRAFT", "CONFIDENTIAL", etc.). Instead of text, an image may also be shown. :arg rect_like rect: rectangle where to place the annotation. - :arg int stamp: id number of the stamp text. For available stamps see :ref:`StampIcons`. + :arg multiple image: if not ``None``, an image specification is assumed and the ``stamp`` parameter will be ignored. Valid argument types are + + * a string specifying an image file path, + * a ``bytes``, ``bytearray`` or ``io.BytesIO`` object for an image in memory, and + * a :ref:`Pixmap`. + + 1. **Text-based stamps** - .. note:: - - * The stamp's text and its border line will automatically be sized and be put horizontally and vertically centered in the given rectangle. :attr:`Annot.rect` is automatically calculated to fit the given **width** and will usually be smaller than this parameter. + * :attr:`Annot.rect` is automatically calculated as the largest rectangle with an aspect ratio of ``width/height = 3.8`` that fits in the provided ``rect``. Its position is vertically and horizontally centered. * The font chosen is "Times Bold" and the text will be upper case. - * The appearance can be changed using :meth:`Annot.set_opacity` and by setting the "stroke" color (no "fill" color supported). - * This can be used to create watermark images: on a temporary PDF page create a stamp annotation with a low opacity value, make a pixmap from it with *alpha=True* (and potentially also rotate it), discard the temporary PDF page and use the pixmap with :meth:`insert_image` for your target PDF. + * The appearance can be modified using :meth:`Annot.set_opacity` and by setting the "stroke" color. By PDF specification, stamp annotations have no "fill" color. + + .. image:: images/img-stampannot.* + 2. **Image-based stamps** - .. image:: images/img-stampannot.* - :scale: 80 + * At first, a rectangle is computed like for text stamps: vertically and horizontally centered, aspect ratio ``width/height = 3.8``. + * Into that rectangle, the image will be inserted aligned left and vertically centered. The resulting image boundary box becomes :attr:`Annot.rect`. + * The annotation can be modified via :meth:`Annot.set_opacity`. This is a way to display images without alpha channel with transparency. Setting colors has no effect on image stamps. + + .. image:: images/img-imagestamp.* .. method:: add_widget(widget) @@ -1929,7 +1938,7 @@ In a nutshell, this is what you can do with PyMuPDF: PDF only: Change the colorspace components of all objects on page. - :arg int components: The desired count of color components. Must be one of 1, 3 or 4, which results in color space DeviceGray, DeviceRGB and DeviceCMYK respectively. The method affects text, images and vector graphics. For instance, with the default value 1, a page will be converted to gray-scale. + :arg int components: The desired count of color components. Must be one of 1, 3 or 4, which results in color spaces DeviceGray, DeviceRGB or DeviceCMYK respectively. The method affects text, images and vector graphics. For instance, with the default value 1, a page will be converted to gray-scale. The changes made are **permanent** and cannot be reverted. diff --git a/src/__init__.py b/src/__init__.py index d6b5b49f2..522b4c45f 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -5434,6 +5434,19 @@ def resolve_link(self, uri=None, chapters=0): pno = mupdf.fz_page_number_from_location(self.this, loc) return pno, xp, yp + def recolor(self, components=1): + """Change the color component count on all pages. + + Args: + components: (int) desired color component count, one of 1, 3, 4. + + Invokes the same-named method for all pages. + """ + if not self.is_pdf: + raise ValueError("is no PDF") + for i in range(self.page_count): + self.load_page(i).recolor(components) + def resolve_names(self): """Convert the PDF's destination names into a Python dict. @@ -8539,11 +8552,30 @@ def add_squiggly_annot( q = CheckMarkerArg(quads) return self._add_text_marker(q, mupdf.PDF_ANNOT_SQUIGGLY) - def add_stamp_annot(self, rect: rect_like, stamp: int =0) -> Annot: + def add_stamp_annot(self, rect: rect_like, stamp: int =0, *, image=None) -> Annot: """Add a ('rubber') 'Stamp' annotation.""" + if isinstance(image, Pixmap): + buf = image.tobytes() + elif isinstance(image, str): + buf = pathlib.Path(image).read_bytes() + elif isinstance(image, (bytes, bytearray)): + buf = image + elif isinstance(image, io.BytesIO): + buf = image.getvalue() + else: + buf = None old_rotation = annot_preprocess(self) try: annot = self._add_stamp_annot(rect, stamp) + if buf: + fzbuff = mupdf.fz_new_buffer_from_copied_data(buf) + img = mupdf.fz_new_image_from_buffer(fzbuff) + mupdf.pdf_set_annot_stamp_image(annot, img) + self.parent.xref_set_key(annot.xref, "Name", "null") + self.parent.xref_set_key( + annot.xref, "Contents", "(Image Stamp)") + buf = None + fzbuff = None finally: if old_rotation != 0: self.set_rotation(old_rotation) From 07eb87962d7e230a44d0146278e424e4a5148072 Mon Sep 17 00:00:00 2001 From: "Jorj X. McKie" Date: Sat, 30 Nov 2024 09:47:58 -0400 Subject: [PATCH 10/16] Update changes.txt --- changes.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/changes.txt b/changes.txt index a4ea51dbf..1555e8e02 100644 --- a/changes.txt +++ b/changes.txt @@ -22,6 +22,13 @@ Change Log * **Fixed** `4004 `_: Segmentation Fault When Updating PDF Form Field Value * **Fixed** `3751 `_: apply_redactions causes part of the page content to be hidden / transparent +* Other: + + * New Page method "recolor" which changes the color component count of text, image and vector graphic objects. + * New Document method "recolor" invokes the same-named "Page" method for all pages in the PDF. + * Image support for "Stamp" annotations. + * Accessing the object definition for an (orphaned) cross reference number no longer raises an exception. + **Changes in version 1.24.14 (2024-11-19)** From 8657e4e9fe1146cee575b9c6ecf96c57c2696093 Mon Sep 17 00:00:00 2001 From: "Jorj X. McKie" Date: Fri, 6 Dec 2024 05:05:19 -0400 Subject: [PATCH 11/16] Update Table "to_markdown" information --- docs/page.rst | 6 +++--- docs/pymupdf4llm/api.rst | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/page.rst b/docs/page.rst index 0dc9281d4..cbcadfec5 100644 --- a/docs/page.rst +++ b/docs/page.rst @@ -492,7 +492,7 @@ In a nutshell, this is what you can do with PyMuPDF: * ``bbox``: the bounding box of the table as a tuple `(x0, y0, x1, y1)`. * ``cells``: bounding boxes of the table's cells (list of tuples). A cell may also be `None`. * ``extract()``: this method returns the text content of each table cell as a list of list of strings. - * ``to_markdown()``: this method returns the table as a **string in markdown format** (compatible to Github). Supporting viewers can render the string as a table. This output is optimized for **small token** sizes, which is especially beneficial for LLM/RAG feeds. Pandas DataFrames (see method `to_pandas()` below) offer an equivalent markdown table output which however is better readable for the human eye. + * ``to_markdown()``: this method returns the table as a **string in markdown format** compatible to Github. Supporting viewers can render the string as a table. This output is optimized for **small token sizes**, which is especially beneficial for LLM/RAG feeds. Pandas DataFrame (see method `to_pandas()` below) also offers a markdown output. While better readable for the human eye, it generally is a larger string than produced by the native method. * `to_pandas()`: this method returns the table as a `pandas `_ `DataFrame `_. DataFrames are very versatile objects allowing a plethora of table manipulation methods and outputs to almost 20 well-known formats, among them Excel files, CSV, JSON, markdown-formatted tables and more. `DataFrame.to_markdown()` generates a Github-compatible markdown format optimized for human readability. This method however requires the package `tabulate `_ to be installed in addition to pandas itself. * ``header``: a `TableHeader` object containing header information of the table. * ``col_count``: an integer containing the number of table columns. @@ -504,11 +504,11 @@ In a nutshell, this is what you can do with PyMuPDF: * ``bbox``: the bounding box of the header. * `cells`: a list of bounding boxes containing the name of the respective column. * `names`: a list of strings containing the text of each of the cell bboxes. They represent the column names -- which are used when exporting the table to pandas DataFrames, markdown, etc. - * `external`: a bool indicating whether the header bbox is outside the table body (`True`) or not. Table headers are never identified by the `TableFinder` logic. Therefore, if `external` is true, then the header cells are not part of any cell identified by `TableFinder`. If `external == False`, then the first table row is the header. + * `external`: a bool indicating whether the header bbox is outside the table body (`True`) or not. Table headers are never identified by the `TableFinder` logic. Therefore, if `external` is true, then the header cells are not part of any cell identified by `TableFinder`. If `external == False`, then the first original table row is the header. Please have a look at these `Jupyter notebooks `_, which cover standard situations like multiple tables on one page or joining table fragments across multiple pages. - .. caution:: The lifetime of the `TableFinder` object, as well as that of all its tables **equals the lifetime of the page**. If the page object is deleted or reassigned, all tables are no longer valid. + .. caution:: The lifetime of the `TableFinder` object, as well as that of all its tables **equals the lifetime of the page**. If the page object is deleted or reassigned, all **table objects are no longer valid.** The only way to keep table content beyond the page's availability is to **extract it** via methods `Table.to_markdown()`, `Table.to_pandas()` or a copy of `Table.extract()` (e.g. `Table.extract()[:]`). diff --git a/docs/pymupdf4llm/api.rst b/docs/pymupdf4llm/api.rst index 53ca304bb..17b1363c3 100644 --- a/docs/pymupdf4llm/api.rst +++ b/docs/pymupdf4llm/api.rst @@ -16,7 +16,7 @@ The |PyMuPDF4LLM| API Prints the version of the library. -.. method:: to_markdown(doc: pymupdf.Document | str, *, pages: list | range | None = None, hdr_info: Any = None, write_images: bool = False, embed_images: bool = False, dpi: int = 150, image_path="", image_format="png", image_size_limit=0.05, force_text=True, margins=(0, 50, 0, 50), page_chunks: bool = False, page_width: float = 612, page_height: float = None, table_strategy="lines_strict", graphics_limit: int = None, ignore_code: bool = False, extract_words: bool = False, show_progress: bool = True) -> str | list[dict] +.. method:: to_markdown(doc: pymupdf.Document | str, *, pages: list | range | None = None, filename=None, hdr_info: Any = None, write_images: bool = False, embed_images: bool = False, dpi: int = 150, image_path="", image_format="png", image_size_limit=0.05, force_text=True, margins=(0, 50, 0, 50), page_chunks: bool = False, page_width: float = 612, page_height: float = None, table_strategy="lines_strict", graphics_limit: int = None, ignore_code: bool = False, extract_words: bool = False, show_progress: bool = True) -> str | list[dict] Read the pages of the file and outputs the text of its pages in |Markdown| format. How this should happen in detail can be influenced by a number of parameters. Please note that there exists **support for building page chunks** from the |Markdown| text. @@ -24,6 +24,8 @@ The |PyMuPDF4LLM| API :arg list pages: optional, the pages to consider for output (caution: specify 0-based page numbers). If omitted all pages are processed. + :arg filename: optional. Use this if you want to provide or override the file name. This may especially be useful when the document is opened from memory streams (which have no name and where thus ``doc.name`` is the empty string). This parameter will be used in all places where normally ``doc.name`` would have been used. + :arg hdr_info: optional. Use this if you want to provide your own header detection logic. This may be a callable or an object having a method named `get_header_id`. It must accept a text span (a span dictionary as contained in :meth:`~.extractDICT`) and a keyword parameter "page" (which is the owning :ref:`Page ` object). It must return a string "" or up to 6 "#" characters followed by 1 space. If omitted, a full document scan will be performed to find the most popular font sizes and derive header levels based on them. To completely avoid this behavior specify `hdr_info=lambda s, page=None: ""` or `hdr_info=False`. :arg bool write_images: when encountering images or vector graphics, images will be created from the respective page area and stored in the specified folder. Markdown references will be generated pointing to these images. Any text contained in these areas will not be included in the text output (but appear as part of the images). Therefore, if for instance your document has text written on full page images, make sure to set this parameter to `False`. From d293c70b774372d8664327c18d515a72e8d8da37 Mon Sep 17 00:00:00 2001 From: "Jorj X. McKie" Date: Mon, 2 Dec 2024 05:25:56 -0400 Subject: [PATCH 12/16] Update table.py --- src/table.py | 176 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 119 insertions(+), 57 deletions(-) diff --git a/src/table.py b/src/table.py index b9301e65a..871ded7b5 100644 --- a/src/table.py +++ b/src/table.py @@ -79,6 +79,7 @@ from collections.abc import Sequence from dataclasses import dataclass from operator import itemgetter +import weakref # ------------------------------------------------------------------- # Start of PyMuPDF interface code @@ -1367,33 +1368,57 @@ def char_in_bbox(char, bbox) -> bool: return table_arr - def to_markdown(self, clean=True): + def to_markdown(self, clean=False, fill_empty=True): """Output table content as a string in Github-markdown format. - If clean is true, markdown syntax is removed from cell content.""" + If "clean" then markdown syntax is removed from cell content. + If "fill_empty" then cell content None is replaced by the values + above (columns) or left (rows) in an effort to approximate row and + columns spans. + + """ output = "|" + rows = self.row_count + cols = self.col_count + cells = self.extract()[:] # make local copy of table text content + + if fill_empty: # fill "None" cells where possible - # generate header string and MD underline + # for rows, copy content from left to right + for j in range(rows): + for i in range(cols - 1): + if cells[j][i + 1] is None: + cells[j][i + 1] = cells[j][i] + + # for columns, copy top to bottom + for i in range(cols): + for j in range(rows - 1): + if cells[j + 1][i] is None: + cells[j + 1][i] = cells[j][i] + + # generate header string and MD separator for i, name in enumerate(self.header.names): - if name is None or name == "": # generate a name if empty + if not name: # generate a name if empty name = f"Col{i+1}" - name = name.replace("\n", " ") # remove any line breaks + name = name.replace("\n", "
") # use HTML line breaks if clean: # remove sensitive syntax name = html.escape(name.replace("-", "-")) output += name + "|" output += "\n" + # insert GitHub header line separator output += "|" + "|".join("---" for i in range(self.col_count)) + "|\n" # skip first row in details if header is part of the table j = 0 if self.header.external else 1 # iterate over detail rows - for row in self.extract()[j:]: + for row in cells[j:]: line = "|" for i, cell in enumerate(row): - # output None cells with empty string - cell = "" if cell is None else cell.replace("\n", " ") + # replace None cells with empty string + # use HTML line break tag + cell = "" if not cell else cell.replace("\n", "
") if clean: # remove sensitive syntax cell = html.escape(cell.replace("-", "-")) line += cell + "|" @@ -1462,22 +1487,19 @@ def _get_header(self, y_tolerance=3): page = self.page y_delta = y_tolerance - def top_row_is_bold(bbox): - """Check if row 0 has bold text anywhere. - - If this is true, then any non-bold text in lines above disqualify - these lines as header. + def row_has_bold(bbox): + """Check if a row contains some bold text. - bbox is the (potentially repaired) row 0 bbox. + If e.g. true for the top row, then it will be used as (internal) + column header row if any of the following is true: + * the previous (above) text line has no bold span + * the second table row text has no bold span - Returns True or False + Returns True if any spans are bold else False. """ - for b in page.get_text("dict", flags=TEXTFLAGS_TEXT, clip=bbox)["blocks"]: - for l in b["lines"]: - for s in l["spans"]: - if s["flags"] & 16: - return True - return False + blocks = page.get_text("dict", flags=TEXTFLAGS_TEXT, clip=bbox)["blocks"] + spans = [s for b in blocks for l in b["lines"] for s in l["spans"]] + return any([bool(s["flags"] & 16) for s in spans]) try: row = self.rows[0] @@ -1489,44 +1511,54 @@ def top_row_is_bold(bbox): # return this if we determine that the top row is the header header_top_row = TableHeader(bbox, cells, self.extract()[0], False) - # one-line tables have no extra header + # 1-line tables have no extra header if len(self.rows) < 2: return header_top_row - # x-ccordinates of columns between x0 and x1 of the table + # 1-column tables have no extra header if len(cells) < 2: return header_top_row - col_x = [ - c[2] if c is not None else None for c in cells[:-1] - ] # column (x) coordinates + # assume top row is the header if second row is empty + row2 = self.rows[1] # second row + if all([c is None for c in row2.cells]): + return header_top_row # Special check: is top row bold? - # If first line above table is not bold, but top-left table cell is bold, - # we take first table row as header - top_row_bold = top_row_is_bold(bbox) + top_row_bold = row_has_bold(bbox) + + # assume top row is header if it is bold and any cell + # of 2nd row is non-bold + if top_row_bold and not row_has_bold(row2.bbox): + return header_top_row - # clip = area above table + # column coordinates (x1 values) in top row + col_x = [c[2] if c is not None else None for c in cells[:-1]] + + # clip = page area above the table # We will inspect this area for text qualifying as column header. clip = +bbox # take row 0 bbox clip.y0 = 0 # start at top of page clip.y1 = bbox.y0 # end at top of table - spans = [] # the text spans inside clip - for b in page.get_text("dict", clip=clip, flags=TEXTFLAGS_TEXT)["blocks"]: - for l in b["lines"]: - for s in l["spans"]: - if ( - not s["flags"] & 1 and s["text"].strip() - ): # ignore superscripts and empty text - spans.append(s) + blocks = page.get_text("dict", clip=clip, flags=TEXTFLAGS_TEXT)["blocks"] + # non-empty, non-superscript spans above table, sorted descending by y1 + spans = sorted( + [ + s + for b in blocks + for l in b["lines"] + for s in l["spans"] + if not (white_spaces.issuperset(s["text"]) or s["flags"] & 1) + ], + key=lambda s: s["bbox"][3], + reverse=True, + ) select = [] # y1 coordinates above, sorted descending line_heights = [] # line heights above, sorted descending line_bolds = [] # bold indicator per line above, same sorting - # spans sorted descending - spans.sort(key=lambda s: s["bbox"][3], reverse=True) # walk through the spans and fill above 3 lists for i in range(len(spans)): s = spans[i] @@ -1541,7 +1573,7 @@ def top_row_is_bold(bbox): line_bolds.append(bold) continue - # get last items from the 3 lists + # get previous items from the 3 lists y0 = select[-1] h0 = line_heights[-1] bold0 = line_bolds[-1] @@ -1565,13 +1597,13 @@ def top_row_is_bold(bbox): if select == []: # nothing above the table? return header_top_row - select = select[:5] # only accept up to 5 lines in any header + select = select[:5] # accept up to 5 lines for an external header - # take top row as header if text above table is too far apart + # assume top row as header if text above is too far away if bbox.y0 - select[0] >= line_heights[0]: return header_top_row - # if top table row is bold, but line above is not: + # accept top row as header if bold, but line above is not if top_row_bold and not line_bolds[0]: return header_top_row @@ -1738,7 +1770,7 @@ class TableFinder: """ def __init__(self, page, settings=None): - self.page = page + self.page = weakref.proxy(page) self.settings = TableSettings.resolve(settings) self.edges = self.get_edges() self.intersections = edges_to_intersections( @@ -1942,7 +1974,7 @@ def make_chars(page, clip=None): # We are ignoring Bézier curves completely and are converting everything # else to lines. # ------------------------------------------------------------------------ -def make_edges(page, clip=None, tset=None, add_lines=None): +def make_edges(page, clip=None, tset=None, paths=None, add_lines=None, add_boxes=None): global EDGES snap_x = tset.snap_x_tolerance snap_y = tset.snap_y_tolerance @@ -1995,16 +2027,20 @@ def are_neighbors(r1, r2): return True return False - def clean_graphics(): + def clean_graphics(npaths=None): """Detect and join rectangles of "connected" vector graphics.""" - - paths = [] # paths relevant for table detection - for p in page.get_drawings(): - # ignore fill-only graphics if they do not simulate lines, - # which means one of width or height are small. + if npaths is None: + allpaths = page.get_drawings() + else: + allpaths = npaths[:] # paths relevant for table detection + paths = [] + for p in allpaths: + # If only looking at lines, we ignore fill-only path + # except when simulating lines, i.e. width or height + # are small. if ( - p["type"] == "f" - and lines_strict + lines_strict + and p["type"] == "f" and p["rect"].width > snap_x and p["rect"].height > snap_y ): @@ -2039,7 +2075,7 @@ def clean_graphics(): return new_rects, paths - bboxes, paths = clean_graphics() + bboxes, paths = clean_graphics(npaths=paths) def is_parallel(p1, p2): """Check if line is roughly axis-parallel.""" @@ -2210,6 +2246,25 @@ def make_line(p, p1, p2, clip): if line_dict: EDGES.append(line_to_edge(line_dict)) + if add_boxes is not None: # add user-specified rectangles + assert isinstance(add_boxes, (tuple, list)) + else: + add_boxes = [] + for box in add_boxes: + r = Rect(box) + line_dict = make_line(path, r.tl, r.bl, clip) + if line_dict: + EDGES.append(line_to_edge(line_dict)) + line_dict = make_line(path, r.bl, r.br, clip) + if line_dict: + EDGES.append(line_to_edge(line_dict)) + line_dict = make_line(path, r.br, r.tr, clip) + if line_dict: + EDGES.append(line_to_edge(line_dict)) + line_dict = make_line(path, r.tr, r.tl, clip) + if line_dict: + EDGES.append(line_to_edge(line_dict)) + def page_rotation_set0(page): """Nullify page rotation. @@ -2291,7 +2346,9 @@ def find_tables( text_x_tolerance=3, text_y_tolerance=3, strategy=None, # offer abbreviation - add_lines=None, # optional user-specified lines + add_lines=None, # user-specified lines + add_boxes=None, # user-specified rectangles + paths=None, # accept vector graphics as parameter ): global CHARS, EDGES CHARS = [] @@ -2345,7 +2402,12 @@ def find_tables( make_chars(page, clip=clip) # create character list of page make_edges( - page, clip=clip, tset=tset, add_lines=add_lines + page, + clip=clip, + tset=tset, + paths=paths, + add_lines=add_lines, + add_boxes=add_boxes, ) # create lines and curves tables = TableFinder(page, settings=tset) From 4c27c503f49988994d16f0dc4bb40c4c56b14933 Mon Sep 17 00:00:00 2001 From: "Jorj X. McKie" Date: Wed, 11 Dec 2024 19:04:34 -0400 Subject: [PATCH 13/16] Support new stext character properties --- src/__init__.py | 116 ++++++++++++++++++++++++++++++++++-------------- src/extra.i | 101 +++++++++++++++++++++++++++++++---------- 2 files changed, 161 insertions(+), 56 deletions(-) diff --git a/src/__init__.py b/src/__init__.py index 522b4c45f..f17f714ba 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -1031,6 +1031,7 @@ def get_textpage(self, clip=None, flags=0): ret.parent = p else: ret.parent = weakref.proxy(p) + ret._dev_flags = flags return ret @property @@ -2782,6 +2783,7 @@ def get_textpage(self, flags=3): stext_options.flags = flags val = mupdf.FzStextPage(self.this, stext_options) val.thisown = True + val._dev_flags = flags return val @property @@ -7970,6 +7972,7 @@ def _get_textpage(self, clip=None, flags=0, matrix=None): if g_use_extra: ll_tpage = extra.page_get_textpage(self.this, clip, flags, matrix) tpage = mupdf.FzStextPage(ll_tpage) + tpage._dev_flags = flags return tpage page = self.this options = mupdf.FzStextOptions(flags) @@ -7989,6 +7992,7 @@ def _get_textpage(self, clip=None, flags=0, matrix=None): assert 0, f'Unrecognised {type(page)=}' mupdf.fz_run_page(page, dev, ctm, mupdf.FzCookie()) mupdf.fz_close_device(dev) + tpage._dev_flags = flags return tpage def _insert_image(self, @@ -9142,6 +9146,12 @@ def remove_rotation(self): if rot == 0: return Identity # nothing to do + # save annotation rectangle information before we do anything + rot_matrix = self.rotation_matrix # original rotation matrix + annots=[(a.xref,a.rect * rot_matrix) for a in self.annots()] + get_links = self.get_links() + widgets = [(w.xref,w.rect * rot_matrix) for w in self.widgets()] + # need to derotate the page's content mb = self.mediabox # current mediabox @@ -9172,20 +9182,22 @@ def remove_rotation(self): self.set_rotation(0) rot = ~mat # inverse of the derotation matrix - for annot in self.annots(): # modify rectangles of annotations - r = annot.rect * rot - # TODO: only try to set rectangle for applicable annot types - annot.set_rect(r) - for link in self.get_links(): # modify 'from' rectangles of links - r = link["from"] * rot + for xref, rect in annots: # modify rectangles of annotations + annot = self.load_annot(xref) + # TODO: only do this for applicable annot types + annot.set_rect(rect) + + for link in get_links: # modify 'from' rectangles of links + r = link["from"] * rot_matrix self.delete_link(link) link["from"] = r try: # invalid links remain deleted self.insert_link(link) except Exception: pass - for widget in self.widgets(): # modify field rectangles - r = widget.rect * rot + + for xref, rect in widgets: # modify field rectangles + widget = page.load_widget(xref) widget.rect = r widget.update() return rot # the inverse of the generated derotation matrix @@ -9432,6 +9444,7 @@ def get_textpage(self, clip: rect_like = None, flags: int = 0, matrix=None) -> " self.set_rotation(old_rotation) textpage = TextPage(textpage) textpage.parent = weakref.proxy(self) + textpage._dev_flags = flags return textpage def get_texttrace(self): @@ -16440,9 +16453,13 @@ def JM_make_annot_DA(annot, ncol, col, fontname, fontsize): mupdf.pdf_dict_put_text_string(mupdf.pdf_annot_obj(annot), mupdf.PDF_ENUM_NAME_DA, buf) -def JM_make_spanlist(line_dict, line, raw, buff, tp_rect): +def JM_make_spanlist(line_dict, line, raw, buff, tp_rect, dev_flags): if g_use_extra: - return extra.JM_make_spanlist(line_dict, line, raw, buff, tp_rect) + return extra.JM_make_spanlist(line_dict, line, raw, buff, tp_rect, dev_flags) + # relevant MuPDF versions + MUPDF1250 = (1, 25, 0) + MUPDF1251 = (1, 25, 1) + THIS_MUPDF = mupdf_version_tuple char_list = None span_list = [] mupdf.fz_clear_buffer(buff) @@ -16453,18 +16470,24 @@ class char_style: def __init__(self, rhs=None): if rhs: self.size = rhs.size + self.font_flags = rhs.font_flags self.flags = rhs.flags self.font = rhs.font self.color = rhs.color self.asc = rhs.asc self.desc = rhs.desc + self.bidi = rhs.bidi + self.opacity = rhs.opacity else: self.size = -1 - self.flags = -1 - self.font = '' - self.color = -1 + self.font_flags = 0 + self.flags = 0 + self.font = "" + self.color = 0 self.asc = 0 self.desc = 0 + self.bidi = 0 + self.opacity = 1 def __str__(self): return f'{self.size} {self.flags} {self.font} {self.color} {self.asc} {self.desc}' @@ -16481,24 +16504,30 @@ def __str__(self): ): continue - flags = JM_char_font_flags(mupdf.FzFont(mupdf.ll_fz_keep_font(ch.m_internal.font)), line, ch) + font_flags = JM_char_font_flags(mupdf.FzFont(mupdf.ll_fz_keep_font(ch.m_internal.font)), line, ch) origin = mupdf.FzPoint(ch.m_internal.origin) style.size = ch.m_internal.size - style.flags = flags + style.flags = ch.m_internal.flags style.font = JM_font_name(mupdf.FzFont(mupdf.ll_fz_keep_font(ch.m_internal.font))) - if mupdf_version_tuple >= (1, 25): - style.color = ch.m_internal.argb + if THIS_MUPDF >= MUPDF1250: + style.opacity = (ch.m_internal.argb >> 24) / 255 + style.color = ch.m_internal.argb & ~0xff000000 else: style.color = ch.m_internal.color style.asc = JM_font_ascender(mupdf.FzFont(mupdf.ll_fz_keep_font(ch.m_internal.font))) style.desc = JM_font_descender(mupdf.FzFont(mupdf.ll_fz_keep_font(ch.m_internal.font))) - if (style.size != old_style.size - or style.flags != old_style.flags - or style.color != old_style.color - or style.font != old_style.font - ): - if old_style.size >= 0: + if (0 + or style.size != old_style.size + or style.bidi != old_style.bidi + or style.font_flags != old_style.font_flags + # compare flags w/o synthetic property + or (style.flags & ~4) != (old_style.flags & ~4) + or style.color != old_style.color + or style.opacity != old_style.opacity + or style.font != old_style.font + ): + if old_style.size > 0: # not first one, output previous if raw: # put character list in the span @@ -16506,13 +16535,13 @@ def __str__(self): char_list = None else: # put text string in the span - span[dictkey_text] = JM_EscapeStrFromBuffer( buff) + span[dictkey_text] = JM_EscapeStrFromBuffer(buff) mupdf.fz_clear_buffer(buff) span[dictkey_origin] = JM_py_from_point(span_origin) span[dictkey_bbox] = JM_py_from_rect(span_rect) line_rect = mupdf.fz_union_rect(line_rect, span_rect) - span_list.append( span) + span_list.append(span) span = None span = dict() @@ -16522,12 +16551,33 @@ def __str__(self): asc = 0.9 desc = -0.1 + span["bidi"] = style.bidi span[dictkey_size] = style.size - span[dictkey_flags] = style.flags + span[dictkey_flags] = style.font_flags span[dictkey_font] = JM_EscapeStrFromStr(style.font) span[dictkey_color] = style.color span["ascender"] = asc span["descender"] = desc + span["opacity"] = style.opacity + # add more keys depending on MuPDF version + if THIS_MUPDF >= MUPDF1250: #separate if because not flags-dependent + span["opacity"] = style.opacity + # rest of keys only make sense for FZ_STEXT_COLLECT_FLAGS + if dev_flags & mupdf.FZ_STEXT_COLLECT_FLAGS: + span["underline"] = bool(style.flags & mupdf.FZ_STEXT_UNDERLINE) + span["strikeout"] = bool(style.flags & mupdf.FZ_STEXT_STRIKEOUT) + else: + span["underline"] = None + span["strikeout"] = None + + if THIS_MUPDF > MUPDF1251: + if dev_flags & mupdf.FZ_STEXT_COLLECT_FLAGS: + span["bold"] = bool(style.flags & mupdf.FZ_STEXT_BOLD) + else: + span["bold"] = None + span["filled"] = bool(style.flags & mupdf.FZ_STEXT_FILLED) + span["stroked"] = bool(style.flags & mupdf.FZ_STEXT_STROKED) + span["clipped"] = bool(style.flags & mupdf.FZ_STEXT_CLIPPED) # Need to be careful here - doing 'old_style=style' does a shallow # copy, but we need to keep old_style as a distinct instance. @@ -16541,6 +16591,8 @@ def __str__(self): char_dict = dict() char_dict[dictkey_origin] = JM_py_from_point( ch.m_internal.origin) char_dict[dictkey_bbox] = JM_py_from_rect(r) + if THIS_MUPDF >= MUPDF1250: + char_dict["synthetic"] = bool(ch.m_internal.flags & mupdf.FZ_STEXT_SYNTHETIC) char_dict[dictkey_c] = chr(ch.m_internal.c) if char_list is None: @@ -16604,9 +16656,9 @@ def JM_make_image_block(block, block_dict): block_dict[ dictkey_image] = bytes_ -def JM_make_text_block(block, block_dict, raw, buff, tp_rect): +def JM_make_text_block(block, block_dict, raw, buff, tp_rect, dev_flags): if g_use_extra: - return extra.JM_make_text_block(block.m_internal, block_dict, raw, buff.m_internal, tp_rect.m_internal) + return extra.JM_make_text_block(block.m_internal, block_dict, raw, buff.m_internal, tp_rect.m_internal, dev_flags) line_list = [] block_rect = mupdf.FzRect(mupdf.FzRect.Fixed_EMPTY) #log(f'{block=}') @@ -16617,7 +16669,7 @@ def JM_make_text_block(block, block_dict, raw, buff, tp_rect): ): continue line_dict = dict() - line_rect = JM_make_spanlist(line_dict, line, raw, buff, tp_rect) + line_rect = JM_make_spanlist(line_dict, line, raw, buff, tp_rect, dev_flags) block_rect = mupdf.fz_union_rect(block_rect, line_rect) line_dict[dictkey_wmode] = line.m_internal.wmode line_dict[dictkey_dir] = JM_py_from_point(line.m_internal.dir) @@ -16629,7 +16681,7 @@ def JM_make_text_block(block, block_dict, raw, buff, tp_rect): def JM_make_textpage_dict(tp, page_dict, raw): if g_use_extra: - return extra.JM_make_textpage_dict(tp.m_internal, page_dict, raw) + return extra.JM_make_textpage_dict(tp.m_internal, page_dict, raw, tp._dev_flags) text_buffer = mupdf.fz_new_buffer(128) block_list = [] tp_rect = mupdf.FzRect(tp.m_internal.mediabox) @@ -16654,7 +16706,7 @@ def JM_make_textpage_dict(tp, page_dict, raw): block_dict[dictkey_bbox] = JM_py_from_rect(block.m_internal.bbox) JM_make_image_block(block, block_dict) else: - JM_make_text_block(block, block_dict, raw, text_buffer, tp_rect) + JM_make_text_block(block, block_dict, raw, text_buffer, tp_rect, tp._dev_flags) block_list.append(block_dict) page_dict[dictkey_blocks] = block_list @@ -21164,14 +21216,12 @@ def get_text( pages=None, method='single', concurrency=None, - option='text', clip=None, flags=None, textpage=None, sort=False, delimiters=None, - _stats=False, ): ''' diff --git a/src/extra.i b/src/extra.i index f8f88a6c5..e040e5dad 100644 --- a/src/extra.i +++ b/src/extra.i @@ -3014,9 +3014,16 @@ mupdf::FzRect JM_make_spanlist( mupdf::FzStextLine& line, int raw, mupdf::FzBuffer& buff, - mupdf::FzRect& tp_rect + mupdf::FzRect& tp_rect, + int dev_flags ) { + // relevant MuPDF versions as integers + #define MUPDF1250 (1 << 16) + (25 << 8) + 0 // 1.25.0 + #define MUPDF1251 MUPDF1250 + 1 // 1.25.1 + // current MuPDF version as an integer + #define THIS_MUPDF (FZ_VERSION_MAJOR << 16) + (FZ_VERSION_MINOR << 8) + (FZ_VERSION_PATCH) + PyObject *span = NULL, *char_list = NULL, *char_dict; PyObject *span_list = PyList_New(0); mupdf::fz_clear_buffer(buff); @@ -3026,11 +3033,14 @@ mupdf::FzRect JM_make_spanlist( struct char_style { float size = -1; - int flags = -1; + int font_flags = 0; + uint16_t flags = 0; const char *font = ""; - unsigned int color = -1; + uint32_t color = 0; + float opacity = 1; float asc = 0; float desc = 0; + uint16_t bidi = 0; }; char_style old_style; char_style style; @@ -3042,27 +3052,36 @@ mupdf::FzRect JM_make_spanlist( { continue; } - int flags = JM_char_font_flags( ch.m_internal->font, line.m_internal, ch.m_internal); + int font_flags = JM_char_font_flags(ch.m_internal->font, line.m_internal, ch.m_internal); fz_point origin = ch.m_internal->origin; style.size = ch.m_internal->size; - style.flags = flags; + style.font_flags = font_flags; + style.flags = ch.m_internal->flags; style.font = JM_font_name(ch.m_internal->font); - #if (FZ_VERSION_MAJOR > 1 || (FZ_VERSION_MAJOR == 1 && FZ_VERSION_MINOR >= 25)) - style.color = ch.m_internal->argb; + style.bidi = ch.m_internal->bidi; + #if (THIS_MUPDF >= MUPDF1250) + style.opacity = ((float) (ch.m_internal->argb >> 24)) / 255; + style.color = (ch.m_internal->argb << 8) >> 8; #else - style.color = ch.m_internal->color; + style.color = (uint32_t) ch.m_internal->color; #endif style.asc = JM_font_ascender(ch.m_internal->font); style.desc = JM_font_descender(ch.m_internal->font); + // any change in character style causes a span break + // except: synthetic spaces if (0 - || style.size != old_style.size - || style.flags != old_style.flags - || style.color != old_style.color - || strcmp(style.font, old_style.font) != 0 - ) + || style.bidi != old_style.bidi + || style.size != old_style.size + || style.font_flags != old_style.font_flags + // compare flags w/o synthetic property + || (style.flags & ~4) != (old_style.flags & ~4) + || style.color != old_style.color + || style.opacity != old_style.opacity + || strcmp(style.font, old_style.font) != 0 + ) { - if (old_style.size >= 0) + if (old_style.size > 0) { // not first one, output previous if (raw) @@ -3093,13 +3112,45 @@ mupdf::FzRect JM_make_spanlist( desc = -0.1f; } + DICT_SETITEMSTR_DROP(span, "bidi", Py_BuildValue("i", style.bidi)); DICT_SETITEM_DROP(span, dictkey_size, Py_BuildValue("f", style.size)); - DICT_SETITEM_DROP(span, dictkey_flags, Py_BuildValue("i", style.flags)); + DICT_SETITEM_DROP(span, dictkey_flags, Py_BuildValue("i", style.font_flags)); DICT_SETITEM_DROP(span, dictkey_font, JM_EscapeStrFromStr(style.font)); - DICT_SETITEM_DROP(span, dictkey_color, Py_BuildValue("i", style.color)); + DICT_SETITEM_DROP(span, dictkey_color, Py_BuildValue("k", style.color)); DICT_SETITEMSTR_DROP(span, "ascender", Py_BuildValue("f", asc)); DICT_SETITEMSTR_DROP(span, "descender", Py_BuildValue("f", desc)); + // depending on MuPDF version, add supported keys + #if (THIS_MUPDF >= MUPDF1250) // separate #if because not flags-dependent + DICT_SETITEMSTR_DROP(span, "opacity", Py_BuildValue("f", style.opacity)); + #endif + + // rest of keys only make sense if FZ_STEXT_COLLECT_FLAGS was set + #if (THIS_MUPDF >= MUPDF1250) + if (dev_flags & 32768) + { + DICT_SETITEMSTR_DROP(span, "underline", JM_BOOL(style.flags & FZ_STEXT_UNDERLINE)); + DICT_SETITEMSTR_DROP(span, "strikeout", JM_BOOL(style.flags & FZ_STEXT_STRIKEOUT)); + } + else + { + DICT_SETITEMSTR_DROP(span, "underline", Py_BuildValue("s", NULL)); + DICT_SETITEMSTR_DROP(span, "strikeout", Py_BuildValue("s", NULL)); + } + #endif + #if (THIS_MUPDF > MUPDF1251) + if (dev_flags & FZ_STEXT_COLLECT_FLAGS) + { + DICT_SETITEMSTR_DROP(span, "bold", JM_BOOL(style.flags & FZ_STEXT_BOLD)); + } + else + { + DICT_SETITEMSTR_DROP(span, "bold", Py_BuildValue("s", NULL)); + } + DICT_SETITEMSTR_DROP(span, "filled", JM_BOOL(style.flags & FZ_STEXT_FILLED)); + DICT_SETITEMSTR_DROP(span, "stroked", JM_BOOL(style.flags & FZ_STEXT_STROKED)); + DICT_SETITEMSTR_DROP(span, "clipped", JM_BOOL(style.flags & FZ_STEXT_CLIPPED)); + #endif old_style = style; span_rect = r; span_origin = origin; @@ -3114,7 +3165,9 @@ mupdf::FzRect JM_make_spanlist( DICT_SETITEM_DROP(char_dict, dictkey_origin, JM_py_from_point(ch.m_internal->origin)); DICT_SETITEM_DROP(char_dict, dictkey_bbox, JM_py_from_rect(r)); - + #if (THIS_MUPDF >= MUPDF1250) + DICT_SETITEMSTR_DROP(char_dict, "synthetic", JM_BOOL(ch.m_internal->flags & FZ_STEXT_SYNTHETIC)); + #endif DICT_SETITEM_DROP(char_dict, dictkey_c, Py_BuildValue("C", ch.m_internal->c)); if (!char_list) @@ -3514,7 +3567,7 @@ void JM_make_image_block(fz_stext_block *block, PyObject *block_dict) return; } -static void JM_make_text_block(fz_stext_block *block, PyObject *block_dict, int raw, fz_buffer *buff, fz_rect tp_rect) +static void JM_make_text_block(fz_stext_block *block, PyObject *block_dict, int raw, fz_buffer *buff, fz_rect tp_rect, int dev_flags) { fz_stext_line *line; PyObject *line_list = PyList_New(0), *line_dict; @@ -3533,7 +3586,8 @@ static void JM_make_text_block(fz_stext_block *block, PyObject *block_dict, int line2, raw, buff2, - tp_rect2 + tp_rect2, + dev_flags ); fz_rect& line_rect = *line_rect2.internal(); block_rect = fz_union_rect(block_rect, line_rect); @@ -3549,7 +3603,7 @@ static void JM_make_text_block(fz_stext_block *block, PyObject *block_dict, int return; } -void JM_make_textpage_dict(fz_stext_page *tp, PyObject *page_dict, int raw) +void JM_make_textpage_dict(fz_stext_page *tp, PyObject *page_dict, int raw, int dev_flags) { fz_context* ctx = mupdf::internal_context_get(); fz_stext_block *block; @@ -3576,7 +3630,7 @@ void JM_make_textpage_dict(fz_stext_page *tp, PyObject *page_dict, int raw) DICT_SETITEM_DROP(block_dict, dictkey_bbox, JM_py_from_rect(block->bbox)); JM_make_image_block(block, block_dict); } else { - JM_make_text_block(block, block_dict, raw, text_buffer, tp_rect); + JM_make_text_block(block, block_dict, raw, text_buffer, tp_rect, dev_flags); } LIST_APPEND_DROP(block_list, block_dict); @@ -4056,7 +4110,8 @@ mupdf::FzRect JM_make_spanlist( mupdf::FzStextLine& line, int raw, mupdf::FzBuffer& buff, - mupdf::FzRect& tp_rect + mupdf::FzRect& tp_rect, + int dev_flags ); PyObject* extractWORDS(mupdf::FzStextPage& this_tpage, PyObject *delimiters); @@ -4071,7 +4126,7 @@ fz_stext_page* page_get_textpage( PyObject* matrix ); -void JM_make_textpage_dict(fz_stext_page *tp, PyObject *page_dict, int raw); +void JM_make_textpage_dict(fz_stext_page *tp, PyObject *page_dict, int raw, int dev_flags); PyObject *pixmap_pixel(fz_pixmap* pm, int x, int y); int pixmap_n(mupdf::FzPixmap& pixmap); From 40da3b0ae9d73662c3b007bb22a13ebfb58cc871 Mon Sep 17 00:00:00 2001 From: "Jorj X. McKie" Date: Wed, 11 Dec 2024 19:43:39 -0400 Subject: [PATCH 14/16] Address missing /Resources object Intercept missing page resources --- src/__init__.py | 4 ++++ tests/resources/test_4141.pdf | Bin 0 -> 3467 bytes tests/test_4141.py | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 tests/resources/test_4141.pdf create mode 100644 tests/test_4141.py diff --git a/src/__init__.py b/src/__init__.py index f17f714ba..f00296cb6 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -8313,6 +8313,8 @@ def _show_pdf_page(self, fz_srcpage, overlay=1, matrix=None, xref=0, oc=0, clip= # 1. insert Xobject in Resources #------------------------------------------------------------- resources = mupdf.pdf_dict_get_inheritable(tpageref, PDF_NAME('Resources')) + if not resources.m_internal: + resources = mupdf.pdf_dict_put_dict(tpageref,PDF_NAME('Resources'),5) subres = mupdf.pdf_dict_get(resources, PDF_NAME('XObject')) if not subres.m_internal: subres = mupdf.pdf_dict_put_dict(resources, PDF_NAME('XObject'), 5) @@ -16820,6 +16822,8 @@ def JM_merge_resources( page, temp_res): ''' # page objects /Resources, /Resources/ExtGState, /Resources/Font resources = mupdf.pdf_dict_get(page.obj(), PDF_NAME('Resources')) + if not resources.m_internal: + resources = mupdf.pdf_dict_put_dict(page.obj(), PDF_NAME('Resources'),5) main_extg = mupdf.pdf_dict_get(resources, PDF_NAME('ExtGState')) main_fonts = mupdf.pdf_dict_get(resources, PDF_NAME('Font')) diff --git a/tests/resources/test_4141.pdf b/tests/resources/test_4141.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a8fc73e23fa74c48480048369b8364a8ccf9928a GIT binary patch literal 3467 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 Date: Thu, 12 Dec 2024 05:02:44 -0400 Subject: [PATCH 15/16] Some provisional definitions To cope with upcoming features of MuPDF we make a few provisional definitions for flags that will be introduced then. This will avoid complex version checks in our code. Also adjust a table markdown output test: We do no longer replace line breaks by simple spaces, but by HTML line breaks `
`. --- src/__init__.py | 38 ++++++++++++++++++++++++-------------- src/extra.i | 6 +++--- tests/test_tables.py | 6 +++--- 3 files changed, 30 insertions(+), 20 deletions(-) diff --git a/src/__init__.py b/src/__init__.py index f00296cb6..a39732c14 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -8314,7 +8314,7 @@ def _show_pdf_page(self, fz_srcpage, overlay=1, matrix=None, xref=0, oc=0, clip= #------------------------------------------------------------- resources = mupdf.pdf_dict_get_inheritable(tpageref, PDF_NAME('Resources')) if not resources.m_internal: - resources = mupdf.pdf_dict_put_dict(tpageref,PDF_NAME('Resources'),5) + resources = mupdf.pdf_dict_put_dict(tpageref,PDF_NAME('Resources'),5) subres = mupdf.pdf_dict_get(resources, PDF_NAME('XObject')) if not subres.m_internal: subres = mupdf.pdf_dict_put_dict(resources, PDF_NAME('XObject'), 5) @@ -9199,7 +9199,7 @@ def remove_rotation(self): pass for xref, rect in widgets: # modify field rectangles - widget = page.load_widget(xref) + widget = self.load_widget(xref) widget.rect = r widget.update() return rot # the inverse of the generated derotation matrix @@ -13487,6 +13487,13 @@ def width(self): TEXT_OUTPUT_XML = 3 TEXT_OUTPUT_XHTML = 4 +TEXT_STRIKEOUT = 1 +TEXT_UNDERLINE = 2 +TEXT_SYNTHETIC = 4 +TEXT_BOLD = 8 +TEXT_FILLED = 16 +TEXT_STROKED = 32 + TEXT_PRESERVE_LIGATURES = mupdf.FZ_STEXT_PRESERVE_LIGATURES TEXT_PRESERVE_WHITESPACE = mupdf.FZ_STEXT_PRESERVE_WHITESPACE TEXT_PRESERVE_IMAGES = mupdf.FZ_STEXT_PRESERVE_IMAGES @@ -13507,6 +13514,7 @@ def width(self): TEXT_COLLECT_VECTORS = 1024 TEXT_IGNORE_ACTUALTEXT = 2048 TEXT_STEXT_SEGMENT = 4096 +TEXT_COLLECT_FLAGS = 32768 # mupdf.FZ_STEXT_COLLECT_FLAGS TEXTFLAGS_WORDS = (0 | TEXT_PRESERVE_LIGATURES @@ -16509,6 +16517,7 @@ def __str__(self): font_flags = JM_char_font_flags(mupdf.FzFont(mupdf.ll_fz_keep_font(ch.m_internal.font)), line, ch) origin = mupdf.FzPoint(ch.m_internal.origin) style.size = ch.m_internal.size + style.font_flags = font_flags style.flags = ch.m_internal.flags style.font = JM_font_name(mupdf.FzFont(mupdf.ll_fz_keep_font(ch.m_internal.font))) if THIS_MUPDF >= MUPDF1250: @@ -16519,7 +16528,8 @@ def __str__(self): style.asc = JM_font_ascender(mupdf.FzFont(mupdf.ll_fz_keep_font(ch.m_internal.font))) style.desc = JM_font_descender(mupdf.FzFont(mupdf.ll_fz_keep_font(ch.m_internal.font))) - if (0 + if ( + 0 or style.size != old_style.size or style.bidi != old_style.bidi or style.font_flags != old_style.font_flags @@ -16528,7 +16538,7 @@ def __str__(self): or style.color != old_style.color or style.opacity != old_style.opacity or style.font != old_style.font - ): + ): if old_style.size > 0: # not first one, output previous if raw: @@ -16562,24 +16572,24 @@ def __str__(self): span["descender"] = desc span["opacity"] = style.opacity # add more keys depending on MuPDF version - if THIS_MUPDF >= MUPDF1250: #separate if because not flags-dependent + if THIS_MUPDF >= MUPDF1250: # separate if because not flags-dependent span["opacity"] = style.opacity # rest of keys only make sense for FZ_STEXT_COLLECT_FLAGS - if dev_flags & mupdf.FZ_STEXT_COLLECT_FLAGS: - span["underline"] = bool(style.flags & mupdf.FZ_STEXT_UNDERLINE) - span["strikeout"] = bool(style.flags & mupdf.FZ_STEXT_STRIKEOUT) + if dev_flags & TEXT_COLLECT_FLAGS: + span["underline"] = bool(style.flags & TEXT_UNDERLINE) + span["strikeout"] = bool(style.flags & TEXT_STRIKEOUT) else: span["underline"] = None span["strikeout"] = None if THIS_MUPDF > MUPDF1251: - if dev_flags & mupdf.FZ_STEXT_COLLECT_FLAGS: - span["bold"] = bool(style.flags & mupdf.FZ_STEXT_BOLD) + if dev_flags & TEXT_COLLECT_FLAGS: + span["bold"] = bool(style.flags & TEXT_BOLD) else: span["bold"] = None - span["filled"] = bool(style.flags & mupdf.FZ_STEXT_FILLED) - span["stroked"] = bool(style.flags & mupdf.FZ_STEXT_STROKED) - span["clipped"] = bool(style.flags & mupdf.FZ_STEXT_CLIPPED) + span["filled"] = bool(style.flags & TEXT_FILLED) + span["stroked"] = bool(style.flags & TEXT_STROKED) + span["clipped"] = bool(style.flags & TEXT_CLIPPED) # Need to be careful here - doing 'old_style=style' does a shallow # copy, but we need to keep old_style as a distinct instance. @@ -16594,7 +16604,7 @@ def __str__(self): char_dict[dictkey_origin] = JM_py_from_point( ch.m_internal.origin) char_dict[dictkey_bbox] = JM_py_from_rect(r) if THIS_MUPDF >= MUPDF1250: - char_dict["synthetic"] = bool(ch.m_internal.flags & mupdf.FZ_STEXT_SYNTHETIC) + char_dict["synthetic"] = bool(ch.m_internal.flags & TEXT_SYNTHETIC) char_dict[dictkey_c] = chr(ch.m_internal.c) if char_list is None: diff --git a/src/extra.i b/src/extra.i index e040e5dad..ce214b2bb 100644 --- a/src/extra.i +++ b/src/extra.i @@ -3125,7 +3125,7 @@ mupdf::FzRect JM_make_spanlist( DICT_SETITEMSTR_DROP(span, "opacity", Py_BuildValue("f", style.opacity)); #endif - // rest of keys only make sense if FZ_STEXT_COLLECT_FLAGS was set + // rest of keys only make sense if FZ_STEXT_COLLECT_FLAGS (32768) was set #if (THIS_MUPDF >= MUPDF1250) if (dev_flags & 32768) { @@ -3139,9 +3139,9 @@ mupdf::FzRect JM_make_spanlist( } #endif #if (THIS_MUPDF > MUPDF1251) - if (dev_flags & FZ_STEXT_COLLECT_FLAGS) + if (dev_flags & 32768) // FZ_STEXT_COLLECT_FLAGS = 32768 { - DICT_SETITEMSTR_DROP(span, "bold", JM_BOOL(style.flags & FZ_STEXT_BOLD)); + DICT_SETITEMSTR_DROP(span, "bold", JM_BOOL(style.flags & 8)); // FZ_STEXT_BOLD = 8 } else { diff --git a/tests/test_tables.py b/tests/test_tables.py index ca8aef74c..4c2abcbd7 100644 --- a/tests/test_tables.py +++ b/tests/test_tables.py @@ -288,10 +288,10 @@ def test_markdown(): text = ( "|Header1|Header2|Header3|\n" "|---|---|---|\n" - "|Col11 Col12|Col21 Col22|Col31 Col32 Col33|\n" - "|Col13|Col23|Col34 Col35|\n" + "|Col11 Col12|Col21
Col22|Col31
Col32
Col33|\n" + "|Col13|Col23|Col34
Col35|\n" "|Col14|Col24|Col36|\n" - "|Col15|Col25 Col26||\n\n" + "|Col15|Col25
Col26||\n\n" ) assert tab.to_markdown() == text From 5907e6924cd34a4fa5118593403b99d7e2d89fec Mon Sep 17 00:00:00 2001 From: "Jorj X. McKie" Date: Sun, 15 Dec 2024 08:12:52 -0400 Subject: [PATCH 16/16] Update test_tables.py --- tests/test_tables.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_tables.py b/tests/test_tables.py index 4c2abcbd7..29ef6a9d2 100644 --- a/tests/test_tables.py +++ b/tests/test_tables.py @@ -288,7 +288,7 @@ def test_markdown(): text = ( "|Header1|Header2|Header3|\n" "|---|---|---|\n" - "|Col11 Col12|Col21
Col22|Col31
Col32
Col33|\n" + "|Col11
Col12|Col21
Col22|Col31
Col32
Col33|\n" "|Col13|Col23|Col34
Col35|\n" "|Col14|Col24|Col36|\n" "|Col15|Col25
Col26||\n\n"