
    +Sib%                         d dl Z d dlZ d dlZd dlmZ d dlmZmZ d dlm	Z	m
Z
 d dlmZ d dlmZmZmZmZmZ d dlmZ d dlmZmZmZmZ d	Zd
edefdZ G d d      Z G d d      Zy)    N)BytesIO)BinaryIOLiteral)JBIG2StreamReaderJBIG2StreamWriter)LTImage)LITERAL_DEVICE_CMYKLITERAL_DEVICE_GRAYLITERAL_DEVICE_RGBLITERAL_INLINE_DEVICE_GRAYLITERAL_INLINE_DEVICE_RGB)PDFValueError)LITERALS_DCT_DECODELITERALS_FLATE_DECODELITERALS_JBIG2_DECODELITERALS_JPX_DECODEzCould not import Pillow. This dependency of pdfminer.six is not installed by default. You need it to to save jpg images to a file. Install it with `pip install 'pdfminer.six[image]'`xreturnc                     | dz   dz  dz  S )N       )r   s    W/var/www/html/leadgen/airagagent/rag_env/lib/python3.12/site-packages/pdfminer/image.pyalign32r      s    UqLA    c            
       <    e Zd Zdededededdf
dZded	eddfd
Zy)	BMPWriterfpbitswidthheightr   Nc                    || _         || _        || _        || _        |dk(  rd}n|dk(  rd}n|dk(  rd}nt	        |      t        | j                  | j                  z  dz   dz        | _        | j                  | j                  z  | _        d|d	z  z   }t        j                  d
d| j                  | j                  d| j                  d| j                  dd|d      }t        |      dk(  sJ t        t        |                   t        j                  ddd|| j                  z   dd|      }t        |      dk(  sJ t        t        |                   | j                   j                  |       | j                   j                  |       |dk(  r9dD ]3  }	| j                   j                  t        j                  d|	|	|	             5 nF|dk(  rAt        d      D ]3  }	| j                   j                  t        j                  d|	|	|	             5 | j                   j                         | _        | j                  | j                  z   | _        y )N               r      6   r   z<IiiHHIIIIII(   z<ccIHHI   B   M   )r      BBBx)r   r   r    r!   r   r   linesizedatasizestructpacklenstrwriterangetellpos0pos1)
selfr   r   r    r!   ncols
headersizeinfoheaderis
             r   __init__zBMPWriter.__init__$   s   	
19EQYERZE%%dii!7!!; AB3uqy(
{{JJKKIIMM
 4yB.CI.&
 6{b 2#c&k"22 fdA: <fkk&!Q:;<c\3Z <fkk&!Q:;<GGLLN	II-	r   ydatac                     | j                   j                  | j                  |dz   | j                  z  z
         | j                   j	                  |       y )Nr#   )r   seekr:   r0   r6   )r;   rB   rC   s      r   
write_linezBMPWriter.write_lineZ   s8    TYY!a%4==!889dr   )__name__
__module____qualname__r   intrA   bytesrF   r   r   r   r   r   #   sE    4.8 4.3 4.s 4.C 4.D 4.lC u  r   r   c                       e Zd ZdZdeddfdZdedefdZdedefdZdedefd	Z	dedefd
Z
dedededededefdZdedefdZdedefdZededefd       Zdededeeef   fdZy)ImageWriterzUWrite image to a file

    Supports various image types: JPEG, JBIG2 and bitmaps
    outdirr   Nc                     || _         t        j                  j                  | j                         s t        j                  | j                          y y )N)rN   ospathexistsmakedirs)r;   rN   s     r   rA   zImageWriter.__init__e   s2    ww~~dkk*KK$ +r   imagec                    |j                   \  }}|j                  j                         }|s| j                  |      }|S |d   d   t        v r| j                  |      }|S |d   d   t        v r| j                  |      }|S | j                  |      r| j                  |      }|S |j                  dk(  r'| j                  ||||dz   dz  |j                        }|S |j                  dk(  rKt        |j                  v st        |j                  v r'| j                  ||||dz  |j                  dz        }|S |j                  dk(  rEt        |j                  v st         |j                  v r!| j                  |||||j                        }|S t#        |      dk(  r!|d   d   t$        v r| j                  |      }|S | j'                  |      }|S )zSave an LTImage to diskr   r#   r(   r%   r   )srcsizestreamget_filters_save_bytesr   
