o
    ôSk[ñ  ã                	   @   s$  d dl mZ d dl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 d dlmZmZmZmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZmZ d dlZd dl Z d dl!Z!d dl"Z"d dl#Z#d dl$m%  m&Z& zd dl'm(Z) W n   zd dl(Z)W n   dZ)Y Y e# *d¡Z+dZ,dZ-G dd„ de.ƒZ/G dd„ dƒZ0G dd„ deƒZ1G dd„ deƒZ2dZ3G dd„ de4ƒZ5G dd„ dee0ƒZ6G dd„ dee0ƒZ7G dd„ dee0ƒZ8G d d!„ d!ee0ƒZ9G d"d#„ d#ee0ƒZ:G d$d%„ d%eƒZ;G d&d'„ d'eƒZ<G d(d)„ d)eƒZ=G d*d+„ d+eƒZ>G d,d-„ d-eƒZ?dS ).é    )Úmd5)ÚTA_RIGHT)ÚParagraphStyle)ÚflattenÚopen_for_readÚgetStringIOÚLazyImageReaderÚ
haveImages)ÚBaseDocTemplateÚPageTemplateÚIndexingFlowable)ÚFlowableÚCondPageBreakÚKeepInFrameÚParagraphAndImage)ÚTableOfContents)ÚTableÚ
TableStyle)Ú	Paragraph)ÚgetUIDÚgetBorderStyleNÚ	xhtml2pdfgffffffî?z3xhtml2pdf <https://github.com/xhtml2pdf/xhtml2pdf/>c                   @   ó   e Zd Zdd„ Zdd„ ZdS )ÚPTCyclec                 C   s   d| _ d| _t | ¡ d S ©Nr   )Ú_restartÚ_idxÚlistÚ__init__©Úself© r!   úO/var/www/html/env/lib/python3.10/site-packages/xhtml2pdf/xhtml2pdf_reportlab.pyr   5   s   zPTCycle.__init__c                 c   s6   � 	 | | j  V  |  j d7  _ | j t| ƒkr| j| _ q)Né   )r   Úlenr   r   r!   r!   r"   ÚcyclicIterator:   s   €üzPTCycle.cyclicIteratorN)Ú__name__Ú
__module__Ú__qualname__r   r%   r!   r!   r!   r"   r   4   s    r   c                   @   r   )ÚPmlMaxHeightMixInc                 C   sb   || _ |dk r#t| dƒr"t| jdƒsd| j_t|| jjƒ | _ | j_n|| _ t| dƒs.d| _ | j S )Nip ÚcanvÚmaxAvailHeightValuer   ÚavailHeightValue)r,   Úhasattrr*   r+   Úmax)r    ÚavailHeightr!   r!   r"   ÚsetMaxHeightC   s   
þ€
zPmlMaxHeightMixIn.setMaxHeightc                 C   s   t | dƒsdS | jS )Nr,   r   )r-   r,   r   r!   r!   r"   ÚgetMaxHeightT   s   
zPmlMaxHeightMixIn.getMaxHeightN)r&   r'   r(   r0   r1   r!   r!   r!   r"   r)   B   s    r)   c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )Ú
PmlBaseDoczj
    We use our own document template to get access to the canvas
    and set some informations once.
    c                 C   s   t | jjj_d S ©N)ÚPRODUCERr*   Ú_docÚinfoÚproducerr   r!   r!   r"   Ú
