
    gB$                     f    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y)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    e/home/viktor/gitlab-persoonlijk/factuur-applicatie/venv/lib/python3.12/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y)TemplateNc
                    |r| j                  |       | j                  | j                  | j                  | j                  | j
                  | j                  d| _        i | _        t        ||d      x}
| _
        |
j                  |       |
j                  |       |
j                  |       |
j                  |       |
j                  |	       y )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("iidiidjj"iit||$**P
V$OOdhev  "r   c                     d| _         || _        | j                  D cg c]  }|d   j                          c}| _        yc c}w )z*Initialize the internal element structuresr   nameN)pg_nor-   lowerkeys)r+   r-   vs      r   r   zTemplate.load_elements   s4    
 04>1QvY__&>	>s   A c                 
   d}g | _         d| _        t        st        |d      }nt        |      }t	        j
                  ||      D ]  }i }t        |      D ]Y  \  }}	|	j                  d      s|dk7  r|	j                  |d      }	n|	}	|	dk(  rd}	nt        |	j                               }	|	|||   <   [ | j                   j                  |        | j                   D 	cg c]  }	|	d	   j                          c}	| _        yc c}	w )
z7Parse template format csv file and create elements dict)r5   typex1y1x2y2fontsizebolditalic	underline
foreground
backgroundalignr   priority	multiliner   rb)	delimiter'. Nr5   )r-   r6   r   opencsvreader	enumerate
startswithreplaceevalstripappendr7   r8   )
r+   r,   rK   decimal_sepr8   frowkargsir9   s
             r   	parse_csvzTemplate.parse_csv%   s    4 
VT"AVA::a95 	(CE ~ 	#!||C([#-=		+c2AAb5AQWWYA!"d1g	# MM  '	( 15>1QvY__&>	>s   D c                 `    | xj                   dz  c_         i | j                  | j                   <   y )Nr   )r6   r$   )r+   s    r   add_pagezTemplate.add_page?   s!    

a
!#

