
    #jb%                         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dS )    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    V/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/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dS )	BMPWriterfpbitswidthheightr   Nc                 n   || _         || _        || _        || _        |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                             |           |dk    r5dD ]1}	| j                             t          j	        d|	|	|	                     2nG|dk    rAt          d          D ]1}	| j                             t          j	        d|	|	|	                     2| j                                         | _        | j        | j        z   | _        d S )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__$   s2   	
199EEQYYEERZZEE%%%di!7!!; ABB3uqy(
{JKIM
 
 4yyBCII&
 
 6{{b   #c&kk"2"2   fdA:: < <fk&!Q::;;;;<c\\3ZZ < <fk&!Q::;;;;GLLNN	I-			r   ydatac                     | j                             | j        |dz   | j        z  z
             | j                             |           d S )Nr#   )r   seekr:   r0   r6   )r;   rB   rC   s      r   
write_linezBMPWriter.write_lineZ   sB    TY!a%4=!88999dr   )__name__
__module____qualname__r   intrA   bytesrF   r   r   r   r   r   #   su        4.8 4.3 4.s 4.C 4.D 4. 4. 4. 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dS )ImageWriterzUWrite image to a file

    Supports various image types: JPEG, JBIG2 and bitmaps
    outdirr   Nc                     || _         t          j                            | j                   st          j        | j                    d S d S )N)rN   ospathexistsmakedirs)r;   rN   s     r   rA   zImageWriter.__init__e   sC    w~~dk** 	%K$$$$$	% 	%r   imagec                    |j         \  }}|j                                        }|s|                     |          }n|d         d         t          v r|                     |          }nm|d         d         t          v r|                     |          }nA|                     |          r| 	                    |          }n|j
        dk    r%|                     ||||dz   dz  |j
                  }n|j
        dk    rAt          |j        v st          |j        v r%|                     ||||dz  |j
        dz            }n|j
        dk    r;t          |j        v st           |j        v r|                     |||||j
                  }nSt#          |          dk    r+|d         d         t$          v r|                     |          }n|                     |          }|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**DDR[^222??5))DDR[^222&&u--DD!!%(( 	)##E**DDZ1__>>%q8H%*UUDDZ1__%"222(E,<<<>>%	5:PQ>RRDDZ1__5#333)U-===>>%uzJJDD\\Q71:a=4I#I#I##E**DD >>%((Dr   c                 ,   |j                                         }|                     |d          \  }}t          |d          5 }t          |j        v r	 ddlm}m} n'# t          $ r}t          t                    |d}~ww xY wt          |          }	|                    |	          }
|                    |
          }|                    d          }|                    |d           n|                    |           ddd           n# 1 swxY w Y   |S )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   sb   |$$&&33E6BB
d$ 	"e&666B555555555" B B B%&788cAB dmmjjoo%,,S11"**511R((((	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s7   D	AD	
B &A;;B  A=D		DDc                    |j                                         }|                     |d          \  }}t          |d          5 }	 ddlm} n'# t          $ r}t          t                    |d}~ww xY wt          |          }|                    |          }	|		                    |d           ddd           n# 1 swxY w Y   |S )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B
d$ 	#>%%%%%%% > > >!"344#=> $--C

3AFF2z"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# s6   B9AB9
A0A++A00=B99B= B=c                 T   |                      |d          \  }}t          |d          5 }t                      }g }|j                                        }|D ];\  }}	|t
          v r-|                    |	d                                                    <t          |          dk    rd}
t          |
          t          |          dk    r@|
                    |d                                                             d                     |
                    |j                                                   |                    d           t          |          }|                                }t!          |          }|                    |           ddd           n# 1 swxY w Y   |S )	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   s   33E6BB
d$ 	("99LNl..00G'. L L#V"777"))&*@*H*H*J*JKKK>""Q&&=  $C(((>""a''"">!#4#=#=#?#?#F#Fu#M#MNNNu|4466777a   &|44F**,,H&r**Fh'''/	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(0 s   E'FF!$F!r    r!   bytes_per_liner   c           	      T   |                      |d          \  }}t          |d          5 }t          ||||          }	|j                                        }
d}t          |          D ](}|	                    ||
|||z                       ||z  })	 ddd           n# 1 swxY w Y   |S )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B
d$ 	$BeV44C<((**DA6]] $ $q$q1~+='=">???^#$		$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ s   A&BB!$B!c                    |                      |d          \  }}|j        \  }}t          |j                                                  |z  |z  |j        dz  z  }t          |d          5 }	 ddlm}m	}	 n'# t          $ r}
t          t                    |
d}
~
ww xY w|j        dk    rd}n;|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                                        d          }|d	k    r|	                    |          }|                    |           ddd           n# 1 swxY w Y   |S )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   s   33E6BB
dvu|,,..//%7&@EJQRNS$ 	>          > > >!"344#=> zQqX]]qX]]qX]]//$u|7L7L7N7NPUVVCs{{ooc**HHRLLL/	 	 	 	 	 	 	 	 	 	 	 	 	 	 	2 s7   +E-A65E6
B BBB0EEEc                 .   d|j          d|j        d          d|j        d          d}|                     ||          \  }}t          |d          5 }|                    |j                                                   ddd           n# 1 swxY w Y   |S )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    H%*HHu}Q/HH%-2BHHH33E3??
d$ 	.HHU\**,,---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   -B

BBc                 `    | j                                         }|D ]\  }}|t          v r dS dS )NTF)rX   rY   r   )rT   rb   r   _paramss       r   r]   zImageWriter._is_jbig2_iamge  sF    ,**,,$+ 	 	 K333tt 4ur   r   c                 X   |j         |z   }t          j                            | j        |          }d}t          j                            |          rW|j          d| | }t          j                            | j        |          }|dz  }t          j                            |          W||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    zCw||DK..	gnnT"" 	j3393c33D7<<T22DNI gnnT"" 	 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      s   				         $ $ $ $ $ $ $ $ ? ? ? ? ? ? ? ? # # # # # #              1 0 0 0 0 0           / s s    9 9 9 9 9 9 9 9xG G G G G G G G G Gr   