
    SAi$                         S SK r S SKr S SKrS SKJr  S SKJrJrJr  S SK	J
r
Jr  S SKJr  S SKJrJrJrJr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)    N)BytesIO)BinaryIOLiteralTuple)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                     U S-   S-  S-  $ )N       )r   s    J/var/www/html/land-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 )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__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&!:; 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<   r2   r8   )r=   rE   rF   s      r   
write_lineBMPWriter.write_lineZ   s8    TYY!a%4==!889dr   )r!   r3   r    r#   r2   r;   r<   r"   )
__name__
__module____qualname____firstlineno__r   intrC   bytesrI   __static_attributes__r   r   r   r   r   #   sE    4.8 4.3 4.s 4.C 4.D 4.l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)ImageWriter_   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)rU   ospathexistsmakedirs)r=   rU   s     r   rC   ImageWriter.__init__e   s3    ww~~dkk**KK$ +r   imagec                    UR                   u  p#UR                  R                  5       nUS   S   [        ;   a  U R	                  U5      nU$ 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  aM  [        UR                  ;   d  [        UR                  ;   a%  U R                  XX2S-  UR                  S-  5      nU$ UR                  S:X  aG  [        UR                  ;   d  [        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_filtersr   
_save_jpegr   _save_jpeg2000_is_jbig2_iamge_save_jbig2r!   	_save_bmpr   
colorspacer   r   r   r6   r   _save_bytes	_save_raw)r=   r\   r"   r#   filtersnames         r   export_imageImageWriter.export_imagej   s   --,,**,2;q>00??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                    UR                   R                  5       n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 image.jpgwbr   )Image
ImageChopsRGBJPEGN)r`   get_data_create_unique_image_nameopenr
   rg   PILrq   rr   ImportErrorPIL_ERROR_MESSAGEr   invertconvertsaver8   )
r=   r\   rF   rk   rX   r    rq   rr   ifprB   s
             r   rb   ImageWriter._save_jpeg   s    ||$$&33E6B
$"e&6&6695 dmJJsO%%a(IIe$r6"   # 9%&7889	  s$   C"CA"C"CC""
C1c                 T   UR                   R                  5       n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 imagez.jp2rp   r   )rq   JPEG2000N)
r`   ru   rv   rw   rx   rq   ry   rz   r   r}   )	r=   r\   rF   rk   rX   r    rq   r~   rB   s	            r   rc   ImageWriter._save_jpeg2000   s    ||$$&33E6B
$5% $-C

3AFF2z"    5!"3445  s"   BA;.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.jb2rp   JBIG2Globalsr%   zWThere should never be more than one JBIG2Globals associated with a JBIG2 embedded imager      
N)rv   rw   r   r`   ra   r   appendresolver6   r   r8   ru   rstriprH   r   get_segmentsr   
write_file)r=   r\   rk   rX   r    input_streamglobal_streamsrj   filter_nameparamsmsgreadersegmentswriters                 r   re   ImageWriter._save_jbig2   sA   33E6B
$"9LNll..0G'.#"77"))&*@*H*H*JK (/ >"Q&=  $C((>"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.bmprp   r   N)rv   rw   r   r`   ru   r9   rI   )r=   r\   r"   r#   r   r!   rk   rX   r    bmprF   rB   rE   s                r   rf   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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 bytesro   r'   rp   r   )rq   ImageOpsr%   1Lr   rs   r   CMYKrawN)rv   r_   r6   r`   ru   r!   rw   rx   rq   r   ry   rz   	frombytesr{   r}   )r=   r\   rk   rX   r"   r#   channelsr    rq   r   modeimgs               r   rh   ImageWriter._save_bytes   s9   33E6B
u||,,./%7&@EJJQRNS$5 zzQqX]qX]qX]//$u||7L7L7NPUVCs{ooc*HHRL/ 2 '  5!"3445 2 s%   (E*D72B;E7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%   rp   N)r!   r_   rv   rw   r8   r`   ru   )r=   r\   extrk   rX   r    s         r   ri   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`   ra   r   )r\   rj   r   r   s       r   rd   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%   )rk   rW   rX   joinrU   rY   )r=   r\   r   rk   rX   	img_indexs         r   rv   %ImageWriter._create_unique_image_name  s    zzCww||DKK.	ggnnT""

I;;D77<<T2DNI ggnnT"" zr   )rU   )rK   rL   rM   rN   __doc__r7   rC   r	   rl   rb   rc   re   rO   rf   rh   ri   staticmethodboolrd   r   rv   rQ   r   r   r   rS   rS   _   s   
%s %t %
$' $c $L C ,G  ( S :  	
   
& S @w 3  w 4  w S U3PS8_ r   rS   ) rW   os.pathr4   ior   typingr   r   r   pdfminer.jbig2r   r   pdfminer.layoutr	   pdfminer.pdfcolorr
   r   r   r   r   pdfminer.pdfexceptionsr   pdfminer.pdftypesr   r   r   r   rz   rO   r   r   rS   r   r   r   <module>r      sj    	    + + ? #  1 / s s 9 9xD Dr   