o
    
zi$                     @   s   d dl Z d dlmZmZ d dl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!B e"B  Z#e $e%Z&G dd dZ'G dd de'Z(G dd de'Z)dS )    N)IterableSequence)TYPE_CHECKINGBinaryIOOptional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   Q/home/air/biblejyuku/back/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(   0   r#   zPDFDevice.closer   c                 C   s
   || _ d S r   )r   )r   r   r   r   r   set_ctm3   s   
zPDFDevice.set_ctmtagpropsr   c                 C   r*   r   r   r   r,   r-   r   r   r   	begin_tag6   r#   zPDFDevice.begin_tagc                 C   r*   r   r   r!   r   r   r   end_tag9   r#   zPDFDevice.end_tagc                 C   r*   r   r   r.   r   r   r   do_tag<   r#   zPDFDevice.do_tagpagec                 C   r*   r   r   )r   r2   r   r   r   r   
begin_page?   r#   zPDFDevice.begin_pagec                 C   r*   r   r   r   r2   r   r   r   end_pageB   r#   zPDFDevice.end_pagenamebboxmatrixc                 C   r*   r   r   )r   r6   r7   r8   r   r   r   begin_figureE   r#   zPDFDevice.begin_figurec                 C   r*   r   r   )r   r6   r   r   r   
end_figureH   r#   zPDFDevice.end_figuregraphicstater   strokefillevenoddpathc                 C   r*   r   r   )r   r;   r<   r=   r>   r?   r   r   r   
paint_pathK   s   zPDFDevice.paint_pathstreamc                 C   r*   r   r   )r   r6   rA   r   r   r   render_imageU   r#   zPDFDevice.render_image	textstater   seqncsc                 C   r*   r   r   )r   rC   rD   rE   r;   r   r   r   render_stringX   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   r/   r0   r1   r   r3   r5   r   r9   r:   boolr   r   r@   r   rB   
PDFTextSeqr	   rF   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 )PDFTextDevicerC   r   rD   rE   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_matrixr8   fontfontsizescaling	charspace	wordspaceriseis_multibyteis_verticalrender_string_vertical
linematrixrender_string_horizontal)r   rC   rD   rE   r;   r8   rR   rS   rT   rU   rV   rW   dxscaler   r   r   rF   c   sR   




zPDFTextDevice.render_stringr8   posrR   rS   rT   rU   rV   rW   r]   c                 C   s   |\}}d}|D ]L}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| q||fS )NFT    zNCannot render horizontal string because %r is not a valid int, float or bytes.

isinstanceintfloatbytesdecoderender_charr   translate_matrixloggerwarningr   rD   r8   r^   rR   rS   rT   rU   rV   rW   r]   rE   r;   xyneedcharspaceobjcidr   r   r   r\      :   

z&PDFTextDevice.render_string_horizontalc                 C   s   |\}}d}|D ]L}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| q||fS )NFTr_   zLCannot render vertical string because %r is not a valid int, float or bytes.r`   rj   r   r   r   rZ      rp   z$PDFTextDevice.render_string_verticalro   c	           	      C   r    Nr   r   )	r   r8   rR   rS   rT   rW   ro   rE   r;   r   r   r   rf      s   zPDFTextDevice.render_char)rH   rI   rJ   rO   r	   rF   r   r   r
   rc   r\   rZ   rb   rf   r   r   r   r   rP   b   s    
2	

.	

.	
rP   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 rq   )r   r   rt   ru   pageno_stack)r   r   rt   ru   r   r   r   r      s
   
zTagExtractor.__init__rC   r   rD   rE   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 )rR   ra   rL   r   make_compat_bytesrd   re   	to_unichrr   _writeenc)r   rC   rD   rE   r;   rR   textrn   charsro   charr   r   r   rF     s$   




zTagExtractor.render_stringr2   r   c                 C   s2   d| j  dt|j d|j d}| | d S )Nz
<page id="z" bbox="z
" rotate="z">)rv   r   bbox2strmediaboxrotater{   )r   r2   r   outputr   r   r   r3   $  s
   zTagExtractor.begin_pagec                 C   s   |  d |  jd7  _d S )Nz</page>
   )r{   rv   r4   r   r   r   r5   +  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 )Nrx   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><>)ra   dictjoinsorteditemsr   r|   r   rL   r6   r{   rw   append)r   r,   r-   sout_sr   r   r   r/   /  s   


zTagExtractor.begin_tagc                 C   sH   | j s
J t| j| j d}dttt|j d}| | d S )Nz</r   )	rw   rL   rv   popr   r|   r   r6   r{   )r   r,   r   r   r   r   r0   <  s   zTagExtractor.end_tagc                 C   s   |  || | jd d S )Nr   )r/   rw   r   r.   r   r   r   r1   B  s   zTagExtractor.do_tagr   c                 C   s   | j || j d S r   )rt   writeencoderu   )r   r   r   r   r   r{   F  s   zTagExtractor._write)rs   r   rG   )rH   rI   rJ   r   rL   r   rO   r	   rF   r   r   r3   r5   r   r   r/   r0   r1   r{   r   r   r   r   rr      s8    


rr   )*loggingcollections.abcr   r   typingr   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   rb   rc   rd   rO   	getLoggerrH   rh   r   rP   rr   r   r   r   r   <module>   s$    
B 