
    e"                        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m	Z	m
Z
mZmZ d Zd ZddZ ej                   de        ej"                  de        ej$                  dd	        ej&                  dd
       y)    )annotationsN   )Image	ImageFileImageSequence	PdfParser__version__featuresc                "    t        | ||d       y )NT)save_all)_save)imfpfilenames      4/usr/lib/python3/dist-packages/PIL/PdfImagePlugin.py	_save_allr   *   s    	"b(T*    c                V   d }d }| j                   \  }}ddi}| j                  dk(  rit        j                  d      r6d}	d|d<   t	        j
                  t	        j                  dd||d	      g      }nd
}	t	        j                  d      |d<   d}
n| j                  dk(  rd
}	t	        j                  d      |d<   d}
ni| j                  dk(  rd}	d}
d|d<   nO| j                  dk(  rd}	| j                         }t	        j                  d      t	        j                  d      t        |      dz  dz
  t	        j                  |      g|d<   d}
d| j                  v r| j                  d      j                  d      }i |_        t        ||||      d   }||d<   n| j                  dk(  rd
}	t	        j                  d      |d<   d}
nc| j                  dk(  r
d}	d}
d|d<   nJ| j                  dk(  r!d
}	t	        j                  d       |d<   d}
g d!}nd"| j                   }t!        |      t#        j$                         }|	dk(  r4t'        j(                  | |d#d$| j                   z   d| j                  fg       n|	dk(  r/| j+                  |d%d&t-        j.                  |dz        |z  '       nT|	d
k(  rt1        j2                  d(   | ||       n4|	dk(  r|d= t1        j2                  d)   | ||       nd*|	 d+}t!        |      |j5                         }|	dk(  r/|dd  }t	        j
                  t	        j                  |	      g      }	nt	        j                  |	      }	|j7                  d      } |j8                  |f|t	        j                  d,      t	        j                  d-      |||	||d.| ||
fS )/NBitsPerComponent   1libtiffCCITTFaxDecoder   T)KBlackIs1ColumnsRows	DCTDecode
DeviceGray
ColorSpaceImageBLLA	JPXDecodeSMaskInDataPASCIIHexDecodeIndexed	DeviceRGB   ImageItransparencyAr   SMaskRGBImageCRGBACMYK
DeviceCMYK)r   r   r   r   r   r   r   r   zcannot save mode hex)r   r   TIFFgroup4)compression
strip_sizeJPEGJPEG2000zunsupported PDF filter ()XObjectr   )streamTypeSubtypeWidthHeightFilterDecodeDecodeParms)sizemoder
   checkr   PdfArrayPdfDictPdfName
getpalettelen	PdfBinaryinfoconvert
getchannelencoderinfo_write_image
ValueErrorioBytesIOr   r   savemathceilr   SAVEgetvaluepop	write_obj)r   r   existing_pdf
image_refsparamsdecodewidthheightdict_objfilterprocsetpalettesmask	image_refmsgopr>   s                    r   rS   rS   2   s   
 FF
 GGME6"A&H	ww#~>>)$%F+,H'(''%%!#(,',$*		F !F!*!2!2<!@	C!*!2!2<!@	D"#	C!--/i(k*LA!(	"
 RWW$JJt$//4E "E$UHlJOPQRI )HW	E	!*!2!2;!?	F	"#	F	!*!2!2<!@)!"''+o
 
B!!B%"'')91bgg!F GH	#	#
 yy+f4 	 	
 
;	

62r8,	;	'(

:r2x0(2o[[]F!!##Y%6%6v%>$?@""6*q!ILy)!!'*  gr   c                   | j                   j                  dd      }|rt        j                  ||d      }nt        j                  ||d      }| j                   j                  d      }|r|d   }|d   }n| j                   j                  d	d
      x}}|rd n>t        j                  j                  t        j                  j                  |            d   d d d d d |rd nt        j                         |rd nt        j                         d}	|	j                         D ]Y  \  }
}|
| j                   v r| j                   j                  |
      n|}|s4||j                  |
d   j                         |
dd  z   <   [ | j                          |j                          |j                          |j                  dt          d       | g}|rS| j                   j                  dg       }|D ]2  }| j                   j#                         |_         |j%                  |       4 d}g }g }g }|D ]  } d}|r	 | j&                  }||z  }t+        |      D ]  }|j%                  |j-                  d             | j.                  dk(  r.d| j                  v r |j%                  |j-                  d             |j%                  |j-                  d             |j%                  |j-                  d             |j0                  j%                  |d            |j3                          d}|D ]  }|rt5        j6                  |      n|g}|D ]  } t9        | |||      \  }}|j;                  ||   t        j<                  t        j>                  d      t        j>                  |      gt        j<                  |            dd| j@                  d
z  |z  | jB                  d
z  |z  g||          d| j@                  d
z  |z  | jB                  d
z  |z  fz  }|jE                  ||   |       |dz  } 
 |jG                          tI        |d      r|jK                          |jM                          y # t(        $ r Y :w xY w)NappendFzr+b)fr   rG   zw+bdpir   r   
resolutiong      R@)titleauthorsubjectkeywordscreatorproducercreationDatemodDatezcreated by Pillow z PDF driverappend_imagesr'   r-   r   PDF)image)ProcSetr=   )	ResourcesMediaBoxContentss   q %f 0 0 %f 0 0 cm /image Do Q
)r>   flush)'rR   getr   ospathsplitextbasenametimegmtimeitemsrO   upperloadstart_writingwrite_headerwrite_commentr	   copyrm   n_framesAttributeErrorrangenext_object_idrG   pageswrite_catalogr   IteratorrS   
write_pagerJ   rK   rb   rc   r]   write_xref_and_trailerhasattrr   close)r   r   r   r   is_appendingr^   ro   x_resolutiony_resolutionrO   kdefaultvimsry   	append_imnumber_of_pagesr_   	page_refscontents_refsim_number_of_pagesipage_numberim_sequenceim_pagesri   rf   page_contentss                               r   r   r      sQ   >>%%h6L **R(O **R(O
..

U
#C
1v1v&(nn&8&8t&LL|  WWbgg..x89!< ,$++-'4T[[]D jjl 8
7%&"..%8BNNq!g67LadjjlQqrU238 GGI !3K=LM $C**?B?& 	"I$&NN$7$7$9I!JJy!	" OJIM 5%'[["
 	--)* 	5Al99!<=ww#~.BGG";!!,"="=a"@A\88;<  !<!<Q!?@%%im4	55*  K !:B=))+6 	B!-b(L*!UIw
 ##+&#++&..u5y7H7H7QR%--I>
 HHtOl2II$|3	 '{3 $ $ @4,.		D </C M
 ""=#=m"T1K?	!J '')r7

w "  s   -Q''	Q43Q4rz   z.pdfzapplication/pdf)F)
__future__r   rU   rX   r   r    r   r   r   r   r	   r
   r   rS   r   register_saveregister_save_allregister_extensionregister_mime r   r   <module>r      sz   , # 	  	  O O+{|st   E5 !   y )    '   E, -r   