U
    ­A›d#  ã                   @   s†   d dl Z d dlZd dlZd dlZddlmZmZmZmZm	Z	m
Z
 dd„ Zddd„Ze d	e¡ e d	e¡ e d	d
¡ e d	d¡ dS )é    Né   )ÚImageÚ	ImageFileÚImageSequenceÚ	PdfParserÚ__version__Úfeaturesc                 C   s   t | ||dd� d S )NT)Úsave_all)Ú_save)ÚimÚfpÚfilename© r   úK/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/PIL/PdfImagePlugin.pyÚ	_save_all)   s    r   Fc           &      C   s¾  | 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 ]F}| | d¡¡ | | d¡¡ | | d¡¡ |j |d ¡ �qº�qz| ¡  d}|D �]|}|�r,t |¡n|g}|D �]X} d}d }d }| j\}}| jdk�r¤t d¡�r�d}d}t t  dd||dœ¡g¡}nd}t !d¡}d} nä| jdk�rÄd}t !d¡}d} nÄ| jdk�r d}|  "¡ }!t !d¡t !d¡dt #|!¡g}d} nˆ| jd k�r d}t !d¡}d!} nh| jd"k�r@d#}t !d¡}d!} nH| jd$k�rtd}t !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* +| j,d ¡| j- d+� n¨|dk�r
t.j/d, | |#|ƒ nŠ|d#k�r(t.j/d- | |#|ƒ nl|d.k�rTt' (| |#d/d(| j d| jfg¡ n@|d0k�r€t' (| |#d1d(| j d| jfg¡ nd2|› d3�}"t$|"ƒ‚|# 0¡ }$|dk�rÆ|$dd … }$t t !|¡g¡}n
t !|¡}|j1|| |$t !d4¡t !d5¡|||||||d6� |j2|| tj t !d7¡t !| ¡gtj || d8�d9�dd|d
 | |d
 | g|| d:� d;|d
 | |d
 | f }%|j1|| |%d<� |d7 }�q6�q| 3¡  t4|d=ƒ�r²| 5¡  | 6¡  d S )>NÚappendFzr+b)Úfr   Úmodezw+bÚdpir   r   Ú
resolutiong      R@)ÚtitleÚauthorÚsubjectÚkeywordsZcreatorZproducerZcreationDateZmodDatezcreated by Pillow z PDF driverÚappend_imageséÿÿÿÿé   Ú1ZlibtiffZCCITTFaxDecodeT)ÚKZBlackIs1ÚColumnsZRowsZ	DCTDecodeZ
DeviceGrayZImageBÚLÚPZASCIIHexDecodeZIndexedZ	DeviceRGBéÿ   ZImageIÚRGBZImageCZRGBAZ	JPXDecodeZCMYKZ
DeviceCMYKzcannot save mode Úhex)r   r   ZTIFFZgroup4)ÚcompressionZ
strip_sizeZJPEGZJPEG2000ZFlateDecodeÚzipZRunLengthDecodeZpackbitszunsupported PDF filter (ú)ÚXObjectr   )
ÚstreamÚTypeZSubtypeZWidthZHeightÚFilterZBitsPerComponentZDecodeZDecodeParmsZ
ColorSpaceÚPDF)Úimage)ZProcSetr(   )Z	ResourcesZMediaBoxZContentss   q %f 0 0 %f 0 0 cm /image Do Q
)r)   Úflush)7ZencoderinfoÚgetr   ÚosÚpathÚsplitextÚbasenameÚtimeÚgmtimeÚitemsÚinfoÚupperÚloadZstart_writingZwrite_headerZwrite_commentr   Úcopyr   Zn_framesÚAttributeErrorÚrangeZnext_object_idZpagesZwrite_catalogr   ÚIteratorÚsizer   r   ÚcheckZPdfArrayZPdfDictZPdfNameZ
getpaletteZ	PdfBinaryÚ
ValueErrorÚioÚBytesIOr   r
   ÚsaveÚmathÚceilÚwidthÚheightr   ZSAVEÚgetvalueZ	write_objZ
write_pageZwrite_xref_and_trailerÚhasattrr.   Úclose)&r   r   r   r	   Zis_appendingZexisting_pdfr   Zx_resolutionZy_resolutionr7   ÚkÚdefaultÚvZimsr   Z	append_imZnumber_of_pagesZ
image_refsZ	page_refsZcontents_refsZim_number_of_pagesÚiZpage_numberZim_sequenceZim_pagesÚbitsÚparamsÚdecoderF   rG   ÚfilterZ
colorspaceZprocsetÚpaletteÚmsgÚopr)   Zpage_contentsr   r   r   r
   1   sL   
ÿö 



üÿÿÿ

ü



"
û


"
"

õþ

üô

þr
   r,   z.pdfzapplication/pdf)F)rA   rD   r0   r4   Ú r   r   r   r   r   r   r   r
   Zregister_saveZregister_save_allZregister_extensionZregister_mimer   r   r   r   Ú<module>   s    
 g