
    )iS$                         S SK r S SKr S SKrS SKJr  S SKJrJr   S SK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  SSKJrJrJrJr  SrS\S\4S jr " S S5      r " S S5      rg! \	 a	    S SK
Jr   NZf = f)    N)BytesIO)BinaryIOTuple)Literal   )JBIG2StreamReaderJBIG2StreamWriter)LTImage)LITERAL_DEVICE_CMYK)LITERAL_DEVICE_GRAY)LITERAL_DEVICE_RGB)LITERALS_DCT_DECODELITERALS_JBIG2_DECODELITERALS_JPX_DECODELITERALS_FLATE_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                     U S-   S-  S-  $ )N       )r   s    N/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/pdfminer/image.pyalign32r       s    UqLA    c            
       H    \ rS rSrS\S\S\S\SS4
S jrS	\S
\SS4S jrSr	g)	BMPWriter$   fpbitswidthheightr   Nc                    Xl         X l        X0l        X@l        US:X  a  SnOUS:X  a  SnOUS:X  a  SnO[	        U5      e[        U R                  U R                  -  S-   S-  5      U l        U R                  U R                  -  U l        SUS	-  -   n[        R                  " S
SU R                  U R                  SU R                  SU R                  SSUS5      n[        U5      S:X  d   [        [        U5      5      5       e[        R                  " SSSX`R                  -   SSU5      n[        U5      S:X  d   [        [        U5      5      5       eU R                   R                  U5        U R                   R                  U5        US:X  a;  S H4  n	U R                   R                  [        R                  " SXU	5      5        M6     OIUS:X  aC  [        S5       H4  n	U R                   R                  [        R                  " SXU	5      5        M6     U R                   R                  5       U l        U R                  U R                  -   U l        g )Nr               r      6   r   z<IiiHHIIIIII(   z<ccIHHI   B   M   )r      BBBx)r   r   r    r!   
ValueErrorr   linesizedatasizestructpacklenstrwriterangetellpos0pos1)
selfr   r   r    r!   ncols
headersizeinfoheaderis
             r   __init__BMPWriter.__init__%   s   	
19EQYERZET""dii!7!!; AB3uqy(
{{JJKKIIMM
 4yB.CI.tT:#=q!Z
 6{b 2#c&k"22 fdA:fkk&!:; c\3Zfkk&!:;  GGLLN	II-	r   ydatac                     U R                   R                  U R                  US-   U R                  -  -
  5        U R                   R	                  U5        g )Nr   )r   seekr:   r0   r6   )r;   rC   rD   s      r   
write_lineBMPWriter.write_lineU   s8    TYY!a%4==!889dr   )r   r1   r   r!   r0   r9   r:   r    )
__name__
__module____qualname____firstlineno__r   intrA   bytesrG   __static_attributes__r   r   r   r   r   $   sE    ..8 ..3 ..s ..C ..D ..`C u  r   r   c                       \ rS rSrSrS\SS4S jrS\S\4S jrS\S\4S	 jr	S\S\4S
 jr
S\S\4S jrS\S\S\S\S\S\4S jrS\S\4S jrS\S\4S jr\S\S\4S j5       rS\S\S\\\4   4S jrSrg)ImageWriterZ   zMWrite image to a file

Supports various image types: JPEG, JBIG2 and bitmaps
outdirr   Nc                     Xl         [        R                  R                  U R                   5      (       d!  [        R                  " U R                   5        g g )N)rS   ospathexistsmakedirs)r;   rS   s     r   rA   ImageWriter.__init__`   s3    ww~~dkk**KK$ +r   imagec                 x   UR                   u  p#UR                  R                  5       n[        U5      S:X  a#  US   S   [        ;   a  U R                  U5      nU$ [        U5      S:X  a#  US   S   [        ;   a  U R                  U5      nU$ U R                  U5      (       a  U R                  U5      nU$ UR                  S:X  a%  U R                  XX2S-   S-  UR                  5      nU$ UR                  S:X  a9  [        UR                  ;   a%  U R                  XX2S-  UR                  S-  5      nU$ UR                  S:X  a3  [        UR                  ;   a  U R                  XX2UR                  5      nU$ [        U5      S:X  a#  US   S   [        ;   a  U R!                  U5      nU$ U R#                  U5      nU$ )zSave an LTImage to diskr   r   r'   r$   r   )srcsizestreamget_filtersr4   r   
_save_jpegr   _save_jpeg2000_is_jbig2_iamge_save_jbig2r   	_save_bmpr   
colorspacer   r   _save_bytes	_save_raw)r;   rZ   r    r!   filtersnames         r   export_imageImageWriter.export_imagee   s   --,,**,w<1A2E!E??5)D. + \Q71:a=4G#G&&u-D( % !!%((##E*D"  ZZ1_>>%q8H%**UD  ZZ1_!3u7G7G!G>>%	5::PQ>RD  ZZ1_!48H8H!H>>%uzzJD  \Q71:a=4I#I##E*D
  >>%(Dr   c                    UR                   R                  5       nUc   eU R                  US5      u  p4[        US5       n[        UR
                  ;   aZ   SSKJnJn  [        U5      nUR                  U5      n	UR                  U	5      n	U	R                  S5      n	U	R                  US5        OUR                  U5        SSS5        U$ ! [         a    [        [        5      ef = f! , (       d  f       U$ = f)zSave a JPEG encoded imageN.jpgwbr   )Image
ImageChopsRGBJPEG)r]   get_rawdata_create_unique_image_nameopenr   rd   PILrn   ro   ImportErrorPIL_ERROR_MESSAGEr   invertconvertsaver6   )
r;   rZ   raw_datarh   rV   r   rn   ro   ifpr@   s
             r   r_   ImageWriter._save_jpeg   s    <<++-###33E6B
$"e&6&6695 h'JJsO%%a(IIe$r6""   # 9%&7889	  s%    C'C
A"C'
C$$C''
C6c                 ^   UR                   R                  5       nUc   eU R                  US5      u  p4[        US5       n SSKJn  [        U5      nUR                  U5      nUR                  US5        SSS5        U$ ! [         a    [        [        5      ef = f! , (       d  f       U$ = f)zSave a JPEG 2000 encoded imageNz.jp2rm   r   rn   JPEG2000)
r]   rr   rs   rt   ru   rn   rv   rw   r   rz   )	r;   rZ   r{   rh   rV   r   rn   r|   r@   s	            r   r`   ImageWriter._save_jpeg2000   s    <<++-###33E6B
$5% (#C

3AFF2z"    5!"3445  s$    BB .B BB
B,c                    U R                  US5      u  p#[        US5       n[        5       n/ nUR                  R	                  5       nU H3  u  pU[
        ;   d  M  UR                  U	S   R                  5       5        M5     [        U5      S:  a  Sn
[        U
5      e[        U5      S:X  a1  UR                  US   R                  5       R                  S5      5        UR                  UR                  R                  5       5        UR                  S5        [        U5      nUR                  5       n[!        U5      nUR#                  U5        SSS5        U$ ! , (       d  f       U$ = f)	zSave a JBIG2 encoded imagez.jb2rm   JBIG2Globalsr   zWThere should never be more than one JBIG2Globals associated with a JBIG2 embedded imager      
N)rs   rt   r   r]   r^   r   appendresolver4   r/   r6   get_datarstriprF   r   get_segmentsr	   
write_file)r;   rZ   rh   rV   r   input_streamglobal_streamsrg   filter_nameparamsmsgreadersegmentswriters                 r   rb   ImageWriter._save_jbig2   s@   33E6B
$"9LNll..0G'.#"77"))&*@*H*H*JK (/ >"Q&=  !o%>"a'"">!#4#=#=#?#F#Fu#MNu||4467a &|4F**,H&r*Fh'/ 0 1 0 s   6EC3E
E'r    r!   bytes_per_liner   c           	      $   U R                  US5      u  pg[        US5       n[        XX#5      n	UR                  R	                  5       n
Sn[        U5       H  nU	R                  XXU-    5        X-  nM     SSS5        U$ ! , (       d  f       U$ = f)zSave a BMP encoded imagez.bmprm   r   N)rs   rt   r   r]   r   r7   rG   )r;   rZ   r    r!   r   r   rh   rV   r   bmprD   r@   rC   s                r   rc   ImageWriter._save_bmp   s     33E6B
$Be4C<<((*DA6]qq~+=">?# #	    s   AB  
Bc                    U R                  US5      u  p#UR                  u  pE[        UR                  R	                  5       5      U-  U-  UR
                  S-  -  n[        US5       n SSKJn  SSKJ	n	  UR
                  S:X  a  Sn
OJUR
                  S:X  a	  US:X  a  S	n
O1UR
                  S:X  a	  US
:X  a  Sn
OUR
                  S:X  a  US:X  a  Sn
UR                  W
UR                  UR                  R	                  5       S5      nU
S	:X  a  U	R                  U5      nUR                  U5        SSS5        U$ ! [         a    [        [        5      ef = f! , (       d  f       U$ = f)z*Save an image without encoding, just bytesrl   r$   rm   r   r   )ImageOpsr   1Lr   rp   r   CMYKrawN)rs   r\   r4   r]   r   r   rt   ru   rn   r   rv   rw   	frombytesrx   rz   )r;   rZ   rh   rV   r    r!   channelsr   rn   r   modeimgs               r   re   ImageWriter._save_bytes   s:   33E6B
u||,,./%7&@EJJQRNS$5%(
 zzQqX]qX]qX]//$u||7L7L7NPUVCs{ooc*HHRL+ . '  5!"3445	 . s%   (E*D;6B;E;EE
E'c                 $   SUR                   UR                  S   UR                  S   4-  nU R                  X5      u  p4[        US5       nUR	                  UR
                  R                  5       5        SSS5        U$ ! , (       d  f       U$ = f)z#Save an image with unknown encodingz.%d.%dx%d.imgr   r   rm   N)r   r\   rs   rt   r6   r]   r   )r;   rZ   extrh   rV   r   s         r   rf   ImageWriter._save_raw   sx    U]]1-=u}}Q?O PP33E?
$HHU\\**,-  s   *B  
Bc                 f    U R                   R                  5       nU H  u  p#U[        ;   d  M    g   g)NTF)r]   r^   r   )rZ   rg   r   r   s       r   ra   ImageWriter._is_jbig2_iamge  s2    ,,**,#*K33 $+ r   r   c                    UR                   U-   n[        R                  R                  U R                  U5      nSn[        R                  R                  U5      (       af  SUR                   XR4-  n[        R                  R                  U R                  U5      nUS-  n[        R                  R                  U5      (       a  Mf  X44$ )Nr   z%s.%d%sr   )rh   rU   rV   joinrS   rW   )r;   rZ   r   rh   rV   	img_indexs         r   rs   %ImageWriter._create_unique_image_name  s    zzCww||DKK.	ggnnT""

I;;D77<<T2DNI ggnnT"" zr   )rS   )rI   rJ   rK   rL   __doc__r5   rA   r
   ri   r_   r`   rb   rM   rc   re   rf   staticmethodboolra   r   rs   rO   r   r   r   rQ   rQ   Z   s   
%s %t %
' c @ C .G  * S :%(25GJRU	 S <w 3  w 4  w S U3PS8_ r   rQ   )rU   os.pathr2   ior   typingr   r   r   rv   typing_extensionsjbig2r   r	   layoutr
   pdfcolorr   r   r   pdftypesr   r   r   r   rw   rM   r   r   rQ   r   r   r   <module>r      s    	    "*
 8  ) ) ( / s s 3 3ly yc  *)*s   A. .A=<A=