o
    h#                     @   s   d dl Z d dlmZmZmZmZmZmZmZm	Z	 d dl
mZ d dlmZ 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mZmZmZ erXd d
lmZmZmZm Z  eee!e"e#f  Z$e %e&Z'G dd dZ(G dd de(Z)G dd de(Z*dS )    N)TYPE_CHECKINGBinaryIOIterableListOptionalSequenceUnioncast)utils)PDFColorSpace)PDFFontPDFUnicodeNotDefined)PDFPage)	PDFStream)	PSLiteral)MatrixPathSegmentPointRect)PDFGraphicStatePDFResourceManager	PDFStackTPDFTextStatec                   @   sX  e Zd ZdZd<ddZdefdd	Zd=d
dZdedededdfddZ	d>ddZ
deddfddZd?deded ddfddZd>ddZd?deded ddfddZdededdfd d!Zdeddfd"d#Zd$ed%ed&eddfd'd(Zd$eddfd)d*Zd+d,d-ed.ed/ed0ee ddfd1d2Zd$ed3eddfd4d5Zd6d7d8ed9ed+d,ddf
d:d;Z dS )@	PDFDevicezGTranslate the output of PDFPageInterpreter to the output that is neededrsrcmgrr   returnNc                 C   s   || _ d | _d S N)r   ctm)selfr    r   K/var/www/html/govbot/env/lib/python3.10/site-packages/pdfminer/pdfdevice.py__init__&   s   
zPDFDevice.__init__c                 C      dS )Nz<PDFDevice>r   r   r   r   r    __repr__*      zPDFDevice.__repr__c                 C   s   | S r   r   r#   r   r   r    	__enter__-   r%   zPDFDevice.__enter__exc_typeexc_valexc_tbc                 C   s   |    d S r   )close)r   r'   r(   r)   r   r   r    __exit__0   s   zPDFDevice.__exit__c                 C      d S r   r   r#   r   r   r    r*   3   r%   zPDFDevice.closer   c                 C   s
   || _ d S r   )r   )r   r   r   r   r    set_ctm6   s   
zPDFDevice.set_ctmtagpropsr   c                 C   r,   r   r   r   r.   r/   r   r   r    	begin_tag9   r%   zPDFDevice.begin_tagc                 C   r,   r   r   r#   r   r   r    end_tag<   r%   zPDFDevice.end_tagc                 C   r,   r   r   r0   r   r   r    do_tag?   r%   zPDFDevice.do_tagpagec                 C   r,   r   r   )r   r4   r   r   r   r    
begin_pageB   r%   zPDFDevice.begin_pagec                 C   r,   r   r   r   r4   r   r   r    end_pageE   r%   zPDFDevice.end_pagenamebboxmatrixc                 C   r,   r   r   )r   r8   r9   r:   r   r   r    begin_figureH   r%   zPDFDevice.begin_figurec                 C   r,   r   r   )r   r8   r   r   r    
end_figureK   r%   zPDFDevice.end_figuregraphicstater   strokefillevenoddpathc                 C   r,   r   r   )r   r=   r>   r?   r@   rA   r   r   r    
paint_pathN   s   zPDFDevice.paint_pathstreamc                 C   r,   r   r   )r   r8   rC   r   r   r    render_imageX   r%   zPDFDevice.render_image	textstater   seqncsc                 C   r,   r   r   )r   rE   rF   rG   r=   r   r   r    render_string[   s   zPDFDevice.render_string)r   r   r   N)r   r   r   Nr   )!__name__
__module____qualname____doc__r!   strr$   r&   objectr+   r*   r   r-   r   r   r1   r2   r3   r   r5   r7   r   r;   r<   boolr   r   rB   r   rD   
PDFTextSeqr   rH   r   r   r   r    r   #   sP    





r   c                   @   s   e Zd Zdddededdddf
d	d
Zdedededede	de	de	de	de	de	dedddefddZ
dedededede	de	de	de	de	de	dedddefddZdedede	de	de	dededdde	fddZdS )PDFTextDevicerE   r   rF   rG   r=   r   r   Nc                 C   s   | j d usJ t|j| j }|j}|j}|jd }|j| }	|j| }
|j	}|d us-J |
 r3d}
d| | }| rQ| |||j||||	|
|||||_d S | |||j||||	|
|||||_d S )Ng{Gz?r   gMbP?)r   r
   mult_matrixr:   fontfontsizescaling	charspace	wordspaceriseis_multibyteis_verticalrender_string_vertical
linematrixrender_string_horizontal)r   rE   rF   rG   r=   r:   rT   rU   rV   rW   rX   rY   dxscaler   r   r    rH   f   sR   




