o
    É�k[ „  ã                   @   s¬  d dl 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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mZ d d	lmZmZmZ d dlZd dlZd dlZd d
l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- e.Z/e0Z1zd dl2Z2W n e3y™   d dl4m5Z2 Y nw d ej6_7e 8d¡Z9dZ:dZ;dZ<dZ=dd„ Z>e>e_>dd„ Z?dd„ Z@G dd„ de'jAƒZBG dd„ de'jCƒZDG dd„ deEƒZFdS )é    N)ÚTA_LEFT)Ú
addMapping)Ú	landscapeÚA4)ÚParagraphStyle)Ú
pdfmetrics)ÚTTFont)ÚFrameÚShowBoundaryValue)ÚParaFragÚps2ttÚtt2ps)ÚgetSizeÚ	getCoordsÚgetFileÚpisaFileObjectÚgetFrameDimensionsÚgetColorÚ	set_valueÚ
copy_attrs)Úcss)ÚPmlPageTemplateÚPmlTableOfContentsÚPmlParagraphÚPmlParagraphAndImageÚPmlPageCountÚ	xhtml2pdfé   gš™™™™™Ù?õ   Â c                 K   s<   t di | j¤Ž}|r|j}| |¡ d|v r|d= d |_|S )NÚcbDefn© )r   Ú__dict__ÚupdateÚ
bulletText)ÚselfÚkwargsÚnÚdr    r    úC/var/www/html/env/lib/python3.10/site-packages/xhtml2pdf/context.pyÚclone;   s   
r)   c                 C   sê   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Úwidthr#   )Ú
pageNumberÚ	pageCountÚoutlineÚoutlineOpenÚkeepWithNextFÚ zTimes-RomanÚnormalz150%é   Ú	Helveticag      ð?)r   r   ÚtextÚfontNamer   ÚboldÚitalicÚfontSizeÚ	textColorÚletterSpacingÚleadingSourcer   Ú	alignmentÚborderWidthÚborderLeftWidthrC   ÚborderLeftColorrB   ÚborderLeftStyleÚborderRightWidthÚborderRightColorÚborderRightStyleÚborderTopWidthÚborderTopColorÚborderTopStyleÚborderBottomWidthÚborderBottomColorÚborderBottomStyleÚ
whiteSpaceÚbulletFontNameÚzoom)ÚstyleÚfragr    r    r(   ÚgetParaFragJ   sL   ø
ûýrm   c                 C   s(   t   | ¡}|jr
| S tj tj | ¡¡S ©N)ÚurlparseÚschemeÚosÚpathÚdirnameÚabspath)rr   Úpartsr    r    r(   Ú
getDirNameƒ   s   
rv   c                   @   s8   e Zd Zdd„ Zddd„Zddd	„Zd
d„ Zdd„ ZdS )ÚpisaCSSBuilderc                 C   sø   |   |  d¡g|¡}t|d  ¡ ƒd }d|vri i fS |d }t| dd¡ƒ ¡ }|dv }|s>|dkr>t | j	 
d|¡¡ t| d	d
¡ƒ ¡ dv }|d }t|d tƒsc|D ]}	t|	tƒrb|	} nqW| j	j|| j	jjd�}
| j	j||
||d� i i fS )z
        Embed fonts
        Ú*r   Úsrczfont-familyzfont-weightrO   )rT   ÚbolderÚ500Ú600Ú700Ú800Ú900z)@fontface, unknown value font-weight '%s'z
