U
    ?h"                     @  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   D/var/www/html/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rd
}	td|d< d}
n4| jdkrd}	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rd
}	td |d< d}
ddddddddg}nd!| j }t|t }|	dkrt| |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 |rd nt |rd 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}|rz
| j}W n tk
r   Y nX ||7 }t|D ]n}||d | jdkrd| 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