a
    ¥Q•h—'  ã                   @   sâ   d Z dZddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZmZ g dfd	d
„ZddddœZddddœZd+dd„Zd,dd„Zd-dd„Zdd„ Zdd„ Zd.dd „Zd!d"„ Zd#d$„ Zd/d%d&„Zd'd(„ ZG d)d*„ d*ƒZdS )0z3.3.0Ú é    N)ÚBytesIO)Ú	rl_config)ÚImageReaderÚ	isUnicode)ÚasciiBase85EncodeÚasciiBase85Decodeé<   c                 C   s0   t dt| ƒ|ƒD ]}| | ||| … ¡ q|S ©Nr   )ÚrangeÚlenÚappend)ÚsrcÚdstZ	chunkSizeÚi© r   úS/var/www/sistema_ama/venv/lib/python3.9/site-packages/reportlab/pdfbase/pdfutils.pyÚ_chunker   s    r   ÚRGBÚCMYKÚG)r   r   ÚLé   é   é   Fc                 C   sÂ   dd l }t| ƒ}|d ur2| |¡ |r2| ¡ r2d S | ¡ \}}| ¡ }g }|j}	|	dƒ |	d||t|j f ƒ |	dƒ t|ƒ|| t	|j  ksšJ dƒ‚| 
|¡}
t|
ƒ}t||ƒ |	dƒ |S )Nr   ÚBIz(/W %s /H %s /BPC 8 /CS /%s /F [/A85 /Fl]ÚIDúWrong amount of data for imageÚEI)Úzlibr   r   Újpeg_fhÚgetSizeÚ
getRGBDataÚ_mode2csÚmoder   Ú	_mode2bppÚcompressr   r   )ÚfilenameÚIMGÚ
detectJpegr   ÚimgÚimgwidthÚ	imgheightÚrawÚcoder   Ú
compressedÚencodedr   r   r   ÚmakeA85Image   s&    
"

r1   c                 C   sº   dd l }t| ƒ}|d ur2| |¡ |r2| ¡ r2d S | ¡ \}}| ¡ }g }|j}	|	dƒ |	d||t|j f ƒ |	dƒ t|ƒ|| t	|j  ksšJ dƒ‚| 
|¡}
t|
|ƒ |	dƒ |S )Nr   r   z#/W %s /H %s /BPC 8 /CS /%s /F [/Fl]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   ÚmakeRawImage9   s$    
"

r2   c                 C   sÆ   t j | ¡d tjrdpd }| |krft| ƒrXddlm} |rdtd||ƒ 	¡  
d¡ƒS qÂtd|  ƒ‚n\tjrxt| |ƒ}n
t| |ƒ}|rŠ|S t|dƒ}| d |¡d ¡ | ¡  tjrÂtd	| ƒ dS )
zHProcesses image as if for encoding, saves to a file with .a85 extension.r   ú.a85z.bin)Úopen_for_readNú
zNo such cached image %sÚwbzcached image as %s)ÚosÚpathÚsplitextr   ÚuseA85ÚcachedImageExistsÚreportlab.lib.utilsr4   ÚfilterÚreadÚsplitÚIOErrorr1   r2   ÚopenÚwriteÚjoinÚcloseÚverboseÚprint)r'   ZreturnInMemoryr(   Ú
cachednamer4   r.   Úfr   r   r   ÚcacheImageFileT   s    

rI   c                 C   sT   ddl }t| tƒr|  | ¡}n| }|D ](}t|ƒrFtjrNtd| ƒ q&t|ƒ q&dS )zòPreprocesses one or more image files.

    Accepts either a filespec ('C:\mydir\*.jpg') or a list
    of image filenames, crunches them all to save time.  Run this
    to save huge amounts of time when repeatedly building image
    documents.r   Nz#cached version of %s already exists)ÚglobÚ
