
    ?pjR                     j   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\-   S-   r\ S	3r\ S
3r\ S3rSrS\-   S-   r\ S3r\ S3rSrS\-   S-   rSSSSSSSSSSSSSSS.rS\4S jrS\4S jrS\S\4S jrS\S\4S  jrS!\S"\S#\S$\S%\S&\S\S\4S' jr\R>                   " S( S)\5      5       r g*)+    )Path   )BaseConverterConvertResult)extract_math_from_paragraphparagraph_has_math)default_registryz5http://schemas.openxmlformats.org/drawingml/2006/main{}strikerPrpz;http://schemas.openxmlformats.org/markup-compatibility/2006ChoiceAlternateContentz6http://schemas.openxmlformats.org/drawingml/2006/chartz
Area Chartz
Line Chartz	Pie ChartzBubble ChartzColumn Chartz	Bar ChartzDoughnut ChartzRadar ChartzScatter Chart)   r            3   4   5   9   :   A   iiireturnc                      U R                   R                  [        5      nUb  UR                  [        5      nUS;   $  g! [
         a     gf = f)zMReturn True if the run has strikethrough (sngStrike or dblStrike) set in XML.)	sngStrike	dblStrikeF)_rfind_A_RPRget	_A_STRIKE	Exception)runr   vals      ]/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/paddleocr/_doc2md/converters/pptx.py_pptx_run_striker(   ;   sY    ffkk&!?'')$C444 
   s   ;A   
