o
    “j %  ã                   @  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 ddd„Zd dd„Z	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Ú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   ú\C:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\site-packages\PIL/PdfImagePlugin.pyÚ	_save_all+   s   r   Úexisting_pdfúPdfParser.PdfParserÚ
image_refsú!list[PdfParser.IndirectReference]ú'tuple[PdfParser.IndirectReference, str]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rŸd}	|  ¡ }|d ushJ ‚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r°d
}	t d¡|d< d}
n-| jdkr¾d}	d}
d|d< n| jdkrÓd
}	t d ¡|d< d}
g d!¢}n
d"| j› �}t|ƒ‚t ¡ }|	dkrøt | |t d#d$| j  d| j¡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�rR|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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   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   r7   3   sÄ   



üÿÿÿ



ü
€




&
û




ÿ÷
ör7   Fr   Úboolc              
   C  s  | j  dd¡}t|tƒr| ¡ n|}|rtj||dd�}ntj||dd�}| j  d¡}|r6|d }|d }	n	| j  d	d
¡ }}	|rCd ntj tj 	|¡¡d d d d d d |rWd nt
 ¡ |r^d nt
 ¡ dœ}
|
 ¡ D ]"\}}|| j v rw| j  |¡n|}|rŠ||j|d  ¡ |dd …  < qh|  ¡  | ¡  | ¡  | d¡ | g}|r¸| j  dg ¡}|D ]}| j  ¡ |_ | |¡ qªd}g }g }g }|D ]I} d}|rÎt| ddƒ}||7 }t|ƒD ]4}| | d¡¡ | jdkròd| jv rò| | d¡¡ | | d¡¡ | | d¡¡ |j |d ¡ qÖqÂ| ¡  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@)ÚtitleÚauthorÚsubjectÚkeywordsZcreatorZproducerZcreationDateZmodDatezcreated by Pillow 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)(r6   ÚgetÚ
isinstanceÚbytesrB   r	   ÚosÚpathÚsplitextÚbasenameÚtimeÚgmtimeÚitemsr4   ÚupperÚloadZstart_writingZwrite_headerZwrite_commentÚcopyrL   ÚgetattrÚrangeZnext_object_idr/   ZpagesZwrite_catalogr   ÚIteratorr7   Z
write_pager1   r2   rC   rD   r@   Zwrite_xref_and_trailerÚhasattrrW   Úclose)r   r   r   r   Zis_appendingZfilename_strr   rN   Zx_resolutionZy_resolutionr4   ÚkÚdefaultÚvZimsrT   Z	append_imZnumber_of_pagesr   Z	page_refsZcontents_refsZim_number_of_pagesÚiZpage_numberZim_sequenceZim_pagesrG   rF   Zpage_contentsr   r   r   r   ¸   s¤   
ö€
ùÿ
þüôþá#r   rU   z.pdfzapplication/pdf)r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )F)
r   r   r   r   r   r   r   rK   r   r   )Ú
__future__r   r9   r<   r[   r_   Útypingr   r   Ú r   r   r   r	   r
   r   r7   r   Zregister_saveZregister_save_allZregister_extensionZregister_mimer   r   r   r   Ú<module>   s    

 ÿz