_save_jpegr   _save_jpeg2000_is_jbig2_iamge_save_jbig2r   	_save_bmpr   
colorspacer   r
   r   r4   r   	_save_raw)r;   rT   r    r!   filtersnames         r   export_imagezImageWriter.export_imagej   s   --,,**,##E*D@ = R[^22??5)D: 7 R[^22&&u-D4 1 !!%(##E*D. + ZZ1_>>%q8H%**UD( % ZZ1_%"2"22(E,<,<<>>%	5::PQ>RD  ZZ1_5#3#33)U-=-==>>%uzzJD  \Q71:a=4I#I##E*D
  >>%(Dr   c                    |j                   j                         }| j                  |d      \  }}t        |d      5 }t        |j
                  v rZ	 ddlm}m} t        |      }	|j                  |	      }
|j                  |
      }|j                  d      }|j                  |d       n|j                  |       ddd       |S # t        $ r}t        t              |d}~ww xY w# 1 sw Y   |S xY w)zSave a JPEG encoded image.jpgwbr   )Image
ImageChopsNRGBJPEG)rX   get_data_create_unique_image_nameopenr	   r`   PILrh   ri   ImportErrorPIL_ERROR_MESSAGEr   invertconvertsaver6   )r;   rT   rC   rc   rQ   r   rh   ri   errifpimginvertedrgb_imgs                r   r[   zImageWriter._save_jpeg   s    ||$$&33E6B
d$ 	"e&6&66B5 dmjjo%,,S1"**51R(	  # B%&78cAB		 s0   C%CA"C%	C"CC""C%%C/c                 T   |j                   j                         }| j                  |d      \  }}t        |d      5 }	 ddlm} t        |      }|j                  |      }	|	j                  |d       ddd       |S # t        $ r}t        t              |d}~ww xY w# 1 sw Y   |S xY w)zSave a JPEG 2000 encoded imagez.jp2rg   r   )rh   NJPEG2000)
rX   rl   rm   rn   ro   rh   rp   rq   r   rt   )
r;   rT   rC   rc   rQ   r   rh   ru   rv   r@   s
             r   r\   zImageWriter._save_jpeg2000   s    ||$$&33E6B
d$ 	#>% $-C

3AFF2z"	#   >!"34#=>	# s.   BA<.B<	BBBBB'c                    | j                  |d      \  }}t        |d      5 }t               }g }|j                  j	                         }|D ]0  \  }}	|t
        v s|j                  |	d   j                                2 t        |      dkD  rd}
t        |
      t        |      dk(  r1|j                  |d   j                         j                  d             |j                  |j                  j                                |j                  d       t        |      }|j                         }t!        |      }|j#                  |       ddd       |S # 1 sw Y   |S xY w)	zSave a JBIG2 encoded imagez.jb2rg   JBIG2Globalsr#   zWThere should never be more than one JBIG2Globals associated with a JBIG2 embedded imager      
N)rm   rn   r   rX   rY   r   appendresolver4   r   r6   rl   rstriprE   r   get_segmentsr   
write_file)r;   rT   rc   rQ   r   input_streamglobal_streamsrb   filter_nameparamsmsgreadersegmentswriters                 r   r^   zImageWriter._save_jbig2   sN   33E6B
d$ 	("9LNll..0G'. L#V"77"))&*@*H*H*JKL >"Q&=  $C((>"a'"">!#4#=#=#?#F#Fu#MNu||4467a &|4F**,H&r*Fh'/	(0 1	(0 s   7EC/EEr    r!   bytes_per_liner   c           	      $   | j                  |d      \  }}t        |d      5 }t        ||||      }	|j                  j	                         }
d}t        |      D ]  }|	j                  ||
|||z           ||z  }! 	 ddd       |S # 1 sw Y   |S xY w)zSave a BMP encoded imagez.bmprg   r   N)rm   rn   r   rX   rl   r7   rF   )r;   rT   r    r!   r   r   rc   rQ   r   bmprC   r@   rB   s                r   r_   zImageWriter._save_bmp   s     33E6B
d$ 	$BeV4C<<((*DA6] $q$q1~+=">?^#$		$ 	$ s   ABBc                    | j                  |d      \  }}|j                  \  }}t        |j                  j	                               |z  |z  |j
                  dz  z  }t        |d      5 }	 ddlm}m	}	 |j
                  dk(  rd}nD|j
                  dk(  r|dk(  rd	}n-|j
                  dk(  r|d
k(  rd}n|j
                  dk(  r|dk(  rd}|j                  |j                  |j                  j	                         d      }|d	k(  r|	j                  |      }|j                  |       ddd       |S # t        $ r}
t        t              |
d}
~
ww xY w# 1 sw Y   |S xY w)z*Save an image without encoding, just bytesrf   r%   rg   r   )rh   ImageOpsNr#   1Lr   rj   r   CMYKraw)rm   rW   r4   rX   rl   r   rn   ro   rh   r   rp   rq   	frombytesrr   rt   )r;   rT   rc   rQ   r    r!   channelsr   rh   r   ru   moderw   s                r   rZ   zImageWriter._save_bytes   sB   33E6B
dvu||,,./%7&@EJJQRNS$ 	> zzQqX]qX]qX]//$u||7L7L7NPUVCs{ooc*HHRL/	2 '  >!"34#=>	2 s1   *E,D14B3E1	E:E

EEEc                 &   d|j                    d|j                  d    d|j                  d    d}| j                  ||      \  }}t        |d      5 }|j	                  |j
                  j                                ddd       |S # 1 sw Y   |S xY w)z#Save an image with unknown encoding.r   r   r#   z.imgrg   N)r   rW   rm   rn   r6   rX   rl   )r;   rT   extrc   rQ   r   s         r   ra   zImageWriter._save_raw  s    %**Qu}}Q/0%--2B1C4H33E3?
d$ 	.HHU\\**,-	.	.s   *BBc                 `    | j                   j                         }|D ]  \  }}|t        v s y y)NTF)rX   rY   r   )rT   rb   r   _paramss       r   r]   zImageWriter._is_jbig2_iamge  s9    ,,**,$+ 	 K33	 r   r   c                    |j                   |z   }t        j                  j                  | j                  |      }d}t        j                  j                  |      rb|j                    d| | }t        j                  j                  | j                  |      }|dz  }t        j                  j                  |      rb||fS )Nr   r   r#   )rc   rP   rQ   joinrN   rR   )r;   rT   r   rc   rQ   	img_indexs         r   rm   z%ImageWriter._create_unique_image_name  s    zzCww||DKK.	ggnnT"jj\9+cU3D77<<T2DNI ggnnT" Tzr   )rG   rH   rI   __doc__r5   rA   r   rd   r[   r\   r^   rJ   r_   rZ   ra   staticmethodboolr]   tuplerm   r   r   r   rM   rM   _   s   
%s %t %
'' 'c 'R C ,G  ( S :  	
   
& S @w 3  w 4  w S U3PS8_ r   rM   )rP   os.pathr2   ior   typingr   r   pdfminer.jbig2r   r   pdfminer.layoutr   pdfminer.pdfcolorr	   r
   r   r   r   pdfminer.pdfexceptionsr   pdfminer.pdftypesr   r   r   r   rq   rJ   r   r   rM   r   r   r   <module>r      sg    	    $ ? #  1 / s s 9 9xG Gr   