
     hl                        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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+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZG d d	lHmIZI d d
lJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZR d dlSmTZT d dlUmVZVmWZW i aX ejY        d          ZZ ej[        dej\        ej]        z            Z^ G d de_          Z`d Zadb                                c                                ZdeefdZfefejg        jh        ji        _f        ddiZjd Zkd Zld Zmd Znd Zod"dZpd#dZqd$d ZrerZsd! ZtetZudS )%    N)Node)treebuilders)
FrameBreakNextPageTemplate)KeepInFrame	PageBreak)BOOLBOXCOLORFILEFONTINTMUSTPOSSIZESTRINGTAGS)	TableDatapisaTagTABLE	pisaTagTD	pisaTagTR	pisaTagTH)&
pisaTagIMGpisaTagPDFLANGUAGEpisaTagPDFNEXTPAGEpisaTagpisaTagApisaTagBODY	pisaTagBR
pisaTagDIVpisaTagFONT	pisaTagH1	pisaTagH2	pisaTagH3	pisaTagH4	pisaTagH5	pisaTagH6	pisaTagHR	pisaTagLIpisaTagMETA	pisaTagOLpisaTagPpisaTagPDFBARCODEpisaTagPDFFONTpisaTagPDFFRAMEpisaTagPDFNEXTFRAMEpisaTagPDFNEXTTEMPLATEpisaTagPDFPAGECOUNTpisaTagPDFPAGENUMBERpisaTagPDFSPACERpisaTagPDFTEMPLATEpisaTagPDFTOCpisaTagSTYLE
pisaTagSUB
pisaTagSUPpisaTagTITLE	pisaTagULpisaTagINPUTpisaTagTEXTAREApisaTagCANVAS)pisaTempFile)getAligngetBoolgetBoxgetColorgetPosgetSizetoListtransform_attrs)cssDOMElementInterface)PmlLeftPageBreakPmlRightPageBreak	xhtml2pdfzhttps?://[^/]+(.*)c                       e Zd Zd ZdS )AttrContainerc                 X    	 t                               | |          S #  | |         cY S xY wN)dict__getattr__)selfnames     L/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/xhtml2pdf/parser.pyrQ   zAttrContainer.__getattr__]   s6    	##D$///	:s    
)N)__name__
__module____qualname__rQ        rT   rM   rM   [   s#            rY   rM   c           
      H   i }|rF|                                 D ]1\  }}	 t          |          |t          |          <   &#  |||<   Y /xY wi }|t          v rt          |         \  }}t          |d<   |                                 D ]\  }}d ||<   t	          |          t
          k    rv|d         t          k    r8||vr4t                              |                     d|                     d ||<   l|	                    ||d                   }	|d         }
|d         }n|	                    |d           }	d }
|	t	          |          t          k    rj|	                                                                }	|	|vr>t                              |                     d|t          |                               |
}	nS|t          k    r>|	                                                                }	|	dddd	t          |          fv }	n
|t          k    rF	 t!          |	          }	n#  t                              |                     d
|                     Y nxY w|t"          k    rt%          |	| j                  }	n|t(          k    rt+          |	| j                  }	nw|t,          k    rt/          |	          }	n\|t0          k    rt3          |	          }	nA|t4          k    r|                     |	          }	n |t8          k    r|                     |	          }	|	||<   t=          |          S )N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strr   r   typetupler   logwarninggetliststriplowerreprr	   r   rE   r
   rB   pageSizer   rD   r   intr   rC   r   getFiler   getFontNamerM   )ctag
attributesattrskvnattrsblockadefnvdfls              rT   pisaGetAttributesr{   d   s   E $$&& 	 	DAq #Ac!ffaF
d{{3itT
JJLL 8	 8	DAqF1I Aww%Q44<<~~II&CQGGI I I$(q	 YYq!A$''daDYYq$''~77d??))++B{{II&\^_aefgahahiik k k $YY))++BS%Q@@BB$YYQ$R[[QII&KQOOQ Q Q Q Q #XXAJ//BB#XXAJ//BB#XXRBB%ZZ!"BB$YY2BB$YYr**Bq	   s   ?AH  0I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                    || j         v r| j         |         S 	 |                    | j        ||          }n# t          $ r d }Y nw xY w	 | j        }nG#  |j                            | j                                        pd          d         x}| _        Y nxY w||v r||         }|dk    rPt          | j	        d          r| j	        
                    |||          }n|t          ur|S t          d|d          |
|| j         |<   |S )N r   inherit
getCSSAttrz2Could not find inherited CSS attribute value for '')cssAttrsfindStyleFor
cssElementLookupErrorcssStyleparserparseInlinegetStyleAttrhasattr
parentNoder   NotImplemented)rR   
cssCascadeattrNamedefaultresultstyles         rT   r   r      sR   4=  }X&&(((GLL   55 * 1 = =O((**0b!2 !223!5 	55x4?L11 	_//
HgNNFFN**NkGOxxQS S 	S "(hMs   5 AAA ABbgcolorbackground-colorc                 l    t           D ]+}||v r%t           |         | vr||         | t           |         <   ,| S rO   )nonStandardAttrNames)rp   nattrListattrs       rT   mapNonStandardAttrsr     sF    $ ; ;8 4T :! C C,4TNA"4()HrY   c           	          dx}x}}| j                                         D ]\  }}|dk    r|}|dk    r|}|dk    r|} t          | j                  d| j                                        d|d|d|	S )Nr}   classr[   r   #)rr   ra   r[   r   tagNamerj   )node_cl_id_strt   ru   s         rT   getCSSAttrCacheKeyr     s    C#%%''  1<<CC$YYCC'\\C!$/2222DL4F4F4H4H4H4H###sssTWTWXXrY   c                    |j         rt          |           }t          | j        d          rH| j        j                                        dk    r&t                              |d           }|	|| _        |S t          j
        |           | _        i | _        i }t          D ]N}	 |                     |j        |          ||<   "# t          $ r  t                               d|d           Y Kw xY w| j        t          |<   | j        S )Nr   htmlzCSS error '%s'r\   )exc_info)cssr   r   r   r   rj   CSSAttrCacherg   r   rH   CSSDOMElementInterfacer   	attrNamesr   r   	Exceptionre   debug)r   rp   _keyCachedCSSAttr
cssAttrMapcssAttrNames         rT   
CSSCollectr   $  s     	u +!$''4?I.. 	)&,,..&88 , 0 0t < < ,$1DM((0GMM
$ 	E 	EKE*.//L++/ +/
;''  E E E		*K!	DDDDDE "]T=s    B??'C)(C)c                     t          | t                    r|                                 S | d                                         S )Nr   )
isinstancerb   rj   )sequences    rT   rj   rj   D  s:    (C   #~~{  """rY   c                    d| j         v r%t          | j         d         d          | j        _        d| j         v r%t          | j         d         d          | j        _        d| j         v r*|                     | j         d                   | j        _        d| j         v rVt          t          d	                    | j         d                   | j        j
        | j                  d          | j        _
        d	| j         v rQd	                    | j         d	                   }t          || j        j
                  | j        _        || j        _        n.t          | j        j        | j        j
                  | j        _        d
| j         v r| j         d
         | j        _        d| j         v r7t          d	                    | j         d                             | j        _        d| j         v r7t!          | j         d                   }|dv rd| j        _        nd| j        _        t%          | j                             dd                    D ]>}d|v rd| j        _        d|v rd| j        _        d|v rd| j        _        d| j        _        ?d| j         v r7t!          | j         d                   }|dv rd| j        _        nd| j        _        d| j         v r6t/          | j         d                                                   | j        _        d| j         v r$t3          | j         d                   | j        _        d| j         v r| j         d         | j        _        d| j         v r	 d	                    t%          | j         d                             | j        _        nM# t:          $ r@ d	                    t%          | j         d         d                             | j        _        Y nw xY w| j        j        dv rd | j        _        d| j         v r	 d	                    t%          | j         d                             | j        _        nM# t:          $ r@ d	                    t%          | j         d         d                             | j        _        Y nw xY w| j        j        dv rd | j        _        d| j         v rud	                    t%          | j         d                             }|                    d          rtA          |d d                   dz  }tA          |          | j        _!        |rMtE          | j        d | j         t          | j        j
        !           d"| j         v rW|d"         | j        _#        |d"xx         t          | j         d"         | j        j
                  z  cc<   |d"         | j        _$        d#| j         v rE|d#xx         t          | j         d#         | j        j
                  z  cc<   |d#         | j        _%        d$| j         v r6t/          | j         d$                                                   | j        _&        d%| j         v r*| '                    | j         d%                   | j        _(        |r-tE          | j        d&| j         t          | j        j
        !           |rmtE          | j        d'| j         t          | j        j
        !           tE          | j        d(| j         d)            tE          | j        d*| j         t                     d S d S )+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 rO   rX   )xs    rT   <lambda>zCSS2Frag.<locals>.<lambda>  s    ! rY   ))borderTopColorzborder-top-color)borderBottomColorzborder-bottom-color)borderLeftColorzborder-left-color)borderRightColorzborder-right-color))cssAttrrC   frag	textColor	backColorro   fontNamemaxrE   joinfontSizebaseFontSizeleadingleadingSourceletterSpacingleadingSpacerj   r   rF   rg   r   striker   rb   
whiteSpacer@   	alignmentvAlignr   	TypeErrorr   endswithfloatr   rG   bulletIndent
leftIndentrightIndentlistStyleTypern   listStyleImage)rp   kwisBlockr   valuer   s         rT   CSS2Fragr   K  s   !)#AIg$6	BBQY&&#AI.@$A9MM	!!--	-(@AAaiBGGAIk233QV_anUUWZ\ \	!!''!)M233 !&/::& !5qvGG19$$ y)9:ai''%bggai8K.L&M&MNN	!!ai.//IIIAFKKAFK	&7<<==  % AFU""AFMU?? AFAFMqy  ai-..)))AFMMAFM	!!	- 899??AAqy  #AIl$;<<19$$	"2319	DGGF19X+>$?$?@@AFMM 	D 	D 	DGGF19X+>q+A$B$BCCAFMMM	D 6=I%% AFM!)	B776!)G*<#=#=>>AFLL 	B 	B 	B776!)G*<Q*?#@#@AAAFLLL	B6<9$$AFLwwvai/0011== 	.ee%%-DDkk M 	 v	 	 	 	 AI%%"$]"3AF}=)A)*": ": : "= 1AFQY&&~'	.)16?#< #< <!#N!3AF	))#&qy1B'C#D#D#J#J#L#LAF **$%IIai8J.K$L$LAF! 

 	 v		 		 		 		  
 	 v		 		 		 		 	 	#		 		 		 	 	 		 		 		 		 		- s&   7N AOO=7P5 5AQ?>Q?Fc                 4   d}| j         t          j        k    r|r	| j        }nR| j         t          j        k    r<| j                                        }|dv rt          ||| j                  }d |j	                                        
                    d          D             }|                    dd                                          dv r|rd|v sd|v sd	|v r|d
k    r6| j        D ]} |t          | |d          z  }|                    |           dS |dk    rX|j        rQ|j                                        dk    r4|                    d|j        dd                    |          d           | j        D ]} t          | ||          }|r||z  }|S )z%
    Collect all CSS definitions
    r}   )r   linkc                 ^    g | ]*}|                                 |                                 +S rX   )ri   ).0r   s     rT   
<listcomp>zpisaPreLoop.<locals>.<listcomp>  sC     J J JqwwyyJQWWYY J J JrY   ,rc   )r}   ztext/cssallprintpdfr   T)collectr   
stylesheetz

@import "z" ;)nodeTyper   	TEXT_NODEdataELEMENT_NODEr   rj   r{   rr   mediasplitrg   
childNodespisaPreLoopaddCSShrefrelr   )r   contextr  r  rS   r   r  r   s           rT   r  r    s   
 D}&&7&y	$+	+	+|!!##$$$$WdDODDDJ J"j..0066s;;J J JE xx##))++/??? @"'5..Gu4D4DQV7?? $ I ID'4 H H HHNN4(((36>>di>DHNN4D4D4T4TNNN$(IIIsxx$@ A A A   T7G<<< 	FNDKrY   c                 L   |g }|sddddd}nt          j         |          }| j        t          j        k    r|                    | j                   d S | j        t          j        k    r!| j                            dd          	                                | _        | j        dv rd S t          j         |          | j        gz   }t          || j        | j                  }t          | |          |_        t          |j        | |          |_        | |_        d}d}d}d	}d	}	t          |j                            d
d                    }
|
dk    }|r|                                 d|j        v r:|                    t'          t)          |j        d                                        d|j        v rQt)          |j        d                   	                                dk    r!|                    t+                                 d|j        v rt)          |j        d                   	                                dk    r!|                    t-                                 t)          |j        d                   	                                dk    rd}	d|j        v r5t)          |j        d                   	                                dk    r!|                    t+                                 t)          |j        d                   	                                dk    rB|                    t+                                 |                    t/                                 t)          |j        d                   	                                dk    rB|                    t+                                 |                    t1                                 d|j        v rt)          |j        d                   	                                dk    r|}t)          |j        d                   	                                dk    r|}t)          |j        d                   	                                dk    r|}|
dk    rd S |                                 t5          |||           t7          |j        d|j        t:                     d|j        v r$t=          |j        d                   |j        _        d|j        v r|j        d         |j        _         d }d}d}d|j        v rGt)          |j        d                   !                                	                                }|dv r|}nd}d|j        v r-tE          d#                    |j        d                             }d |j        v r-tE          d#                    |j        d                              }|d uo|j$        d u }|rtK          |j&                  |_$        tO                                          d!| j                            dd          (                                z  d           }d }|                    d"d           }|j)                            |d           }|r)|j        xj*        dz  c_*        |+                                }|! || |          }|,                    |           t          j         |j                  x|_-        }| j.        D ]}t_          |||fi | ||_-        |r|0                    |           |r|                                 |ro|                    t+                                 ||k    r!|                    t/                                 ||k    r!|                    t1                                 |	r!|                    t-                                 |r_|j&        |j$        d          }|j&        d |j$                 |_&        |j&        1                    te          ||||#                     d |_$        |rO|                                 |D ]}|j&        |_3        |+                    |           |j        xj*        dz  c_*        |4                                 d S | j.        D ]} t_          | ||fi | d S )$Nr   )r   r   r   r   :r}   )r   scriptr\         Fdisplayinlinerw   z-pdf-next-pagez-pdf-page-breakbeforez-pdf-frame-breakafterTzpage-break-beforealwaysrightleftzpage-break-afterr   ))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   replacerj   r{   rr   r   r   r   r   rg   addParaaddStoryr   rb   r   r   rJ   rI   pushFragr   rG   r   rA   rm   outlineLevelwordWrapri   rE   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                             rT   r>  r>  	  s   |  	
 
 Yr]]
 }&&	""""" 
$+	+	+|++C44::<<<...Fy$,/ !$,HH
 %T733-gotTJJ 
++Ix@@AA g% 	5OO  7?22  $S9I)J%K%KLLN N N GO33w'89::@@BBhNN$$Y[[111!W_44w'9:;;AACCxOO$$Z\\222w'9:;;AACCwNN&*O"go55w':;<<BBDDPP$$Y[[111w':;<<BBDDOO$$Y[[111$$%6%8%8999w':;<<BBDDNN$$Y[[111$$%5%7%7888!W_44w'9:;;AACCxOO%/Nw'9:;;AACCwNN%5Nw'9:;;AACCvMM%4NfF
 	 	"g&&& 	
  	 	 	  7?22(+ 45)7 )7GL% w..$+O4D$EGL!  $77 9:< <<AEGGEEGG CCC"'"* *W_<<")(FGHH#J #J*go==#*(GHII$K $K  &T1Vg6NRV6V 	: (+7='9'9G$ 		k"l223;;AACCDEIK K HHT4((	)--i>> 	+L**a/**((**H %d##CIIg )-	',(?(??I_ 	1 	1EUGT00R0000%  	GGG  	/OO
  9  ---!%555$$%6%8%8999!_44$$%5%7%7888 /  ... 	, }W%=%>%>?H#M*C7+C*CDGMM  $02(	* * *+ + + (,G$  	0OO$ 6 6(/%%h'''L**a/**
 	 O 	0 	0DT7D//B////	0 	0rY   r}   utf8c                 ~   i a |rBt                              d           t          j        t          j        d                    }n't          j        t          j        d                    }i }t          | t                    r4|sd}| 
                    |          } t          | |j                  } ||d<    |j        | fi |}|r)|                    |                    |                     |r|                    |           t#          ||           |                                 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)r   re   rf   html5libXHTMLParserr   getTreeBuilder
HTMLParserr   rb   encoder?   rY  parsewritetoprettyxmladdDefaultCSSr  parseCSSr>  )	srcr  default_cssxhtmlr[  
xml_outputr   parser_kwargsdocuments	            rT   
pisaParserrl    sb    L NKLLL%<+Fu+M+MNNN$,*Ee*L*LMMMM#s 7 	Hjj""3)9::: /7*+ v|  H  B--x-@@AAA +k***'"""XwNrY   c                  $    d|d<   t          | i |S )NTrh  )HTML2PDF)ar   s     rT   	XHTML2PDFrp  $  s    BwKQ"rY   )FrO   )r}   FrU  N)vr,  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.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-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   xhtml2pdf.filesr?   xhtml2pdf.utilr@   rA   rB   rC   rD   rE   rF   rG   xhtml2pdf.w3crH   xhtml2pdf.xhtml2pdf_reportlabrI   rJ   r   	getLoggerre   compileMIrxhttpstriprP   rM   r{   ri   r  r   r   r   rW  minidomElementr   r   r   r   rj   r   r  r>  rl  rn  rp  XML2PDFrX   rY   rT   <module>r     s  "   				            ! ! ! ! ! ! G G G G G G G G ? ? ? ? ? ? ? ? ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^) ) ) ) ) ) ) ) ) ) ) ) ) )( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (R ) ( ( ( ( ( h h h h h h h h h h h h h h h h h h h h 0 0 0 0 0 0 M M M M M M M Mg$$bj-rtbd{;;    D   J! J! J!Z4h 	i 
n 4B    @ &0  "
 ! 
  	Y 	Y 	Y  @# # #T T Tn$ $ $ $N\0 \0 \0 \0~4 4 4 4r   
 rY   