font-stylerN   )rU   Úoblique©Úrelative)rT   rU   )ÚrulesetÚselectorÚlistÚvaluesÚstrÚgetÚlowerÚlogÚwarnÚcÚwarningÚ
isinstancer   Ú	cssParserÚrootPathÚloadFont)r$   ÚdeclarationsÚresultÚdataÚnamesÚfweightrT   rU   ÚuriÚpartry   r    r    r(   Ú
atFontFace�   s>   ÿ
ÿÿ
þüzpisaCSSBuilder.atFontFaceFN©r   r   c                 C   s’   | j }|sd| ¡  }| dd¡r|d |d f}t||d |d ƒ\}}}	}
|r7|d | d|¡|||	|
|fS || dd ¡| d|¡|||	|
|fS )Nz-pdf-frame-%dÚis_landscapeFrP   r   ú-pdf-frame-borderz-pdf-frame-content)rŒ   ÚUIDrˆ   r   )r$   Únamer”   ÚfirstÚborderÚsizerŒ   ÚxÚyÚwÚhr    r    r(   Ú_pisaAddFrame´   s   ÿzpisaCSSBuilder._pisaAddFramec                 C   s`   |sdd„ }t |ƒttfv r$|D ]}||v r||| ƒ  S |  S d S ||v r.||| ƒS |S )Nc                 S   s   | S rn   r    )r¢   r    r    r(   Ú<lambda>Æ   s    z-pisaCSSBuilder._getFromData.<locals>.<lambda>)Útyper…   Útuple)r$   r”   ÚattrÚdefaultÚfuncÚar    r    r(   Ú_getFromDataÄ   s   ýzpisaCSSBuilder._getFromDatac           (      C   s²  | j }i }|pd}d }|r;|  |  d¡g|¡}|r;z
|d  ¡ d }W n ty4   |d  ¡ d }Y nw | dd ¡}||jv rJt 	| j  
d|¡¡ d|v r^tjj t|d ƒ ¡ |j¡|_d}d	|v r¾|d	 }	t|	ƒturq|	g}	g }
|	D ]5}t|ƒ ¡ }t|ƒtu r‹|
 t|ƒ¡ qu|d
kr’d}qu|dkr™d}qu|tjjv r§tjj| |_qutdƒ‚t|
ƒdkr¶t|
ƒ|_|r¾t|jƒ|_|  |ddt¡}|  |ddt¡}|  |ddt¡}|  |ddt¡}|  |dd t¡}|  |ddt¡}dD ]}||v �r|j | j||d||jd�¡  nqðg }g }|jD ]«\}}}}}}}}|  |d|t¡}|  |d|t¡}|  |d|t¡} |  |d|t¡}!|  |d|t¡}"|  |d|t¡}#|�sP|�rTtƒ }$nt|"|#d�}$|�rmt||jd |jd ƒ\}}}}t |||||jƒ\}}}}|dk�s„|dk�r�t 	| j  
d¡¡ t!||||||| |!||$d�
}%|�rµg |%_"|%g|j# |g ¡ |j#|< | |%¡ �q| |%¡ �q| dd ¡}&|&�rÐ| j j$|&| j j%j&d�}&|�s.t 	| 
d¡¡ | j||d||jd�\}}}}}}}}t |||||jƒ\}}}}|dk�s|dk�rt 	| 
d¡¡ |�s|�rtƒ }$nt||d�}$| t!||||||||||$d�
¡ t'|||jd�}'||'_(|&|'_)|j*|'_*|�rG|'j+|'_,|'|j|< d |_-g |_g |_.i i fS )NÚbodyrx   r   rP   rœ   z&template '%s' has already been definedz-pdf-page-sizeFr¡   r   TÚportraitzUnknown size value for @pager   zpadding-topz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ÚbottomrH   rG   )rŸ   r    r¡   )ÚcolorrH   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Œ   rƒ   r„   r†   Ú	ExceptionÚpopitemrˆ   ÚtemplateListrŠ   r‹   r�   r   r«   ÚPML_PAGESIZESr‡   r‰   ÚpageSizer¨   ÚListTypeÚ	TupleTypeÚappendr   ÚRuntimeErrorÚlenr©   r   r®   r   Ú	frameListr¦   r
   r   r   r	   ÚpisaStaticStoryÚframeStaticr   r�   r�   r   ÚpisaStaticListÚpisaBackgroundÚpisaBackgroundListÚ	LANDSCAPEÚpageorientationÚtemplateÚframeStaticList)(r$   rž   Ú
pseudopager’   rŒ   r”   Ú
pageBorderr“   ÚisLandscaper¡   ÚsizeListÚvalueÚvalueStrÚ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Úptr    r    r(   ÚatPageÒ   s4  ÿ
ÿÿ
ÿÿ
ÿýÿÿÿÿÿÿÿÿ
ÿù	
ÿÿÿÿÿù	ý
zpisaCSSBuilder.atPagec                 C   sz   |r9|   |  d¡g|¡}|d }|r9z| ¡ d }W n ty)   | ¡ d }Y nw | jj | j||| jj	d�¡ i i fS )Nrx   r   rP   )r¡   )
rƒ   r„   r†   rÂ   rÃ   rŒ   rÌ   rÉ   r¦   rÆ   )r$   rž   r’   r“   r”   r    r    r(   ÚatFramet  s   ÿÿzpisaCSSBuilder.atFrame)FNrš   )NN)Ú__name__Ú
__module__Ú__qualname__r™   r¦   r®   rñ   rò   r    r    r    r(   rw   ‹   s    
'
 #rw   c                   @   s   e Zd Zdd„ ZdS )ÚpisaCSSParserc              
   C   s    d }| j }| jj|| j d�}|sd S | j r%t | j ¡jr%t | j |¡| _ nt|jƒ| _ z|  | 	¡ ¡}|| _ W |S  t
yO } zt|ƒ W Y d }~|S d }~ww )Nr�   )r�   rŒ   r   ro   rp   Úurljoinrv   r—   ÚparseÚgetDatarÂ   Úprint)r$   ÚcssResourceNamer“   ÚoldRootPathÚcssFileÚer    r    r(   ÚparseExternal‡  s"   þ€þzpisaCSSParser.parseExternalN)ró   rô   rõ   rÿ   r    r    r    r(   rö   …  s    rö   c                   @   s
  e Zd ZdZdDdd„Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dEdd„Z
dd„ Zdd„ Zdd„ Zdd„ ZdFdd„Zdd„ Zd d!„ Zd"d#„ Zd$d%„ ZdGd'd(„Zd)d*„ Zd+d,„ ZdHd.d/„Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ ZdEd:d;„ZdId=d>„ZdEd?d@„ZdJdBdC„Z dS )KÚpisaContextzZ
    Helper class for creation of reportlab story and container for
    various data.
    r   éÿÿÿÿc                 C   sö   t   tjj¡| _t| dg dd� t| dd ƒ t| ddƒ t| ddƒ t| d	i dd� || _tƒ | _d
| _	t
| _tdƒ| _ttd|  ¡  ƒƒ | _| _d| _d
| _d | _|pVd| _t | j¡}|jsitj | j¡| _t| jƒ| _tddddt
d�| _d S )N)rr   ÚstoryrR   rŠ   rÕ   rÑ   rÌ   Ú
anchorFragÚ
anchorNameÚfragListÚ
fragAnchorÚ	fragStackT)Ú_copy)ÚnodeÚindexing_storyrÔ   ÚkeepInFrameIndexÚ	tableDataÚimage)Úerrr‹   ÚuidctrÚlistCounterr   )rR   ÚcssTextÚcssDefaultTextrN   )rÄ   rÎ   Ú	imageDataFÚ12ptú	default%dÚ	__dummy__)ÚauthorÚtitleÚsubjectÚkeywordsrÁ   ) Úcopyr   r«   ÚDEFAULT_FONTÚfontListr   Úcapacityr   ÚtocÚ
multiBuildr   rÆ   r   ÚbaseFontSizerm   r   r�   rl   Ú	fragBlockÚ	fragStripÚforceÚpathCallbackÚpathDocumentro   rp   rq   rr   rt   rv   ÚpathDirectoryÚdictÚmeta)r$   rr   Údebugr  ru   r    r    r(   Ú__init__Ÿ  sH   üýÿ
ÿ
ûzpisaContext.__init__c                 C   s   |  j d7  _ | j S )NrP   )r  ©r$   r    r    r(   r�   Ì  s   zpisaContext.UIDc                 C   óN   |  ¡ }| d¡r|dd… }| d¡r|dd… }|  j|  ¡ d 7  _d S ©Nz	<![CDATA[é	   éýÿÿÿz<!--é   Ú
)ÚstripÚ
startswithr  ©r$   rÚ   r    r    r(   ÚaddCSSÑ  ó   

zpisaContext.addCSSc                 C   r-  r.  )r3  r4  r  r5  r    r    r(   ÚaddDefaultCSSÚ  r7  zpisaContext.addDefaultCSSc                 C   s¨   dd l }tg d¢d�| _| | ¡| j_tdd„ ƒt_t| jƒ| _| j	| j_
| | ¡| j_tdd„ ƒt_| j | j¡| _| j | j¡| _tj| j| jd�| _| j| j_d S )Nr   )Úallrú   Úpdf)Ú	mediumSetc                 S   ó   |   ¡ S rn   ©Ú_cr,  r    r    r(   r§   ì  ó    z&pisaContext.parseCSS.<locals>.<lambda>c                 S   r<  rn   r=  r,  r    r    r(   r§   ò  r?  )Ú	userAgentÚuser)Úweakrefrw   Ú
cssBuilderÚrefr>  ÚpropertyrŒ   rö   r�   r'  r�   rø   r  r   r  Ú
cssDefaultÚCSSCascadeStrategyÚ
cssCascadeÚparser)r$   rB  r    r    r(   ÚparseCSSâ  s   
ÿzpisaContext.parseCSSc                 C   s   | j  |¡ d S rn   )r  rÉ   )r$   r”   r    r    r(   ÚaddStoryû  ó   zpisaContext.addStoryNc                 C   s.   |d ur|ng }t   |¡t   | j¡| _}|S rn   )r  r  )r$   r  r    r    r(   Ú	swapStoryþ  s   zpisaContext.swapStoryc                 C   sÊ   t d|  ¡  |jd�}t||dƒ t|j|j |jd ƒ|_|jp#|j	|_|j|_
|jd u r5|jr5|j|_|jd u rA|jrA|j|_|jd u rM|jrM|j|_|jd u rY|jrY|j|_t|j	|j|jƒ|_	|S )Nr  )rM   )rS   rV   rX   r?   r2   r3   r4   r5   r6   rW   rZ   r<   rF   rd   rb   rc   rg   re   rf   r^   r\   r]   ra   r_   r`   r:   r;   r8   r9   r7   g      ô?)r   r�   rM   r   Úmaxr0   r1   rV   ri   rS   ÚbulletFontSizerc   rb   rW   rf   re   r]   r\   r`   r_   r   rT   rU   )r$   rŸ   rk   r    r    r(   ÚtoParagraphStyle  s*   ÿÿÿ	zpisaContext.toParagraphStylec              	   C   s†   g }t j d¡D ]+}d| | jjd< tj | j| ¡| _tj 	| dddddœd¡ |  
| j¡}| |¡ q|| j_|  | j¡ d | _d S )Né   zpdftoclevel%dÚclassr   )r±   r´   r²   r³   T)ÚsixÚmovesÚranger	  Ú
attributesr   rI  Ú
CSSCollectÚcssAttrÚCSS2FragrP  rl   rÉ   r  ÚlevelStylesrK  r
  )r$   ÚstylesÚiÚpstyler    r    r(   ÚaddTOC/  s"   üû
zpisaContext.addTOCc                 C   s   | j stƒ | _d| _ d S d S )NT)r   r   r
  r,  r    r    r(   ÚaddPageCountA  s   
þzpisaContext.addPageCountc                 C   s   d S rn   r    )r$   Úfragsrk   r    r    r(   ÚdumpParaF  ó   zpisaContext.dumpParaFc                 C   s°  |p| j }d| _ t| jƒ}d}| jD ]}t|j|jƒ|j }t||j|j |ƒ}||_q|s6| j	 
¡ rÌ| jrÌ| j}|  |¡}|jrE||_nt|j|jƒ|j |_t |j¡}d |_|set| j| j ƒdkrÆ| jrv| j | jd jdd�¡ n| j ¡ }	d|	_d|	_	| j |	¡ |  | j| j |¡ t| j	|| j| j |d�}
|j|
_|j|
_|j|
_|j|
_d|
_| jrÁt|
| j| j d	d
¡d�}
|   |
¡ g | _d |_d | _i | _|  !¡  d S )NFr   r  rN   )rR   rQ   )r`  r#   rN  Úalignr¶   )Úside)"r$  Úreversedr  r   rY   rV   r1   rN  r0   rR   r3  r"  rP  r  r#   rË   r  rÉ   r)   rl   rS   ra  r   rK   r>   rL   rM   ÚautoLeadingr  r   r  rˆ   rK  Ú	clearFrag)r$   r$  Ú	rfragListÚ
maxLeadingrl   r0   rŸ   rk   r#   ÚblankÚparar    r    r(   ÚaddParaI  sr   


