
    ;3h$                         d dl Z d dlZ d dlZd dlmZ d dlmZ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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                     | dz   dz  dz  S )N       )r   s    N/var/www/html/audio-gradio/venv/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;   r1   r7   )r<   rC   rD   s      r   
write_linezBMPWriter.write_lineZ   s8    TYY!a%4==!889dr   )__name__
__module____qualname__r   intrB   bytesrG   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)rO   ospathexistsmakedirs)r<   rO   s     r   rB   zImageWriter.__init__e   s2    ww~~dkk*KK$ +r   imagec                 l   |j                   \  }}|j                  j                         }|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_filtersr   
_save_jpegr   _save_jpeg2000_is_jbig2_iamge_save_jbig2r    	_save_bmpr   
colorspacer   r   r   r5   r   _save_bytes	_save_raw)r<   rU   r!   r"   filtersnames         r   export_imagez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                    |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              w xY w# 1 sw Y   |S xY w)zSave a JPEG encoded image.jpgwbr   )Image
ImageChopsRGBJPEGN)rY   get_data_create_unique_image_nameopenr
   r`   PILri   rj   ImportErrorPIL_ERROR_MESSAGEr   invertconvertsaver7   )
r<   rU   rD   rd   rR   r   ri   rj   ifprA   s
             r   r[   zImageWriter._save_jpeg   s    ||$$&33E6B
d$ 	"e&6&6695 dmJJsO%%a(IIe$r6"	  # 9%&7889		 s$   C CA"C CC  C*c                 J   |j                   j                         }| j                  |d      \  }}t        |d      5 }	 ddlm} t        |      }|j                  |      }|j                  |d       ddd       |S # t        $ r t        t              w xY w# 1 sw Y   |S xY w)zSave a JPEG 2000 encoded imagez.jp2rh   r   )ri   JPEG2000N)
rY   rm   rn   ro   rp   ri   rq   rr   r   ru   )	r<   rU   rD   rd   rR   r   ri   rv   rA   s	            r   r\   zImageWriter._save_jpeg2000   s    ||$$&33E6B
d$ 	#5% $-C

3AFF2z"	#   5!"3445	# s"   BA<.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.jb2rh   JBIG2Globalsr$   zWThere should never be more than one JBIG2Globals associated with a JBIG2 embedded imager      
N)rn   ro   r   rY   rZ   r   appendresolver5   r   r7   rm   rstriprF   r   get_segmentsr   
write_file)r<   rU   rd   rR   r   input_streamglobal_streamsrc   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.bmprh   r   N)rn   ro   r   rY   rm   r8   rG   )r<   rU   r!   r"   r   r    rd   rR   r   bmprD   rA   rC   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              w xY w# 1 sw Y   |S xY w)z*Save an image without encoding, just bytesrg   r&   rh   r   )ri   ImageOpsr$   1Lr   rk   r   CMYKrawN)rn   rX   r5   rY   rm   r    ro   rp   ri   r   rq   rr   	frombytesrs   ru   )r<   rU   rd   rR   r!   r"   channelsr   ri   r   modeimgs               r   ra   zImageWriter._save_bytes   s?   33E6B
dv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,D14B3E1E

EEc                    d|j                   |j                  d   |j                  d   fz  }| 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 encodingz.%d.%dx%d.imgr   r$   rh   N)r    rX   rn   ro   r7   rY   rm   )r<   rU   extrd   rR   r   s         r   rb   zImageWriter._save_raw
  s~    U]]1-=u}}Q?O PP33E3?
d$ 	.HHU\\**,-	.	.s   *BBc                 `    | j                   j                         }|D ]  \  }}|t        v s y y)NTF)rY   rZ   r   )rU   rc   r   r   s       r   r]   zImageWriter._is_jbig2_iamge  s9    ,,**,#* 	K33	 r   r   c                    |j                   |z   }t        j                  j                  | j                  |      }d}t        j                  j                  |      rad|j                   ||fz  }t        j                  j                  | j                  |      }|dz  }t        j                  j                  |      ra||fS )Nr   z%s.%d%sr$   )rd   rQ   rR   joinrO   rS   )r<   rU   r   rd   rR   	img_indexs         r   rn   z%ImageWriter._create_unique_image_name  s    zzCww||DKK.	ggnnT"

Is;;D77<<T2DNI ggnnT" Tzr   )rH   rI   rJ   __doc__r6   rB   r	   re   r[   r\   r^   rK   r_   ra   rb   staticmethodboolr]   r   rn   r   r   r   rN   rN   _   s   
%s %t %
$' $c $L C ,G  ( S :  	
   
& S @w 3  w 4  w S U3PS8_ r   rN   ) rQ   os.pathr3   ior   typingr   r   r   pdfminer.jbig2r   r   pdfminer.layoutr	   pdfminer.pdfcolorr
   r   r   r   r   pdfminer.pdfexceptionsr   pdfminer.pdftypesr   r   r   r   rr   rK   r   r   rN   r   r   r   <module>r      sj    	    + + ? #  1 / s s 9 9xD Dr   