
    Xwg                       d dl mZ d dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ 	 d dlmZ d dl m!Z!m"Z"m#Z# d dl$m%Z%m&Z& d dl'm(Z(m)Z) d dl*m+Z+ d dl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z;m<Z<m=Z=m>Z>m?Z? erd dl@mAZA d dl:mBZB d e_C         ej                  eE      ZFdZGdZHdZIdZJd(dZKeKe!_K        d(dZLd)dZM G d de9j                        ZO G d d e9j                        ZQ G d! d"      ZR G d# d$      ZSd*d%ZT G d& d'      ZUy# e$ r	 d dlmZ Y w xY w)+    )annotationsN)Path)TYPE_CHECKINGCallable)rl_settings)TA_LEFT)
addMapping)A4)ParagraphStyle)
pdfmetrics)TTFont)Frame)ShowBoundaryValue)ParaFragps2tttt2ps)defaultparser)getFilepisaFileObject)	TableData)arabic_format
copy_attrsfrag_text_language_checkget_default_asian_fontgetColor	getCoordsgetFloatgetFrameDimensionsgetSizeset_asian_fonts	set_value)css)PmlPageCountPmlPageTemplatePmlParagraphPmlParagraphAndImagePmlTableOfContents)Flowable)PmlImage   g?    c                    t        di | j                  }|r$|j                  }|j                  |       d|v r|d= d |_        |S )NcbDefn )r   __dict__update
bulletText)selfkwargsnds       H/var/www/horilla/myenv/lib/python3.12/site-packages/xhtml2pdf/context.pycloner8   P   sE    !4==!AJJ	q=(ALH    c                   t               }t        |dd       t        |dd        t        |dd       d|_        d|_        t	        | j                        \  |_        |_        |_        | j                  |_        | j                  |_        d|_	        d	|_
        t        |_        d
|_        |j                  |_        |j                  |_        |j"                  |_        |j                  |_        |j                  |_        |j"                  |_        |j                  |_        |j                  |_        |j"                  |_        |j                  |_        |j                  |_        |j"                  |_        d|_        d|_        d|_        |S )N)subsuperrise	underlinestrikegreekleadingleadingSpacespaceBefore
spaceAfter
leftIndentrightIndentfirstLineIndentborderPaddingpaddingLeftpaddingRight
paddingToppaddingBottombulletIndentinsideStaticFrameoutlineLevelr   )	backColorvAlignlinkborderStyleborderColorlistStyleTypelistStyleImagewordWrapheightwidthr2   )
pageNumber	pageCountoutlineoutlineOpenkeepWithNextrtlF zTimes-Romannormalz150%   	Helveticag      ?)r   r"   textfontNamer   bolditalicfontSize	textColorletterSpacingleadingSourcer   	alignmentborderWidthborderLeftWidthrT   borderLeftColorrS   borderLeftStyleborderRightWidthborderRightColorborderRightStyleborderTopWidthborderTopColorborderTopStyleborderBottomWidthborderBottomColorborderBottomStyle
whiteSpacebulletFontNamezoom)stylefrags     r7   getParaFragr   _   sm   ZD	
. 	
38 	
 	" T DI!DM,1%..,A)DM49dkNNDM__DN "DDDND++D++D++D ,,D ,,D ,,D**D**D**D!--D!--D!--DDO%DDIKr9   c                    t        j                   |       }|j                  r| S t        t        |       j                  j                               S N)urlparseschemestrr   parentresolve)pathpartss     r7   
getDirNamer      s<    d#E||tDz  ((*++r9   c                      e Zd ZU ded<   ddZdddd	 	 	 	 	 	 	 	 	 ddZeddd	       Zedd
       Z	 	 	 	 	 	 	 	 	 	 ddZ	ddZ
y)pisaCSSBuilderpisaContextcc                <   | j                  | j                  d      g|      }t        t        |d   j	                                     }d|vri i fS |d   }t        |j                  dd            j                         }|dv }|s4|dk7  r/t        j                  | j                  j                  d|             t        |j                  d	d
            j                         dv }t        |d   t              r$|d   D cg c]  }t        |t
              s| }	}n|d   g}	|	D ]p  }
