a
    ¢…¢fQ'  ã                   @   sz   d dl mZmZmZ ddlmZmZmZmZm	Z	 ddl
mZmZ ddlmZmZ ddlmZ ddlmZ G dd	„ d	ƒZd
S )é    )ÚOptionalÚTupleÚUnioné   )ÚBooleanObjectÚFloatObjectÚ
NameObjectÚNumberObjectÚTextStringObject)ÚArrayObjectÚDictionaryObject)ÚDEFAULT_FITÚFit)ÚRectangleObject)Ú
hex_to_rgbc                   @   sB  e Zd ZdZddlmZmZ edee	e
eeeef f eeeedœdd„ƒZedeee	e
eeeef f eeeeeeeedœ
dd„ƒZede
eef e
eef ee	e
eeeef f eeedœdd„ƒZedee	e
eeeef f ee edœdd„ƒZedddefee	e
eeeef f ee ee ee eedœdd„ƒZdS )ÚAnnotationBuildera>  
    The AnnotationBuilder creates dictionaries representing PDF annotations.

    Those dictionaries can be modified before they are added to a PdfWriter
    instance via `writer.add_annotation`.

    See `adding PDF annotations <../user/adding-pdf-annotations.html>`_ for
    it's usage combined with PdfWriter.
    é   )ÚFitTypeÚZoomArgTypeFr   )ÚrectÚtextÚopenÚflagsÚreturnc                 C   sT   t tdƒtdƒtdƒtdƒtdƒt| ƒtdƒt|ƒtdƒt|ƒtdƒt|ƒiƒ}|S )	zÿ
        Add text annotation.

        :param Tuple[int, int, int, int] rect:
            or array of four integers specifying the clickable rectangular area
            ``[xLL, yLL, xUR, yUR]``
        :param bool open:
        :param int flags:
        ú/Typeú/Annotú/Subtypez/Textú/Rectú	/Contentsz/Openz/Flags)r   r   r   r
   r   r	   )r   r   r   r   Ztext_obj© r   úT/var/www/sistema_ama/venv/lib/python3.9/site-packages/PyPDF2/generic/_annotations.pyr      s    úÿ
zAnnotationBuilder.textÚ	HelveticaÚ14ptÚ000000Úffffff)
r   r   ÚfontÚboldÚitalicÚ	font_sizeÚ
font_colorÚborder_colorÚbackground_colorr   c	                 C   sà   d}	|du r|	d }	|du r$|	d }	|	| d | }	|	d | }	d}
t |ƒD ]}|
t|ƒ d }
qL|
d }
tƒ }| td	ƒtd
ƒtdƒtdƒtdƒt|ƒtdƒt| ƒtdƒt|	ƒtdƒt|
ƒtdƒtdd„ t |ƒD ƒƒi¡ |S )a¡  
        Add text in a rectangle to a page.

        :param str text: Text to be added
        :param RectangleObject rect: or array of four integers
            specifying the clickable rectangular area ``[xLL, yLL, xUR, yUR]``
        :param str font: Name of the Font, e.g. 'Helvetica'
        :param bool bold: Print the text in bold
        :param bool italic: Print the text in italic
        :param str font_size: How big the text will be, e.g. '14pt'
        :param str font_color: Hex-string for the color
        :param str border_color: Hex-string for the border color
        :param str background_color: Hex-string for the background of the annotation
        zfont: Tzbold zitalic ú z;text-align:left;color:#Ú Zrgr   r   r   z	/FreeTextr   r   z/DSz/DAz/Cc                 S   s   g | ]}t |ƒ‘qS r   ©r   ©Ú.0Únr   r   r    Ú
<listcomp>n   ó    z/AnnotationBuilder.free_text.<locals>.<listcomp>)r   Ústrr   Úupdater   r   r
   r   )r   r   r%   r&   r'   r(   r)   r*   r+   Zfont_strZbg_color_strÚstÚ	free_textr   r   r    r7   :   s2    ÿöÿzAnnotationBuilder.free_textr-   )Úp1Úp2r   r   Ú	title_barr   c                 C   s²   t tdƒtdƒtdƒtdƒtdƒt|ƒtdƒt|ƒtdƒtt| d ƒt| d	 ƒt|d ƒt|d	 ƒgƒtd