beforePage`   s   zPmlBaseDoc.beforePagec              	   C   s:   t |ddƒr|  d|jt t |j¡d¡| jf¡ d S d S )NÚoutlineFÚTOCEntryr#   )	ÚgetattrÚnotifyÚoutlineLevelÚcgiÚescapeÚcopyÚdeepcopyÚtextÚpage)r    Úflowabler!   r!   r"   ÚafterFlowableu   s   
ýÿzPmlBaseDoc.afterFlowablec                 C   s8  |   |d ¡}|   |d ¡}|r|r|d |d g}	 t|tƒrBt| dƒr'| `| jD ]}|j|kr;| j |¡| _ dS q*t	d| ƒ‚t|t
ƒrSt| dƒrN| `|| _dS t|ttfƒr˜tƒ }|D ] }|dkrkt|ƒ|_q_| jD ]}|j| ¡ kr~| |¡  nqnq_|s†t	dƒ‚|jt|ƒkr‘t	dƒ‚| ¡ | _dS td	ƒ‚)
zS
        if pt has also templates for even and odd page convert it to list
        Ú_leftÚ_rightÚ_nextPageTemplateCycleNzcan't find template('%s')Ú*z No valid page templates in cyclezInvalid cycle restart positionz/Argument pt should be string or integer or list)Ú_has_template_for_nameÚ
isinstanceÚstrr-   rH   ÚpageTemplatesÚidÚindexÚ_nextPageTemplateIndexÚ
ValueErrorÚintr   Útupler   r$   r   ÚstripÚappendr%   Ú	TypeError)r    ÚptÚhas_left_templateÚhas_right_templateÚtÚcÚptnr!   r!   r"   Úhandle_nextPageTemplate}   sH   



þ





þ€z"PmlBaseDoc.handle_nextPageTemplatec                 C   s$   | j D ]}|j| ¡ kr dS qdS )NTF)rM   rN   rT   )r    ÚnameÚtemplater!   r!   r"   rJ   «   s
   
ÿz!PmlBaseDoc._has_template_for_nameN)r&   r'   r(   Ú__doc__r8   rE   r]   rJ   r!   r!   r!   r"   r2   Z   s    .r2   c                   @   s@   e Zd ZdZdZeZdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dS )ÚPmlPageTemplateÚportraitÚ	landscapec                 K   sL   g | _ g | _d | _tj| fi |¤Ž d| _d| _d | _d| _d| _	d| _
d S )Nr   T)ÚpisaStaticListÚpisaBackgroundListÚpisaBackgroundr   r   Ú_page_countÚ_first_flowÚimgÚphÚhÚw)r    Úkwr!   r!   r"   r   ¸   s   
zPmlPageTemplate.__init__c                 C   s<   | j r| ¡ | jkrd| _ | j S | ¡ | _| ¡ |j_| j S ©NF)rh   ÚgetPageNumberrg   Ú_doctemplate)r    Úcanvasr!   r!   r"   ÚisFirstFlowÆ   s   
þzPmlPageTemplate.isFirstFlowc                 C   ó   | j | jkS r3   )ÚpageorientationÚPORTRAITr   r!   r!   r"   Ú
isPortraitÏ   ó   zPmlPageTemplate.isPortraitc                 C   rs   r3   )rt   Ú	LANDSCAPEr   r!   r!   r"   ÚisLandscapeÒ   rw   zPmlPageTemplate.isLandscapec                    sð  ˆ   ¡  zîd }|  ˆ ¡r€t| dƒr€| jr€| j ¡ s€| jj d¡r}zRtt 	| j 
¡ ¡ƒ| _| j ¡ \}}ˆ j\}| _|}t|ƒ| }| j}	t|	ƒ| }
t||
ƒ}|  ¡ r^|| | _|| | _n|  ¡ rqt||
ƒ}|| | _|| | _W n   t d¡ Y n| j}|r‰| j |¡ n%|  ¡ ržˆ  | jd| j| j | j| j¡ n|  ¡ r®ˆ  | jdd| j| j¡ ‡ ‡‡fdd„‰zˆ  ¡ ‰| jD ]}t |¡}|j}ˆ|ƒ |  |ˆ ¡ q¾W n t!yä   tj"ddd	� Y nw W ˆ  #¡  d S W ˆ  #¡  d S ˆ  #¡  w )
Nrf   zimage/zDraw backgroundr   c                    sr   t | ƒD ]2}t|tƒr%|jD ]}|jrtˆƒ|_q|jr#tˆ jj	ƒ|_qqt|t
ƒr6dd„ |jD ƒ}ˆ|ƒ qd S )Nc                 S   s   g | ]	}|D ]}|‘qqS r!   r!   )Ú.0ÚsublistÚitemr!   r!   r"   Ú
<listcomp>  s    zIPmlPageTemplate.beforeDrawPage.<locals>.pageNumbering.<locals>.<listcomp>)r   rK   ÚPmlParagraphÚfragsÚ
pageNumberrL   rB   Ú	pageCountrp   rg   ÚPmlTableÚ_cellvalues)ÚobjListÚobjÚfragÚ
flat_cells©rq   ÚpageNumberingÚ
pagenumberr!   r"   r‰     s   

€ü
€õz5PmlPageTemplate.beforeDrawPage.<locals>.pageNumberingra   r#   )Úexc_info)$Ú	saveStaterr   r-   rf   ÚnotFoundÚmimetypeÚ
startswithÚPmlImageReaderÚsixÚBytesIOÚgetDatari   ÚgetSizeÚ	_pagesizerj   ÚfloatÚminrv   rl   rk   ry   r.   ÚlogÚ	exceptionre   rU   Ú	drawImagero   rd   r@   rA   ÚpisaStaticStoryÚaddFromListÚ	ExceptionÚdebugÚrestoreState)r    rq   Údocrf   ÚiwÚihÚpwÚwidthÚwfactorÚheightÚhfactorÚ
factor_minÚ
factor_maxÚframeÚstoryr!   rˆ   r"   ÚbeforeDrawPageÕ   sj   
ÿþý




€"

ûÿù
þzPmlPageTemplate.beforeDrawPageN)r&   r'   r(   ru   rx   rt   r   rr   rv   ry   r¬   r!   r!   r!   r"   ra   ²   s    	ra   r#   c                   @   s\   e Zd ZdZi Zdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )r�   z>
    Wraps up either PIL or Java to get data from bitmaps
    c              	   C   sZ  t |tƒr|j| _d S || _d | _d | _d | _d | _d | _d}t	rKt |t	j
ƒrK|| _t|dd ƒ| _z| jj| _W d S  tyJ   dt| ƒ | _Y d S w z±t|dƒ| _t | jt ¡ jƒr]d}|dkrš| j ¡ }|d@ rvz| j ¡  W n   Y |d@ r”| js‰ddlm} || jjƒ | j t|ƒ ¡ |¡}t|ƒ| _n|dkr®t |tjƒr®| j ¡  | `t| _trÍ| jsº|   | j¡| _t| jd	d ƒd
krÊ| j!| _"W d S W d S ddl#m$} z|| jƒ\| _| _}W n   t%dƒ‚| j!| _"| j ¡ | _d | _&| j 'd¡ W d S    t( )¡ \}}}	t*|dƒ�r,t+|j,d ƒd|  }
|j,d d… |
f |_,t%d -|||	¡ƒ‚‚ )Nr   ÚfpzPILIMAGE_%dÚbé   é   )Úregister_resetéÿÿÿÿÚformatÚJPEG)ÚreadJPEGInfozBImaging Library not available, unable to import bitmaps only jpegsÚargsz fileName=%rz{0} {1} {2}).rK   r�   Ú__dict__ÚfileNameÚ_imageÚ_widthÚ_heightÚ_transparentÚ_dataÚPILImageÚImager;   r­   ÚAttributeErrorrN   r   r‘   r’   Ú	__class__ÚreadÚcloseÚ_cacheÚ	rl_configr±   ÚclearÚ
setdefaultr   Údigestr   Ú	text_typer   r	   Ú_read_imageÚ_jpeg_fhÚjpeg_fhÚreportlab.pdfbase.pdfutilsrµ   ÚRuntimeErrorÚ_dataAÚseekÚsysr‹   r-   rL   r¶   r³   )r    r¸   ÚimageReaderFlagsÚdatar±   rµ   r[   ÚetÚevÚtbÚar!   r!   r"   r   ,  sz   
ÿ

ÿzPmlImageReader.__init__c                 C   sR   t jdd… dkr ddlm} ddlm} || ¡ ƒ}| |¡S tr't |¡S d S )Nr   r°   Újava)ÚImageIO)ÚByteArrayInputStream)	rÑ   ÚplatformÚjavax.imageiorÙ   Újava.iorÚ   rÂ   r¾   Úopen)r    r­   rÙ   rÚ   Úinput_streamr!   r!   r"   rÊ   s  s   