zPDFTextDevice.render_stringr:   posrT   rU   rV   rW   rX   rY   r_   c                 C   s   |\}}d}|D ]O}t |ttfr|||
 8 }d}qt |trN||D ](}|r,||7 }|| t|||f||||	|||7 }|dkrJ|rJ||7 }d}q$qt	d|d q||fS )NFT    z(Cannot render horizontal string because $ is not a valid int, float or bytes.

isinstanceintfloatbytesdecoderender_charr
   translate_matrixloggerwarningr   rF   r:   r`   rT   rU   rV   rW   rX   rY   r_   rG   r=   xyneedcharspaceobjcidr   r   r    r^      8   


z&PDFTextDevice.render_string_horizontalc                 C   s   |\}}d}|D ]O}t |ttfr|||
 8 }d}qt |trN||D ](}|r,||7 }|| t|||f||||	|||7 }|dkrJ|rJ||7 }d}q$qt	d|d q||fS )NFTra   z&Cannot render vertical string because rb   rc   rm   r   r   r    r\      rs   z$PDFTextDevice.render_string_verticalrr   c	           	      C   r"   Nr   r   )	r   r:   rT   rU   rV   rY   rr   rG   r=   r   r   r    ri      s   zPDFTextDevice.render_char)rJ   rK   rL   rQ   r   rH   r   r   r   rf   r^   r\   re   ri   r   r   r   r    rR   e   s    
2	

,	

,	
rR   c                
   @   s   e Zd Z	d$dddededdfdd	Zd
ddededdddf
ddZde	de
ddfddZde	ddfddZd%deded ddfddZd&ddZd%deded ddfdd Zd!eddfd"d#ZdS )'TagExtractorutf-8r   r   outfpcodecr   Nc                 C   s(   t | | || _|| _d| _g | _d S rt   )r   r!   rw   rx   pageno_stack)r   r   rw   rx   r   r   r    r!      s
   
zTagExtractor.__init__rE   r   rF   rG   r=   r   c              
   C   s   |j }|d us	J d}|D ]0}t|trt|}t|tsq||}|D ]}	z||	}
||
7 }W q& ty<   Y q&w q| 	t
| d S )N )rT   rd   rN   r
   make_compat_bytesrg   rh   	to_unichrr   _writeenc)r   rE   rF   rG   r=   rT   textrq   charsrr   charr   r   r    rH     s$   




zTagExtractor.render_stringr4   r   c                 C   s(   d| j t|j|jf }| | d S )Nz$<page id="%s" bbox="%s" rotate="%d">)ry   r
   bbox2strmediaboxrotater~   )r   r4   r   outputr   r   r    r5   #  s   
zTagExtractor.begin_pagec                 C   s   |  d |  jd7  _d S )Nz</page>
   )r~   ry   r6   r   r   r    r7   +  s   
zTagExtractor.end_pager.   r/   r   c                 C   sb   d}t |trddd t| D }dttt|j	 | d}| 
| | j| d S )Nr{   c                 S   s.   g | ]\}}d t | dt | dqS ) z="")r
   r   make_compat_str).0kvr   r   r    
<listcomp>3  s    z*TagExtractor.begin_tag.<locals>.<listcomp><>)rd   dictjoinsorteditemsr
   r   r	   rN   r8   r~   rz   append)r   r.   r/   sout_sr   r   r    r1   /  s   


zTagExtractor.begin_tagc                 C   sD   | j s
J t| j| j d}dttt|j }| | d S )Nz</%s>)	rz   rN   ry   popr
   r   r	   r8   r~   )r   r.   r   r   r   r    r2   <  s   zTagExtractor.end_tagc                 C   s   |  || | jd d S )Nr   )r1   rz   r   r0   r   r   r    r3   B  s   zTagExtractor.do_tagr   c                 C   s   | j || j d S r   )rw   writeencoderx   )r   r   r   r   r    r~   F  s   zTagExtractor._write)rv   r   rI   )rJ   rK   rL   r   rN   r!   rQ   r   rH   r   r   r5   r7   r   r   r1   r2   r3   r~   r   r   r   r    ru      s8    


ru   )+loggingtypingr   r   r   r   r   r   r   r	   pdfminerr
   pdfminer.pdfcolorr   pdfminer.pdffontr   r   pdfminer.pdfpager   pdfminer.pdftypesr   pdfminer.psparserr   pdfminer.utilsr   r   r   r   pdfminer.pdfinterpr   r   r   r   re   rf   rg   rQ   	getLoggerrJ   rk   r   rR   ru   r   r   r   r    <module>   s"    (
B 