| j                  j                  |
| j                  j                  j                        }|sA|j!                         rR| j                  j#                  ||||       r i i fS c c}w )zEmbed fonts.*r   srczfont-familyzfont-weightra   )rf   bolder500600700800900z)@fontface, unknown value font-weight '%s'z
font-styler`   )rg   obliquerelative)rf   rg   )rulesetselectornextitervaluesr   getlowerlogwarningr   
isinstancelistr   	cssParserrootPathnotFoundloadFont)r3   declarationsresultdatanamesfweightrf   rg   partfontsfontr   s               r7   
atFontFacezpisaCSSBuilder.atFontFace   su   t}}S12LAD))+,-r6M]# dhh}h78>>@OO8+KKJGT
 TXXlB/0668<QQ d5k4(&*5kKdZc5JTKEK%[ME 	FD&&..0@0@0I0I.JC3<<>sfE	F 2v Ls   =FFFN)r   r   firstbordersizec               8   | j                   }|sd|j                         z  }|j                  dd      r
|d   |d   f}t        ||d   |d         \  }}}	}
|r|d |j                  d|      |||	|
|fS ||j                  dd       |j                  d|      |||	|
|fS )Nz-pdf-frame-%dis_landscapeFrb   r   z-pdf-frame-borderz-pdf-frame-content)r   UIDr   r   )r3   namer   r   r   r   r   xywhs              r7   _pisaAddFramezpisaCSSBuilder._pisaAddFrame   s     FF"QUUW,D88NE*GT!W%D'd1gtAw?
1a txx(;VDaAqRVVV HH)40HH(&1	
 		
r9   c                    |sd }t        |t        t        f      r|D ]  }|| v r || |         c S |c S  y || v r || |         S |S )Nc                    | S r   r/   )r   s    r7   funcz)pisaCSSBuilder._getFromData.<locals>.func  s    r9   )r   r   tuple)r   attrr   r   as        r7   _getFromDatazpisaCSSBuilder._getFromData   s_     dT5M* ?()T	tDG}>w>?#'4<tDJ<W<r9   c                j   | j                  d      }| j                  d      }| j                  d      }| j                  d      }dt        | j                  dd            i}|rt        |d         t        |d         g|d	<   |rt        |      |d
<   |rt        |      |d<   |rt        |      |d<   |S )Nzbackground-object-positionzbackground-heightzbackground-widthzbackground-opacitystepzbackground-page-steprb   r   object_positionrX   rY   opacity)r   r   r    )r   r   rX   rY   r   devs         r7   get_background_contextz%pisaCSSBuilder.get_background_context  s    ((#?@-.+,((/0Xdhh/Eq&IJK*+*+&C!" #FOCM"5>CL%g.C	N
r9   c               F	   | j                   }|xs d}||j                  v r/t        j                  | j                   j                  d|             | j	                  |ddt
              }| j	                  |ddt
              }| j	                  |ddt
              }	| j	                  |ddt
              }
| j	                  |dd t              }| j	                  |d	dt
              }d
D ]A  }||v s|j                  j                  | j                  ||d||j                                n g }g }|j                  D ]  \  }}}}}}}}| j	                  |d|t
              }| j	                  |d|t
              }| j	                  |d|	t
              }| j	                  |d|
t
              }| j	                  |d|t              }| j	                  |d	|t
              }|s|rt        t        |            }nt        ||      }|r,t        ||j                  d   |j                  d         \  }}}}t        |||||j                        \  }}}}|dk  s|dk  r.t        j                  | j                   j                  d             t        ||||||||||
      }|rFg |_        |g|j"                  j%                  |g       |j"                  |<   |j                  |       |j                  |        |j%                  dd       } | j'                  |      }!| r;| j                   j)                  | | j                   j*                  j,                        } |st        j                  |j                  d             | j                  ||d||j                        \  }}}}}}}}t        |||||j                        \  }}}}|dk  s|dk  r$t        j                  |j                  d             |s|rt               }nt        ||      }|j                  t        |||||||	|
||
             t/        |||j                        }"||"_        | |"_        |j4                  |"_        |!|"_        |r|"j8                  |"_        |"|j                  |<   d |_        g |_        g |_        i i fS )Nbodyz&template '%s' has already been definedzpadding-topr   zpadding-leftzpadding-rightzpadding-bottom)zborder-top-colorzborder-bottom-colorzborder-left-colorzborder-right-color)zborder-top-widthzborder-bottom-widthzborder-left-widthzborder-right-width)

margin-topmargin-leftmargin-rightmargin-bottomtopleftrightbottomrY   rX   Tr   )rY   )colorrY   rb   z<Negative width or height of frame. Check @frame definitions.)idleftPaddingrightPaddingbottomPadding
topPaddingshowBoundaryzbackground-imager   zCmissing explicit frame definition for content or just static framesz;Negative width or height of frame. Check @page definitions.)r   framespagesize) r   templateListr   r   r   r    r   	frameListappendr   pageSizer   intr   r   r   pisaStaticStoryframeStaticr   r   r   r   r   r%   pisaStaticListpisaBackgroundpisaBackgroundListbackgroundContext	LANDSCAPEpageorientationtemplateframeStaticList)#r3   r   
pseudopager   isLandscape
pageBorderr   padding_toppadding_leftpadding_rightpadding_bottomborder_colorborder_widthpropr   
staticListfnamestaticr   r   r   r   r   fdatafpadding_topfpadding_leftfpadding_rightfpadding_bottomfborder_colorfborder_widthframe_borderframe
backgroundbackground_contextpts#                                      r7   atPagezpisaCSSBuilder.atPage!  s    FF~v1>>!KK'OQUVW''mQH((~q'J))$GL**41A1gN(( 

 (( 


 	D t|""&&d$z

 ' 
 %	* 	
89 I	(4E661aAu,,UM;PWXL --~|WM "..wN #//'O !-- 
M !-- 
M 0f+ 
  1'} 
 /qzz!}ajjQRmT
1a"1aAqzz:JAq!QAvaFFNNV )+-')E (*%).(O1B1B621N(Of%!!%(  'SI	(V XX0$7
!88>
TVV=M=M=V=VWJKK		 7;6H6Hd$z

 7I 73E661aAt #1aAqzz:JAq!QAvaIIU 020|<X ,!."0*!- YL&& ! 4 41!#B!t
2vr9   c                b   |r| j                  | j                  d      g|      }|d   }|r_	 |j                         d   }| j
                  j                  j                  | j                  ||| j
                  j                               i i fS # t        $ r |j	                         d   }Y mw xY w)Nr   r   rb   )r   )
r   r   r   	Exceptionpopitemr   r   r   r   r   )r3   r   r   r   r   s        r7   atFramezpisaCSSBuilder.atFrame  s    \\4==#5"6EF !9D-;;=+D   ''&&tT&H 2v ! -<<>!,D-s   B B.-B.)returntuple[dict, dict])
r   r   r   dictr   boolr   ztuple[float, float]r  zDtuple[str, str | None, str | None, float, float, float, float, dict])NN)r   zCallable | None)r   r  r  r  )
r   r   r   z
str | Noner   r  r   r  r  r  )r   r   r  r  )__name__
__module____qualname____annotations__r   r   staticmethodr   r   r  r  r/   r9   r7   r   r      s    NL $*

 

 
 "
 
N
@ 
= 
=  &FF F 	F F 
FPr9   r   c                      e Zd Zd Zy)pisaCSSParserc                   d }| j                   }| j                  j                  || j                         }|sy | j                   rOt        j                  | j                         j                  r&t        j
                  | j                   |      | _         nt        |j                        | _         	 | j                  |j                               }|| _         |S # t        $ r t        j                  d       Y |S w xY w)Nr   zError while parsing CSS file)r   r   r   r   r   urljoinr   uriparsegetDatar	  r   	exception)r3   cssResourceNamer   oldRootPathcssFiles        r7   parseExternalzpisaCSSParser.parseExternal  s    mm&&..4==.I==X..t}}=DD$,,T]]OLDM&w{{3DM	:ZZ 12F'DM   	:MM89	:s   /&C C98C9N)r  r  r  r   r/   r9   r7   r  r    s    r9   r  c                  <    e Zd ZddZd	dZd
dZddZddZddZy)PageNumberTextc                    d| _         y Nr`   r   r3   argsr4   s      r7   __init__zPageNumberText.__init__  	    	r9   c                x    | j                   j                  $t        | j                   j                        | _        yNF)flowablepager   r   r3   keys     r7   __contains__zPageNumberText.__contains__  s+    ==)DMM../DIr9   c                    | j                   gS r   r%  r3   rd   s     r7   splitzPageNumberText.split      		{r9   c                P    | j                   r| j                   |   S | j                   S r   r%  r3   indexs     r7   __getitem__zPageNumberText.__getitem__  s     #'99tyy;$));r9   c                    || _         y r   r,  r3   r,  s     r7   setFlowablezPageNumberText.setFlowable  	     r9   c                    | j                   S r   r%  r3   s    r7   __str__zPageNumberText.__str__       yyr9   Nr  Noner  r  rd   r   r  z	list[str]r7  r   r  r   r,  r)   r  rC  r  r   )	r  r  r  r(  r0  r3  r8  r<  r@  r/   r9   r7   r"  r"    s     
<!r9   r"  c                  <    e Zd ZddZd	dZd
dZddZddZddZy)PageCountTextc                    d| _         y r$  r%  r&  s      r7   r(  zPageCountText.__init__%  r)  r9   c                    | j                   S r   r%  r?  s    r7   r@  zPageCountText.__str__(  rA  r9   c                x    | j                   j                  $t        | j                   j                        | _        yr+  )r,  	pagecountr   r   r.  s     r7   r0  zPageCountText.__contains__+  s+    =="".DMM334DIr9   c                    | j                   gS r   r%  r2  s     r7   r3  zPageCountText.split0  r4  r9   c                P    | j                   s| j                   S | j                   |   S r   r%  r6  s     r7   r8  zPageCountText.__getitem__3  s      $		tyy?tyy/??r9   c                    || _         y r   r:  r;  s     r7   r<  zPageCountText.setFlowable6  r=  r9   NrB  rH  rD  rE  rF  rG  )	r  r  r  r(  r@  r0  r3  r8  r<  r/   r9   r7   rJ  rJ  $  s!    
@!r9   rJ  c                h    | j                  d      }dj                  t        |            }|d d d   S )N )r3  joinreversed)sentencewordsreverse_sentences      r7   rY  rY  :  s2    NN3Exx0DbD!!r9   c                  "   e Zd ZdZd$d%dZd Zd Zd Zd Zd Z	d Z
d&d
Zd'dZd(dZd(dZed)d       Zed        Zed        Zddd*dZd(dZd Zd Zd(dZd+dZd(dZd(dZd,dZed-d       Zd.dZd Zd Zd&d/d Z d0d!Z!d&d"Z"d1d#Z#y	)2r   zZ
    Helper class for creation of reportlab story and container for
    various data.
    c                   t        j                   t        j                        | _        t        j                   t	                     | _        g | _        g | _        g | _        g | _	        g | _
        g | _        g | _        g | _        g | _        g | _        g | _        g | _        g | _        d | _        d | _        d | _        d | _        d | _        t1               | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _         d| _!        d| _"        i | _#        i | _$        i | _%        || _&        tO               | _(        d| _)        tT        | _+        tY        d      | _-        t]        t_        d| ja                                      | _1        | jb                  | _2        d| _3        d| _4        d| _5        d | _6        |xs d	| _7        tq        jp                  | jn                        }|jr                  s?tu        tw        | jn                        jy                         j{                               | _7        t}        | jn                        | _?        ddddtT        d
