
    Xwgg                    <   U d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dl	Z	d dl	m
Z
 d dlmZmZ d dlmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d d	lm Z m!Z!m"Z"m#Z#m$Z$ d d
l%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZK d dlLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZT d dlUmVZV d dlWmXZXmYZY  ej                  e[      Z\i a]de^d<    ej                  dej                  ej                  z        Zb G d dec      Zdd Zedj                         j                         ZheifdZjejej                  j                  j                  _j        ddiZnd Zod Zpd Zqd Zrd ZsdddZtd#d Zu	 	 	 	 d$d!ZvevZwd" ZxexZyy)%    )annotationsN)Node)treebuilders)
FrameBreakNextPageTemplate)KeepInFrame	PageBreak)BOOLBOXCOLORFILEFONTINTMUSTPOSSIZESTRINGTAGS)pisaTempFile)	TableDatapisaTagTABLE	pisaTagTD	pisaTagTH	pisaTagTR)&pisaTagpisaTagApisaTagBODY	pisaTagBRpisaTagCANVAS
pisaTagDIVpisaTagFONT	pisaTagH1	pisaTagH2	pisaTagH3	pisaTagH4	pisaTagH5	pisaTagH6	pisaTagHR
pisaTagIMGpisaTagINPUT	pisaTagLIpisaTagMETA	pisaTagOLpisaTagPpisaTagPDFBARCODEpisaTagPDFFONTpisaTagPDFFRAMEpisaTagPDFLANGUAGEpisaTagPDFNEXTFRAMEpisaTagPDFNEXTPAGEpisaTagPDFNEXTTEMPLATEpisaTagPDFPAGECOUNTpisaTagPDFPAGENUMBERpisaTagPDFSPACERpisaTagPDFTEMPLATEpisaTagPDFTOCpisaTagSTYLE
pisaTagSUB
pisaTagSUPpisaTagTEXTAREApisaTagTITLE	pisaTagUL)getAligngetBoolgetBoxgetColorgetPosgetSizetoListtransform_attrs)cssDOMElementInterface)PmlLeftPageBreakPmlRightPageBreakzdict[str, dict]CSSAttrCachezhttps?://[^/]+(.*)c                      e Zd Zd Zy)AttrContainerc                X    	 t         j                  | |      S # t        $ r | |   cY S w xY wN)dict__getattr__	Exception)selfnames     G/var/www/horilla/myenv/lib/python3.12/site-packages/xhtml2pdf/parser.pyrR   zAttrContainer.__getattr__p   s3    	##D$// 	:	s    ))N)__name__
__module____qualname__rR        rV   rN   rN   o   s    r[   rN   c           
        i }|r0|j                         D ]  \  }}	 t        |      |t        |      <    i }|t
        v rt
        |   \  }}	t        |	d<   |	j                         D ]  \  }}d ||<   t        |t              r[|d   t        k(  r/||vr+t        j                  | j                  d|             d ||<   W|j                  ||d         }
|d   }|d   }n|j                  |d       }
d }|
t        |t              rU|
j                         j                         }
|
|vr!t        j                  | j                  d|t        |                   |}
n|t         k(  r1|
j                         j                         }
|
d	d
ddt        |      fv }
n|t"        k(  r	 t%        |
      }
n|t&        k(  rt)        |
| j*                        }
n|t,        k(  rt/        |
| j*                        }
n_|t0        k(  rt3        |
      }
nJ|t4        k(  rt7        |
      }
n5|t8        k(  r| j;                  |
      }
n|t<        k(  r| j?                  |
      }
|
||<    tA        |      S # t        $ r*}t        j	                  d|||d       |||<   Y d }~sd }~ww xY w# t        $ r( t        j                  | j                  d|             Y yw xY w)Nz%%s during string conversion for %s=%sTexc_infoid   zAttribute '%s' must be set!r   z4Attribute '%s' of wrong value, allowed is one of: %s1yyestruez#Attribute '%s' expects a size value)!itemsstrrS   logdebugr   r   
isinstancetupler   warninggetliststriplowerreprr
   r   rF   r   rC   pageSizer   rE   r   intr   rD   r   getFiler   getFontNamerN   )ctag
