U
    L»{jB$  ã                   @   sb   d Z dZdZdZddlZddlZddlZddlmZ ddl	m
Z
mZmZ d	d
„ ZG dd„ dƒZdS )zPDF Template Helper for FPDF.pyz%Mariano Reingart <reingart@gmail.com>z#Copyright (C) 2010 Mariano ReingartzLGPL 3.0é    Né   )ÚFPDF)ÚPY3KÚ
basestringÚunicodec                 C   s   | d | d d | d fS )Ni   é   © )Úcolr   r   úL/var/www/html/bwave/python/venv/lib/python3.8/site-packages/fpdf/template.pyÚrgb   s    r   c                   @   sš   e Zd Zd-dd„Zdd„ Zd.dd„Zdd„ Zdd„ ZeZdd„ Z	dd„ Z
dd„ Zd/dd„Zd0dd „Zd1d!d"„Zd2d#d$„Zd3d%d&„Zd4d(d)„Zd5d+d,„ZdS )6ÚTemplateNÚA4ÚportraitÚ c
                 C   s~   |r|   |¡ | j| j| j| j| j| jdœ| _i | _t	||dd� }
| _
|
 |¡ |
 |¡ |
 |¡ |
 |¡ |
 |	¡ d S )N)ÚTÚLÚIÚBÚBCÚWÚmm)ÚformatÚorientationÚunit)Úload_elementsÚtextÚlineÚimageÚrectÚbarcodeÚwriteÚhandlersÚtextsr   ÚpdfÚ	set_titleZ
set_authorZset_creatorZset_subjectÚset_keywords)ÚselfÚinfileÚelementsr   r   ÚtitleÚauthorÚsubjectZcreatorÚkeywordsr#   r   r   r
   Ú__init__   s    
  ÿ



zTemplate.__init__c                 C   s"   d| _ || _dd„ | jD ƒ| _dS )z*Initialize the internal element structuresr   c                 S   s   g | ]}|d    ¡ ‘qS ©Úname©Úlower©Ú.0Úvr   r   r
   Ú
<listcomp>#   s     z*Template.load_elements.<locals>.<listcomp>N)Úpg_nor(   Úkeys)r&   r(   r   r   r
   r      s    zTemplate.load_elementsú,Ú.c           
      C   s¾   d}g | _ d| _ts t|dƒ}nt|ƒ}tj||d�D ]p}i }t|ƒD ]R\}}	|	 d¡sn|dkrn|	 |d¡}	n|	}	|	dkr€d}	nt	|	 
¡ ƒ}	|	||| < qF| j  |¡ q6d	d
„ | j D ƒ| _dS )z7Parse template format csv file and create elements dict)r/   ÚtypeÚx1Úy1Úx2Úy2ÚfontÚsizeÚboldÚitalicÚ	underlineÚ
foregroundÚ
backgroundÚalignr   ÚpriorityÚ	multiliner   Úrb)Ú	delimiterú'r9   r   Nc                 S   s   g | ]}|d    ¡ ‘qS r.   r0   r2   r   r   r
   r5   =   s     z&Template.parse_csv.<locals>.<listcomp>)r(   r6   r   ÚopenÚcsvÚreaderÚ	enumerateÚ
startswithÚreplaceÚevalÚstripÚappendr7   )
r&   r'   rJ   Zdecimal_sepr7   ÚfÚrowZkargsÚir4   r   r   r
   Ú	parse_csv%   s$    zTemplate.parse_csvc                 C   s   |  j d7  _ i | j| j < d S )Nr   )r6   r"   )r&   r   r   r
   Úadd_page?   s    zTemplate.add_pagec                 C   sX   |  ¡ | jkrTts*t|tƒr*| dd¡}n|d kr8d}nt|ƒ}|| j| j |  ¡ < d S )NÚlatin1Úignorer   )	r1   r7   r   Ú
