B
    eAd#  ã               @   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   úD/var/www/html/venv/lib/python3.7/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œ}	xP|	 	¡ D ]D\}
}|
| j krÚ| j  |
¡n|}|r¼||j
|
d  ¡ |
dd …  < q¼W |  ¡  | ¡  | ¡  | dt› d¡ | g}|rn| j  dg ¡}x$|D ]}| j  ¡ |_ | |¡ qNW d}g }g }g }x–|D ]Ž} d}|r´y
| j}W n tk
r²   Y nX ||7 }xRt|ƒD ]F}| | d¡¡ | | d¡¡ | | d¡¡ |j |d ¡ qÆW q„W | ¡  d}xŒ|D ]‚}|r@t |¡n|g}xb|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r8d}t !d¡}d!} nh| jd"krXd#}t !d¡}d!} nH| jd$krŒd}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rlt' (| |#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 }qNW q*W | 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   s2   
"









"



"
"



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