ÿzPmlImageReader._read_imagec                 C   s   | j }| d¡ |S r   )r­   rÐ   )r    r­   r!   r!   r"   rË   |  s   
zPmlImageReader._jpeg_fhc                 C   ó   d S r3   r!   r   r!   r!   r"   rÌ   �  ó   zPmlImageReader.jpeg_fhc                 C   s\   | j d u s
| jd u r(tjdd… dkr | j ¡ | _ | j ¡ | _n| jj\| _ | _| j | jfS )Nr   r°   rØ   )rº   r»   rÑ   rÛ   r¹   ÚgetWidthÚ	getHeightÚsizer   r!   r!   r"   r”   „  s   zPmlImageReader.getSizec              	   C   s^  | j du r¬d| _tjdd… dkrkddl}ddlm} |  ¡ \}}| || d¡}|| j	dd|||d|ƒ}| 
¡  g }|j}|D ]}	|t|	d? d@ ƒƒ |t|	d	? d@ ƒƒ |t|	d@ ƒƒ q@d
 |¡| _ d| _| j S | j	}
|
j }| _|dkrŽ|
 ¡  t|
 ¡ d ƒ| _|
 d¡}
d| _n|dvrš|
 d¡}
d| _t|
dƒr§|
 ¡ | _ | j S |
 ¡ | _ | j S )z'Return byte array of RGB data as stringNr   r°   rØ   )ÚPixelGrabberÚié   éÿ   é   Ú ÚRGBÚRGBAé   )ÚLrë   ÚCMYKÚtobytes)r½   rÏ   rÑ   rÛ   ÚjarrayÚjava.awt.imagerå   r”   Úzerosr¹   Ú
