
    ?pjX5                         S SK Jr  S SKJr  S SKJr  SSKJrJr  SSK	J
rJr  SSKJr  SrS	rS
rSrS\S\4S jrS\4S jrS\\   4S jrSS jr\R4                   " S S\5      5       rg)    )BytesIO)Path)Optional   )BaseConverterConvertResult)extract_math_from_paragraphparagraph_has_math)default_registryz7{http://schemas.openxmlformats.org/drawingml/2006/main}z={http://schemas.openxmlformats.org/markup-compatibility/2006}zKhttp://schemas.openxmlformats.org/officeDocument/2006/relationships/drawingz<http://schemas.openxmlformats.org/package/2006/relationshipssheet_indexreturnc                 N   SSK Jn  / nSUS-    S3n U R                  U5      nUR	                  U5      n/ nUR                  S[         S35       H{  nUR                  S5      [        :X  d  M  UR                  S	S
5      n	U	R                  S5      (       a	  SU	SS -   n	OU	R                  S5      (       d  SU	-   n	UR                  U	5        M}     U H  n
 U R                  U
5      nUR	                  U5      nUR                  [         S35       Hk  nUR                  [         S35      nUc  M   UR                  [         S35       H/  n[!        U5      (       d  M  UR#                  [%        U5      5        M1     Mm     M     U$ ! [         a    Us $ f = f! [         a     M  f = f)zExtract LaTeX formulas from drawing layer of an xlsx sheet.

Args:
    zf: An already-opened zipfile.ZipFile object.
    sheet_index: Zero-based sheet index.
r   )etreezxl/worksheets/_rels/sheet   z	.xml.rels{z}RelationshipTypeTarget z../zxl/   Nzxl/worksheets/AlternateContentChoicep)lxmlr   readKeyError
fromstringfindall_REL_NSget_REL_DRAWING
startswithappend	Exceptioniter_MCfind_A_paragraph_has_mathextend_extract_math_from_paragraph)zfr   r   results	rels_path	rels_data	rels_rootdrawing_targetsreltargetdrawing_pathdrawing_datadrawing_rootaltchoiceparas                   ]/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/paddleocr/_doc2md/converters/xlsx.py_extract_drawing_mathr:   $   s    G+K!O+<IFIGGI&	
   +IO  2gYn!=>776?l*WWXr*F  ''+&&u--)F2""6* ? (	77<0L ++L9L
  $$u,<%=>CXXVn-F~rd!H-&t,,NN#?#EF .	 ? (  NA  (  		s#   F "FFF
F$#F$c                 <   SnSn[        SU R                  =(       d    SS-   5       Hh  nUR                  R                  U5      nU R                  R                  U5      nU(       a   UR                  b  X6R                  U-  -  nM`  USU-  -  nMj     [        U5      $ )zZReturn the total column width of the worksheet in EMU. 1 char width ~ 7px, 1px = 9525 EMU.is r   r   g\( @)range
max_columnutilsget_column_lettercolumn_dimensionsr   widthint)wsopenpyxl_modCHAR_TO_EMUtotalcol_idx
col_lettercol_dims          r9   _get_sheet_width_emurJ   V   s    KER]]/a145!''99'B
&&**:6w}}0]][00ETK''E 6 u:    c                      SSK Jn  [        X5      (       a  U R                  R                  $  g! [
        [        4 a     gf = f)zSReturn image display width in EMU for OneCellAnchor; return None for TwoCellAnchor.r   )OneCellAnchorN)$openpyxl.drawing.spreadsheet_drawingrM   
isinstanceextcxAttributeErrorImportError)anchorrM   s     r9   _get_image_cxrU   d   sI    Ff,,::==  -  K( s   +0 AANc                 "   [        S5      =p4S=pVU R                  R                  5        H_  nUR                  c  M  UR                  UR
                  pUb  X:  a  M3  [        X85      n[        XX5      n[        XI5      n[        Xi5      nMa     U R                  R                   Ho  n
U
R                  U
R                  pUb  [        X5      nX:  a  M/  [        X;5      n[        X\5      n[        XJR                  5      n[        XjR                  5      nMq     U HD  u  pUS-   US-   pUb  X:  a  M  [        X85      n[        XX5      n[        XI5      n[        Xi5      nMF     US:X  a  g[        U5      [        U5      [        U5      [        U5      4$ )zSReturn (min_row, max_row, min_col, max_col) 1-based, or None if the sheet is empty.infr   Nr   )float_cellsvaluesvaluerowcolumnminmaxmerged_cellsrangesmin_rowmax_rowmin_colmax_colrB   )rC   	image_mapmax_rowsmin_rmin_cmax_rmax_ccellrcmrr1r2img_r0img_c0s                  r9   _find_data_boundsrt   p   s]   %L EE 		  "::!88T[[q#MEMEMEME # oo$$RZZBR"B7EEE::&E::& % $z6A:1ALEEEE $ zJE
CJE
;;rK   c                   2    \ rS rSrS/rS/rS\S\4S jrSr	g)	XlsxConverter   xlsxzAapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet	file_pathr   c                     SS K nSSKJnJn  UR                  SS 5      nUR                  SS 5      nUR                  SS5      nSS Kn	UR                  [        U5      SSS	9n
/ n0 nSnU(       a  U/OU
R                  nU	R                  [        U5      S
5       nU GH  nUU
R                  ;  a  M  U
U   n[        UU5      n0 n[        US/ 5       H  nUR                  n[        UXE45      (       aQ  UR                   R"                  UR                   R$                  nnUR'                  UU4/ 5      R)                  U5        Mr  [        U[        5      (       d  M   SSKJn  U" U5      u  nnUR'                  US-
  US-
  4/ 5      R)                  U5        M     0 nUR0                  R2                   H^  n[5        UR6                  UR8                  S-   5       H4  n[5        UR:                  UR<                  S-   5       H
  nUUUU4'   M     M6     M`     [?        UUU5      nUc  GM  Uu  nnnnS/n [5        UUS-   5       GH?  n!U R)                  S5        [5        UUS-   5       GH  n"URA                  U!U"5      n#UR                  U!U"45      nU(       a   U!U"4UR6                  UR:                  4:w  a  MP  U!U:X  a  SOSn$Sn%U(       a~  [C        UR<                  U5      [E        UR:                  U5      -
  S-   n&[C        UR8                  U5      [E        UR6                  U5      -
  S-   n'U&S:  a	  U%SU& S3-  n%U'S:  a	  U%SU' S3-  n%U#RF                  n(U(b  [        U(5      OSn)U)(       a   U#RH                  n*U*RJ                  (       a  SU) S3n)U*RL                  (       a  SU) S3n)U*RN                  (       a  SU) S3n)U*RP                  (       a  SU) S3n)U*RR                  n+U+S:X  a  SU) S 3n)OU+S!:X  a  S"U) S#3n)U)(       a8   U#RT                  n,U,(       a$  U,RV                  (       a  S$U,RV                   S%U) S&3n)UR                  U!S-
  U"S-
  4/ 5      n-Sn.U- H  n/US-  nU/RX                  =(       d    S'R[                  5       n0S(U S)U0 3n1S*U1 3n2 U/R\                  n3[        U3[^        5      (       a%  U3Ra                  S5        U3Rc                  5       UU2'   OU/Re                  5       UU2'   [g        U/R                  5      n4U4(       a0  U(       a)  [C        [i        U4U-  S+-  5      S+5      n5U.S,U1 S-U5 S.3-  n.M  U.S,U1 S%3-  n.M     U.(       a  U.U)-   OU)n6U R)                  S/U$ U% S0U6 S1U$ S035        GM     U R)                  S25        GMB     U R)                  S35        S4Rk                  U 5      n7S5U S6U7 3/n8U(       aL  [m        U
R                  5      Ro                  U5      n9[q        UU95       H  n:U8R)                  S7U: S835        M     UR)                  S4Rk                  U85      5        GM     S S S 5        [m        U
R                  5      n;U
Rs                  5         S6Rk                  U5      n<[u        U<US9[w        U;5      U;S:.S;9$ ! [         a    [        S5      ef = f! [.         a     GM  f = f! [.         a     GNf = f! [.         a     GNf = f! [.         a     GM  f = f! , (       d  f       N= f)<Nr   )rM   TwoCellAnchorz@XLSX conversion requires openpyxl: pip install paddleocr[doc2md]
sheet_namerg   extract_drawingsTF)	read_only	data_onlyrm   _images)coordinate_to_tupler   z<table>z<tr>thtdr   z
 colspan=""z
 rowspan="z<b>z</b>z<i>z</i>z<u>z</u>z<del>z</del>superscriptz<sup>z</sup>	subscriptz<sub>z</sub>z	<a href="z">z</a>pngimage.zimages/d   z<img src="images/z	" width="z%"><>z</z</tr>z</table>
z## z

z
$$
z
$$XLSX)formatsheet_countsheet_names)markdownimagesmetadata)<openpyxlrN   rM   r{   rS   RuntimeErrorr   zipfileload_workbookstr
sheetnamesZipFilerJ   getattrrT   rO   _fromr\   col
setdefaultr"   openpyxl.utilsr   r#   r`   ra   r<   rb   rc   rd   re   rt   rl   r^   r_   r[   fontbolditalic	underlinestrike	vertAlign	hyperlinkr2   r   lowerrefr   seekr   _datarU   roundjoinlistindexr:   closer   len)=selfry   kwargsr   rM   r{   r|   rg   r}   r   wb	sheets_mdr   image_countertarget_sheets_zfsnamerC   sheet_width_emurf   imgrT   rm   rn   r   	merge_mapro   boundsdata_min_rowdata_max_rowdata_min_coldata_max_col
html_partsrow_idxrG   rl   tagattrscsrsr[   textr   
vert_alignhlcell_imagesimg_htmlimg_objrP   filenamerel_pathr   cx_emupctcell_content
table_htmlsheet_parts	sheet_idxlatexr   md_texts=                                                                r9   convert_fileXlsxConverter.convert_file   s   		 %+JJ|T$B
"(**Z">!',>!E ##C	Net#T	(2__S^S1S&-Y #7r8"D #%	"2y"5C ZZF!&=*HII%||//1A1A1!,,aVR8??D#FC00!J#6v#>DAq%00!a%QDKKCP 6 	//00B"2::rzzA~>!&rzz2::>!BA02Iq!f- "C ? 1 +2y(C>IOFlL,'[
$\<!3CDG%%f-#(|a7G#H!www8&]]GW+=>7G"4RZZ8P"P$&-&=d4 " #BJJ ="%bjj,"?!@"#!$  !$BJJ ="%bjj,"?!@"#!$ 
  "Av %:bT); ;!Av %:bT); ; !%

-2->s5zB%'+yy#'99-0d+;D#';;-0d+;D#'>>-0d+;D#';;-24&+?D-1^^
#-#>-24&+?D%/;%>-24&+?D  %%)^^#%"))-6ryykD6+ND
 '0mmWq['A+4NPR&S#%'2G)Q.M#*>>#:U"A"A"CC).}oQse'DH)0
';H%&-kk#-c7#;#;$'HHQK7:xxzF8$47>}}F8$4)6w~~)F#)o*-(-f.F.L(Ms+&C %-*;H:YseSV(W%&H %-2CH:R0P$PH+ (32 ;Cx$"))AcU5'<.3%q*QRi $Ij %%g.o  Ep !!*-!YYz2
!$UG4
|<=# $R]] 3 9 9% @I!6sI!F#**VE7$+?@ "G  ;!78O ' 2T 2==)

++i( ";/*
 	
E  	R 	R  ) ! !~ $- % $% $- % $%8 $- % $%s 21s   Y= B>[:ZG[)B Z()[*Z(6[>7Z95A[B#[

/[1	[

:C-[=Z
Z%	 [$Z%	%[(
Z62[5Z66[9
[[[[

[[[[
[* N)
__name__
__module____qualname____firstlineno__supported_extensionssupported_mimetypesr   r   r   __static_attributes__r   rK   r9   rv   rv      s+    "8Kq
d q
 q
rK   rv   )N)ior   pathlibr   typingr   baser   r   mathr	   r*   r
   r(   registryr   r'   r%   r    r   rB   r   r:   rJ   rU   rt   registerrv   r   rK   r9   <module>r      s       / ( ?E R  I/3 /4 /dc 	Xc] 	(<V w
M w
 w
rK   