AAc                      U R                   R                  [        5      nUb-  UR                  S5      nUb  [	        U5      nUS:  a  gUS:  a  gg! [
         a     gf = f)zReturn 'super', 'sub', or '' based on DrawingML baseline attribute.

baseline > 0  -> superscript, baseline < 0 -> subscript.
baseline attribute is on <a:rPr> with no namespace prefix.
baseliner   supersub )r   r    r!   r"   intr$   )r%   r   r&   ns       r'   _pptx_run_scriptr0   G   sj    ffkk&!?''*%CHq5"q5    s   AA 
A 
AAurlc                 F    U R                  SS5      R                  SS5      $ )z3Escape parentheses in URL for Markdown link syntax.(z%28)z%29)replace)r1   s    r'   _escape_md_urlr6   \   s     ;;sE"**366    partc                     U R                  5       nUR                  S5      (       a  gUR                  S5      (       a  gUR                  S5      (       a  gUR                  S5      (       a  gg	)
zPClassify a slide content part for grouping (heading/html/list/blockquote/other).z##heading<html- list>
blockquoteother)lstrip
startswith)r8   ss     r'   _classify_partrE   a   sX    A||D||C||D||Cr7   segbolditalic	underlinestrikethroughscriptc                    U nU(       d  U(       d  U(       d  U(       d  U(       Ga  [        U5      [        UR                  5       5      -
  n[        U5      [        UR                  5       5      -
  n	U(       a  USU OSn
U	(       a  U[        U5      U	-
  S OSnUR                  5       nU(       ak  U(       a  SU S3nU(       a  U(       a  SU S3nOU(       a  SU S3nOU(       a  SU S3nU(       a  SU S3nUS	:X  a  S
U S3nOUS:X  a  SU S3nX-   U-   nO"U(       a  U(       a  SS[        U5      -  -   S-   nU(       a  [	        U5      nSU SU S3nU$ )z8Apply Markdown/HTML inline formatting to a text segment.Nr-   z~~z***z***<u></u>r+   <sup></sup>r,   <sub></sub>    [z](r4   )lenrB   rstripstripr6   )rF   rG   rH   rI   rJ   rK   r1   tleadingtrailingprefixsuffixinnerescaped_urls                 r'   _format_run_segmentr`   o   sK    	Avmva&3qxxz?*q6C
O+ '8GR+33q6H$&'	UG2eWC(UG2E7!eWD) wf-5wf-'A1 3q6))F2A
$S)s"[M#Hr7   c                   f    \ rS rSrS/rS/rS\S\4S jrS r	S\
4S jr\S	\S
\S\
4S j5       rSrg)PptxConverter   pptxzIapplication/vnd.openxmlformats-officedocument.presentationml.presentation	file_pathr   c           
          SSK Jn  SSKJn   SSKJn  U" [        U5      5      n/ n0 nS/n	UR                  n
X@l
        XPl        UR                   GH  n/ nUR                   H   nU R                  XXXR                  5        M"     UR                   R#                  [$        5       Ht  nUR'                  [(        5      nUc  M  UR#                  [*        5       H>  n[-        U5      (       d  M  [/        U5      nU H  nUR1                  SU S35        M     M@     Mv     UR2                  (       aI  UR4                  R6                  R8                  R;                  5       nU(       a  UR1                  SU 35        / nU HR  n[=        U5      nU(       a+  [=        US	   S   5      U:X  a  US	   R1                  U5        M@  UR1                  U/5        MT     UR1                  S
R?                  S U 5       5      5        GM     SR?                  U5      n[A        UUS[C        UR                  5      S.S9$ ! [         a    [        S5      ef = f! [         a    S n GNCf = f)Nr   )Presentation)PicturezCPPTX conversion requires python-pptx: pip install paddleocr[doc2md])MSO_SHAPE_TYPE$$

$$z
> **Notes**: z

c              3   D   #    U  H  nS R                  U5      v   M     g7f)
N)join).0gs     r'   	<genexpr>-PptxConverter.convert_file.<locals>.<genexpr>   s     (Fv!1vs    z

---

PPTX)formatslide_count)markdownimagesmetadata)"rd   rg   pptx.shapes.picturerh   ImportErrorRuntimeErrorpptx.enum.shapesri   strslide_width_Picture_MSO_SHAPE_TYPEslidesshapes_process_shaper8   _elementiter_MC_ALTr    
_MC_CHOICE_A_P_paragraph_has_math_extract_math_from_paragraphappendhas_notes_slidenotes_slidenotes_text_frametextrX   rE   ro   r   rV   )selfre   kwargsrg   rh   ri   prs	slides_mdrx   image_counterr   slideslide_partsshapealt_contentchoice	para_elem
math_itemslatex
notes_textgroupsr8   kindmd_texts                           r'   convert_filePptxConverter.convert_file   s'   	)3
	"7 3y>*	oo-ZZEK ##{JJ &  %~~227;$))*5>!'T!2I*955%A)%L
%/E'..eWD/AB &0 "3  < $$"..??DDJJL
&&'EF ')F#%d+nVBZ];tC2J%%d+MM4&) $ V[[(Fv(FFGM  P  $$Y/ "3::
 	
w  	U 	  	"!N	"s   H0 I	 0I	IIc                 $   U R                   nU R                  n[        X5      (       a   UR                  n	US==   S-  ss'   SUS    SU	R                   3n
SU
 3nU	R
                  X;'   UR                  (       aE  U(       a>  [        [        UR                  U-  S-  5      S5      nUR                  SU
 SU S	35        gUR                  SU
 S
35         gU(       aE  UR                  UR                  :X  a+   UR                   H  nU R                  UUUUUU5        M     gUR                   (       a+  UR                  U R#                  UR$                  5      5        gUR&                  (       a-  UR                  U R)                  UR*                  XdU5      5        gUR,                  (       Ga(  UR.                  R0                   GH  nUR2                  n[5        U5      (       a+  [7        U5      nU H  nUR                  SU S35        M     MK  / nUR8                   GHL  nUR:                  nU(       d  M   UR<                  R>                  n[C        URD                  RF                  5      n[C        URD                  RH                  5      n[C        URD                  RJ                  5      =(       a    U(       + n[M        U5      n[O        U5      nSU;   au  URQ                  S5      n[S        U5       HR  u  nnU(       a   UR                  [U        UUUUUUU5      5        U[W        U5      S-
  :  d  MA  UR                  S5        MT     GM,  UR                  [U        UUUUUUU5      5        GMO     SRY                  U5      R[                  5       nU(       d  GM  UR\                  nSU-  n UR_                  SS5      nUR                  U  SU 35        GM     gg! [        [        4 a     gf = f! [         a     gf = f! [@         a    Sn GNf = f)zMRecursively process a shape: Picture, GroupShape, Chart, Table, or TextFrame.r   r   image.images/d   <img src="images/z	" width="z%">">Nrj   rk   rn   z<br>
r-   z  <br>r=   )0r   r   
isinstancer   extblobwidthminroundr   
ValueErrorAttributeError
shape_typeGROUPr   r   	has_chart_chart_to_htmlchart	has_table_table_to_htmltablehas_text_frame
text_frame
paragraphs_pr   r   runsr   	hyperlinkaddressr$   boolfontrG   rH   rI   r(   r0   split	enumerater`   rV   ro   rX   levelr5   )!r   r   r   rx   r   r   
slide_partrh   ri   imgfilenamerel_pathpctchild	paragraphpara_xmlr   r   partsr%   rY   r1   rG   rH   rI   rJ   rK   segmentsjrF   r   r   indents!                                    r'   r   PptxConverter._process_shape   s    ---- e%%kka A% "=#3"4AcggY?$XJ/#&88 ;;;eEKK+$=$CDcJC&&):8*IcURU'VW
   &&):8*B'GH  e...2F2FF"\\E''#%#" *  ??t225;;?@ ??##EKKFS  "--88	$<<&x00!=h!GJ!+#**T%+=> ",$>>CA #!mm33  .D!#((//2F $SXX%7%7 8 DWI$4S$9M-c2Fqy#$774=&/&9FAs" %$7(+(,(.(1(5(.(+%&
!"  !3x=1#44 %X 6 ':  / !4M6SVC *L wwu~++-!||Hf5""fXRv#67o 9  C /   " D % #"#s<   BO O :)O/ 9O?O,+O,/
O<;O<?PPc           
      
    UR                   (       a  UR                   R                  OSn[        R                  US5      n Sn UR
                  R                  R                  R                  5       nUR                  nSn[         S3[         S34 Hv  nUR                  SU 35      nUc  M  UR                  [         S35      n	U	b?  U	R                  S[         S	35      n
SR                  S
 U
 5       5      R                  5       n  O   UR                  S[         S35      SLnSnUR                  S[         S35      nUbZ  UR                  [         S35      n	U	b?  U	R                  S[         S	35      n
SR                  S U
 5       5      R                  5       nUR                  S   nUR                   (       a  [#        UR                   5      O/ n[#        UR$                  5      nU(       d  SU S3$ U(       aW  U(       aP  SSKJnJn  / nU H>  n U" SSS5      U" [+        U5      S9-   nUR-                  UR/                  S5      5        M@     Un/ n/ n[7        U5       H  u  nn UR8                  (       a  UR8                  R                  OS=(       d    U=(       d    SUS-    3nUR-                  U5         UR:                   Vs/ s H  nUb  [5        [=        US5      5      OSPM     nnUR-                  U5        M     S/nU(       a  UR-                  SU S35        U=(       d    [?        S U 5       5      nU(       aU  UR-                  S5        UR-                  SU S35        U H  nUR-                  SU S35        M     UR-                  S5        UR-                  S 5        U(       ap  [7        U5       H`  u  nn UR-                  S!U  S"35        U H.  nU[A        U5      :  a  UU   OSnUR-                  S#U S"35        M0     UR-                  S$5        Mb     O[C        S% U 5       SS&9n![E        U!5       H`  nUR-                  S'US-    S"35        U H.  nU[A        U5      :  a  UU   OSnUR-                  S#U S"35        M0     UR-                  S$5        Mb     UR-                  S(5        S)R                  U5      $ ! [         a    Sn GNf = f! [         a     GNvf = f! [0        [2        4 a$    UR-                  Ub  [5        U5      OS5         GM  f = f! [         a    U=(       d    SUS-    3n GNf = fs  snf ! [         a    / n GNff = f! [         a	    SU S3s $ f = f)*z$Extract chart data as an HTML table.r   Chartr-   catAxdateAx.//NtitlerY   c              3   J   #    U  H  oR                   =(       d    S v   M     g7fr-   Nr   rp   els     r'   rr   /PptxConverter._chart_to_html.<locals>.<genexpr>q  s     .Muww}"}u   !#valAxc              3   J   #    U  H  oR                   =(       d    S v   M     g7fr   r   r   s     r'   rr   r   |  s     *I5R77=b=5r   rU   ])datetime	timedeltaik        )daysz%Y-%m-%dSeriesr   r   <table>z	<caption>z
</caption>c              3   $   #    U  H  ov   M     g 7fN )rp   names     r'   rr   r     s     ,KldTls   z<thead><tr>z<th>z</th>z</tr></thead>z<tbody>z<tr><td>z</td>z<td></tr>c              3   8   #    U  H  n[        U5      v   M     g 7fr   )rV   )rp   vs     r'   rr   r     s     =}!s1vv}s   )defaultz<tr><td>Itemz</tbody></table>rn   )#
chart_typevalue_CHART_TYPE_NAMESr"   r$   chart_titler   r   rX   r   _Cr    findall_Aro   plots
categoriesr>   seriesr   r   floatr   strftimer   	TypeErrorr~   r   txvaluesr   anyrV   maxrange)"r   r   chart_type_valchart_type_name
title_text
chart_rootcat_ax_titleax_tagax_elt_eltextshas_date_axval_ax_title	val_ax_elplotr   series_listr   r   	convertedcdtseries_namesseries_valuesidxr   r   r   vals
html_parts
has_headericatmax_lens"                                     r'   r   PptxConverter._chart_to_htmlX  s@   	&7<7G7GU--33QN/33NGLOh	*J"..99>>DDF

 JL T<B4v7"#fX7$ ::El3D' $s2$a[ 9')ww.Mu.M'M'S'S'U 8 %//Ct6*:;4GKL"#bT8I$ ~~El3# LL3rd!5E#%77*I5*I#I#O#O#QL;;q>D26//doo.rJt{{+K?+1-- z8	#AJ%dB3iU1X6NN!((Z)@A $ '
 LM(5V<+199" ,',#CE7+  ##D)KQ==KXaAME!QK(rA=  
 $$T*!  6& $J!!Ij\"DE%K,Kl,K)KJ!!-0!!De"<=(D%%TF%&89 )!!/2i('
3FAs%%U&;< -'(3t9}DG""))D5/: !. %%g. 4 =}=qIwA%%QqSE&?@ -'(3t9}DG""))D5/: !. %%g. ( 0199Z((S  	&%O	&  T '	2 J!((1=QbIIJ ! <';VCE7+;D< ! DH  	*'q))	*s   ?S	 U .S 38U /E	U 9U :S-U -AT$.U  U$U2U4GU 	SS
S*&U )S**U -/T!U  T!!U $U?U UU UUU UU U10U1image_counter_listrx   c                    SnSn[        5       nS/n[        U R                  5       GH  u  pUR                  S5        [        U	R                  5       GH  u  pX4U;   a  M  US:X  a  SOSnSnUR
                  (       a}  UR                  nUR                  nUS	:  a	  US
U S3-  nUS	:  a	  USU S3-  n[        U5       H8  n[        U5       H&  nUU4S:w  d  M  UR                  UU-   U
U-   45        M(     M:     / nUR                  R                  SU S35      nU H  nUR                  U S35      nU(       d  M    UR                  U   nUS==   S	-  ss'   UR                  R                  S5      S   nSUS    SU 3nSU 3nUR                   UU'   UR                  SU S35        M     / nUR&                  R(                   GH  nUR*                  n[-        U5      (       a+  [/        U5      nU H  nUR                  SU S35        M     MK  / nUR0                   GHN  n U R2                  =(       d    Sn!U!(       d  M"   U R4                  R6                  n"[;        U R<                  R>                  5      n#[;        U R<                  R@                  5      n$[;        U R<                  RB                  5      =(       a    U"(       + n%[;        U R<                  RD                  5      n&[G        U 5      n'U#(       a  SU! S3n!U$(       a  SU! S3n!U%(       a  SU! S3n!U&(       a  S U! S!3n!U'S":X  a  S#U! S$3n!OU'S%:X  a  S&U! S'3n!U"(       a  UR                  S(U" S)U! S*35        GM=  UR                  U!5        GMQ     UR                  SRI                  U5      5        GM     S+RI                  S, U 5       5      n(U((       a  UR                  U(5        U(       a  S+RI                  U5      OSn)UR                  S-U U S.U) S/U S.35        GM     UR                  S05        GM     UR                  S15        S2RI                  U5      $ ! ["        [$        4 a     GM4  f = f! [8         a    Sn" GN
f = f)3zXConvert a PPTX table to an HTML table, handling merged cells and cell background images.z7{http://schemas.openxmlformats.org/drawingml/2006/main}zE{http://schemas.openxmlformats.org/officeDocument/2006/relationships}r   z<tr>r   thtdr-   r   z
 colspan=""z
 rowspan=")r   r   r   blipembed/rl   r   r   r   r   z" width="100%">$Nz<b>z</b>z<i>z</i>rN   rO   z<del>z</del>r+   rP   rQ   r,   rR   rS   z	<a href="r   z</a>r   c              3   R   #    U  H  oR                  5       (       d  M  Uv   M     g 7fr   )rX   )rp   r   s     r'   rr   /PptxConverter._table_to_html.<locals>.<genexpr>*  s     "Ko11os   '	'r;   r?   z</r   z</table>rn   )%setr   rowsr   cellsis_merge_originspan_height
span_widthr  add_tcr   r"   related_partscontent_typer   r   KeyErrorr   r   r   r   r   r   r   r   r   r   r$   r   r   rG   rH   rI   r   r0   ro   )*r   r   r!  rx   _BLIP_NS_REL_NSvisitedr  r  rowr   celltagattrsrscsdidjcontent_partsblipsr&  r_embed
image_partr   r   r   cell_text_partsparar   r   r   	run_partsr%   rY   r1   rG   rH   rI   rJ   rK   r   	cell_htmls*                                             r'   r   PptxConverter._table_to_html  sM   
 MS 	 ),[


+FAf%$SYY/6W$1fd$''))BBAv:bT!33Av:bT!33#Bi"')B "Bx61 'QVQV,< = #, (
 !# ((3xj)=>!D"hh'%'89Gw!)3)A)A')JJ.q1Q61","9"9"?"?"DR"HC)./A!/D.EQse'LH)0
';H/9F8,)00"3H:_ M "  #% OO66D#wwH*844%A(%K
%/E+22QugQ<@ &0  "I#yyHHN $'"%--"7"7C  $CHHMM2!%chhoo!6$(););$<$HS	(,SXX__(=!1#!6"%aSA!"%aSA$"%aSA("'s& 1A!W,"'s& 1A#u_"'s& 1A%,,yRs$-GH%,,Q/?  )@ $**2779+=>U 7V {{"Ko"KK!((.:GFKK6R	!!AcU5'9+RuA"FGm 0n g&s ,v 	*%yy$$q !).9 ! !(  ) '"&C's%    A.P?Q?Q	Q	Q'&Q')r   r   N)__name__
__module____qualname____firstlineno__supported_extensionssupported_mimetypesr   r   r   r   r~   r   staticmethodr>   dictr   __static_attributes__r   r7   r'   rb   rb      ss    "8SF
d F
 F
Pm8^p*s p*d h%/3h%=Ah%	h% h%r7   rb   N)!pathlibr   baser   r   mathr   r   r   r   registryr	   _A_NSr   r#   r!   r   _MC_NS_MCr   r   _C_NSr   r   r   r(   r~   r0   r6   rE   r`   registerrb   r   r7   r'   <module>r]     sz    / ( 	@5[3d&M	4s
Qx 
G	FlSuF^
E!
" 	A5[3  $	T 	S *7 7 7
  (	(
( ( 	(
 ( ( 
( 	(V X%M X% X%r7   