grabPixelsrU   ÚchrÚjoinÚmodeÚloadr�   ÚsplitÚconvertr-   rð   Útostring)r    rñ   rå   r¤   r¦   ÚbufferÚpgÚpixelsr×   ÚrgbÚimr÷   r!   r!   r"   Ú
getRGBData�  sB   
ñ




ÿzPmlImageReader.getRGBDatac                 C   s   |   ¡ \}}|||  ¡ fS r3   )r”   r  )r    r¤   r¦   r!   r!   r"   ÚgetImageDataµ  s   zPmlImageReader.getImageDatac                 C   s�   t jdd… dkrd S d| jjv rF| jjd d }| jj}t|dƒr&|j}nt|dƒr/|j}nd S ztt 	|||d … ¡ƒW S    Y d S d S )Nr   r°   rØ   Útransparencyrí   ÚpaletterÓ   )
rÑ   rÛ   r¹   r6   r  r-   rÓ   r   r‘   Ú	iterbytes)r    r  r  r!   r!   r"   ÚgetTransparent¹  s   

zPmlImageReader.getTransparentc                 C   sF   z| j  ¡ }|st| ƒ}dt|ƒ W S    | j }|st| ƒ}| Y S )NzPmlImageObject_%s)r¸   rÂ   rN   Úhash)r    Úfnr!   r!   r"   Ú__str__Ï  s   
zPmlImageReader.__str__N)r&   r'   r(   r`   rÄ   r   rÊ   rË   rÌ   r”   r  r  r  r	  r!   r!   r!   r"   r�   &  s    G		(r�   c                   @   s8   e Zd Zddd„Zdd„ Zdd„ Zd	d
„ Zddd„ZdS )ÚPmlImageNÚautoc                 K   sV   || _ d| _|| _|| _|| _|  ¡ }|r| ¡ \| _| _|p!| j| _	|p'| j| _
d S )NÚCENTER)rm   ÚhAlignÚ_maskÚ_imgdatarŽ   ÚgetImager”   Ú
imageWidthÚimageHeightÚ	drawWidthÚ
drawHeight)r    rÓ   r¤   r¦   ÚmaskrŽ   rm   ri   r!   r!   r"   r   Þ  s   zPmlImage.__init__c                 C   sp   |   |¡}t| j|ƒ}t|ƒ| j }t| j|t ƒ}t|ƒ| j }t||ƒ}| j| | _| j| | _| j| jfS )zS This can be called more than once! Do not overwrite important data like drawWidth )r0   r—   r  r–   r  ÚMAX_IMAGE_RATIOÚdWidthÚdHeight)r    Ú
availWidthr/   r¤   r¥   r¦   r§   Úfactorr!   r!   r"   Úwrapë  s   

