o
    ¾Ùøib%  ã                   @   sÆ   d dl Z d dlZ d dlZd dl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mZmZmZmZ d dlmZ d dlmZmZmZmZ d	Zd
edefdd„ZG dd„ dƒZG dd„ dƒZdS )é    N)ÚBytesIO)ÚBinaryIOÚLiteral)ÚJBIG2StreamReaderÚJBIG2StreamWriter)ÚLTImage)ÚLITERAL_DEVICE_CMYKÚLITERAL_DEVICE_GRAYÚLITERAL_DEVICE_RGBÚLITERAL_INLINE_DEVICE_GRAYÚLITERAL_INLINE_DEVICE_RGB)ÚPDFValueError)ÚLITERALS_DCT_DECODEÚLITERALS_FLATE_DECODEÚLITERALS_JBIG2_DECODEÚLITERALS_JPX_DECODEz¶Could not import Pillow. This dependency of pdfminer.six is not installed by default. You need it to to save jpg images to a file. Install it with `pip install 'pdfminer.six[image]'`ÚxÚreturnc                 C   s   | d d d S )Né   é   © )r   r   r   ú[/home/develop/edictos_py/central_edictos/env/lib/python3.10/site-packages/pdfminer/image.pyÚalign32   s   r   c                
   @   s@   e Zd Zdededededdf
dd„Zd	ed
eddfdd„ZdS )Ú	BMPWriterÚfpÚbitsÚwidthÚheightr   Nc           
      C   sŠ  || _ || _|| _|| _|dkrd}n|dkrd}n|dkr!d}nt|ƒ‚t| j| j d d ƒ| _| j| j | _d|d	  }t 	d
d| j| jd| jd| jdd|d¡}t
|ƒdksaJ tt
|ƒƒƒ‚t 	ddd|| j dd|¡}t
|ƒdks}J tt
|ƒƒƒ‚| j  |¡ | j  |¡ |dkrŸdD ]}	| j  t 	d|	|	|	¡¡ q�n|dkr¶tdƒD ]}	| j  t 	d|	|	|	¡¡ q§| j  ¡ | _| j| j | _d S )Né   é   é   é   é   r   é   é6   r   z<IiiHHIIIIIIé(   z<ccIHHIó   Bó   Mé   )r   éÿ   ÚBBBx)r   r   r   r   r   r   ÚlinesizeÚdatasizeÚstructÚpackÚlenÚstrÚwriteÚrangeÚtellÚpos0Úpos1)
Úselfr   r   r   r   ÚncolsÚ
headersizeÚinfoÚheaderÚir   r   r   Ú__init__$   sd   ôù	ÿzBMPWriter.__init__ÚyÚdatac                 C   s,   | j  | j|d | j  ¡ | j  |¡ d S )Nr   )r   Úseekr5   r+   r1   )r6   r=   r>   r   r   r   Ú
write_lineZ   s   zBMPWriter.write_line)Ú__name__Ú
__module__Ú__qualname__r   Úintr<   Úbytesr@   r   r   r   r   r   #   s    6r   c                   @   sä   e Zd ZdZdeddfdd„Zdedefdd	„Zdedefd
d„Zdedefdd„Z	dedefdd„Z
dedededededefdd„Zdedefdd„Zdedefdd„Zededefdd„ƒZdededeeef fdd„ZdS )ÚImageWriterzUWrite image to a file

    Supports various image types: JPEG, JBIG2 and bitmaps
    Úoutdirr   Nc                 C   s(   || _ tj | j ¡st | j ¡ d S d S )N)rG   ÚosÚpathÚexistsÚmakedirs)r6   rG   r   r   r   r<   e   s   ÿzImageWriter.__init__Úimagec                 C   sP  |j \}}|j ¡ }|s|  |¡}|S |d d tv r"|  |¡}|S |d d tv r1|  |¡}|S |  |¡r=|  	|¡}|S |j
dkrR|  ||||d d |j
¡}|S |j
dkrqt|jv sat|jv rq|  ||||d |j
d ¡}|S |j
dkrŒt|jv s€t|jv rŒ|  |||||j
¡}|S t|ƒdkr¡|d d tv r¡|  |¡}|S |  |¡}|S )zSave an LTImage to diskéÿÿÿÿr   r   r#   r    r   )ÚsrcsizeÚstreamÚget_filtersÚ_save_bytesr   Ú
_save_jpegr   Ú_save_jpeg2000Ú_is_jbig2_iamgeÚ_save_jbig2r   Ú	_save_bmpr
   Ú
colorspacer   r	   r   r/   r   Ú	_save_raw)r6   rL   r   r   ÚfiltersÚnamer   r   r   Úexport_imagej   s@   


 â
å

è

ë
î


ô

ú

þzImageWriter.export_imagec                 C   sÚ   |j  ¡ }|  |d¡\}}t|dƒ�Q}t|jv rNz
ddlm}m} W n t	y3 } zt	t
ƒ|‚d}~ww t|ƒ}	| |	¡}
| |
¡}| d¡}| |d¡ n| |¡ W d  ƒ |S W d  ƒ |S 1 sfw   Y  |S )zSave a JPEG encoded imageú.jpgÚwbr   )ÚImageÚ
ImageChopsNÚRGBÚJPEG)rO   Úget_dataÚ_create_unique_image_nameÚopenr   rW   ÚPILr^   r_   ÚImportErrorÚPIL_ERROR_MESSAGEr   ÚinvertÚconvertÚsaver1   )r6   rL   r>   rZ   rI   r   r^   r_   ÚerrÚifpÚimgÚinvertedÚrgb_imgr   r   r   rR   “   s.   