isinstanceÚstrr;   r   rE   rF   rI   )ÚspecrJ   Úfilelistr'   r   r   r   ÚpreProcessImagesm   s    
rO   c                 C   s`   t j | ¡d tjrdpd }t j |¡rXt  | ¡d }t  |¡d }||krRdS dS ndS dS )z­Determines if a cached image already exists for a given file.

    Determines if a cached image exists which has the same name
    and equal or newer date to the given file.r   r3   Úbiné   r   N)r7   r8   r9   r   r:   ÚisfileÚstat)r'   rG   Zoriginal_dateZcached_dater   r   r   r;   „   s    r;   r5   ú c                 C   s$   |   d|¡  d|¡  d|¡  ||¡S )zzNormalizes different line end character(s).

    Ensures all instances of CR, LF and CRLF end up as
    the specified one.r5   úÚ
)Úreplace)ÚtextZdesiredZunlikelyr   r   r   Ú_normalizeLineEndsœ   s    ÿþýürY   c                 C   s:   t | ƒr|  d¡} tƒ }| t | ¡¡ | d¡ | ¡ S )zÂEncodes input using ASCII-Hex coding.

    This is a verbose encoding used for binary data within
    a PDF file.  One byte binary becomes two bytes of ASCII.
    Helper function used by images.úutf-8ó   >)r   Úencoder   rB   ÚbinasciiÚb2a_hexÚgetvalue)ÚinputÚoutputr   r   r   Ú_AsciiHexEncode¨   s    

rb   c                    s|   t | ƒs|  d¡} d |  ¡ ¡‰ ˆ d dks4J dƒ‚ˆ dd… ‰ tˆ ƒd dksXJ d	ƒ‚d ‡ fd
d„tdtˆ ƒdƒD ƒ¡S )zeDecodes input using ASCII-Hex coding.

    Not used except to provide a test of the inverse function.rZ   r   éÿÿÿÿú>z'Invalid terminator for Ascii Hex StreamNé   r   z(Ascii Hex stream has odd number of bytesc                    s&   g | ]}t tˆ ||d  … dƒƒ‘qS )re   é   )ÚchrÚint)Ú.0r   ©Ústrippedr   r   Ú
<listcomp>Ã   ó    z#_AsciiHexDecode.<locals>.<listcomp>)r   ÚdecoderC   r?   r   r   )r`   r   rj   r   Ú_AsciiHexDecode¶   s    
ro   c                 C   sŽ   g }t | ƒ}d}|| }||k rH| | ||| … ¡ |d }|| }qt |d ƒdkr„|d dd… |d d |d  g|dd…< d |¡S )z>Wraps input at a given column size by inserting 
 characters.r   r   rc   éþÿÿÿNr5   )r   r   rC   )r`   Úcolumnsra   Úlengthr   Úposr   r   r   Ú_wrapÅ   s    
,rt   c                 C   s  ddl }ddlm} g d¢}g d¢}g d¢}d}d}|�s| d|  d	¡¡}|d d
kr4| d|  d	¡¡}|d |v �r|  dd	¡ | d|  d	¡¡}|d dkrª|dƒ‚| d|  d¡¡}	|	d d> |	d	  }
| d|  d¡¡}	|	d d> |	d	  }| d|  d	¡¡}	|	d }||
||fS |d dk�r°| d|  d¡¡}|d d> |d	  d }|  |¡}| d|dd… ¡}	| d|dd… ¡}|d d> |d	  |	d d> |	d	  f}q4|d |v �rÐ|d|d  ƒ‚q4|d |vr4| d|  d¡¡}|  |d d> |d	  d d	¡ q4dS )z@Read width, height and number of components from open JPEG file.r   N)ÚPDFError)éÀ   éÁ   éÂ   )
éÐ   éÑ   éÒ   éÓ   éÔ   éÕ   éÖ   é×   éØ   r   )éÃ   éÅ   éÆ   éÇ   éÈ   éÉ   éÊ   éË   éÍ   éÎ   éÏ   )éH   r�   ÚBr   éÿ   re   rQ   z#JPEG must have 8 bits per componentZBBéà   é
   é   z#JPEG Unsupported JPEG marker: %0.2x)ÚstructZreportlab.pdfbase.pdfdocru   Úunpackr>   Úseek)Úimager“   ru   ZvalidMarkersZnoParamMarkersZunsupportedMarkersÚdpiÚdoneÚxÚyÚheightÚwidthÚcolorÚnr   r   r   ÚreadJPEGInfoß   sJ    ÿÿ
*rŸ   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú_fuscc                 C   s.   |sJ dƒ‚|| _ t|ƒ| _t|ƒp&d| _d S )Nz'Argument k should be a non empty stringé   )Ú_kr   Ú_klenrh   Ú_n)ÚselfÚkrž   r   r   r   Ú__init__  s    
z_fusc.__init__c                 C   s.   |   td tt|  ttt|ƒƒ¡ƒ¡ƒ| j¡S ©Nr   )	Ú_fusc__rotater   rC   Úmaprg   Ú_fusc__fuscÚlistÚordr¤   ©r¥   Úsr   r   r   Úencrypt  s    z_fusc.encryptc                 C   s0   d  tt|  tttt|  || j ¡ƒƒƒ¡ƒ¡S r¨   )	rC   rª   rg   r«   r¬   r­   r   r©   r¤   r®   r   r   r   Údecrypt  s    z_fusc.decryptc                 C   sF   t |ƒ}|dk r|| }||; }|s(|S || d … |d || …  S r
   )r   )r¥   r¯   rž   Úlr   r   r   Z__rotate!  s
    z_fusc.__rotatec              
   C   sB   t |ƒ}ttdd„ |tttt|| j ƒd | j d |… ƒƒƒƒS )Nc                 S   s   | |A S )Nr   )r™   rš   r   r   r   Ú<lambda>*  rm   z_fusc.__fusc.<locals>.<lambda>r   )r   r¬   rª   r­   rh   r£   r¢   )r¥   r¯   Úslenr   r   r   Z__fusc(  s    z_fusc.__fuscN)Ú__name__Ú
__module__Ú__qualname__r§   r°   r±   r©   r«   r   r   r   r   r      s
   r    )NF)NF)r   N)r5   rT   )r	   )Ú__version__Ú__doc__r7   r]   Úior   Ú	reportlabr   r<   r   r   Úreportlab.lib.rl_accelr   r   r   r#   r%   r1   r2   rI   rO   r;   rY   rb   ro   rt   rŸ   r    r   r   r   r   Ú<module>   s*   




5