
    Q?hX=                        S r SSKJrJrJrJrJr  SSKJr  SS jr	SS jr
SS jrSS jrS rS	 rSS
KJrJr  S r " S S\5      rSSS/S\" S5      SSS/SSS/S\" SSS//5      S/rS rS rS/rSSS /SS!S"/SS/rS#S$S%S&S'S(S)S*S+S,S-S.S/.rSS0S1/SS/rS2/rS3 rSS4S5/SSS /SS6S7/SS8/rS9 rSS:KJ r   \ " \5        \" 5          SS; jr!/ S<PS=/PS>PS?/PS@PSA/PS>PSB/PS>PSC/PSDPSE/PSPSFPSG/PSPSHPSI/PSPSJPSK/PS>PSL/PS>PSM/PS>PSN/PSOPSP/PSPSQPSE/PSPSRPSS/PSPSPr" SST jr#/ SUPSVPS=/PS>PS?/PS@PSA/PS>PSB/PS>PSC/PSWPSXPSY/PSPSZPS[PS\PS]PS^PS_PS`PSaPSbPSbPSbPScPSdPSaPSePSePSePScPSfPSgPSh/PSPSHPSi/PSPSjPSkPSK/PS>PSL/PS>PSM/PS>PSN/PSlPSmPSnPSoPS7/PSPSpPSqPSrPSY/PSPSPr$SSs jr%/ StPSuPS_PSvPSw/PSPSxPSyPS_PSzPS{PS|PS}/PSPS~PS/PSPSPSPSPSPS~PS/PSPSPSfPSPS/PSPSP\" S5      PSPSPS/PSPSPSPSPSPSPSPSPS_PSPSP\" S5      PSP\" S5      PSxPSPSPSi/PSPSjPSkPSK/PS>PSL/PS>PSM/PS>PSN/PSPSPSmPSPSPS7/PSPSPSPSPS/PSPSPr&SS jr'SS jr(g)a  Support for Acrobat Forms in ReportLab documents

This module is somewhat experimental at this time.

Includes basic support for
    textfields,
    select fields (drop down lists), and
    check buttons.

The public interface consists of functions at the moment.
At some later date these operations may be made into canvas
methods. (comments?)

The ...Absolute(...) functions position the fields with respect
to the absolute canvas coordinate space -- that is, they do not
respect any coordinate transforms in effect for the canvas.

The ...Relative(...) functions position the ONLY THE LOWER LEFT
CORNER of the field using the coordinate transform in effect for
the canvas.  THIS WILL ONLY WORK CORRECTLY FOR TRANSLATED COORDINATES
-- THE SHAPE, SIZE, FONTSIZE, AND ORIENTATION OF THE FIELD WILL NOT BE EFFECTED
BY SCALING, ROTATION, SKEWING OR OTHER NON-TRANSLATION COORDINATE
TRANSFORMS.

Please note that all field names (titles) in a given document must be unique.
Textfields and select fields only support the "base 14" canvas fonts
at this time.

See individual function docstrings below for more information.

The function test1(...) generates a simple test file.

THIS CONTRIBUTION WAS COMMISSIONED BY REPORTLAB USERS
WHO WISH TO REMAIN ANONYMOUS.
    )	PDFString	PDFStreamPDFDictionaryPDFName	PDFObject)	obj_R_G_Bc	                 L    [        U 5      n	U	R                  XX#X$-   X5-   XgU5	      $ )zPlace a text field on the current page
with name title at ABSOLUTE position (x,y) with
dimensions (width, height), using value as the default value and
maxlen as the maximum permissible length.  If multiline is set make
it a multiline field.
)getForm	textField)
canvastitlexywidthheightvaluemaxlen	multilinetheforms
             K/var/www/html/env/lib/python3.13/site-packages/reportlab/pdfbase/pdfform.pytextFieldAbsoluter   -   s-     foGVA!'18UT]^^    c	                 F    U R                  X#5      u  p[        XXXEXgU5	      $ z\same as textFieldAbsolute except the x and y are relative to the canvas coordinate transform)absolutePositionr   )r   r   xRyRr   r   r   r   r   xAyAs              r   textFieldRelativer    7   s(    &&r-HRVBE5R[\\r   c           
      <    [        U 5      nUR                  XX#XEUS9$ )zPlace a check button field on the current page
with name title and default value value (one of "Yes" or "Off")
at ABSOLUTE position (x,y).
r   r   )r
   buttonField)r   r   r   r   r   r   r   r   s           r   buttonFieldAbsoluter$   <   s'    
 foGvevVVr   c           
      @    U R                  X45      u  px[        XX'XUS9$ )z^same as buttonFieldAbsolute except the x and y are relative to the canvas coordinate transformr"   )r   r$   )	r   r   r   r   r   r   r   r   r   s	            r   buttonFieldRelativer&   D   s&    &&r-HRveQWXXr   c                 L    [        U 5      nUR                  XX#XEXF-   XW-   5        g)zPlace a select field (drop down list) on the current page
with name title and
with options listed in the sequence options
default value value (must be one of options)
at ABSOLUTE position (x,y) with dimensions (width, height).N)r
   selectField)	r   r   r   optionsr   r   r   r   r   s	            r   selectFieldAbsoluter*   I   s'     foGuqQWahOr   c           
      D    U R                  XE5      u  p[        XX#XXg5      $ r   )r   r*   )
r   r   r   r)   r   r   r   r   r   r   s
             r   selectFieldRelativer,   R   s%    &&r-HRvebeTTr   )