ÿÿÿ
ÿÿ

üý
zpisaContext.addParac                 C   s   g | _ d| _d| _d S )NTrN   )r  r#  rR   r,  r    r    r(   rg  —  s   
zpisaContext.clearFragc                 K   s   | j jdi |¤ŽS ©Nr    ©rl   r)   ©r$   Úkwr    r    r(   ÚcopyFragœ  s   zpisaContext.copyFragc                 K   s   | j jdi |¤Ž| _ | j S rm  rn  ro  r    r    r(   ÚnewFragŸ  s   zpisaContext.newFragc                 C   s<   |j r|j  d¡r| j ||j dd … f¡ | j |¡ d S )Nú#rP   )rA   r4  r  rÉ   r  )r$   rl   r    r    r(   Ú_appendFrag£  s   zpisaContext._appendFragrN   c                 C   sü  | j  ¡  }}|jdkr|jdkrd|_d|_|jr+|j t |_t|jt dƒ|_n|jr=|jt	 |_t|jt dƒ|_t
|j|j|jƒ |_|_| dd¡ dt¡ dt¡}|jdkr¨t d	|¡D ]B}|  j|7  _d
|v std|v r„| ¡ }d|_d|_|  |¡ qc| dd¡}t d|¡D ]}| ¡ }|dkrœt}||_|  |¡ q�qcd S t dt d |¡D ]I}| ¡ }|tkrÏd| _t|_|  j|7  _|  |¡ q²d d| d  ¡ ¡dd… |_| jrî|j ¡ |_|jrîd| _|  j|j7  _|  |¡ q²d S )NrP   r   é   õ   Â­rN   u   Ã‚Â r   Úprez(\r\n|\n|\r)r2  úú	z        z(\ )ú ú(ú)Tr¢   r  F)rl   r)   r*   r+   rV   ÚsubFractionr,   rN  Ú	sizeDeltaÚsuperFractionr   rS   rT   rU   ri   ÚreplaceÚNBSPrh   ÚreÚsplitrR   Ú	lineBreakrt  r$  Újoinr#  Úlstrip)r$   rR   rl   ÚbaseFragr    r    r(   ÚaddFrag©  sd   ÿý
ûò òzpisaContext.addFragc                 C   s   | j  | j¡ |  ¡  d S rn   )r  rÉ   rl   rr  r,  r    r    r(   ÚpushFragí  s   zpisaContext.pushFragc                 C   s   | j  ¡ | _d S rn   )r  Úpoprl   r,  r    r    r(   ÚpullFragñ  rL  zpisaContext.pullFragrQ  c                 C   s0   zt d | j ¡  ¡ d |… ¡ƒW S    Y dS )Nrz  rN   )Úreprr…  r	  Útoxmlrƒ  )r$   Úlr    r    r(   Ú_getFragmentõ  s   "zpisaContext._getFragmentc                 C   s   dS )Nr   r    r,  r    r    r(   Ú_getLineNumberû  rb  zpisaContext._getLineNumberc                 C   s   dt |ƒ|  d¡f S )Nz%s
%sé2   )r‡   r�  )r$   Úmsgr    r    r(   Úcontextþ  s   þzpisaContext.contextc                 G   óZ   |  j d7  _ | j tjj|  ¡ t|ƒ|  d¡f¡ z|  	|| ¡W S    |  	|¡ Y S ©NrP   r‘  )
r‹   rŠ   rÉ   r   r«   ÚPML_WARNINGr�  r‡   r�  r“  ©r$   r’  Úargsr    r    r(   r�     ó   ÿÿzpisaContext.warningc                 G   r”  r•  )
r  rŠ   rÉ   r   r«   Ú	PML_ERRORr�  r‡   r�  r“  r—  r    r    r(   Úerror  r™  zpisaContext.errorc              
   C   s¾   zK|p| j }| d¡r|W S | jd ur|  ||¡}n"|d u r't d¡ t ¡ }tj tj 	||¡¡}|r:tj 