attributesattrskvenattrsblockadefnvdfls               rV   pisaGetAttributesr   w   s   E$$& 	DAq #Ac!f	 F
d{3itT
JJL :	DAqF1I !U#Q44<AUNKK		*G KL $F1IYYq!A$'daDYYq$'~a&))+B{II V ! $Q !$Y))+BS%Q@@B$YY$R[ #XAJJ/B#XAJJ/B#XRB%Z!"B$Y2B$Yr*Bq	u:	x   O  		;Q1t   a	` % YAII.SUV$WXYs)   IJ	J#JJ.K Ka  
    color
    font-family
    font-size
    font-weight
    font-style
    text-decoration
    line-height
    letter-spacing
    background-color
    display
    margin-left
    margin-right
    margin-top
    margin-bottom
    padding-left
    padding-right
    padding-top
    padding-bottom
    border-top-color
    border-top-style
    border-top-width
    border-bottom-color
    border-bottom-style
    border-bottom-width
    border-left-color
    border-left-style
    border-left-width
    border-right-color
    border-right-style
    border-right-width
    text-align
    vertical-align
    width
    height
    zoom
    page-break-after
    page-break-before
    list-style-type
    list-style-image
    white-space
    text-indent
    -pdf-page-break
    -pdf-frame-break
    -pdf-next-page
    -pdf-keep-with-next
    -pdf-outline
    -pdf-outline-level
    -pdf-outline-open
    -pdf-line-spacing
    -pdf-keep-in-frame-mode
    -pdf-word-wrap
    c                4   || j                   v r| j                   |   S 	 |j                  | j                  ||      }	 | j                  }||v r||   }|dk(  rOt        | j                  d      r| j                  j                  |||      }n
|t        ur|S d| d}t        |      ||| j                   |<   |S # t        $ r d }Y w xY w# t
        $ rD |j                  j                  | j                  j                         xs d      d   x}| _        Y w xY w)N r   inherit