€ÿ



óü
õñzImageWriter._save_jpegc           
      C   sœ   |j  ¡ }|  |d¡\}}t|dƒ�2}zddlm} W n ty, } zttƒ|‚d}~ww t|ƒ}| |¡}	|	 	|d¡ W d  ƒ |S 1 sGw   Y  |S )zSave a JPEG 2000 encoded imagez.jp2r]   r   )r^   NÚJPEG2000)
rO   rb   rc   rd   re   r^   rf   rg   r   rj   )
r6   rL   r>   rZ   rI   r   r^   rk   rl   r;   r   r   r   rS   ©   s    

€ÿ

ôózImageWriter._save_jpeg2000c                 C   sô   |   |d¡\}}t|dƒ�c}tƒ }g }|j ¡ }|D ]\}}	|tv r+| |	d  ¡ ¡ qt|ƒdkr8d}
t	|
ƒ‚t|ƒdkrJ| 
|d  ¡  d¡¡ | 
|j ¡ ¡ | d¡ t|ƒ}| ¡ }t|ƒ}| |¡ W d  ƒ |S 1 ssw   Y  |S )	zSave a JBIG2 encoded imagez.jb2r]   ÚJBIG2Globalsr   zWThere should never be more than one JBIG2Globals associated with a JBIG2 embedded imager   ó   
N)rc   rd   r   rO   rP   r   ÚappendÚresolver/   r   r1   rb   Úrstripr?   r   Úget_segmentsr   Ú
write_file)r6   rL   rZ   rI   r   Úinput_streamÚglobal_streamsrY   Úfilter_nameÚparamsÚmsgÚreaderÚsegmentsÚwriterr   r   r   rU   ½   s2   
€ÿ

éèzImageWriter._save_jbig2r   r   Úbytes_per_liner   c              	   C   sŠ   |   |d¡\}}t|dƒ�.}t||||ƒ}	|j ¡ }
d}t|ƒD ]}|	 ||
||| … ¡ ||7 }q W d  ƒ |S 1 s>w   Y  |S )zSave a BMP encoded imagez.bmpr]   r   N)rc   rd   r   rO   rb   r2   r@   )r6   rL   r   r   r€   r   rZ   rI   r   Úbmpr>   r;   r=   r   r   r   rV   Ú   s   	

þ
üùzImageWriter._save_bmpc                 C   s,  |   |d¡\}}|j\}}t|j ¡ ƒ| | |jd  }t|dƒ�j}z
ddlm}m	}	 W n t
y> }
 zt
tƒ|
‚d}
~
ww |jdkrGd}n#|jdkrS|dkrSd	}n|jdkr_|d
kr_d}n|jdkrj|dkrjd}| ||j|j ¡ d¡}|d	kr|	 |¡}| |¡ W d  ƒ |S 1 s�w   Y  |S )z*Save an image without encoding, just bytesr\   r    r]   r   )r^   ÚImageOpsNr   Ú1ÚLr   r`   r   ÚCMYKÚraw)rc   rN   r/   rO   rb   r   rd   re   r^   r‚   rf   rg   Ú	frombytesrh   rj   )r6   rL   rZ   rI   r   r   Úchannelsr   r^   r‚   rk   Úmoderm   r   r   r   rQ   í   s4   
 
€ÿ


éçzImageWriter._save_bytesc                 C   sv   d|j › d|jd › d|jd › d�}|  ||¡\}}t|dƒ�}| |j ¡ ¡ W d  ƒ |S 1 s4w   Y  |S )z#Save an image with unknown encodingÚ.r   r   r   z.imgr]   N)r   rN   rc   rd   r1   rO   rb   )r6   rL   ÚextrZ   rI   r   r   r   r   rX     s   &
ÿþzImageWriter._save_rawc                 C   s*   | j  ¡ }|D ]\}}|tv r dS qdS )NTF)rO   rP   r   )rL   rY   rz   Ú_paramsr   r   r   rT     s   
ÿzImageWriter._is_jbig2_iamger‹   c                 C   sj   |j | }tj | j|¡}d}tj |¡r1|j › d|› |› �}tj | j|¡}|d7 }tj |¡s||fS )Nr   rŠ   r   )rZ   rH   rI   ÚjoinrG   rJ   )r6   rL   r‹   rZ   rI   Ú	img_indexr   r   r   rc     s   
ýz%ImageWriter._create_unique_image_name)rA   rB   rC   Ú__doc__r0   r<   r   r[   rR   rS   rU   rD   rV   rQ   rX   ÚstaticmethodÚboolrT   Útuplerc   r   r   r   r   rF   _   s2    )þýüûú
ù 	"rF   )rH   Úos.pathr-   Úior   Útypingr   r   Úpdfminer.jbig2r   r   Úpdfminer.layoutr   Úpdfminer.pdfcolorr   r	   r
   r   r   Úpdfminer.pdfexceptionsr   Úpdfminer.pdftypesr   r   r   r   rg   rD   r   r   rF   r   r   r   r   Ú<module>   s    ÿ<