zPmlImage.wrapc                 C   s   t t | j¡ƒ}|S r3   )r�   r‘   r’   r  ©r    ri   r!   r!   r"   r  ù  s   zPmlImage.getImagec                 C   s*   |   ¡ }| jj|dd| j| j| jd� d S )Nr   )r  )r  r*   rš   r  r  r  r  r!   r!   r"   Údrawý  s   
ûzPmlImage.drawc                 C   s   t  | |¡}|S r3   )r   Úidentity)r    ÚmaxLenÚrr!   r!   r"   r    s   zPmlImage.identity)NNr  Nr3   )r&   r'   r(   r   r  r  r  r  r!   r!   r!   r"   r
  Ü  s    
	r
  c                   @   r   )ÚPmlParagraphAndImagec                 C   s"   | j | j_ t | ||¡}| j` |S r3   )r*   ÚIr   r  )r    r  r/   Úresultr!   r!   r"   r    s   
zPmlParagraphAndImage.wrapc                 C   s.   t | dƒs| j ||¡\| _| _t | ||¡S )NÚwI)r-   r"  r  r$  ÚhIr   rù   ©r    r  r/   r!   r!   r"   rù     s   
zPmlParagraphAndImage.splitN)r&   r'   r(   r  rù   r!   r!   r!   r"   r!    s    r!  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
r~   c           
      C   sª   d| _ | jD ]L}t|dƒrR|jjdkrR|j}|jdkrR|jdkrRd| _ t|j|ƒ}t|ƒ|j }t|j|t	 ƒ}t|ƒ|j }t||ƒ}	| j|	9  _| j|	9  _qd S )NFÚcbDefnri   r   T)
Ú	hasImagesr   r-   r'  Úkindr¤   r¦   r—   r–   r  )
r    r  r/   r†   ri   r¤   r¥   r¦   r§   r  r!   r!   r"   Ú_calcImageMaxSizes  s   

€õzPmlParagraph._calcImageMaxSizesc                 C   sš   |   |¡}| j}|j|j |j |j | _|j|j |j	 |j
 | _|| j8 }|| j8 }|  ||¡ t | ||¡ | j| j | _| j| j | _| j| jfS r3   )r0   ÚstyleÚpaddingLeftÚpaddingRightÚborderLeftWidthÚborderRightWidthÚ
deltaWidthÚ
paddingTopÚpaddingBottomÚborderTopWidthÚborderBottomWidthÚdeltaHeightr*  r   r  r¤   r¦   )r    r  r/   r+  r!   r!   r"   r  )  s   


zPmlParagraph.wrapc                 C   sJ   t | jƒdkr	g S t| dƒs|  ||¡ || j8 }|| j8 }t | ||¡S )Nr   r0  )r$   r   r-   r  r0  r5  r   rù   r&  r!   r!   r"   rù   F  s   


zPmlParagraph.splitc              	      s  t | ddƒrQt | jddƒd }|| jk r2tƒ }| j |¡ | j | j||| j ¡ |d7 }|| jk s| j| j_tƒ }| j |¡ | j | j|| j| j ¡ |d7 }| j‰ | j	‰ˆj
}ˆj}d}|| }| }| j|ˆj  d|  }| jd|  }	|r“ˆ  ¡  ˆ  |¡ ˆ j||||	ddd� ˆ  ¡  d ˆ_
ˆ  ¡  ˆ  ˆjˆj dˆjˆj  ¡ t | ¡ ˆ  ¡  |ˆ_
ˆ  ¡  ‡ ‡fd	d
„}
|
ˆjˆjˆj|||||	 ƒ |
ˆjˆjˆj|| ||| ||	 ƒ |
ˆjˆjˆj |||	 || ||	 ƒ |
ˆj!ˆj"ˆj#|||| |ƒ ˆ  ¡  d S )Nr9   FÚoutlineLastr²   r#   r   r¯   )ÚfillÚstrokec                    sV   |r%t | ƒr'|d u rˆj}|d ur)ˆ  |¡ ˆ  |¡ ˆ  ||||¡ d S d S d S d S r3   )r   Ú	textColorÚsetStrokeColorÚsetLineWidthÚline)Úbstyler¤   ÚcolorÚx1Úy1Úx2Úy2©rq   r+  r!   r"   Ú_drawBorderLineš  s   

øz*PmlParagraph.draw.<locals>._drawBorderLine)$r;   r*   r=   r   ÚbookmarkPageÚaddOutlineEntryrB   ÚoutlineOpenr6  r+  Ú	backColorÚ
leftIndentr¤   ÚrightIndentr¦   rŒ   ÚsetFillColorÚrectrŸ   Ú	translater,  r.  r1  r3  r   r  ÚborderLeftStyleÚborderLeftColorÚborderRightStyler/  ÚborderRightColorÚborderTopStyleÚborderTopColorÚborderBottomStyler4  ÚborderBottomColor)r    ÚlastÚkeyÚbgrI  ÚbpÚxÚyrl   rk   rD  r!   rC  r"   r  T  sŠ   
ü
÷

