o
    Zh"                     @  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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__featuresimImage.Imagefp	IO[bytes]filenamestr | bytesreturnNonec                 C  s   t | ||dd d S )NT)save_all)_save)r   r   r    r   I/var/www/html/lang_env/lib/python3.10/site-packages/PIL/PdfImagePlugin.py	_save_all+   s   r   c                 C  s  d }d }| j \}}ddi}| jdkr8tdr,d}	d|d< ttdd||d	g}nd
}	td|d< d}
n| jdkrId
}	td|d< d}
n| jdkrWd}	d}
d|d< n| jdkrd}	|  }tdtdt	|d d t
|g|d< d}
d| jv r| dd}i |_t||||d }||d< n>| jdkrd
}	td|d< d}
n-| jdkrd}	d}
d|d< n| jdkrd
}	td |d< d}
g d!}n
d"| j }t|t }|	dkrt| |d#d$| j  d| jfg nA|	dkr| j|d%d&t|d | d' n+|	d
krtjd( | || n|	dkr'|d= tjd) | || n
d*|	 d+}t|| }|	dkrJ|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
DeviceCMYK)r   r   r   r   r   r   r   r   z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   r3   3   s   












"






r3   Fc              
   C  s"  | j dd}|rtj||dd}ntj||dd}| j d}|r+|d }|d }n	| j d	d
 }}|r8d ntjtj|d d d d d d |rLd nt |rSd nt d}	|		 D ]"\}
}|
| j v rl| j |
n|}|r||j
|
d  |
dd   < q]|   |  |  |dt d | g}|r| j dg }|D ]}| j  |_ || qd}g }g }g }|D ]R} d}|rz| j}W n	 ty   Y nw ||7 }t|D ]4}||d | jdkrd| j
v r||d ||d ||d |j|d  qq|  d}|D ]f}|r t|n|g}|D ]U} 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@)titleZ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)'r2   getr   ospathsplitextbasenametimegmtimeitemsr0   upperloadZstart_writingZwrite_headerZwrite_commentr	   copyrJ   Zn_framesAttributeErrorrangeZnext_object_idr+   ZpagesZwrite_catalogr   Iteratorr3   Z
write_pager-   r.   rA   rB   r<   Zwrite_xref_and_trailerhasattrrT   close)r   r   r   r   Zis_appendingr=   rL   Zx_resolutionZy_resolutionr0   kdefaultvZimsrQ   Z	append_imZnumber_of_pagesr>   Z	page_refsZcontents_refsZim_number_of_pagesiZpage_numberZim_sequenceZim_pagesrG   rE   Zpage_contentsr   r   r   r      s   


#r   rR   z.pdfzapplication/pdf)r   r   r   r   r   r   r   r   )F)
__future__r   r5   r8   rV   rZ   typingr    r   r   r   r   r	   r
   r   r3   r   Zregister_saveZregister_save_allZregister_extensionZregister_mimer   r   r   r   <module>   s    

~z