isinstancer   ÚencodeÚstrr"   r6   )r&   r/   Úvaluer   r   r
   Ú__setitem__C   s    zTemplate.__setitem__c                 C   s   |  ¡ | jkS ©N)r1   r7   )r&   r/   r   r   r
   Úhas_keyP   s    zTemplate.has_keyc                    sT   || j krP| ¡ ‰ ˆ | jkr,| j| j ˆ  S ‡ fdd„| jD ƒ}|rP|d d S d S )Nc                    s    g | ]}|d    ¡ ˆ kr|‘qS r.   r0   ©r3   Úelement©Úkeyr   r
   r5   [   s    ÿz(Template.__getitem__.<locals>.<listcomp>r   r   )r7   r1   r"   r6   r(   )r&   r/   r(   r   re   r
   Ú__getitem__S   s    

zTemplate.__getitem__c                    sÔ   | j }‡ fdd„| jD ƒd }d}|d r2|d7 }|d rB|d7 }|d	 rR|d
7 }| |d ||d ¡ dddddddœ |d ¡}t|tƒr ts | dd¡}nt|ƒ}|j	|d |d  |d |d  ||dd�S )z/Divide (
) a string using a given element widthc                    s$   g | ]}|d    ¡ ˆ   ¡ kr|‘qS r.   r0   rc   ©Úelement_namer   r
   r5   c   s    ÿz,Template.split_multicell.<locals>.<listcomp>r   r   rA   r   rB   r   rC   ÚUr?   r@   r   ÚRÚC©r   rk   r   ÚDrl   r   rF   rZ   r[   r=   r;   r>   r<   T©ÚwÚhÚtxtrF   Z
split_only)
r#   r(   Úset_fontÚgetr\   r   r   r]   r^   Ú
multi_cell)r&   r   ri   r#   rd   ÚstylerF   r   rh   r
   Úsplit_multicell`   s,    ÿ     þzTemplate.split_multicellÚFc                 C   sä   | j }td| jd ƒD ]¸}| ¡  | ddd¡ |jddd� t| jdd	„ d
�D ]|}| ¡ }| j	|  
|d  ¡ |d ¡|d< d|kr | |d |d |d ¡ | j|d  ¡  |f|Ž d|krP| d¡ qPq|rà| ||¡S d S )Nr   ZArialr   é   Fr   )Úmarginc                 S   s   | d S )NrG   r   )Úxr   r   r
   Ú<lambda>z   ó    z!Template.render.<locals>.<lambda>re   r/   r   Úrotater;   r<   r:   )r#   Úranger6   rY   rs   Zset_auto_page_breakÚsortedr(   Úcopyr"   rt   r1   r~   r!   ÚupperÚoutput)r&   ÚoutfileÚdestr#   Zpgrd   r   r   r
   Úrenders   s    "zTemplate.renderr   Úarialé
   Féÿÿ  c                 O   s†  |�r‚|j t|ƒkr"|jt|ƒŽ  |jt|ƒkr>|jt|ƒŽ  | ¡  ¡ }|dkrVd}d}dD ]4}| d| ¡r^| d| ¡r^|dd… }||7 }q^|	r |d	7 }|
r¬|d
7 }|r¸|d7 }dddddddœ 	|¡}| 
|||¡ | ||¡ |d k�r|j|| || |dd|d� nn|�r8|j|| || |d|d� nJ|j|| || ||dd�d }td| ƒ |j|| || |dd|d� d S )Núarial blackr‡   r   ©r   r   rj   ú<%s>ú</%s>é   éüÿÿÿr   r   rj   r   rk   rl   rm   r   )rp   rq   rr   ÚborderÚlnrF   )rp   rq   rr   r�   rF   Tro   ztrimming: *%s*)Ú
text_colorr   Úset_text_colorÚ
fill_colorÚset_fill_colorrS   r1   rP   Úendswithrt   rs   Úset_xyÚcellru   Úprint)r&   r#   r;   r<   r=   r>   r   r?   r@   rA   rB   rC   rF   rD   Ú	backgroudrH   ÚargsÚkwargsrv   Útagr   r   r
   r   ‡   sF    
   
   ÿÿzTemplate.textc           
      O   s:   |j t|ƒkr|jt|ƒŽ  | |¡ | ||||¡ d S ra   )Ú
draw_colorr   Úset_draw_colorÚset_line_widthr   )
r&   r#   r;   r<   r=   r>   r@   rD   r›   rœ   r   r   r
   r   °   s    
zTemplate.linec	                 O   s^   |j t|ƒkr|jt|ƒŽ  |jt|ƒkr8|jt|ƒŽ  | |¡ | |||| || ¡ d S ra   )rž   r   rŸ   r”   r•   r    r   )r&   r#   r;   r<   r=   r>   r@   rD   rš   r›   rœ   r   r   r
   r   ¸   s    
zTemplate.rectc           	   	   O   s(   |r$|j ||||| || ddd� d S )Nr   )rp   rq   r:   Úlink)r   )	r&   r#   r;   r<   r=   r>   r   r›   rœ   r   r   r
   r   À   s    zTemplate.imager   c
                 O   sL   |j t|	ƒkr|jt|	ƒŽ  | ¡  ¡ }|dkrH|j|||||| d� d S )Nzinterleaved 2of5 nt)rp   rq   )rž   r   rŸ   r1   rS   Zinterleaved2of5)r&   r#   r;   r<   r=   r>   r   r?   r@   rD   r›   rœ   r   r   r
   r   Ä   s
    zTemplate.barcodeúhttp://example.comc                 O   sÚ   |j t|ƒkr|jt|ƒŽ  | ¡  ¡ }|dkr4d}d}dD ]4}| d| ¡r<| d| ¡r<|dd… }||7 }q<|	r~|d	7 }|
rŠ|d
7 }|r–|d7 }dddddddœ |¡}| |||¡ | 	||¡ | 
d||¡ d S )NrŠ   r‡   r   r‹   rŒ   r�   rŽ   r�   r   r   rj   r   rk   rl   rm   é   )r’   r   r“   rS   r1   rP   r–   rt   rs   r—   r    )r&   r#   r;   r<   r=   r>   r   r?   r@   rA   rB   rC   rF   r¡   rD   r›   rœ   rv   r�   r   r   r
   r    Í   s(    
   zTemplate.write)	NNr   r   r   r   r   r   r   )r8   r9   )rx   )r   r   r   r   r   r‡   rˆ   FFFr   r   r‰   N)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   FFFr   r¢   r   )Ú__name__Ú
__module__Ú__qualname__r-   r   rX   rY   r`   Úsetrb   rg   rw   r†   r   r   r   r   r   r    r   r   r   r
   r      sN             ÿ


             þ
)


  ÿ
	           þr   )Ú__doc__Ú
__author__Ú__copyright__Ú__license__ÚsysÚosrM   Zfpdfr   Zpy3kr   r   r   r   r   r   r   r   r
   Ú<module>   s   