| _@        y )Nr   g        r`   F12ptr   Tltr	__dummy__)authortitlesubjectkeywordsr   )Acopyr   DEFAULT_FONTfontListr   asianFontList
anchorFrag
anchorName
fragAnchorfragList	fragStackr   r   frameStatioundListr   r   r   select_optionsstoryimageindexing_storykeepInFrameIndexnoder   r   	tableDataerrrh   listCounteruidctrwarncssDefaultTextcssTextlanguagerd   r   	imageDatar   capacityr(   toc
multiBuildr
   r   r    baseFontSizer   r   r   r~   	fragBlock	fragStripforcedirpathCallbackpathDocumentr   r   r   r   absoluter   r   pathDirectorymeta)r3   r   debugr|  r   s        r7   r(  zpisaContext.__init__F  s   (,		'2F2F(G-1YY7M7O-P " " " !!%'(*	(*)+
&*
37 $	$-K" !	#%	!#!"$%'9'; %-/#*6?).7488:,9O*PQ	#'99# 
 ! "&!4!!$"3"34|| #D):):$;$D$D$F$N$N$P QD",T->->"? ;
	r9   c                >    |dk(  rd| j                   _        || _        y )Nr_   T)r~   r_   r  )r3   	directions     r7   setDirzpisaContext.setDir  s     DIIMr9   c                D    | xj                   dz  c_         | j                   S )Nrb   )rv  r?  s    r7   r   zpisaContext.UID  s    q{{r9   c                    |j                         }|j                  d      r|dd }|j                  d      r|dd }| xj                  |j                         dz   z  c_        y Nz	<![CDATA[	   z<!--   
)strip
startswithry  r3   values     r7   addCSSzpisaContext.addCSS  sX    K(!BKEF#!BKE,,r9   c                    |j                         }|j                  d      r|dd }|j                  d      r|dd }| xj                  |j                         dz   z  c_        y r  )r  r  rx  r  s     r7   addDefaultCSSzpisaContext.addDefaultCSS  s[    K(!BKEF#!BKEu{{}t33r9   c                   dd l }t        g d      | _        |j                  |       | j                  _        t        d       t        _        t        | j                        | _        | j                  | j                  _
        |j                  |       | j                  _        t        d       t        _        | j                  j                  | j                        | _        | j                  j                  | j                        | _        t        j                   | j                  | j                        | _        | j                  | j"                  _        y )Nr   )allprintpdf)	mediumSetc                "    | j                         S r   _cr?  s    r7   <lambda>z&pisaContext.parseCSS.<locals>.<lambda>  s     r9   c                "    | j                         S r   r  r?  s    r7   r  z&pisaContext.parseCSS.<locals>.<lambda>  s    	 r9   )	userAgentuser)weakrefr   
cssBuilderrefr  propertyr   r  r   r  r   r  ry  r#   rx  
cssDefaultCSSCascadeStrategy
cssCascader   )r3   r  s     r7   parseCSSzpisaContext.parseCSS  s    
 	(3JK$[[.#$:;&t7"&"4"4#KK-"#9:>>''5....t/B/BC00ooDHH
 "&r9   c                :    | j                   j                  |       y r   )rn  r   )r3   r   s     r7   addStoryzpisaContext.addStory  s    

$r9   Nc                    ||ng }t        j                   |      t        j                   | j                        c| _        }|S r   )rc  rn  )r3   rn  s     r7   	swapStoryzpisaContext.swapStory  s7    * IIe,dii

.C
Er9   c                   t        d| j                         z  |j                        }t        ||d       t	        |j
                  |j                  z   |j                  dz        |_        |j                  xs |j                  |_        |j                  |_
        |j                  |j                  r|j                  |_        |j                  |j                  r|j                  |_        |j                   |j"                  r|j                  |_        |j$                  |j&                  r|j                  |_        t)        |j                  |j*                  |j,                        |_	        |S )Nz	default%d)r^   )re   rh   rj   rP   rC   rD   rE   rF   rG   ri   rl   rM   rW   rv   rt   ru   ry   rw   rx   rp   rn   ro   rs   rq   rr   rK   rL   rI   rJ   rH   g      ?)r   r   r^   r   maxrA   rB   rh   r{   re   bulletFontSizeru   rt   ri   rx   rw   ro   rn   rr   rq   r   rf   rg   )r3   r   r}   s      r7   toParagraphStylezpisaContext.toParagraphStyle  s'   $((*$53E3E
 	#	
J EMME,>,>>QU@UV$33Eu~~$~~   (e.B.B#(??E ##+1H1H&+ooE#!!)u/D/D$)OOE!""*0F0F%*__E"u~~uzz5<<Hr9   c           	        | j                   sy g }t        d      D ]  }d|z  | j                   j                  d<   t        j                  | j                   |       | _        t        j                  | dddddd       | j                  | j                        }|j                  |        || j                  _        | j                  | j                         d | _        y )N   zpdftoclevel%dclassr   )r   r   r   r   T)isBlock)rr  range
attributesr   
CSSCollectcssAttrCSS2Fragr  r~   r   r}  levelStylesr  rp  )r3   stylesipstyles       r7   addTOCzpisaContext.addTOC  s    yyr 	"A,;a,?DII  )!,,TYY=DLOO"#%&#$$%	 	 **4995FMM&!	"   &dhh"r9   c                J    | j                   st               | _        d| _         y y )NT)r~  r$   rp  r?  s    r7   addPageCountzpisaContext.addPageCount  s    "..D"DO r9   c                <    t               }|j                  |        |S r   )rJ  r<  )flowpcs     r7   getPageCountzpisaContext.getPageCount"  s    _
t	r9   c                <    t               }|j                  |        |S r   )r"  r<  )r  pgnumbers     r7   addPageNumberzpisaContext.addPageNumber(  s    !#T"r9   c                     y r   r/   )_frags_styles     r7   dumpParazpisaContext.dumpPara.  s    r9   F)r  c                  |xs | j                   }d| _         t        | j                         d}| j                  D ]Z  }t        |j                  |j
                        |j                  z   }t        ||j
                  |j                  z   |      }||_        \ |s(| j                  j                         r| j                  r| j                  }| j                  |      }|j                  r||_        n2t        |j                  |j
                        |j                  z   |_        t        j                  |j                        }d |_        |s&t        | j                   | j                  z         dkD  r| j                  r;| j                  j#                  | j                  d   j%                  ddd             nC| j&                  j%                         }d|_        d|_	        | j                  j#                  |       | j+                  | j                   | j                  z   |       t-        | d      r0| j/                  d      }	t1        | j                  |	      }
|
|
| _	        t3        | j                  || j                   | j                  z   || j4                        }|j6                  |_        |j8                  |_        |j:                  |_        |j<                  |_        d	|_        | j@                  r2tC        || j@                  | jD                  jG                  d
d            }| jI                  |       g | _        d |_        d | _         i | _"        | jK                          y )NFr   rT  r`   )rd   rZ   r[   rc   rz  )fragsr2   r  r  alignr   )side)&r  rV  rj  r    rk   rh   rB   r  rA   rd   r  r  r  rc  r2   lenri  r   r8   r~   re   r  hasattr__getattribute__r   r&   r  r\   rO   r]   r^   autoLeadingro  r'   r{  r   r  	clearFrag)r3   r  
maxLeadingr~   rA   r   r}   r2   blankrz  detect_language_resultparas               r7   addParazpisaContext.addPara2  s   #
 	 
