
    imSB$                     n    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	 Z G 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                 $    | dz  | dz  dz  | dz  fS )Ni       )cols    ]/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/fpdf/template.pyrgbr      s     5LC3J,S99    c                       e Zd Z	 	 ddZd Zdd	Zd
 Zd ZeZd Z	d Z
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 )'TemplateNA4portrait c
                    |r|                      |           | j        | j        | j        | j        | j        | j        d| _        i | _        t          ||d          x}
| _
        |
                    |           |
                    |           |
                    |           |
                    |           |
                    |	           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(   s              r   __init__zTemplate.__init__   s     	)x((("ididj"it|$*P P
V$OOOOdhev      """""r   c                 N    d| _         || _        d | j        D             | _        dS )z*Initialize the internal element structuresr   c                 B    g | ]}|d                                           S namelower.0vs     r   
<listcomp>z*Template.load_elements.<locals>.<listcomp>#   &    >>>1QvY__&&>>>r   N)pg_nor0   keys)r.   r0   s     r   r   zTemplate.load_elements   s+    
 >>>>>			r   ,.c                    d}g | _         d| _        t          st          |d          }nt          |          }t	          j        ||          D ]}i }t          |          D ]n\  }}	|	                    d          s|dk    r|	                    |d          }	n|	}	|	dk    rd}	n!t          |	
                                          }	|	|||         <   o| j                             |           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'rE   r   Nc                 B    g | ]}|d                                           S r9   r;   r=   s     r   r@   z&Template.parse_csv.<locals>.<listcomp>=   rA   r   )r0   rB   r   opencsvreader	enumerate
startswithreplaceevalstripappendrC   )
r.   r/   rW   decimal_seprC   frowkargsir?   s
             r   	parse_csvzTemplate.parse_csv%   s   4 
 	VT""AAVA:a9555 	( 	(CE ~~ 	# 	#!||C(( [#-=-=		+c22AAAb55AAQWWYYA!"d1gM  ''''>>>>>			r   c                 D    | xj         dz  c_         i | j        | j         <   d S )Nr   )rB   r'   )r.   s    r   add_pagezTemplate.add_page?   s%    

a

!#
4:r   c                    |                                 | j        v rpt          s,t          |t                    r|                    dd          }n|d}nt          |          }|| j        | j                 |                                 <   d S d S )Nlatin1ignorer   )	r<   rC   r   
isinstancer   encodestrr'   rB   )r.   r:   values      r   __setitem__zTemplate.__setitem__C   s    ::<<49$$ #Jug66 #Xh77E

38DJtz"4::<<000 %$r   c                 8    |                                 | j        v S N)r<   rC   )r.   r:   s     r   has_keyzTemplate.has_keyP   s    zz||ty((r   c                     || j         v rX|                                | j        v r| j        | j                          S fd| j        D             }|r|d         d         S d S d S )Nc                 P    g | ]"}|d                                           k     |#S r9   r;   )r>   elementkeys     r   r@   z(Template.__getitem__.<locals>.<listcomp>[   s=     7 7 7v,,..#55 $555r   r   r    )rC   r<   r'   rB   r0   )r.   r:   r0   ry   s      @r   __getitem__zTemplate.__getitem__S   s    49**,,Cdj  z$*-c227 7 7 74= 7 7 7 /#A;v.. / /r   c                    | j         }fd| j        D             d         }d}|d         r|dz  }|d         r|dz  }|d         r|d	z  }|                    |d
         ||d                    ddddddd                    |d                   }t	          |t
                    rt          s|                    dd          }nt          |          }|	                    |d         |d         z
  |d         |d         z
  ||d          S )z/Divide (
) a string using a given element widthc                 t    g | ]4}|d                                                                            k    2|5S r9   r;   )r>   rx   element_names     r   r@   z,Template.split_multicell.<locals>.<listcomp>c   sL     @ @ @wv$$&&,*<*<*>*>>> >>>r   r   r   rN   r   rO   r   rP   UrL   rM   r   RCr   r   r   Dr   r   rS   rl   rm   rJ   rH   rK   rI   TwhtxtrS   
split_only)
r(   r0   set_fontgetrn   r   r   ro   rp   
multi_cell)r.   r    r}   r(   rx   stylerS   s     `    r   split_multicellzTemplate.split_multicell`   sC   h@ @ @ @$- @ @ @@AC6?(ESLE8*esle;-#WV_U76?;;;SSSSB??CCGGDTUUdG$$ 	T 	;;x11DDt99D~~gdm ;&t}WT]:!%ET  C C 	Cr   Fc                    | j         }t          d| j        dz             D ]'}|                                 |                    ddd           |                    dd           t          | j        d 	          D ]}|                                }| j	        |         
                    |d
                                         |d                   |d<   d|v r)|                    |d         |d         |d                     | j        |d                                                  |fi | d|v r|                    d           ː)|r|                    ||          S d S )Nr   Arialr      Fr   )marginc                     | d         S )NrT   r
   )xs    r   <lambda>z!Template.render.<locals>.<lambda>z   s
    a
m r   )ry   r:   r    rotaterH   rI   rG   )r(   rangerB   rj   r   set_auto_page_breaksortedr0   copyr'   r   r<   r   r&   upperoutput)r.   outfiledestr(   pgrx   s         r   renderzTemplate.renders   sl   h4:a<(( 	" 	"BLLNNNLLR(((##E#333!$-4K4KLLL " "!,,.."&*R."4"4WV_5J5J5L5LgV\o"^"^w&&JJwx0'$-OOO6gfo33556sFFgFFFw&&JJqMMM"  	-::gt,,,	- 	-r   r   arial
   F  c                    |r|j         t          |          k    r |j        t          |            |j        t          |          k    r |j        t          |            |                                                                }|dk    rd}d}dD ]A}|                    d|z            r'|                    d|z            r|dd         }||z  }B|	r|d	z  }|
r|d
z  }|r|dz  }ddddddd	                    |          }|
                    |||           |                    ||           |#|                    ||z
  ||z
  |dd|           d S |r"|                    ||z
  ||z
  |d|           d S |                    ||z
  ||z
  ||d          d         }t          d|z             |                    ||z
  ||z
  |dd|           d S d S )Narial blackr   r   r   r   r~   <%s></%s>   r   r   r~   r   r   r   r   r   )r   r   r   borderlnrS   )r   r   r   r   rS   Tr   ztrimming: *%s*)
text_colorr   set_text_color
fill_colorset_fill_colorra   r<   r^   endswithr   r   set_xycellr   print)r.   r(   rH   rI   rJ   rK   r    rL   rM   rN   rO   rP   rS   rQ   	backgroudrU   argskwargsr   tags                       r   r    zTemplate.text   sE     !	M~s:..""C
OO44~s9~~--""C	NN33::<<%%''D}$$E$ ! !OOFSL11 !dmmGSL6Q6Q !":DSLE!Uc\U#u|u&%3,%CCGGNNELLeD))) JJr" 2b52b5TaeLLLLL MBB4quMMMMM ~~2B!%Ut & E EEFH&-...2b52b5TaeLLLLLC!	M !	Mr   c                     |j         t          |          k    r |j        t          |            |                    |           |                    ||||           d S rt   )
draw_colorr   set_draw_colorset_line_widthr!   )
r.   r(   rH   rI   rJ   rK   rM   rQ   r   r   s
             r   r!   zTemplate.line   s]    >3z??**CJ004   RR     r   c	                 (   |j         t          |          k    r |j        t          |            |j        t          |          k    r |j        t          |            |                    |           |                    ||||z
  ||z
             d S rt   )r   r   r   r   r   r   r#   )r.   r(   rH   rI   rJ   rK   rM   rQ   r   r   r   s              r   r#   zTemplate.rect   s    >3z??**CJ00>3y>>))CI//4   RB2&&&&&r   c           	      R    |r$|                     |||||z
  ||z
  dd           d S d S )Nr   )r   r   rG   link)r"   )	r.   r(   rH   rI   rJ   rK   r    r   r   s	            r   r"   zTemplate.image   sE     	BIId2b2b52b5bbIAAAAA	B 	Br   r   c
                     |j         t          |	          k    r |j        t          |	            |                                                                }|dk    r|                    ||||||z
             d S d S )Nzinterleaved 2of5 nt)r   r   )r   r   r   r<   ra   interleaved2of5)r.   r(   rH   rI   rJ   rK   r    rL   rM   rQ   r   r   s               r   r$   zTemplate.barcode   s    >3z??**CJ00zz||!!##(((RTBrE::::: )(r   http://example.comc                 6   |j         t          |          k    r |j        t          |            |                                                                }|dk    rd}d}dD ]A}|                    d|z            r'|                    d|z            r|dd         }||z  }B|	r|d	z  }|
r|d
z  }|r|dz  }ddddddd                    |          }|                    |||           |	                    ||           |
                    d||           d S )Nr   r   r   r   r   r   r   r   r   r   r~   r   r   r   r      )r   r   r   ra   r<   r^   r   r   r   r   r%   )r.   r(   rH   rI   rJ   rK   r    rL   rM   rN   rO   rP   rS   r   rQ   r   r   r   r   s                      r   r%   zTemplate.write   sE    >3z??**CJ00zz||!!##=  D  	 	C-- $--2M2M AbDz#5C<5"esleSSSSB??CCEJJT%%%% 	

2b		!Dr   )	NNr   r   r   r   r   r   r   )rD   rE   )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__r6   r   rh   rj   rr   setru   rz   r   r   r    r!   r#   r"   r$   r%   r
   r   r   r   r      s_       LVGI# # # #? ? ?? ? ? ?4$ $ $9 9 9 C) ) )/ / /C C C&- - - -( MO>@6:%M %M %M %MR! ! ! !' ' ' 'B B B B PQ; ; ; ; NOH\     r   r   )__doc__
__author____copyright____license__sysosr[   fpdfr   py3kr   r   r   r   r   r
   r   r   <module>r      s    " !4
5                   + + + + + + + + + +: : :R R R R R R R R R Rr   