U
    imSB$                     @   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   J/home/ubuntu/graampay/app_env/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_title
set_authorset_creatorset_subjectset_keywords)selfinfileelementsr   r   titleauthorsubject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rd}	nt	|	
 }	|	||| < qF| j | q6d	d
 | j D | _dS )z7Parse template format csv file and create elements dict)r3   typex1y1x2y2fontsizebolditalic	underline
foreground
backgroundalignr   priority	multiliner   rb)	delimiter'r=   r   Nc                 S   s   g | ]}|d    qS r2   r4   r6   r   r   r
   r9   =   s     z&Template.parse_csv.<locals>.<listcomp>)r+   r:   r   opencsvreader	enumerate
startswithreplaceevalstripappendr;   )
r)   r*   rN   decimal_sepr;   frowkargsir8   r   r   r
   	parse_csv%   s$    zTemplate.parse_csvc                 C   s   |  j d7  _ i | j| j < d S )Nr   )r:   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   )	r5   r;   r   
isinstancer   encodestrr"   r:   )r)   r3   valuer   r   r
   __setitem__C   s    zTemplate.__setitem__c                 C   s   |  | jkS N)r5   r;   )r)   r3   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 r2   r4   r7   elementkeyr   r
   r9   [   s    z(Template.__getitem__.<locals>.<listcomp>r   r   )r;   r5   r"   r:   r+   )r)   r3   r+   r   rk   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rt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 r2   r4   ri   element_namer   r
   r9   c   s    z,Template.split_multicell.<locals>.<listcomp>r   r   rE   r   rF   r   rG   UrC   rD   r   RCr   rq   r   Drr   r   rJ   r`   ra   rA   r?   rB   r@   TwhtxtrJ   
split_only)
r#   r+   set_fontgetrb   r   r   rc   rd   
multi_cell)r)   r   ro   r#   rj   stylerJ   r   rn   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   Arialr      Fr   )marginc                 S   s   | d S )NrK   r   )xr   r   r
   <lambda>z       z!Template.render.<locals>.<lambda>rk   r3   r   rotater?   r@   r>   )r#   ranger:   r_   rz   set_auto_page_breaksortedr+   copyr"   r{   r5   r   r!   upperoutput)r)   outfiledestr#   pgrj   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   rp   <%s></%s>   r   r   rp   r   rq   rr   rs   r   )rv   rw   rx   borderlnrJ   )rv   rw   rx   r   rJ   Tru   ztrimming: *%s*)
text_colorr   set_text_color
fill_colorset_fill_colorrW   r5   rT   endswithr{   rz   set_xycellr|   print)r)   r#   r?   r@   rA   rB   r   rC   rD   rE   rF   rG   rJ   rH   	backgroudrL   argskwargsr}   tagr   r   r
   r      sF    
   
   zTemplate.textc           
      O   s:   |j t|kr|jt|  || ||||| d S rg   )
draw_colorr   set_draw_colorset_line_widthr   )
r)   r#   r?   r@   rA   rB   rD   rH   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 rg   )r   r   r   r   r   r   r   )r)   r#   r?   r@   rA   rB   rD   rH   r   r   r   r   r   r
   r      s    
zTemplate.rectc           	   	   O   s(   |r$|j ||||| || ddd d S )Nr   )rv   rw   r>   link)r   )	r)   r#   r?   r@   rA   rB   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)rv   rw   )r   r   r   r5   rW   interleaved2of5)r)   r#   r?   r@   rA   rB   r   rC   rD   rH   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   rp   r   rq   rr   rs      )r   r   r   rW   r5   rT   r   r{   rz   r   r    )r)   r#   r?   r@   rA   rB   r   rC   rD   rE   rF   rG   rJ   r   rH   r   r   r}   r   r   r   r
   r       s(    
   zTemplate.write)	NNr   r   r   r   r   r   r   )r<   r=   )r   )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__r1   r   r^   r_   rf   setrh   rm   r~   r   r   r   r   r   r   r    r   r   r   r
   r      sN             


             
)


  
	           r   )__doc__
__author____copyright____license__sysosrQ   fpdfr   py3kr   r   r   r   r   r   r   r   r
   <module>   s   