a
    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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ddddddZdddddd	dddZe
de e
de e
dd e
dd dS )    )annotationsN)IOAny   )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   @/var/www/auris/lib/python3.9/site-packages/PIL/PdfImagePlugin.py	_save_all+   s    r   zPdfParser.PdfParserz!list[PdfParser.IndirectReference]z'tuple[PdfParser.IndirectReference, str])r   r   existing_pdf
image_refsr   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rHd}	|  }|d usJ 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rld
}	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rt| |td#d$| j  d| jg n|	dkr.| j|d%d&t|d | d' nV|	d
krLtjd( | || n8|	dkrp|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BlackIs1ZColumnsZRowsZ	DCTDecodeZ
DeviceGrayZ
ColorSpaceZImageBLZLAZ	JPXDecodeZSMaskInDataPZASCIIHexDecodeZIndexedZ	DeviceRGB   ZImageItransparencyAr   ZSMaskZ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   Z_Tilesavemathceilr   ZSAVEgetvaluepop	write_obj)r   r   r   r   paramsdecodewidthheightdict_objZdecode_filterprocsetZpaletteZsmask	image_refmsgopr%   filterr   r   r   r1   3   s    









&






r1   Fbool)r   r   r   r   r   c              
   C  s4  | j dd}t|tr | n|}|r:tj||dd}ntj||dd}| j d}|rl|d }|d }	n| j d	d
 }}	|rd ntjtj	|d d d d d d |rd nt
 |rd nt
 d}
|
 D ]D\}}|| j v r| j |n|}|r||j|d  |dd   < q|   |  |  |dt d | g}|r|| j dg }|D ]}| j  |_ || q^d}g }g }g }|D ]} d}|rt| dd}||7 }t|D ]n}||d | jdkrd| jv r||d ||d ||d |j|d  qq|  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_imagesZn_framesr   r   r   PDF)image)ZProcSetr$   )Z	ResourcesZMediaBoxZContentss   q %f 0 0 %f 0 0 cm /image Do Q
)r%   flush))r0   get
isinstancebytesr<   r	   ospathsplitextbasenametimegmtimeitemsr.   upperloadZstart_writingZwrite_headerZwrite_commentr
   copyrF   getattrrangeZnext_object_idr)   ZpagesZwrite_catalogr   Iteratorr1   Z
write_pager+   r,   r=   r>   r:   Zwrite_xref_and_trailerhasattrrQ   close)r   r   r   r   Zis_appendingZfilename_strr   rH   Zx_resolutionZy_resolutionr.   kdefaultvZimsrN   Z	append_imZnumber_of_pagesr   Z	page_refsZcontents_refsZim_number_of_pagesiZpage_numberZim_sequenceZim_pagesrA   r@   Zpage_contentsr   r   r   r      s    
 
r   rO   z.pdfzapplication/pdf)F)
__future__r   r3   r6   rU   rY   typingr   r    r   r   r   r	   r
   r   r   r1   r   Zregister_saveZregister_save_allZregister_extensionZregister_mimer   r   r   r   <module>   s      z