ƒttdƒtdƒgƒtdƒttdƒtdƒtdƒgƒtdƒt|ƒiƒ}|S )a  
        Draw a line on the PDF.

        :param Tuple[float, float] p1: First point
        :param Tuple[float, float] p2: Second point
        :param RectangleObject rect: or array of four
                integers specifying the clickable rectangular area
                ``[xLL, yLL, xUR, yUR]``
        :param str text: Text to be displayed as the line annotation
        :param str title_bar: Text to be displayed in the title bar of the
            annotation; by convention this is the name of the author
        r   r   r   z/Liner   z/Tz/Lr   r   z/LENú/ICg      à?r   )r   r   r   r
   r   r   )r8   r9   r   r   r:   Zline_objr   r   r    Úlinet   s6    



üÿþÿýÿæÿzAnnotationBuilder.lineN)r   Úinteriour_colorr   c                 C   sR   t tdƒtdƒtdƒtdƒtdƒt| ƒiƒ}|rNtdd„ t|ƒD ƒƒ|tdƒ< |S )	zÑ
        Draw a rectangle on the PDF.

        :param RectangleObject rect: or array of four
                integers specifying the clickable rectangular area
                ``[xLL, yLL, xUR, yUR]``
        r   r   r   z/Squarer   c                 S   s   g | ]}t |ƒ‘qS r   r.   r/   r   r   r    r2   ¾   r3   z/AnnotationBuilder.rectangle.<locals>.<listcomp>r;   )r   r   r   r   r   )r   r=   Z
square_objr   r   r    Ú	rectangle¨   s    ýÿÿzAnnotationBuilder.rectangle)r   ÚborderÚurlÚtarget_page_indexÚfitr   c              
   C   sF  ddl m} |du}|du}|s,|s,tdƒ‚|rH|rHtd|› d|› �ƒ‚|dur”dd„ |dd	… D ƒ}t|ƒd
kr¢tdd„ |d	 D ƒƒ}	| |	¡ ntdƒgd	 }ttdƒtdƒtdƒtdƒtdƒt	| ƒtdƒt|ƒiƒ}
|�rttdƒtdƒtdƒtdƒtdƒt
|ƒiƒ|
tdƒ< |�rBtt|ƒt|jƒ|jdœƒ}||
tdƒ< |
S )aú  
        Add a link to the document.

        The link can either be an external link or an internal link.

        An external link requires the URL parameter.
        An internal link requires the target_page_index, fit, and fit args.


        :param RectangleObject rect: or array of four
            integers specifying the clickable rectangular area
            ``[xLL, yLL, xUR, yUR]``
        :param border: if provided, an array describing border-drawing
            properties. See the PDF spec for details. No border will be
            drawn if this argument is omitted.
            - horizontal corner radius,
            - vertical corner radius, and
            - border width
            - Optionally: Dash
        :param str url: Link to a website (if you want to make an external link)
        :param int target_page_index: index of the page to which the link should go
                                (if you want to make an internal link)
        :param Fit fit: Page fit or 'zoom' option.
        r   )ÚBorderArrayTypeNzHEither 'url' or 'target_page_index' have to be provided. Both were None.z=Either 'url' or 'target_page_index' have to be provided. url=z, target_page_index=c                 S   s   g | ]}t |ƒ‘qS r   ©r   r/   r   r   r    r2   ò   r3   z*AnnotationBuilder.link.<locals>.<listcomp>é   é   c                 S   s   g | ]}t |ƒ‘qS r   rD   r/   r   r   r    r2   ô   r3   r   r   r   r   z/Linkr   z/Borderz/Sz/URIz/Actionz/A)rA   rB   Úfit_argsz/Dest)ÚtypesrC   Ú
ValueErrorÚlenr   Úappendr	   r   r   r   r
   Zfit_typerG   )r   r?   r@   rA   rB   rC   Zis_externalZis_internalZ
border_arrZdash_patternZlink_objZdest_deferredr   r   r    ÚlinkÃ   sP     ÿÿüÿýÿýÿzAnnotationBuilder.link)Fr   )r!   FFr"   r#   r#   r$   )r-   r-   )N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rH   r   r   Ústaticmethodr   r   r   Úfloatr4   ÚboolÚintr   r   r7   r<   r   r>   r   r   r   rL   r   r   r   r    r      s~   
  üû       ÷ö9  û

ú3 þýûúr   N)Útypingr   r   r   Ú_baser   r   r   r	   r
   Z_data_structuresr   r   Z_fitr   r   Z
_rectangler   Ú_utilsr   r   r   r   r   r    Ú<module>   s   