
    NgY$                        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 n# e	$ r	 d dl
mZ Y nw xY wddlmZmZ ddlmZ ddlmZ dd	l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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                     | dz   dz  dz  S )N       )r   s    J/var/www/html/ai-engine/env/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 )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__zBMPWriter.__init__%   s,   	
199EEQYYEERZZEET"""di!7!!; ABB3uqy(
{JKIM
 
 4yyBCIItT:#=q!Z
 
 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   seekr9   r/   r5   )r:   rA   rB   s      r   
write_linezBMPWriter.write_lineU   sB    TY!a%4=!88999dr   )__name__
__module____qualname__r   intr@   bytesrE   r   r   r   r   r   $   su        ..8 ..3 ..s ..C ..D .. .. .. ..`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)rM   ospathexistsmakedirs)r:   rM   s     r   r@   zImageWriter.__init__`   sC    w~~dk** 	%K$$$$$	% 	%r   imagec                    |j         \  }}|j                                        }t          |          dk    r,|d         d         t          v r|                     |          }nct          |          dk    r,|d         d         t          v r|                     |          }n$|                     |          r| 	                    |          }n|j
        dk    r%|                     ||||dz   dz  |j
                  }n|j
        dk    r3t          |j        v r%|                     ||||dz  |j
        dz            }n|j
        dk    r-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_filtersr3   r   
_save_jpegr   _save_jpeg2000_is_jbig2_iamge_save_jbig2r   	_save_bmpr   
colorspacer   r   _save_bytes	_save_raw)r:   rS   r   r    filtersnames         r   export_imagezImageWriter.export_imagee   s   -,**,,w<<1A2E!E!E??5))DD\\Q71:a=4G#G#G&&u--DD!!%(( 	)##E**DDZ1__>>%q8H%*UUDDZ1__!3u7G!G!G>>%	5:PQ>RRDDZ1__!48H!H!H>>%uzJJDD\\Q71:a=4I#I#I##E**DD >>%((Dr   c                 *   |j                                         }|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 imageN.jpgwbr   )Image
ImageChopsRGBJPEG)rV   get_rawdata_create_unique_image_nameopenr   r]   PILrf   rg   ImportErrorPIL_ERROR_MESSAGEr   invertconvertsaver5   )
r:   rS   raw_datara   rP   r   rf   rg   ifpr?   s
             r   rX   zImageWriter._save_jpeg   sf   <++--###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 h''JJsOO%%a((IIe$$r6"""""""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# s+   DA D A??A=DDDc                    |j                                         }|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 imageNz.jp2re   r   rf   JPEG2000)
rV   rj   rk   rl   rm   rf   rn   ro   r   rr   )	r:   rS   rs   ra   rP   r   rf   rt   r?   s	            r   rY   zImageWriter._save_jpeg2000   s   <++--###33E6BB
d$ 	#5%%%%%%% 5 5 5!"34445 (##C

3AFF2z"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# s*   B8	AB8A//=B88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.jb2re   JBIG2Globalsr   zWThere should never be more than one JBIG2Globals associated with a JBIG2 embedded imager      
N)rk   rl   r   rV   rW   r   appendresolver3   r.   r5   get_datarstriprD   r   get_segmentsr	   
write_file)r:   rS   ra   rP   r   input_streamglobal_streamsr`   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&&=  !oo%>""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.bmpre   r   N)rk   rl   r   rV   r}   r6   rE   )r:   rS   r   r    r   r   ra   rP   r   bmprB   r?   rA   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} ddl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 bytesrd   r#   re   r   rv   )ImageOpsr   1Lr   rh   r   CMYKrawN)rk   rU   r3   rV   r}   r   rl   rm   rf   r   rn   ro   	frombytesrp   rr   )r:   rS   ra   rP   r   r    channelsr   rf   r   modeimgs               r   r^   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+	 	 	 	 	 	 	 	 	 	 	 	 	 	 	. s+   +E-A:9E: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   re   N)r   rU   rk   rl   r5   rV   r}   )r:   rS   extra   rP   r   s         r   r_   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)rV   rW   r   )rS   r`   r   r   s       r   rZ   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   )ra   rO   rP   joinrM   rQ   )r:   rS   r   ra   rP   	img_indexs         r   rk   z%ImageWriter._create_unique_image_name  s    zCw||DK..	gnnT"" 	
Is;;D7<<T22DNI gnnT"" 	 Tzr   )rF   rG   rH   __doc__r4   r@   r
   rb   rX   rY   r[   rI   r\   r^   r_   staticmethodboolrZ   r   rk   r   r   r   rL   rL   Z   s        
%s %t % % % %
' c    @ C    .G     * S    :%(25GJRU	    S    <w 3     w 4    \w S U3PS8_      r   rL   )rO   os.pathr1   ior   typingr   r   r   rn   typing_extensionsjbig2r   r	   layoutr
   pdfcolorr   r   r   pdftypesr   r   r   r   ro   rI   r   r   rL   r   r   r   <module>r      s   				         " " " " " " " "* * * *))))))))* 8 7 7 7 7 7 7 7       ) ) ) ) ) ) ) ) ) ) ) ) ( ( ( ( ( (           / s s    3 3 3 3 3 3 3 3ly y y y y y y y y ys   # 11