U
    M»{jÔ"  ã                   @  s²   d dl mZ d dl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mZmZmZ dddd	d
œdd„Zdd„ Zddd„Ze	 de¡ e	 de¡ e	 dd¡ e	 dd¡ dS )é    )ÚannotationsN)ÚIOé   )ÚImageÚ	ImageFileÚImageSequenceÚ	PdfParserÚ__version__ÚfeatureszImage.Imagez	IO[bytes]zstr | bytesÚNone)ÚimÚfpÚfilenameÚreturnc                 C  s   t | ||dd� d S )NT)Úsave_all)Ú_save)r   r   r   © r   úQ/var/www/html/bwave/python/venv/lib/python3.8/site-packages/PIL/PdfImagePlugin.pyÚ	_save_all+   s    r   c                 C  sþ  d }d }| j \}}ddi}| jdkrrt d¡rXd}	d|d< t t dd||d	œ¡g¡}nd
}	t d¡|d< d}
�nX| jdkr–d
}	t d¡|d< d}
�n4| jdkr´d}	d}
d|d< �n| jdk�r<d}	|  ¡ }t d¡t d¡t	|ƒd d t 
|¡g|d< d}
d| jk�rÊ|  d¡ d¡}i |_t||||ƒd }||d< nŽ| jdk�r`d
}	t d¡|d< d}
nj| jdk�r~d}	d}
d|d< nL| jdk�r¶d
}	t d ¡|d< d}
ddddddddg}nd!| j› �}t|ƒ‚t ¡ }|	dk�rþt | |d"d#| j  d| jfg¡ n‚|	dk�r*| j|d$d%t |d ¡| d&� nV|	d
k�rHtjd' | ||ƒ n8|	dk�rl|d= tjd( | ||ƒ nd)|	› d*�}t|ƒ‚| ¡ }|	dk�r²|dd … }t t |	¡g¡}	n
t |	¡}	| d¡}|j|f|t d+¡t d,¡|||	||d-œ|—Ž ||
fS ).NZBitsPerComponenté   Ú1ZlibtiffZCCITTFaxDecoder   éÿÿÿÿT)ÚKZBlackIs1ÚColumnsZRowsZ	DCTDecodeZ
DeviceGrayZ
ColorSpaceZImageBÚLZLAZ	JPXDecodeZSMaskInDataÚPZASCIIHexDecodeZIndexedZ	DeviceRGBé   ZImageIÚtransparencyÚAr   ZSMaskÚRGBZImageCZRGBAZCMYKZ
DeviceCMYKzcannot save mode Úhex)r   r   ZTIFFZgroup4)ÚcompressionZ
strip_sizeZJPEGZJPEG2000zunsupported PDF filter (ú)ÚXObjectr   )ÚstreamÚTypeZSubtypeZWidthZHeightÚFilterZDecodeZDecodeParms)ÚsizeÚmoder
   Úcheckr   ZPdfArrayÚPdfDictÚPdfNameZ
getpaletteÚlenZ	PdfBinaryÚinfoÚconvertZ
getchannelÚencoderinfoÚ_write_imageÚ
ValueErrorÚioÚBytesIOr   r   ÚsaveÚmathÚceilr   ZSAVEÚgetvalueÚpopÚ	write_obj)r   r   Úexisting_pdfÚ
image_refsÚparamsÚdecodeÚwidthÚheightÚdict_objÚfilterÚprocsetÚpaletteZsmaskÚ	image_refÚmsgÚopr$   r   r   r   r0   3   sÀ    


üÿÿÿ

ü


"
û




ÿ÷
ör0   Fc              
   C  s4  | j  dd¡}|r$tj||dd�}ntj||dd�}| j  d¡}|rV|d }|d }n| j  d	d
¡ }}|rpd ntj tj |¡¡d d d d d d |r˜d nt ¡ |r¦d nt ¡ dœ}	|	 	¡ D ]D\}
}|
| j krØ| j  |
¡n|}|rº||j
|
d  ¡ |
dd …  < qº|  ¡  | ¡  | ¡  | dt› d�¡ | g}|�rf| j  dg ¡}|D ]}| j  ¡ |_ | |¡ �qHd}g }g }g }|D ]²} d}|�rªz
| j}W n tk
�r¨   Y nX ||7 }t|ƒD ]n}| | d¡¡ | jdk�röd| j
k�rö| | d¡¡ | | d¡¡ | | d¡¡ |j |d ¡ �qº�qz| ¡  d}|D ]Ì}|�rRt |¡n|g}|D ]ª} t| |||ƒ\}}|j|| tjt d¡t |¡gtj|d�d�dd| j d
 | | j!d
 | g|| d� d| j d
 | | j!d
 | f }|j"|| |d� |d7 }�q\�q>| #¡  t$|dƒ�r(| %¡  | &¡  d S )NÚappendFzr+b)Úfr   r(   zw+bÚdpir   r   Ú
resolutiong      R@)ÚtitleÚauthorÚsubjectÚkeywordsZcreatorZproducerZcreationDateZmodDatezcreated by Pillow z PDF driverÚappend_imagesr   r   r   ÚPDF)Úimage)ZProcSetr#   )Z	ResourcesZMediaBoxZContentss   q %f 0 0 %f 0 0 cm /image Do Q
)r$   Úflush)'r/   Úgetr   ÚosÚpathÚsplitextÚbasenameÚtimeÚgmtimeÚitemsr-   ÚupperÚloadZstart_writingZwrite_headerZwrite_commentr	   ÚcopyrG   Zn_framesÚAttributeErrorÚrangeZnext_object_idr(   ZpagesZwrite_catalogr   ÚIteratorr0   Z
write_pager*   r+   r>   r?   r9   Zwrite_xref_and_trailerÚhasattrrR   Úclose)r   r   r   r   Zis_appendingr:   rI   Zx_resolutionZy_resolutionr-   ÚkÚdefaultÚvZimsrO   Z	append_imZnumber_of_pagesr;   Z	page_refsZcontents_refsZim_number_of_pagesÚiZpage_numberZim_sequenceZim_pagesrD   rB   Zpage_contentsr   r   r   r   ±   s     
ö 

þüôþr   rP   z.pdfzapplication/pdf)F)Ú
__future__r   r2   r5   rT   rX   Útypingr   Ú r   r   r   r   r	   r
   r   r0   r   Zregister_saveZregister_save_allZregister_extensionZregister_mimer   r   r   r   Ú<module>   s    ~
z