|¡s<d }|d u rIt |  d|¡¡ |W S    tj|  d|||¡dd� Y d S )Nzdata:z;Could not find main directory for getting filename. Use CWDzFile '%s' does not existzgetFile %r %r %rrP   )Úexc_info)r'  r4  r%  rŠ   r‹   rq   Úgetcwdrr   Únormpathr…  Úisfiler�   )r$   rž   r‚   rr   Únvr    r    r(   Ú_getFileDeprecated  s*   


ÿÿzpisaContext._getFileDeprecatedc                 C   s*   | j durt|  ||¡ƒS t||p| jƒS )z-
        Returns a file name or None
        N)r%  r   r¡  r'  )r$   rž   r‚   r    r    r(   r   ,  s   
zpisaContext.getFileÚ	helveticac                 C   s„   t |ƒturt |ƒtjvrt|ƒ}| ¡  d¡}|D ] }t |ƒtjvr't|ƒ}| j | ¡  	¡ d¡}|dur:|  S q| j |d¡S )z 
        Name of a font
        ú,N)
r¨   rÇ   rS  Ústring_typesr‡   r3  rƒ  r  rˆ   r‰   )r$   r•   r«   rž   Úfontr    r    r(   ÚgetFontName4  s   ÿzpisaContext.getFontNamec                 C   sX   |d ur|ng }t |ƒ| jt |ƒ ¡ < |D ]}t|ƒtjvr"t |ƒ}|| jt |ƒ< qd S rn   )r‡   r  r‰   r¨   rS  r¤  )r$   ÚfontnameÚaliasr­   r    r    r(   ÚregisterFontE  s   ýzpisaContext.registerFontÚWinAnsiEncodingc                 C   s@  |�r|�r|}|j }t d|¡ t|ƒtu r|}n
dd„ | d¡D ƒ}dd„ |D ƒ}|d }| d¡}	d |	d d	… ¡|	d	 }
}| ¡ }|d
v r“d|||f }|| jv rat 	|  
d|¡¡ d S | ¡ }t t||ƒ¡ dD ]}dD ]}d|||f | jvr†t||||ƒ qsqo|  |||g ¡ d S |dv �r|dkr«| ¡ }t|
d ƒ}| ¡ }n| ¡ }t|
d ƒ}| ¡ }d|||f }|| jv rÐt 	|  
d|¡¡ d S t ||¡}|j}t |¡ t |||¡}t |¡ dD ]}dD ]}d|||f | jv�rt||||ƒ qðqì|  ||||g ¡ d S t 
|  
d¡¡ d S d S d S )NzLoad font %rc                 s   s    � | ]}|r|  ¡  ¡ V  qd S rn   )r‰   r3  ©Ú.0r¢   r    r    r(   Ú	<genexpr>Z  s   € z'pisaContext.loadFont.<locals>.<genexpr>r£  c                 S   s   g | ]}t |ƒ‘qS r    )r‡   r«  r    r    r(   Ú
<listcomp>]  s    z(pisaContext.loadFont.<locals>.<listcomp>r   Ú.r  )ÚttcÚttfz%s_%d%dz+Repeated font embed for %s, skip new embed )r   rP   )ÚafmÚpfbr²  z.pfbz.afmz*Repeated font embed for %s, skip new embedzwrong attributes for <pdf:font>)r—   rŠ   r*  r¨   rÇ   rƒ  r…  r‰   r  r‹   r�   ÚgetNamedFiler   r©  r   r   r   ÚEmbeddedType1Facerž   ÚregisterTypeFaceÚFont)r$   r•   ry   ÚencodingrT   rU   ÚfileÚ	fontAliasrS   ru   ÚbaseNameÚsuffixÚfullFontNameÚfilenamer²  Útfiler³  ÚfaceÚfontNameOriginalÚjustFontr    r    r(   r‘   M  s|   


ÿÿ€þ



ÿ
ÿ
ÿ€þÿ«zpisaContext.loadFont)r   r  rn   )F)rN   N)rQ  )r¢  )rª  r   r   )!ró   rô   rõ   Ú__doc__r+  r�   r6  r8  rJ  rK  rM  rP  r^  r_  ra  rl  rg  rq  rr  rt  rˆ  r‰  r‹  r�  r�  r“  r�   r›  r¡  r   r¦  r©  r‘   r    r    r    r(   r   ™  s>    
-	
,
N
D
	



r   )Gr  Úloggingrq   r‚  Ú	reportlabÚreportlab.lib.enumsr   Úreportlab.lib.fontsr   Úreportlab.lib.pagesizesr   r   Úreportlab.lib.stylesr   Úreportlab.pdfbaser   Úreportlab.pdfbase.ttfontsr   Úreportlab.platypus.framesr	   r
   Úreportlab.platypus.paraparserr   r   r   rS  Úxhtml2pdf.defaultr   Úxhtml2pdf.parserÚxhtml2pdf.utilr   r   r   r   r   r   r   r   Úxhtml2pdf.w3cr   Úxhtml2pdf.xhtml2pdf_reportlabr   r   r   r   r   r©   rÈ   r…   rÇ   ro   ÚImportErrorÚurllib.parserø   Ú	rl_configÚwarnOnMissingFontGlyphsÚ	getLoggerrŠ   r~  r}  r  r�  r)   rm   rv   Ú
CSSBuilderrw   Ú	CSSParserrö   Úobjectr   r    r    r    r(   Ú<module>   sP   (ÿ
9 {