PDFPatternPDFPatternIfc                      U R                   $ ! [         a3    [        5       =ol         U R                  nUR                  nXl         Us $ f = f)z/get form from canvas, create the form if needed)AcroFormAttributeError_doc_catalog)r   r   dcats       r   r
   r
   [   sH     $,J./KKjjs    :A
Ac                   :    \ rS rSrS rS	S jrS rS
S jrS rSr	g)r0   g   c                     / U l         g Nfields)selfs    r   __init__AcroForm.__init__h   s	    r   c
                    UR                   n
U
R                  5       n[        UR                  5      u  pnUR                  nUR
                  n[        X'X4XVXUUXX5      nU R                  R                  U5        UR                  U5        g r9   )
r2   thisPageRefr   _fillColorObj	_fontname	_fontsize	TextFieldr;   append_addAnnotation)r<   r   r   xminyminxmaxymaxr   r   r   docpageRGBfontfontsizefields                     r   r   AcroForm.textFieldj   s|    kk F001a  $$%D!>5!e$r   c	                    UR                   n	U	R                  5       n
[        UR                  5      u  pnUR                  nUR
                  n[        X#XEXgXXXUS9nU R                  R                  U5        UR                  U5        g )N)rP   rQ   rM   rN   rO   )
r2   r@   r   rA   rB   rC   SelectFieldr;   rE   rF   )r<   r   r   r   r)   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   s                    r   r(   AcroForm.selectFieldw   sz    kk F001a  $$E'Ta;5!e$r   c           
          UR                   nUR                  5       n	[        X#XEXUS9n
U R                  R	                  U
5        UR                  U
5        g Nr"   )r2   r@   ButtonFieldr;   rE   rF   )r<   r   r   r   rG   rH   r   r   rK   rL   rR   s              r   r#   AcroForm.buttonField   sH    kk E$dPVW5!e$r   c                     SSK Jn  [        [        [	        U SS 5      =(       d
    [        5       [	        U SS5      U" U R                  5      [	        U SS5      S9nUR                  U5      $ )Nr   )PDFArray	resourcesneedAppearancesfalsesigFlags)	ResourcesNeedAppearancesr;   SigFlags)reportlab.pdfbase.pdfdocr\   r-   FormPatterngetattrFormResourcesr;   format)r<   documentr\   proxys       r   rh   AcroForm.format   s[    5;%d;t<O$+D1B7$K#DKK074
ST;UW ||H%%r   r:   N @B r   g480@gMb-@)
__name__
__module____qualname____firstlineno__r=   r   r(   r#   rh   __static_attributes__ r   r   r0   r0   g   s    %%%&r   r0   z<<
z/NeedAppearances rb   z
/DA z/Helv 0 Tf 0 g z
z/DR ra   z/Fields r;   rc   z
/SigFlags z>>c                      SSK Jn   U " 5       nSUl        [        R	                  5        H  u  p#[        X#5      X'   M     [        [        5      US'   U$ )Nr   )r      ZaDb)rd   r   __RefOnly__FORMFONTNAMESitemsFormFontr-   ZaDbPattern)r   fontsdictionaryfullname	shortnames       r   FormFontsDictionaryr      sL    6#oO"#O,224%-h%B"  5(5OFr   c            	      b    [        [        [        [        [        [        5      S9[	        5       S9$ )N)PDFDocEncoding)EncodingFont)r-   FormResourcesDictionaryPatternEncodingPatternPDFDocEncodingPatternr   ru   r   r   rg   rg      s(    4)/TiIjk.02 2r   zQ << /BaseFont    /ZapfDingbats /Name    /ZaDb /Subtype    /Type1 /Type    /Font>>z<<z /Encoding r   z /Font r   HelvHeBoCourCoBoCoObCoBOHeObHeBOTimeTiBoTiItTiBI)	HelveticaHelvetica-BoldCourierzCourier-BoldzCourier-ObliquezCourier-BoldObliquezHelvetica-ObliquezHelvetica-BoldObliquezTimes-Romanz
Times-BoldzTimes-ItaliczTimes-BoldItalicz /PDFDocEncoding r   a#  << /Differences    [ 24 /breve /caron /circumflex /dotaccent /hungarumlaut /ogonek /ring /tilde 39 /quotesingle 96 /grave 128 /bullet /dagger /daggerdbl /ellipsis /emdash /endash /florin /fraction /guilsinglleft /guilsinglright /minus /perthousand /quotedblbase /quotedblleft /quotedblright /quoteleft /quoteright /quotesinglbase /trademark /fi /fl /Lslash /OE /Scaron /Ydieresis /Zcaron /dotlessi /lslash /oe /scaron /zcaron 160 /Euro 164 /currency 166 /brokenbar 168 /dieresis /copyright /ordfeminine 172 /logicalnot /.notdef /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu 183 /periodcentered /cedilla /onesuperior /ordmasculine 188 /onequarter /onehalf /threequarters 192 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis    ] /Type /Encoding>>c                 `    SSK Jn  [        [        U" U 5      U" U5      [        [        5      S9$ )Nr   )r   )BaseFontNamer   )rd   r   r-   FormFontPatternr   )r   r   r   s      r   r|   r|   l  s5    0o0APT`j  lA  aB  C  Cr   z /BaseFont r   z /Name r   z" /Subtype  /Type1  /Type  /Font >>c                      g r9   ru   ru   r   r   resetPdfFormr   ~  s    r   )register_resetc                     SSK JnJn  SnU(       a  US-  n[        U   n[	        [
        U" U5      XvU" U 5      X#XEU" U5      XXUS9$ )Nr   )r   r   i   )r   r   rL   r   rG   rH   rI   rJ   fontnamerQ   rM   rN   rO   Flags)rd   r   r   rz   r-   TextFieldPattern)r   r   rG   rH   rI   rJ   rL   r   rP   rQ   rM   rN   rO   r   r   r   r   r   s                     r   rD   rD     sX    ;ET"H&%e,V%e,&x08AZ_	a ar   z<< /DA (r    rQ   z Tf rM   rN   rO   z	 rg) /DV r   z- /F 4 /FT /Tx/MK << /BC [ 0 0 0 ] >> /MaxLen r   z /P rL   z /Rect     [rG   rH   rI   rJ   z ]/Subtype /Widget /T r   z /Type    /Annot /V z /Ff r   c                    SSK JnJnJn  X;  a%  [	        S[        U5      < S[        U5      < 35      e[        U   n[        [        X5      5      nU" U5      n[        [        UU" U5      UU" U 5      X4XVU" U5      XXS9$ )Nr   )r   r   r\   zvalue z must be one of options )OptionsSelectedPager   rG   rH   rI   rJ   r   rQ   rM   rN   rO   )rd   r   r   r\   
ValueErrorreprrz   listmapr-   SelectFieldPattern)r   r   r)   rG   rH   rI   rJ   rL   rP   rQ   rM   rN   rO   r   r   r\   r   optionstringsoptionarrays                      r   rU   rU     s     FEedSZm\]]T"HY01M=)K()(/d$U+&x08AT Tr   z<< % a select list
 /DA z (z rg)
z /DV r   z /F z    4
z /FT z	    /Ch
z /MK z    <<z    /BCz	        [z            0z	        ]z    /BGz            1z    >>
z /Opt r   r   z/Rectz    [z    ] 
z/Subtypez    /Widget
z /T z /Type z
    /Annotz /V c                 :   US;  a  [        S[        U5      -   5      eSU-  nSU-  nSU-  n	[        [        [	        U 5      X#X%-   X5-   [        S/5      [        S[        5       -  XVS9[        S	[        5       -  XVS9[        S
[        5       -  XVS9[        U5      US9$ )N)YesOffz%button value must be 'Yes' or 'Off': g{הF?gm}?gt?z<< /S  /Hide >>z'0.749 g 0 0 %(width)s %(height)s re f
r"   z0.749 g 0 0 %(width)s %(height)s re f q 1 1 %(width)s %(height)s re W n BT /ZaDb %(fontSize)s Tf 0 g 1 0 0 1 %(dx)s %(dy)s Tm (4) Tj ET
zgq 1 1 %(width)s %(height)s re W n BT /ZaDb %(fontSize)s Tf 0 g   1 0 0 1 %(dx)s %(dy)s Tm (4) Tj ET Q
)r   rG   rH   rI   rJ   HideAPDOffAPDYesAPNYesValuer   )r   r   r-   ButtonFieldPatternr   ButtonStreamvarsr   )
r   r   rG   rH   rL   r   r   fontSizedxdys
             r   rY   rY     s    N"@eLMM&H
%	B
	B($U+$*%'8&9:)*UX\X^*^fk{)  +x  {  {A  +A27H)  +V  Y]  Y_  +_27H#EN
! 
!r   z<< z/AAz    /D r   z    >> z/AP z    /Dz
        <<z        /Off r   z        /Yes r   z
        >>z    /Nz        << r   z /AS r   z /DA z/ZaDb 0 Tf 0 gz/DV z/F z    4 z/FT z	    /Btn z/H z    /T z/MK z    /AC (\376\377)z    /CA 4z    /RC u   þÿz/P z    ] z    /Widget z/T z/Typez    /Annot z/V z >>c                     [        5       nSUS'   S[        5       -  US'   [        5       n[        [        5      US'   [        5       nSUS'   X4S'   XBS	'   U$ )
z>everything except the length for the button appearance streamsz/FormSubTypez[0 0 %(width)s %(height)s]BBoxrx   z[ /PDF /Text ]ProcSetr   ra   )r   r   r-   r}   )r   r   resultrP   r]   s        r   buttonStreamDictionaryr   6  s^    _FF91DF:F6N?Dk*DLI+Iif#;Mr   c                 :    [        [        XS9U 5      n/ Ul        U$ rX   )r   r   filters)contentr   r   r   s       r   r   r   C  s     -EH'RFFNMr   Nrl   ro   )rn   r   	   r   r   Mb?r   )r   r   r   r   r   ))__doc__rd   r   r   r   r   r   reportlab.lib.colorsr   r   r    r$   r&   r*   r,   reportlab.pdfbase.pdfpatternr-   r.   r
   r0   re   r   rg   r}   r   rz   r   r   r|   r   r   reportlab.rl_configr   rD   r   rU   r   rY   r   r   r   ru   r   r   <module>r      sH	  "L ] \ *_]
WY
PU B
*&y *&Z 	 &' )#$f }V 
XJv Z):,7 8 2	
  f 	& "  !#    F 	RS jC
  f f 	&	 . |   _`a l  #| %+ -05 25 7:U <? ADuF
 		
  

         #& )/x 25 8>hA  		!  !"#( 		)( )* +, 		-, -. / 4 >CT )) ) l) ) #|) %+) -05) 25) 7:U) <?) ADu) FP)
 ) ) ) ) ) ) ) ) 	) 
) ) )  !)" #)$ %)& 
')( ))* +), -). /)0 1)2 3)4 	5)6 7)6 7)8 9): ;): 
;)< =)> ?)> 
?)> ?)> x?)> "%?)> (.h?)> 14?)> 7=X?)@ A)B C)D E)F G)H I)H 
I)J 
K)L M)N O)P Q)P Q)R S) V!$;e ; ; ; 
; 	; 
	; 
; ; 	; 	; ; ; 

; ; ;  

!;  !;" #;" #;$ 	%;& ';( );, 

-;, -;. /;0 1;2 3;4 		5;4 5;6 7;8 

 9;8 $9;: ;;< 		=;< =;> ?;@ 	A;B C;D E;F G;H 
I;J K;L 	M;N O;R S;T 
#U;V W;X 
* Y;Z 
[;Z [;\ ];^ _;^ _;` a;b c;b 
c;b c;b xc;b "%c;b (.hc;b 14c;b 7=Xc;d 	e;d 
e;f g;h i;j k;l m;l m;n o;p q;r s;t 		u;t u;v w; |r   