o
    fS"                     @   s  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 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 erdddlmZ ddlmZ ddlmZ ddlmZ eeee e!f  Z"G dd dZ#G dd de#Z$G dd de#Z%dS )    )BinaryIOIterableListOptionalSequenceTYPE_CHECKINGUnioncast)	PSLiteral   )utils)PDFColorSpace)PDFFont)PDFUnicodeNotDefined)PDFPage)	PDFStream)MatrixPointRectPathSegment)PDFGraphicState)PDFResourceManager)PDFTextState)	PDFStackTc                   @   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/home/ubuntu/webapp/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__,   s   zPDFDevice.__exit__c                 C      d S r   r    r$   r    r    r!   r+   /   r&   zPDFDevice.closer   c                 C   s
   || _ d S r   )r   )r   r   r    r    r!   set_ctm2   s   
zPDFDevice.set_ctmtagpropsr   c                 C   r-   r   r    r   r/   r0   r    r    r!   	begin_tag5   r&   zPDFDevice.begin_tagc                 C   r-   r   r    r$   r    r    r!   end_tag8   r&   zPDFDevice.end_tagc                 C   r-   r   r    r1   r    r    r!   do_tag;   r&   zPDFDevice.do_tagpagec                 C   r-   r   r    )r   r5   r   r    r    r!   
begin_page>   r&   zPDFDevice.begin_pagec                 C   r-   r   r    r   r5   r    r    r!   end_pageA   r&   zPDFDevice.end_pagenamebboxmatrixc                 C   r-   r   r    )r   r9   r:   r;   r    r    r!   begin_figureD   r&   zPDFDevice.begin_figurec                 C   r-   r   r    )r   r9   r    r    r!   
end_figureG   r&   zPDFDevice.end_figuregraphicstater   strokefillevenoddpathc                 C   r-   r   r    )r   r>   r?   r@   rA   rB   r    r    r!   
paint_pathJ   s   zPDFDevice.paint_pathstreamc                 C   r-   r   r    )r   r9   rD   r    r    r!   render_imageT   r&   zPDFDevice.render_image	textstater   seqncsc                 C   r-   r   r    )r   rF   rG   rH   r>   r    r    r!   render_stringW   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   r2   r3   r4   r   r6   r8   r   r<   r=   boolr   r   rC   r   rE   
PDFTextSeqr   rI   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 )PDFTextDevicerF   r   rG   rH   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   rF   rG   rH   r>   r;   rU   rV   rW   rX   rY   rZ   dxscaler    r    r!   rI   b   sR   




zPDFTextDevice.render_stringr;   posrU   rV   rW   rX   rY   rZ   r`   c                 C   s   |\}}d}|D ]@}t |ttfr|||
 8 }d}q||D ](}|r'||7 }|| t|||f||||	|||7 }|dkrE|rE||7 }d}qq||fS NFT    
isinstanceintfloatdecoderender_charr   translate_matrixr   rG   r;   ra   rU   rV   rW   rX   rY   rZ   r`   rH   r>   xyneedcharspaceobjcidr    r    r!   r_      0   
z&PDFTextDevice.render_string_horizontalc                 C   s   |\}}d}|D ]@}t |ttfr|||
 8 }d}q||D ](}|r'||7 }|| t|||f||||	|||7 }|dkrE|rE||7 }d}qq||fS rb   rd   rk   r    r    r!   r]      rq   z$PDFTextDevice.render_string_verticalrp   c	           	      C   r#   Nr   r    )	r   r;   rU   rV   rW   rZ   rp   rH   r>   r    r    r!   ri      s   zPDFTextDevice.render_char)rK   rL   rM   rR   r   rI   r   r   r   rg   r_   r]   rf   ri   r    r    r    r!   rS   a   s    
2	

(	

(	
rS   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 rr   )r   r"   ru   rv   pageno_stack)r   r   ru   rv   r    r    r!   r"      s
   
zTagExtractor.__init__rF   r   rG   rH   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 )rU   re   rO   r   make_compat_bytesbytesrh   	to_unichrr   _writeenc)r   rF   rG   rH   r>   rU   textro   charsrp   charr    r    r!   rI      s$   




zTagExtractor.render_stringr5   r   c                 C   s(   d| j t|j|jf }| | d S )Nz$<page id="%s" bbox="%s" rotate="%d">)rw   r   bbox2strmediaboxrotater}   )r   r5   r   outputr    r    r!   r6     s   

zTagExtractor.begin_pagec                 C   s   |  d |  jd7  _d S )Nz</page>
r   )r}   rw   r7   r    r    r!   r8     s   
zTagExtractor.end_pager/   r0   r   c                 C   s^   d}t |trddd t| D }dttt	|j
|}| | | j| d S )Nry   c                 S   s(   g | ]\}}d  t|t|qS )z {}="{}")formatr   r~   make_compat_str).0kvr    r    r!   
<listcomp>&  s    z*TagExtractor.begin_tag.<locals>.<listcomp>z<{}{}>)re   dictjoinsorteditemsr   r   r~   r	   rO   r9   r}   rx   append)r   r/   r0   sout_sr    r    r!   r2   "  s   


zTagExtractor.begin_tagc                 C   sD   | j s
J t| j| j d}dttt|j }| | d S )Nz</%s>)	rx   rO   rw   popr   r~   r	   r9   r}   )r   r/   r   r    r    r!   r3   0  s
   
zTagExtractor.end_tagc                 C   s   |  || | jd d S )Nr   )r2   rx   r   r1   r    r    r!   r4   7  s   zTagExtractor.do_tagr   c                 C   s   | j || j d S r   )ru   writeencoderv   )r   r   r    r    r!   r}   <  s   zTagExtractor._write)rt   r   rJ   )rK   rL   rM   r   rO   r"   rR   r   rI   r   r   r6   r8   r
   r   r2   r3   r4   r}   r    r    r    r!   rs      s8    
	
	
rs   N)&typingr   r   r   r   r   r   r   r	   pdfminer.psparserr
   ry   r   pdfcolorr   pdffontr   r   pdfpager   pdftypesr   r   r   r   r   	pdfinterpr   r   r   r   rf   rg   r{   rR   r   rS   rs   r    r    r    r!   <module>   s&   ( B 