
    .i$                         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dS )    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    J/var/www/html/analyses/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;   r1   r7   )r<   rC   rD   s      r   
write_linezBMPWriter.write_lineZ   sB    TY!a%4=!88999dr   )__name__
__module____qualname__r   intrB   bytesrG   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)rO   ospathexistsmakedirs)r<   rO   s     r   rB   zImageWriter.__init__e   sC    w~~dk** 	%K$$$$$	% 	%r   imagec                 ~   |j         \  }}|j                                        }|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_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0??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                    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
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   sU   |$$&&33E6BB
d$ 	"e&6669555555555" 9 9 9%&78889 dmmJJsOO%%a((IIe$$r6""""	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s+   DADA;;A=DDDc                    |j                                         }|                     |d          \  }}t          |d          5 }	 ddlm} n"# t          $ r t          t                    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.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B
d$ 	#5%%%%%%% 5 5 5!"34445 $--C

3AFF2z"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# s*   B4AB4A++=B44B8;B8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.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   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.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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                    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 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B
dvu|,,..//%7&@EJQRNS$ 	5          5 5 5!"34445 zQqX]]qX]]qX]]//$u|7L7L7N7NPUVVCs{{ooc**HHRLLL/	 	 	 	 	 	 	 	 	 	 	 	 	 	 	2 s+   +E-A65E6BB0EEEc                 &   d|j         |j        d         |j        d         fz  }|                     ||          \  }}t          |d          5 }|                    |j                                                   ddd           n# 1 swxY w Y   |S )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
B
c                 `    | j                                         }|D ]\  }}|t          v r dS dS )NTF)rY   rZ   r   )rU   rc   r   r   s       r   r]   zImageWriter._is_jbig2_iamge  sF    ,**,,#* 	 	K333tt 4ur   r   c                 V   |j         |z   }t          j                            | j        |          }d}t          j                            |          rVd|j         ||fz  }t          j                            | j        |          }|dz  }t          j                            |          V||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    zCw||DK..	gnnT"" 	
Is;;D7<<T22DNI gnnT"" 	 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      s   				         + + + + + + + + + + ? ? ? ? ? ? ? ? # # # # # #              1 0 0 0 0 0           / s s    9 9 9 9 9 9 9 9xD D D D D D D D D Dr   