getCSSAttrz2Could not find inherited CSS attribute value for '')cssAttrsfindStyleFor
cssElementLookupErrorcssStylerS   parserparseInlinegetStyleAttrhasattr
parentNoder   NotImplemented)rT   
cssCascadeattrNamedefaultresultstylemsgs          rV   r   r      s*   4== }}X&&(((GL

 5x4??L1__//
HgNFN*NB8*AN#"(hM/     * 1 1 = =OO((*0b!

! 	s#   B9 C
 9CC
A
DDbgcolorbackground-colorc                \    t         D ]"  }||v st         |   | vs||   | t         |   <   $ | S rP   )nonStandardAttrNames)ru   _nodeattrListattrs       rV   mapNonStandardAttrsr   '  sA    $ ;8 4T :! C,4TNA"4(); Hr[   c           	         dx}x}}| j                   j                         D ]  \  }}|dk(  r|}|dk(  r|}|dk(  s|} t        | j                         d| j                  j                          d| d| d| 	S )Nr   classr_   r   #)rw   re   r_   r   tagNamero   )node_cl_id_stry   rz   s         rV   getCSSAttrCacheKeyr   .  s    C#%%' 1<C$YC'\C !"!DLL$6$6$8#93%qQseLLr[   c                $   |j                   rt        |       }t        | j                  d      rH| j                  j                  j                         dk7  r!t        j                  |d       }|	|| _        |S t        j                  |       | _        i | _        i }t        D ]"  }	 | j                  |j                  |      ||<   $ | j                  t        |<   | j                  S # t        $ r#}t         j#                  d||d       Y d }~kd }~ww xY w)Nr   htmlz%r during CSS attr '%s'Tr]   )cssr   r   r   r   ro   rL   rl   r   rI   CSSDOMElementInterfacer   	attrNamesr   r   rS   rg   rh   )r   ru   keyCachedCSSAttr
cssAttrMapcssAttrNamer{   s          rV   
CSSCollectr   :  s     	uu & DOOY/''--/69(,,S$7M( -$$0GGM
$ 	TKT*.//!,,*T
;'	T !MMS==	  T		3Qd	SSTs   #C##	D,D

Dc                h    t        | t              r| j                         S | d   j                         S )Nr   )ri   rf   ro   )sequences    rV   ro   ro   Z  s,    (C ~~A;r[   c                4   d| j                   v r(t        | j                   d   d      | j                  _        d| j                   v r(t        | j                   d   d      | j                  _        d| j                   v r-| j                  | j                   d         | j                  _        d| j                   v r`t        t        dj                  | j                   d         | j                  j                  | j                        d      | j                  _
        d	| j                   v r_dj                  | j                   d	         }t        || j                  j                        | j                  _        || j                  _        nCt        | j                  j                  | j                  j                        | j                  _        d
| j                   v r| j                   d
   | j                  _        d| j                   v r6t        dj                  | j                   d               | j                  _        d| j                   v r?t!        | j                   d         }|dv rd| j                  _        nd| j                  _        t%        | j                   j'                  dd            D ]S  }d|v rd| j                  _        d|v rd| j                  _        d|v s2d| j                  _        d| j                  _        U d| j                   v r?t!        | j                   d         }|dv rd| j                  _        nd| j                  _        d| j                   v r5t/        | j                   d         j!                         | j                  _        d| j                   v r't3        | j                   d         | j                  _        d| j                   v r| j                   d   | j                  _        d| j                   v r`	 dj                  t%        | j                   d               | j                  _        | j                  j8                  dv rd | j                  _        d| j                   v r`	 dj                  t%        | j                   d               | j                  _        | j                  j<                  dv rd | j                  _        d| j                   v rcdj                  t%        | j                   d               }|j?                  d      rtA        |d d       dz  }tA        |      | j                  _!        |rtE        | j                  d | j                   t        | j                  j                  !       d"| j                   v r`|d"   | j                  _#        |d"xx   t        | j                   d"   | j                  j                        z  cc<   |d"   | j                  _$        d#| j                   v rL|d#xx   t        | j                   d#   | j                  j                        z  cc<   |d#   | j                  _%        d$| j                   v r5t/        | j                   d$         j!                         | j                  _&        d%| j                   v r-| jO                  | j                   d%         | j                  _(        |r<tE        | j                  d&| j                   t        | j                  j                  !       |rtE        | j                  d'| j                   t        | j                  j                  !       tE        | j                  d(| j                   d)        tE        | j                  d*| j                   t               y y # t:        $ r= dj                  t%        | j                   d   d               | j                  _        Y w xY w# t:        $ r= dj                  t%        | j                   d   d               | j                  _        Y tw xY w)+Ncolorz#000000r   z#ffffffzfont-familyz	font-sizer   g      ?zline-heightzletter-spacingz-pdf-line-spacingzfont-weight)boldbolder500600700800900r`   r   ztext-decoration	underlinezline-throughnonez
font-style)italicobliquezwhite-spacez
text-alignzvertical-alignheight)autowidthzoom%g      Y@))spaceBefore
margin-top)
spaceAftermargin-bottom)firstLineIndentztext-indent)extrasmargin-leftmargin-rightzlist-style-typezlist-style-image))
paddingTopzpadding-top)paddingBottomzpadding-bottom)paddingLeftzpadding-left)paddingRightzpadding-right))borderTopWidthzborder-top-width)borderBottomWidthzborder-bottom-width)borderLeftWidthzborder-left-width)borderRightWidthzborder-right-width))borderTopStylezborder-top-style)borderBottomStylezborder-bottom-style)borderLeftStylezborder-left-style)borderRightStylezborder-right-stylec                    | S rP   rZ   )xs    rV   <lambda>zCSS2Frag.<locals>.<lambda>  s    a r[   ))borderTopColorzborder-top-color)borderBottomColorzborder-bottom-color)borderLeftColorzborder-left-color)borderRightColorzborder-right-color))cssAttrrD   frag	textColor	backColorrt   fontNamemaxrF   joinfontSizebaseFontSizeleadingleadingSourceletterSpacingleadingSpacero   r   rG   rl   r   striker   rf   
whiteSpacerA   	alignmentvAlignr   	TypeErrorr   endswithfloatr   rH   bulletIndent
leftIndentrightIndentlistStyleTypers   listStyleImage)ru   kwisBlockr   valuer   s         rV   CSS2Fragr   `  s   !))#AIIg$6	BQYY&#AII.@$A9M		!--		-(@AaiiBGGAIIk23QVV__annU
 		!''!))M23 !&&//:& !5!5qvvG199$ yy)9:aii'%bggaii8K.L&MN		!aii./IIAFFKAFFK		&7<= % AFFU"AFFMU? AFFAFFM qyy aii-.))AFFMAFFM		!		- 89??Aqyy #AIIl$;<199$		"23199	DGGF199X+>$?@AFFM 66==I% AFFM!))	B776!))G*<#=>AFFL 66<<9$AFFLwwvaii/01==cr#e+DDkFF
 II66??
	
 AII%"$]"3AFF}=)A166??!SS "= 1AFFQYY&~'!))N*CQVV__"UU!#N!3AFF		)#&qyy1B'C#D#J#J#LAFF *$%IIaii8J.K$LAFF!FF II66??	
 FF II66??	
 	FF II
	
 	FF II
	
3 }  	DGGF199X+>q+A$BCAFFM	D  	B776!))G*<Q*?#@AAFFL	Bs&   >6^ ,6_ A__A``Fcollectc                  d}| j                   t        j                  k(  r|r| j                  }nz| j                   t        j                  k(  r\| j
                  j                         }|dv r=t        ||| j                        }|j                  j                         j                  d      D cg c]#  }|j                         s|j                         % }}|j                  dd      j                         dv r|rd|v sd|v sd|v r|d	k(  r4| j                  D ]  } |t        | |d
      z  } |j                  |       y|dk(  rc|j                   rW|j"                  j                         dk(  r:|j                  dj%                  |j                   dj'                  |                   | j                  D ]  } t        | ||      }|s||z  } |S c c}w )zCollect all CSS definitions.r   )r   link,type)r   ztext/cssallprintpdfr   Tr   r  
stylesheetz
@import "{}" {};)nodeTyper   	TEXT_NODEdataELEMENT_NODEr   ro   r   rw   mediasplitrn   rl   
childNodespisaPreLoopaddCSShrefrelformatr   )	r   contextr  r  rU   r   r   r  r   s	            rV   r  r    s   D}}&7yy	$++	+||!!#$$$WdDOODD(,

(8(8(:(@(@(ES1QWWYSESxx#))+/??Ue^w%/?5E>7? $ ID'4 HHINN4(6>diiDHHNN4D4TNN,33DIIsxxO  T7G<FND
 K- Ts   /GGc                   |g }|sddddd}nt        j                   |      }| j                  t        j                  k(  r|j	                  | j
                         y | j                  t        j                  k(  r| j                  j                  dd      j                         | _        | j                  dv ry g t        j                   |      | j                  }t        || j                  | j                        }t        | |      |_        t        |j                  | |      |_        | |_        d}d}d}d	}d	}	t        |j                  j!                  d
d            }
|
dk(  }|r|j#                          d|j                  v r0|j%                  t'        t)        |j                  d                      d|j                  v rBt)        |j                  d         j                         dk(  r|j%                  t+                      d|j                  v rmt)        |j                  d         j                         dk(  r|j%                  t-                      t)        |j                  d         j                         dk(  rd}	d|j                  v rt)        |j                  d         j                         dk(  r|j%                  t+                      t)        |j                  d         j                         dk(  r2|j%                  t+                      |j%                  t/                      t)        |j                  d         j                         dk(  r2|j%                  t+                      |j%                  t1                      d|j                  v rt)        |j                  d         j                         dk(  r|}t)        |j                  d         j                         dk(  r|}t)        |j                  d         j                         dk(  r|}|
dk(  ry |j3                          t5        |||       t7        |j8                  d|j                  t:               d|j                  v r't=        |j                  d         |j8                  _        d|j                  v r|j                  d   |j8                  _         d }d}d}d|j                  v r=t)        |j                  d         jC                         j                         }|dv r|}nd}d |j                  v r'tE        djG                  |j                  d                }d!|j                  v r'tE        djG                  |j                  d!               }|d uxr |jH                  d u }|rtK        |jL                        |_$        tO               j!                  d"| j                  j                  dd      jQ                         z  d       }d }|j!                  d#d       }|jR                  j!                  |d       }|r/|j8                  xjT                  dz  c_*        |jW                         }| || |      }|jY                  |       t        j                   |j8                        x|_-        }| j\                  D ]  }t_        |||fi |  ||_-        |r|ja                  |       |r|j#                          |rU|j%                  t+                      ||k(  r|j%                  t/                      ||k(  r|j%                  t1                      |	r|j%                  t-                      |rf|jL                  |jH                  d  }|jL                  d |jH                   |_&        |jL                  jc                  te        ||||$             d |_$        |rX|j#                          |D ]  }|jL                  |_3         |jW                         |j8                  xjT                  dz  c_*        |ji                          y | j\                  D ]  } t_        | ||fi |  y )%Nr   )r   r   r   r   :r   )r   scriptr`         Fdisplayinliner}   z-pdf-next-pagez-pdf-page-breakbeforez-pdf-frame-breakafterTzpage-break-beforealwaysrightleftzpage-break-afterr   )r   ))keepWithNextz-pdf-keep-with-next)outlinez-pdf-outlinez-pdf-outline-levelz-pdf-word-wrapz-pdf-keep-in-frame-mode)shrinkerroroverflowtruncater%  z-pdf-keep-in-frame-max-widthz-pdf-keep-in-frame-max-heightz	pisaTag%sr_   )contentmaxWidth	maxHeightmode)5copyr
  r   r  addFragr  r  r   replacero   r   rw   r   r   r   r   rl   addParaaddStoryr   rf   r	   r   rK   rJ   pushFragr   rH   r   rB   rr   outlineLevelwordWraprn   rF   r   keepInFrameIndexlenstoryglobalsupperframeStaticinsideStaticFrame	swapStorystart	fragBlockr  pisaLoopendappendr   pisaStaticStorypullFrag)r   r  pathr   r   