ü

þ
ýýýýzPmlParagraph.drawN)r&   r'   r(   r*  r  rù   r  r!   r!   r!   r"   r~     s
    r~   c                   @   ó   e Zd Zdd„ ZdS )ÚPmlKeepInFramec                 C   s4   t |dƒ}t |dƒ}|| _|  |¡| _t | ||¡S )Ng      ð?)r.   ÚmaxWidthr0   Ú	maxHeightr   r  r&  r!   r!   r"   r  »  s
   

zPmlKeepInFrame.wrapN©r&   r'   r(   r  r!   r!   r!   r"   r]  º  ó    r]  c                   @   s&   e Zd Zdd„ Zd	dd„Zdd„ ZdS )
r‚   c                 C   sH   t |ƒt dƒkr|d t|dd… ƒ }n
|du s|dkr|}t||ƒS )z4
        Helper for calculating percentages
        rê   g      Y@Nr²   rI   )Útyper–   r—   )r    rl   Úmaxwr!   r!   r"   Ú
_normWidthÄ  s
   
zPmlTable._normWidthNé@ c              	   C   s,   |dkr
|   ¡ p	|}tj| ||||||d�S )Nre  )ÚWÚHÚaH)r1   r   Ú_listCellGeom)r    ÚVrl   Úsrf  rg  rh  r!   r!   r"   ri  Î  s   zPmlTable._listCellGeomc                 C   s4  |   |¡ z| j W n   || _Y |  | j|¡}|}d}| j}t|ƒD ]!\}}|d us0|dkr;|  ||¡}||8 }n|d7 }d }|||< q$|d }	|dkrdt|ƒD ]\}}|d u rct|	|| ƒ||< qRt|ƒ|kr�|t|ƒ }
tt|ƒƒD ]
}|| |
 ||< qvt|ƒ| }|dkr“|d  |8  < t	 
| ||¡S )Nr   rI   r#   g{®Gáz„?)r0   Ú
totalWidthrd  Ú
_colWidthsÚ	enumerater.   ÚsumÚranger$   r   r  )r    r  r/   rl  ÚremainingWidthÚremainingColsÚnewColWidthsræ   ÚcolWidthÚminCellWidthÚquotientÚdiffr!   r!   r"   r  Ô  s<   



€zPmlTable.wrap)NNre  )r&   r'   r(   rd  ri  r  r!   r!   r!   r"   r‚   Ã  s    

r‚   c                   @   s&   e Zd Zdd„ Zdd„ Zd	dd„ZdS )
ÚPmlPageCountc                 C   s   t  | ¡ d| _d S rn   )r   r   Úsecond_roundr   r!   r!   r"   r     s   

zPmlPageCount.__init__c                 C   s   | j }d| _ |S )NT)ry  )r    rk  r!   r!   r"   ÚisSatisfied  s   zPmlPageCount.isSatisfiedr   c                 C   rà   r3   r!   )r    rq   rZ  r[  Ú_sWr!   r!   r"   ÚdrawOn  rá   zPmlPageCount.drawOnN)r   )r&   r'   r(   r   rz  r|  r!   r!   r!   r"   rx    s    rx  c                   @   r\  )ÚPmlTableOfContentsc              	   C   s
  || j  | j f}t| jƒdkrdg}n| j}d}g }g d¢}t|ƒD ]E\}}	|	dd… \}
}}| j|
 }|rG| dd|fd|ft||jƒf¡ |j}t	d|
 |dt
d	�}t||ƒ}tt|ƒ|ƒ}| ||g¡ q"t||t|ƒd
�| _| j | j||¡\| _| _| j| jfS )z>
        All table properties should be known by now.
        r   )r   z!Placeholder for table of contentsr   ))ÚVALIGN©r   r   ©r²   r²   ÚTOP)ÚLEFTPADDINGr  r€  r   )ÚRIGHTPADDINGr  r€  r   )Ú
