
    HAi9                     @   % S r SSKrSSKJr  SSKJrJrJrJrJ	r	J
r
Jr  SSKJrJr  SSKJr  SSKJr  SS	KJr  SS
KJrJr  SSKJrJrJrJrJrJr  \R>                  SS S:  a  SSKJ r   OSSK!J r    SSK"J#r#J$r$  \S   r&\ \'S'   Sr(\)\'S'    S,S\
\*\\   \4   S\)S\&S\)S\	\&\+4   4
S jjr,S\-S\	\)\)4   S\)S\-4S jr.S\*S\	\)\)4   S\-S\#RF                  4S  jr/S\S\	\\\\4   4S! jr0S\	\)\)4   S\-S\&S\*S"\)S#\*S\	\#RF                  \*\*\+4   4S$ jr1S\	\)\)4   S\-S\&S\*S"\)S\	\#RF                  \*\*\+4   4S% jr2S&\#RF                  S'\\*\4   S(\S\
\*\\   \4   S)\+S\#RF                  4S* jr3S'\\*\4   S"\)S\
\*\\   \4   S\	\&\+4   4S+ jr4g! \% a	    \%" S5      ef = f)-z9Code in here is only used by pypdf.filters._xobj_to_image    N)BytesIO)AnyDictListLiteralTupleUnioncast   )check_if_whitespace_onlylogger_warning)ColorSpaces)FilterTypes)ImageAttributes)EmptyImageDataErrorPdfReadError)ArrayObjectDecodedStreamObjectEncodedStreamObject
NullObjectTextStringObjectis_null_or_none   )   
   )	TypeAlias)ImageUnidentifiedImageErrorz]pillow is required to do image extraction. It can be installed via 'pip install pypdf[image]')	 1RGB2bits4bitsPLRGBACMYKmode_str_typer   MAX_IMAGE_MODE_NESTING_DEPTHcolor_spacecolor_components	prev_modedepthreturnc                    U[         :  a  [        S5      e[        U 5      (       a  gSn[        U [        5      (       a  U nGOe[        U [
        5      (       d  [        SU 5      eU S   R                  S5      (       a  SU S   SS	 -   nGOU S   S
:X  a9  U S   R                  5       n[        [        US   5      nUR                  SS5      nOU S   S:X  a/  U S   R                  5       n[        XAX#S-   5      u  pgUS;   a  SnXg4$ U S   S:X  a(  U S   R                  5       n[        XAX#S-   5      u  pgUS4$ U S   S:X  aj  U n[        U S   5      nU S   R                  5       nUS:X  a-  US:X  a'  US   S   S:w  a  [        SUS   S    S3[        5        g[        XAX#S-   5      u  pgXg4$ SSSSSSSS .n	U	R                  U5      =(       d%    [        U	R                  5       5      U   =(       d    UnXfS:H  4$ )!z
Returns:
    Image mode, not taking into account mask (transparency).
    ColorInversion is required (like for some DeviceCMYK).

z^Color spaces nested too deeply. If required, consider increasing MAX_IMAGE_MODE_NESTING_DEPTH.)r   Fr   zCannot interpret color spacer   z/Calz/Device   N	/ICCBasedr   z/Nz
/Alternate/Indexed)r!   r'   r$   /Separationr   Tz/DeviceN/DeviceCMYKz/BlackzColor z8 converted to Gray. Please share PDF with pypdf dev team)r%   Tr    r%   r!   r'   r"   r#   )1bitz/DeviceGraypalettez
/DeviceRGBr4   2bit4bit)r)   r   r   
isinstancestrlist
startswith
get_objectr
   intget_get_imagemodelenr   __name__values)
r*   r+   r,   r-   color_space_stricc_profilemodeinvert_colororiginal_color_spacemode_maps
             U/var/www/html/land-ocr/venv/lib/python3.13/site-packages/pypdf/_xobj_image_helpers.pyr@   r@   *   s\    ++l
 	
 {##O+s##%T***K
 	
 
Q	"	"6	*	*#k!nQR&88	Q;	&!!n//1[%67%//,;	Q:	%%a.335+y!)
 ?"D!!	Q=	(%a.335+y!)
 Tz	Q:	%*{1~.%a.335m+0@A0E#A&q)X51!4Q788pq +y!)
 !! *H 	_% 	!"#34	 	     datasizebitsc                 ,   SU-  S-
  n[        US   US   -  5      nSnSU-
  n[        US   5       HU  nUSU-
  :w  a
  US-  nSU-
  n[        US   5       H-  nX   U-	  U-  XHXqS   -  -   '   Xb-  nUS:  d  M#  US-  nSU-
  nM/     MW     [        U5      $ )Nr   r      )	bytearrayrangebytes)	rL   rM   rN   maskbyte_buffer
data_indexbityxs	            rJ   	bits2byterZ   z   s    I?DDGd1g-.KJ
d(C47^!d(?!OJd(CtAwA,0,<,Ct+KKAQK(KCQwa
$h  	  rK   rF   c                 R  ^  [         R                  " XU5      nU$ ! [         a  nUS   US   -  n[        U5      nUS:X  a  [	        S5      UeXe-  S:w  a  UeU[        U 5      -  U-  mSR                  U4S jU 5       5      n[         R                  " XU5      n S nAU$ S nAff = f)Nr   r   z9Data is 0 bytes, cannot process an image from empty data.rK   c              3   T   >#    U  H  n[        U4[        T5      -  5      v   M     g 7fN)rS   r>   ).0rY   ks     rJ   	<genexpr>,_extended_image_frombytes.<locals>.<genexpr>   s#     ;dqdSVm,,ds   %()r   	frombytes
ValueErrorrA   r   join)rF   rM   rL   imgexcnb_pixdata_lengthr_   s          @rJ   _extended_image_frombytesri      s    0ood$/ J  0a47"$i!%K 1$ISY,xx;d;;ood$/J0s    
B&A5B!!B&c                 d   [        U 5      nUS:X  a  S U  5       u  pp4XX44$ U S   n[        U[        5      (       a  UOUR                  5       nUS:X  aM  SU;   aG  U S   R                  5       U S   R                  5       p@UR	                  S5      u  p#[        U5      nXX44$ [        SU S	U  35      e)
Nr0   c              3   @   #    U  H  oR                  5       v   M     g 7fr]   )r=   )r^   values     rJ   r`   *__handle_flate__indexed.<locals>.<genexpr>   s     +XK5,<,<,>,>Ks   r   r    r   r   z(Expected color space with 4 values, got z: )rA   r9   r:   r=   splitr>   r   )r*   countbasehivallookupelement1s         rJ   __handle_flate__indexedru      s    Ez+XK+X(5%// 1~H%h44x(:M:M:OHzf()!n779;q>;T;T;VVnnV,E
%//
A%;-X
YYrK   colorsobj_as_textc           
        ^^^ SnSn[        U[        5      (       a  US   S:X  a  [        U5      u  p8n	mUS:X  a  Sn[        XS5      nOUS:X  a  Sn[        XS	5      n[	        X U5      mUS:X  Ga  [        T[
        [        45      (       a  TR                  5       m[        T[        5      (       a  TR                  m[        T[        5      (       a  TR                  5       m S
SS
SSS.[        WSS5      S      u  pnTR                  S:X  a  SU
-  n[        T5      nX:w  a`  X:  a,  [        SU SU S3[         5        T[#        S/X-
  -  5      -  mO*[%        TUS 5      (       d  [        SU SU S3[         5        TSU mTSU
 TU
S /mSR'                  UU4S j[)        TR*                  S   5       5       5      n[,        R.                  " UTR*                  U5      mGOFTR1                  U5      m[        T5      W	S-   U
-  :w  a  [        SU 3[         5        SmOUS:X  a0  SR'                  T Vs/ s H  n[#        XU/5      PM     sn5      mSnOUS:X  a  / nU4S j[)        SS	[        T5      S	-  -  S	5       5        H|  u  nnnn[3        SSUS-  -
  -  SUS-  -
  -  5      n[3        SSUS-  -
  -  SUS-  -
  -  5      n[3        SSUS-  -
  -  SUS-  -
  -  5      nUR5                  [#        UUU45      5        M~     SR'                  U5      mSnTb  TR7                  TUS9  TR1                  U[8        R:                  :X  a  SOS5      mOJ[        U[>        5      (       d5  US   S":X  a,  [        X4U5      S   nUU:w  a  [,        R.                  " UX5      mUS:X  a  S#nS$nTXvS%4$ s  snf ! [<         a    [        S W S!3[         5        Sm N6f = f)&z\
Process image encoded in flateEncode
Returns img, image_format, extension, color inversion
z.pngPNGr   r2   r"   r$   r   r#   r0   )r   r   r   )r   r$   r%   )r   r$   r!   )r0   r$   r'   )r    r%   r$   r!   r'   r   r    z#Not enough lookup values: Expected z, got .Nz!Too many lookup values: Expected rK   c              3      >^#    U  H8  mS R                  UUU4S j[        TR                  S   5       5       5      v   M:     g7f)rK   c              3   `   >#    U  H#  nTTR                  UT45      S :  a  SOS   v   M%     g7f)   r   r   N)getpixel)r^   rY   
colors_arrre   rX   s     rJ   r`   *_handle_flate.<locals>.<genexpr>.<genexpr>   s3      !3A #aV(<s(B1J!3s   +.r   N)rd   rR   rM   )r^   rX   r   re   s    @rJ   r`    _handle_flate.<locals>.<genexpr>   sD      
 0	 HH !&sxx{!3   0s   A Ar   zInvalid Lookup Table in r%   r!   r'   c              3   2   >#    U  H  nTXS -    v   M     g7f)r0   N )r^   nrs   s     rJ   r`   r   	  s      +3Vaqq5)3Vs      )rawmodezBase z8 not coded please share the pdf file with pypdf dev teamr1   z.tifTIFFF) r9   r   ru   rZ   ri   r   r   get_datar   original_bytesr:   encoder@   rF   rA   r   rB   rS   r   rd   rR   rM   r   rb   convertr>   append
putpaletter   DEVICE_GRAYKeyErrorr   )rM   rL   rF   r*   rv   rw   	extensionimage_formatrq   rr   nbconvexpected_countactual_countarrb_rgb_c_m_y_k_r_g_bmode2r   re   rs   s                            @@@rJ   _handle_flater      s    IL +{++A*0L+B;+O(5&wQ'	Q'
#D
5Cj f24GHII__&Ff.//**Ffc""]]_FA	Q " &( T1b)!,.NBd xx3!"R"6{1#4&A.AQQWXdWeefg$ %~/L(M"NN5f^_6MNN&??OvVbUccde$ $O^4F$Sbk6"#;7
hh 
 #388A;/  oodCHHc:kk$'v;519"22"%=k]#KXV!FS[ XX&HAuaAY'7&HIF D V^D+38AVPQAQ<RTU3V+BB !BH!5R#X!FG BH!5R#X!FG BH!5R#X!FGE2r2,$78+ !XXd^F D%NN64N8++T[-D-D%Dc%PCZ00[^{5R {D9!<5=//%4Cv~	..7 'IQ  	vUV F	s   #N0 5N+0 OOc                    Sn[         R                  " [        U5      SS9n[        X4U5      u  p'US:X  a  [	        [
        UR                  5      nUS;   nUR                  S:X  a  US:X  a  SnUR                  U:X  d  UR                  U1SS	1:X  a  UnOUUR                  U1SS
1:X  a0  [         R                  " X&R                  UR                  5       5      nOUR                  U5      nUR                  S
:X  a  UR                  S5      nSn	XXW4$ )zV
Process image encoded in flateEncode
Returns img, image_format, extension, inversion
z.jp2)JPEG2000)formatsr   )r'   r&   r!   r%   r$   r'   r   )r   openr   r@   r
   r(   rF   rb   rM   tobytesr   )
rM   rL   rF   r*   rv   r   img1rG   re   r   s
             rJ   _handle_jpxr   !  s     I::gdm];D'TBDrzM499-y(yyFtu}yyDTYY-#s;
))T	vv.	. oodIIt||~>ll4  xx6kk% Li55rK   re   x_object_objlfiltersrG   c                 0  ^^^	 UR                  [        R                  U R                  S:X  a$  U[        R
                  [        R                  4;   d  U(       a.  U R                  S:X  a  SS/[        U R                  5       5      -  OS 5      m[        U[        5      (       a  US   R                  5       S:X  a  S m[        U[        5      (       a5  US   R                  5       S:X  a  SS/[        U R                  5       5      -  mTb  [        U4S j[        [        T5      5       5       5      (       db  / n[        S[        T5      S	5       H5  nTU   m	TUS
-      mUR                  UU	4S j[        S5       5       5        M7     U R                  U5      n U $ )Nr'   r%   g      ?g        r   r2   r3   c              3   :   >#    U  H  nTU   US -  :H  v   M     g7f)r   Nr   )r^   idecodes     rJ   r`    _apply_decode.<locals>.<genexpr>c  s      %UBTQfQi1q5&8BTs   r   r   c              3   X   >#    U  H  n[        S US -  TT-
  -  T-   -  5      v   M!     g7f)g     o@N)round)r^   jdmaxdmins     rJ   r`   r   h  s3      KUaeq5yD4K84?@AA:s   '*   )r?   IADECODErF   FT
DCT_DECODE
JPX_DECODErA   getbandsr9   r   r=   allrR   extendpoint)
re   r   r   r*   rG   lutr   r   r   r   s
          @@@rJ   _apply_decoder   G  sP    
		 XXH0N$NS sc#,,.)	)
 F 	;,,N%%':5;,,N%%'=8sc#,,.11#%U%FBT%U"U"Uq#f+q)A!9D!a%=DJJ KPQT:  * iinJrK   c                 N   [         R                  U ;   a'  U [         R                     [        R                  :X  a  SnU R	                  SS5      S:  a%  [        U R	                  SS5       S3SS5      u  p4X44$ [        UUS:X  a  [        U5      (       d  SU;  a  S	OUS5      u  p4X44$ )
Nr!   z/BitsPerComponentrP   rW   r   r   r   Grayr   )r   COLOR_SPACEr   
DEVICE_RGBr?   r@   r   )r   rv   r*   rF   rG   s        rJ   _get_mode_and_invert_colorr   o  s     	,&(K,B,BB $+Q/!3+ 3Q78<a
"  , !'44k1  
 rK   )r   )5__doc__sysior   typingr   r   r   r   r   r	   r
   _utilsr   r   	constantsr   r   r   r   r   errorsr   r   genericr   r   r   r   r   r   version_infor   typing_extensionsPILr   r   ImportErrorr(   __annotations__r)   r>   r:   boolr@   rS   rZ   ri   ru   r   r   r   r   r   rK   rJ   <module>r      s   ? 
  ? ? ? < " ( , 5  BQ7" +1 #>y  %' c & 	M sDIs*+M M  M  	M 
 =$M `E sCx   $
38_,1
[[(Z ZsCc?Q9R Z$l/
S/l/
l/ l/ 	l/
 l/ l/ 5;;S$&'l/^#6
S/#6
#6 #6 	#6
 #6 5;;S$&'#6L%	%sCx.% % sDIs*+	%
 % [[%PsCx.*-<A#tCyRUBU<V
=$e
  
	= s   3F F