MM 	#Dd00$--@4CTCTTGWdmmd6G6G&GTJ"DL	#
 TYY__&4==NNE))%0E!! * E//@5CUCUU  5#3#34J#E DOOdmm;<q@ ==MM((b)//!# 0  !IIOO-E%0EN!#EJMM((/doo=uE4,#44Z@H-:499h-O*-9$:	#II//DMM9)  %}}$)$6$6!#(#4#4 $)$6$6!#( ::/djjt~~/A/A'6/RD d# DO#E 
r9   c                .    g | _         d| _        d| _        y )NTr`   )rj  r  rd   r?  s    r7   r  zpisaContext.clearFrag  s    	r9   c                :     | j                   j                  di |S Nr/   r~   r8   r3   kws     r7   copyFragzpisaContext.copyFrag  s    tyy$$$r9   c                \     | j                   j                  di || _         | j                   S r  r  r  s     r7   newFragzpisaContext.newFrag  s%    #DIIOO)b)	yyr9   c                    |j                   rE|j                   j                  d      r*| j                  j                  ||j                   dd  f       | j                  j                  |       y )N#rb   )rR   r  rg  r   rj  )r3   r~   s     r7   _appendFragzpisaContext._appendFrag  sM    99--c2OO""D$))AB-#89T"r9   c                   | j                   j                         x}}|j                  dk(  r|j                  dk(  rd|_        d|_        |j                  r<|j                   t
        z  |_        t        |j                  t        z
  d      |_        nF|j                  r:|j                  t        z  |_        t        |j                  t        z
  d      |_        t        |j                  |j                  |j                        x|_        |_        t        |t         t"        f      r||_        | j'                  |       y |j)                  dd      j)                  dt*              j)                  dt*              }|j,                  dk(  rt/        j0                  d	|      D ]  }| xj$                  |z  c_        d
|v sd|v r0|j                         }d|_        d|_        | j'                  |       P|j)                  dd      }t/        j0                  d|      D ]5  }|j                         }|dk(  rt*        }||_        | j'                  |       7  y t/        j0                  dt*        z   dz   |      D ]  }|j                         }|t*        k(  r9d| _        t*        |_        | xj$                  |z  c_        | j'                  |       Vdj7                  d|z   dz   j1                               dd |_        t9        | |j$                        }|r||_        | j:                  r2|j$                  j=                         |_        |j$                  rd| _        | xj$                  |j$                  z  c_        | j'                  |        y )Nrb   r         ­r`   u   Â r,   prez(\r\n|\n|\r)r  	z        z(\ )rS  ()Tr   rT  F)r~   r8   r;   r<   rh   subFractionr=   r  	sizeDeltasuperFractionr   re   rf   rg   r{   r   r"  rJ  rd   r  replaceNBSPrz   rer3  	lineBreakr  rU  r   r  lstrip)r3   rd   r~   baseFraglanguage_checks        r7   addFragzpisaContext.addFrag  s   ))//++x 88q=TZZ1_DHDJ 884DI	 91=DMZZ5DI	 91=DM /4MM499dkk/
 	
+ d^];<DIT" ||FB'//
DAII&RVW??e#$7 /		T!	DLddl#>>+D "DI%&DN$$T*  <<g6D !#$ 7 /'~~/3;#'D$(	((.//* tc!148 +~~'4<!%DJ $DIII%I$$T* ##*s*:)A)A)C DQr JDI%=dDII%NN%$2	~~$(II$4$4$6	99-2DNII*I$$T*#+r9   c                n    | j                   j                  | j                         | j                          y r   )rk  r   r~   r  r?  s    r7   pushFragzpisaContext.pushFrag  s!    dii(r9   c                B    | j                   j                         | _        y r   )rk  popr~   r?  s    r7   pullFragzpisaContext.pullFrag  s    NN&&(	r9   c                    	 t        dj                  | j                  j                         j	                         d |             S # t
        $ r Y yw xY w)NrS  r`   )reprrU  rr  toxmlr3  r	  )r3   lines     r7   _getFragmentzpisaContext._getFragment  sH    	!2!8!8!:5D!ABCC 		s   AA 	AAc                      y)Nr   r/   r/   r9   r7   _getLineNumberzpisaContext._getLineNumber  s    r9   c                .    |d| j                  d       S )Nr  2   )r  )r3   msgs     r7   contextzpisaContext.context  s    4,,R0122r9   c                <   | xj                   dz  c_         | j                  j                  t        j                  | j                         t        |      | j                  d      f       	 | j                  ||z        S # t        $ r | j                  |      cY S w xY wNrb   r  )
rw  r   r   r   PML_WARNINGr
  r   r  r  r	  r3   r  r'  s      r7   r   zpisaContext.warning  s    		Q	####%C!!"%		
	%<<d
++ 	%<<$$	%   *A> >BBc                <   | xj                   dz  c_         | j                  j                  t        j                  | j                         t        |      | j                  d      f       	 | j                  ||z        S # t        $ r | j                  |      cY S w xY wr  )
rt  r   r   r   	PML_ERRORr
  r   r  r  r	  r  s      r7   errorzpisaContext.error  s    A 3 3 5s3xARARSUAVW	
	%<<d
++ 	%<<$$	%r  c                T    |yt        ||xs | j                  | j                        S )zReturns a file name or None.N)callback)r   r  r  )r3   r   r   s      r7   r   zpisaContext.getFile  s*    <tX;););dFWFWXXr9   c                   t        |t              s*t        |      }|j                         j	                  d      }|D ]  }t        |      }|j                         j                         }|| j                  v r(| j                  j                  |d      }t        |       n| j                  j                  |d      }||c S  | j                  j                  |d      S )zName of a font.,N)
r   r   r   r  r3  r   rf  r   r!   re  )r3   r   r   r   r   s        r7   getFontNamezpisaContext.getFontName  s     %&JEKKM'',E 		Dt9D::<%%'Dt)))))--dD9%}}((t4		 }}  $//r9   c                    ||ng }t        |      | j                  t        |      j                         <   |D ]#  }t        |      | j                  t        |      <   % y r   )r   re  r   )r3   fontnamealiasr   s       r7   registerFontzpisaContext.registerFont(  sR    */28}c(m))+, 	2A$'MDMM#a&!	2r9   c                X   |r"|r|}|j                   }t        j                  d|       t        |t              r"|j                  d      r|j                  d      }t        |t              r|}nd |j                  d      D        }|D cg c]  }t	        |       }}|d   }	|j                  d      }
dj                  |
d d       |
d   }}|j                         }|dv rd	|	||fz  }|| j                  v r&t        j                  | j                  d
|             y |j                         }t        ||      }t        j                   |       dD ],  }dD ]%  }d	|	||fz  | j                  vst#        |	|||       ' . | j!                  |	g ||       y |dv rc|dk(  r;|j                         }t%        |dz   |j&                        }|j                         }n:|j                         }t%        |dz   |j&                        }|j                         }d	|	||fz  }|| j                  v r&t        j                  | j                  d|	             y t        j(                  ||      }|j*                  }t        j,                  |       t        j.                  |||      }t        j                   |       dD ],  }dD ]%  }d	|	||fz  | j                  vst#        |	|||       ' . | j!                  |	g |||       y t        j                  | j                  d             y y y c c}w )NzLoad font %rr  c              3  ^   K   | ]%  }|s|j                         j                          ' y wr   )r   r  ).0r   s     r7   	<genexpr>z'pisaContext.loadFont.<locals>.<genexpr>;  s     N1AQWWY__.Ns   -#-r  r   .rT  )ttcttfz%s_%d%dz+Repeated font embed for %s, skip new embed )r   rb   )afmpfbr'  z.pfb)basepathz.afmz*Repeated font embed for %s, skip new embedzwrong attributes for <pdf:font>)r  r   r  r   r   r  r  r   r3  rU  r   re  r   getNamedFiler   r   r  r	   r   r)  EmbeddedType1Facer   registerTypeFaceFont)r3   r   r   encodingrf   rg   file	fontAliasr   re   r   baseNamesuffixfullFontNamefilenamer'  tfiler(  facefontNameOriginaljustFonts                        r7   r   zpisaContext.loadFont/  s1   SD((CIInc*%%%*:*:3*?C(%&!	NC8HN	 *33AQ3I3 |HIIcNE"xxcr
3U2YfH\\^F'(HdF+CC  4==0KKI<  $002H!,9D++D1 !' Q&, QF )XtV,D D%)]] 3 !+8T6< P	QQ %%h0J)0J\0JK>)U?++-C*8f+<t}}UE,,.C++-C*8f+<t}}UE,,.C  )HdF+CC  4==0KKH( &77SAD'+yy$//5)|=MxXH++H5 !' U&, UF )XtV,D D%)]] 3 !+8T6CS T	UU %% "NI"N|"N=M"N DLL)JKLu 5 4s   L')r`   r   rT  )r   r   r  r   r|  r   r  rC  r   )r  r   rB  )r  r)   r  rJ  )r  r  r  rC  )r`   N)r  )r  r   )r  r   r  r   )r  zpisaFileObject | None)	helvetica)WinAnsiEncodingr   r   )$r  r  r  __doc__r(  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r
  r  r   r  r   r  r  r   r/   r9   r7   r   r   @  s    
=
~

-404 
@D#2#
  
  
   (- Sl
%#F+P)  3%%Y0$2\Mr9   r   )r  r   rH  )rW  r   r  r   )V
__future__r   rc  loggingr  urllib.parser  r   pathlibr   typingr   r   	reportlabr   reportlab.lib.enumsr   reportlab.lib.fontsr	   reportlab.lib.pagesizesr
   reportlab.lib.stylesr   reportlab.pdfbaser   reportlab.pdfbase.ttfontsr   reportlab.platypus.framesr   reportlab.pdfgen.canvasr   ImportErrorreportlab.platypus.paraparserr   r   r   	xhtml2pdfr   r   xhtml2pdf.filesr   r   xhtml2pdf.tablesr   xhtml2pdf.utilr   r   r   r   r   r   r   r   r    r!   r"   xhtml2pdf.w3cr#   xhtml2pdf.xhtml2pdf_reportlabr$   r%   r&   r'   r(   reportlab.platypus.flowablesr)   r*   warnOnMissingFontGlyphs	getLoggerr  r   r  r  r  r  r8   r   r   
CSSBuilderr   	CSSParserr  r"  rJ  rY  r   r/   r9   r7   <module>rW     s%   #   	   * ! ' * & / ( , +<9 A @ % 3 &      56 '( #g!		 Sl,|S^^ |~	CMM & ,! !,"K	M K	M}  <;<s   D; ;E	E	