TOPPADDINGr  r€  r   )ÚBOTTOMPADDINGr  r€  r   Nrí   r„  r²   zleftColLevel%d)r^   ÚparentrI  Ú	alignment)Ú	colWidthsr+  )ÚrightColumnWidthr$   Ú_lastEntriesrn  ÚlevelStylesrU   r.   ÚspaceBeforeÚ
spaceAfterr   r   r   rL   r   r   Ú_tableÚwrapOnr*   r¤   r¦   )r    r  r/   ÚwidthsÚ_tempEntriesÚ
lastMarginÚ	tableDataÚ
tableStyleræ   ÚentryÚlevelrB   ÚpageNumÚleftColStyleÚrightColStyleÚleftParaÚ	rightParar!   r!   r"   r    sD   ÿ

ýý
ýzPmlTableOfContents.wrapNr`  r!   r!   r!   r"   r}    ra  r}  c                   @   r   )ÚPmlRightPageBreakc                 C   rà   r3   r!   r   r!   r!   r"   r   L  rá   zPmlRightPageBreak.__init__c                 C   s2   | j  ¡ d s|| _|| _||fS d | _| _dS ©Nr¯   r   r  ©r*   ro   r¤   r¦   r&  r!   r!   r"   r  O  ó   zPmlRightPageBreak.wrapN©r&   r'   r(   r   r  r!   r!   r!   r"   rœ  K  ó    rœ  c                   @   r   )ÚPmlLeftPageBreakc                 C   rà   r3   r!   r   r!   r!   r"   r   Y  rá   zPmlLeftPageBreak.__init__c                 C   s2   | j  ¡ d r|| _|| _||fS d | _| _dS r�  rž  r&  r!   r!   r"   r  \  rŸ  zPmlLeftPageBreak.wrapNr   r!   r!   r!   r"   r¢  X  r¡  r¢  c                   @   s*   e Zd Z		ddd„Zdd„ Zd	d
„ ZdS )ÚPmlInputrB   é
   rê   Nc                 C   s:   || _ || _|| _|| _|| _|d ur|| _d S g | _d S r3   )r¤   r¦   rb  r^   ÚdefaultÚoptions)r    r^   rb  r¤   r¦   r¥  r¦  r!   r!   r"   r   h  s   zPmlInput.__init__c                 G   s   | j | jfS r3   )r¤   r¦   )r    r¶   r!   r!   r"   r  q  rw   zPmlInput.wrapc              
   C   s  | j }| ¡  | dd¡ | jdkr*t || jdd| j| j¡ | 	dd| j| j¡ nX| jdkr:| 	dd| j| j¡ nH| jdkrb| j
rMt || jddd¡ n
t || jddd¡ | 	dd| j| j¡ n | jd	kr‚t || j| j
| jdd| j| j¡ | 	dd| j| j¡ | ¡  d S )
NÚ	Helveticar¤  rB   r   ÚradioÚcheckboxÚYesÚOffÚselect)r*   rŒ   ÚsetFontrb  ÚpdfformÚtextFieldRelativer^   r¤   r¦   rL  r¥  ÚbuttonFieldRelativeÚselectFieldRelativer¦  rŸ   )r    r[   r!   r!   r"   r  t  s"   



"zPmlInput.draw)rB   r¤  r¤  rê   N)r&   r'   r(   r   r  r  r!   r!   r!   r"   r£  g  s    
ÿ	r£  )@Úhashlibr   Úreportlab.lib.enumsr   Úreportlab.lib.stylesr   Úreportlab.lib.utilsr   r   r   r   r	   Úreportlab.platypus.doctemplater
   r   r   Úreportlab.platypus.flowablesr   r   r   r   Ú"reportlab.platypus.tableofcontentsr   Úreportlab.platypus.tablesr   r   Úxhtml2pdf.reportlab_paragraphr   Úxhtml2pdf.utilr   r   r‘   rÑ   r>   r@   ÚloggingÚreportlab.pdfbase.pdfformÚpdfbaser®  Ú	PIL.Imager¿   r¾   Ú	getLoggerr˜   r  r4   r   r   r)   r2   ra   Ú_ctrÚobjectr�   r
  r!  r~   r]  r‚   rx  r}  rœ  r¢  r£  r!   r!   r!   r"   Ú<module>   sZ   €
Xq 7/ "	C7