PAGE_BREAKPAGE_BREAK_RIGHTPAGE_BREAK_LEFTpageBreakAfterframeBreakAfterr  r   keepInFrameModekeepInFrameMaxWidthkeepInFrameMaxHeightr   keepInFrameklassobj	elementIdstaticFrameoldStoryr>  nnodesubstoryframes                             rV   r?  r?  #  s    | !UVWYYr]
 }}&		" 
$++	+||++C4::<<<../4/$,,/ !$,,H
 %T73-gootTJ 
++Ix@A W$OO  7??2  $S9I)J%KL "W__4(9:;AACxO  -!W__4w'9:;AACxO$$Z\2w'9:;AACwN&*O"goo5w':;<BBDP$$Y[1w':;<BBDO$$Y[1$$%6%89w':;<BBDN$$Y[1$$%5%78!W__4w'9:;AACxO%/Nw'9:;AACwN%5Nw'9:;AACvM%4Nf
 	 	"g. 	LL
 OO		
  7??2(+GOO<P,Q(RGLL%w.$+OO4D$EGLL!  $7(ABCIIKQQSECC"'"* *W__<")(FGH# +goo=#*(GHI$ 
 &T1Vg6N6NRV6V (+7=='9G$ 	kDLL,@,@b,I,O,O,QQSWX HHT4(	))--i>LL**a/*((*H d#CIIg )-		',,(??I__ 	1EUGT0R0	1% GGG OO
   -!%55$$%6%89!_4$$%5%78  . }}W%=%=%?@H#MM*DG,D,DEGMMM  $02(	 (,G$ OO$ 6(/%6h'LL**a/*
 	 OO 	0DT7D/B/	0r[   c                F   i a |r?t        j                  d       t        j                  t        j                  d            }n)t        j                  t        j                  d            }i }t        | t              r1|sd}| j                  |      } t        | |j                        } ||d<    |j                  | fi |}|r!|j                  |j                  |             |r|j!                  |       t#        ||       |j%                          t'        ||       |S )z
    - Parse HTML and get miniDOM
    - Extract CSS informations, add default CSS, parse CSS
    - Handle the document DOM itself and build reportlab story
    - Return Context object.
    z5xhtml parameter will be removed on next release 0.2.8dom)treezutf-8)capacitytransport_encoding)encoding)rL   rg   rk   html5libXHTMLParserr   getTreeBuilder
