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   E/var/www/html/venv/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
   Zmult_matrixr:   fontfontsizescaling	charspace	wordspaceriseZis_multibyteZis_verticalrender_string_verticalZ
linematrixrender_string_horizontal)r   rE   rF   rG   r=   r:   rS   rT   rU   rV   rW   rX   dxscaler   r   r    rH   f   sR   




zPDFTextDevice.render_stringr:   posrS   rT   rU   rV   rW   rX   r[   c                 C   s   |\}}d}|D ]Q}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t
| d q||fS NFT    z8Invalid string type. Must by int, float or bytes but is .
isinstanceintfloatbytesdecoderender_charr
   Ztranslate_matrixloggerwarningtyper   rF   r:   r\   rS   rT   rU   rV   rW   rX   r[   rG   r=   xyZneedcharspaceobjcidr   r   r    rZ      8   

z&PDFTextDevice.render_string_horizontalc                 C   s   |\}}d}|D ]Q}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t
| d q||fS r]   r`   rj   r   r   r    rY      ro   z$PDFTextDevice.render_string_verticalrn   c	           	      C   r"   Nr   r   )	r   r:   rS   rT   rU   rX   rn   rG   r=   r   r   r    rf      s   zPDFTextDevice.render_char)rJ   rK   rL   rQ   r   rH   r   r   r   rc   rZ   rY   rb   rf   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 rp   )r   r!   rs   rt   pageno_stack)r   r   rs   rt   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 )rS   ra   rN   r
   Zmake_compat_bytesrd   re   Z	to_unichrr   _writeenc)r   rE   rF   rG   r=   rS   textrm   charsrn   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">)ru   r
   Zbbox2strZmediaboxrotaterx   )r   r4   r   outputr   r   r    r5   #  s   
zTagExtractor.begin_pagec                 C   s   |  d |  jd7  _d S )Nz</page>
   )rx   ru   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 )Nrw   c                 S   s.   g | ]\}}d t | dt | dqS ) z="")r
   ry   Zmake_compat_str).0kvr   r   r    
<listcomp>3  s    z*TagExtractor.begin_tag.<locals>.<listcomp><>)ra   dictjoinsorteditemsr
   ry   r	   rN   r8   rx   rv   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>)	rv   rN   ru   popr
   ry   r	   r8   rx   )r   r.   r   r   r   r    r2   <  s   zTagExtractor.end_tagc                 C   s   |  || | jd d S )Nr   )r1   rv   r   r0   r   r   r    r3   B  s   zTagExtractor.do_tagr   c                 C   s   | j || j d S r   )rs   writeencodert   )r   r   r   r   r    rx   F  s   zTagExtractor._write)rr   r   rI   )rJ   rK   rL   r   rN   r!   rQ   r   rH   r   r   r5   r7   r   r   r1   r2   r3   rx   r   r   r   r    rq      s8    


rq   )+loggingtypingr   r   r   r   r   r   r   r	   Zpdfminerr
   Zpdfminer.pdfcolorr   Zpdfminer.pdffontr   r   Zpdfminer.pdfpager   Zpdfminer.pdftypesr   Zpdfminer.psparserr   Zpdfminer.utilsr   r   r   r   Zpdfminer.pdfinterpr   r   r   r   rb   rc   rd   rQ   	getLoggerrJ   rg   r   rR   rq   r   r   r   r    <module>   s"    (
B 