4::r   c                    |j                         | j                  v rdt        s#t        |t              r|j                  dd      }n|d}nt        |      }|| j                  | j                     |j                         <   y y )Nlatin1ignorerN   )	r7   r8   r   
isinstancer   encodestrr$   r6   )r+   r5   values      r   __setitem__zTemplate.__setitem__C   se    ::<499$Jug6Xh7E
38DJJtzz"4::<0 %r   c                 :    |j                         | j                  v S N)r7   r8   )r+   r5   s     r   has_keyzTemplate.has_keyP   s    zz|tyy((r   c                    || j                   v rt|j                         }|| j                  v r| j                  | j                     |   S | j                  D cg c]  }|d   j                         |k(  r| }}|r|d   d   S y y c c}w )Nr5   r   r   )r8   r7   r$   r6   r-   )r+   r5   keyelementr-   s        r   __getitem__zTemplate.__getitem__S   s    499**,Cdjj zz$**-c22 48== 7v,,.#5 $ 7 7#A;v..  7s   Bc                    | j                   }| j                  D cg c](  }|d   j                         |j                         k(  r|* c}d   }d}|d   r|dz  }|d   r|dz  }|d   r|d	z  }|j                  |d
   ||d          dddddddj	                  |d         }t        |t              rt        s|j                  dd      }nt        |      }|j                  |d   |d   z
  |d   |d   z
  ||d      S c c}w )z/Divide (
) a string using a given element widthr5   r   rN   rB   r   rC   r   rD   Ur@   rA   r   RCr   rq   r   Drr   rN   rG   ra   rb   r>   r<   r?   r=   TwhtxtrG   
split_only)r%   r-   r7   set_fontgetrc   r   r   rd   re   
multi_cell)r+   r   element_namer%   rm   stylerG   s          r   split_multicellzTemplate.split_multicell`   s&   hh*.-- @wv$$&,*<*<*>>  @@AC6?ESLE8esle;#WV_U76?;SSSSB?CCGGDTUdG$T;;x1Dt9D~~gdm ;&t}WT]:!%ET  C 	C@s   -C>c                 l   | j                   }t        d| j                  dz         D ]  }|j                          |j	                  ddd       |j                  dd       t        | j                  d 	      D ]  }|j                         }| j                  |   j                  |d
   j                         |d         |d<   d|v r|j                  |d   |d   |d           | j                  |d   j                            |fi | d|v s|j                  d         |r|j                  ||      S y )Nr   Arialr      Fr   )marginc                     | d   S )NrH   r
   )xs    r   <lambda>z!Template.render.<locals>.<lambda>z   s
    a
m r   )rl   r5   r   rotater<   r=   r;   )r%   ranger6   r_   rz   set_auto_page_breaksortedr-   copyr$   r{   r7   r   r#   upperoutput)r+   outfiledestr%   pgrm   s         r   renderzTemplate.renders   s#   hh4::a<( 	"BLLNLLR(##E#3!$--4KL "!,,."&**R."4"4WV_5J5J5LgV\o"^w&JJwx0'$-O6gfo3356sFgFw&JJqM"	" ::gt,, r   c                 F   |r|j                   t        |      k7  r |j                  t        |        |j                  t        |      k7  r |j                  t        |        |j                         j                         }|dk(  rd}d}dD ]6  }|j                  d|z        s|j                  d|z        s-|dd }||z  }8 |	r|d	z  }|
r|d
z  }|r|dz  }dddddddj                  |      }|j                  |||       |j                  ||       ||j                  ||z
  ||z
  |dd|       y |r|j                  ||z
  ||z
  |d|       y |j                  ||z
  ||z
  ||d      d   }t        d|z         |j                  ||z
  ||z
  |dd|       y y )Narial blackarialrN   r   r   rp   <%s></%s>   r   r   rp   r   rq   rr   rs   r   )rv   rw   rx   borderlnrG   )rv   rw   rx   r   rG   Tru   ztrimming: *%s*)
text_colorr   set_text_color
fill_colorset_fill_colorrV   r7   rS   endswithr{   rz   set_xycellr|   print)r+   r%   r<   r=   r>   r?   r   r@   rA   rB   rC   rD   rG   rE   	backgroudrI   argskwargsr~   tags                       r   r   zTemplate.text   s    ~~s:."""C
O4~~s9~-"""C	N3::<%%'D}$E$ !OOFSL1dmmGSL6Q":DSLE! Uc\Uu|u%3,%CGGNELLeD) JJr" 2b52b5TaeLBB4quM ~~2B!%Ut & EEFH&-.2b52b5TaeLC r   c                     |j                   t        |      k7  r |j                  t        |        |j                  |       |j	                  ||||       y ri   )
draw_colorr   set_draw_colorset_line_widthr   )
r+   r%   r<   r=   r>   r?   rA   rE   r   r   s
             r   r   zTemplate.line   sF    >>3z?*CJ04 RR r   c	                    |j                   t        |      k7  r |j                  t        |        |j                  t        |      k7  r |j                  t        |        |j                  |       |j                  ||||z
  ||z
         y ri   )r   r   r   r   r   r   r    )r+   r%   r<   r=   r>   r?   rA   rE   r   r   r   s              r   r    zTemplate.rect   sr    >>3z?*CJ0>>3y>)CI/4 RB2&r   c           	      F    |r|j                  |||||z
  ||z
  dd       y y )NrN   )rv   rw   r;   link)r   )	r+   r%   r<   r=   r>   r?   r   r   r   s	            r   r   zTemplate.image   s,    IId2b2b52b5bbIA r   c
                     |j                   t        |	      k7  r |j                  t        |	        |j                         j	                         }|dk(  r|j                  ||||||z
         y y )Nzinterleaved 2of5 nt)rv   rw   )r   r   r   r7   rV   interleaved2of5)r+   r%   r<   r=   r>   r?   r   r@   rA   rE   r   r   s               r   r!   zTemplate.barcode   se    >>3z?*CJ0zz|!!#((RTBrE: )r   c                    |j                   t        |      k7  r |j                  t        |        |j                         j	                         }|dk(  rd}d}dD ]6  }|j                  d|z        s|j                  d|z        s-|dd }||z  }8 |	r|d	z  }|
r|d
z  }|r|dz  }dddddddj                  |      }|j                  |||       |j                  ||       |j                  d||       y )Nr   r   rN   r   r   r   r   r   r   r   rp   r   rq   rr   rs      )r   r   r   rV   r7   rS   r   r{   rz   r   r"   )r+   r%   r<   r=   r>   r?   r   r@   rA   rB   rC   rD   rG   r   rE   r   r   r~   r   s                      r   r"   zTemplate.write   s     >>3z?*CJ0zz|!!#= D  	C-$--2MAbz	 #5C<5esleSSSSB?CCEJT%% 	

2b		!Dr   )	NNA4portraitrN   rN   rN   rN   rN   ),rM   )F)r   r   r   r   rN   r   
   FFFrN   r     N)r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   rN   )r   r   r   r   rN   r   r   r   )r   r   r   r   rN   r   r   FFFrN   zhttp://example.comr   )__name__
__module____qualname__r3   r   r]   r_   rg   setrj   rn   r   r   r   r   r    r   r!   r"   r
   r   r   r   r      s    LVGI#??4$9 C)/C&-( MO>@6:%MR!'B PQ; NOH\r   r   )__doc__
__author____copyright____license__sysosrP   fpdfr   py3kr   r   r   r   r   r
   r   r   <module>r      s9    "4
5    + +:R Rr   