HTMLParserri   rf   encoder   rY  parsewritetoprettyxmladdDefaultCSSr  parseCSSr?  )	srcr  default_cssxhtmlr[  
xml_outputr   parser_kwargsdocuments	            rV   
pisaParserrl    s     LKL%%<+F+Fu+MN$$,*E*Ee*LMM#sHjj"3)9)9: /7*+ v||C1=1H--x-@Ak*'"XwNr[   c                 "    d|d<   t        | i |S )NTrh  )HTML2PDF)ar   s     rV   	XHTML2PDFrp  A  s    BwKQ"r[   rP   )r   Futf8N)z
__future__r   r-  loggingrexml.dom.minidomxmlxml.domr   r\  r   reportlab.platypus.doctemplater   r   reportlab.platypus.flowablesr   r	   xhtml2pdf.defaultr
   r   r   r   r   r   r   r   r   r   r   xhtml2pdf.filesr   xhtml2pdf.tablesr   r   r   r   r   xhtml2pdf.tagsr   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   xhtml2pdf.utilrA   rB   rC   rD   rE   rF   rG   rH   xhtml2pdf.w3crI   xhtml2pdf.xhtml2pdf_reportlabrJ   rK   	getLoggerrW   rg   rL   __annotations__compileMIrxhttpstriprQ   rN   r   rn   r  r   r   r   rW  minidomElementr   r   r   r   ro   r   r  r?  rl  rn  rp  XML2PDFrZ   r[   rV   <module>r     s   #   	    ! G ?    ) ' ' ' ' ' ' ' ' ' 'P	 	 	 1 Mg! "o "bjj-rttbdd{;D N!b4h 	i 
n 4B B &0   " "#56 	M@\
~ +0 !H[0B 
8z 
 r[   