
    #j#                     D   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rd dlmZmZmZmZ ee e!z  e"z           Z# e j$        e%          Z& G d d          Z' G d de'          Z( G 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                   R   e Zd ZdZd,dZdefdZd-dZd	ed
ededdfdZ	d.dZ
deddfdZd/deded         ddfdZd.dZd/deded         ddfdZdededdfdZdeddfdZdedededdfdZdeddfdZddd ed!ed"ed#ee         ddfd$Zded%eddfd&Zd'd(d)ed*eddddf
d+Z dS )0	PDFDevicezGTranslate the output of PDFPageInterpreter to the output that is neededrsrcmgrr   returnNc                 "    || _         d | _        d S N)r   ctm)selfr   s     Z/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/pdfminer/pdfdevice.py__init__zPDFDevice.__init__#   s    "&    c                     dS )Nz<PDFDevice> r   s    r    __repr__zPDFDevice.__repr__'   s    }r"   c                     | S r   r$   r%   s    r    	__enter__zPDFDevice.__enter__*   s    r"   exc_typeexc_valexc_tbc                 .    |                                   d S r   )close)r   r)   r*   r+   s       r    __exit__zPDFDevice.__exit__-   s    

r"   c                     d S r   r$   r%   s    r    r-   zPDFDevice.close0       r"   r   c                     || _         d S r   )r   )r   r   s     r    set_ctmzPDFDevice.set_ctm3   s    r"   tagpropsr   c                     d S r   r$   r   r3   r4   s      r    	begin_tagzPDFDevice.begin_tag6   r0   r"   c                     d S r   r$   r%   s    r    end_tagzPDFDevice.end_tag9   r0   r"   c                     d S r   r$   r6   s      r    do_tagzPDFDevice.do_tag<   r0   r"   pagec                     d S r   r$   )r   r<   r   s      r    
begin_pagezPDFDevice.begin_page?   r0   r"   c                     d S r   r$   r   r<   s     r    end_pagezPDFDevice.end_pageB   r0   r"   namebboxmatrixc                     d S r   r$   )r   rB   rC   rD   s       r    begin_figurezPDFDevice.begin_figureE   r0   r"   c                     d S r   r$   )r   rB   s     r    
end_figurezPDFDevice.end_figureH   r0   r"   graphicstater   strokefillevenoddpathc                     d S r   r$   )r   rI   rJ   rK   rL   rM   s         r    
paint_pathzPDFDevice.paint_pathK   s	     	r"   streamc                     d S r   r$   )r   rB   rP   s      r    render_imagezPDFDevice.render_imageU   r0   r"   	textstater   seqncsc                     d S r   r$   )r   rS   rT   rU   rI   s        r    render_stringzPDFDevice.render_stringX   s	     	r"   )r   r   r   N)r   r   r   Nr   )!__name__
__module____qualname____doc__r!   strr&   r(   objectr.   r-   r   r2   r   r   r7   r9   r;   r   r>   rA   r   rF   rH   boolr   r   rO   r   rR   
PDFTextSeqr
   rW   r$   r"   r    r   r       s       QQ' ' ' '#        & & T       6 d     Y x/D PT        ) H[,A T    w V     W      D & T    s t    '  	
  {# 
    i D    !  	
 ( 
     r"   r   c                       e Zd Zdddededdddf
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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Zd
edede	de	de	dededdde	fdZdS )PDFTextDevicerS   r   rT   rU   rI   r   r   Nc                    | j         J t          j        |j        | j                   }|j        }|j        }|j        dz  }|j        |z  }	|j        |z  }
|j	        }|J |
                                rd}
d|z  |z  }|                                r,|                     |||j        ||||	|
||||          |_        d S |                     |||j        ||||	|
||||          |_        d S )Ng{Gz?r   gMbP?)r   r	   mult_matrixrD   fontfontsizescaling	charspace	wordspaceriseis_multibyteis_verticalrender_string_vertical
linematrixrender_string_horizontal)r   rS   rT   rU   rI   rD   re   rf   rg   rh   ri   rj   dxscales                r    rW   zPDFTextDevice.render_stringc   s:    x###"9#3TX>>~%#d*''1	''1	~ 	I("W, 	#'#>#>$$ $I    $(#@#@$$ $I   r"   rD   posre   rf   rg   rh   ri   rj   rp   c                    |\  }}d}|D ]}t          |t          t          f          r|||
z  z  }d})t          |t                    rc|                    |          D ]L}|r||z  }||                     t          j        |||f          ||||	|||          z  }|dk    r|r||z  }d}Mt          	                    d|d           ||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   rT   rD   rq   re   rf   rg   rh   ri   rj   rp   rU   rI   xyneedcharspaceobjcids                     r    ro   z&PDFTextDevice.render_string_horizontal   s6    A 	 	C#U|,, S7]" $C'' ;;s++ ) )C$ 'Y)).v1v>> $	 	 	A byyYyY$(MM)" CC C C    1vr"   c                    |\  }}d}|D ]}t          |t          t          f          r|||
z  z  }d})t          |t                    rc|                    |          D ]L}|r||z  }||                     t          j        |||f          ||||	|||          z  }|dk    r|r||z  }d}Mt          	                    d|d           ||fS )NFTrs   z&Cannot render vertical string because rt   ru   r   s                     r    rm   z$PDFTextDevice.render_string_vertical   s1    A 	 	C#U|,, S7]" $C'' ;;s++ ) )C$ 'Y)).v1v>> $	 	 	A byyYyY$(MM)" ,S , , ,    1vr"   r   c	                     dS Nr   r$   )	r   rD   re   rf   rg   rj   r   rU   rI   s	            r    r{   zPDFTextDevice.render_char   s	     qr"   )rY   rZ   r[   r`   r
   rW   r   r   r   rx   ro   rm   rw   r{   r$   r"   r    rb   rb   b   s       0!0 0 	0
 (0 
0 0 0 0d++ + 	+
 + + + + + + + + (+ 
+ + + +Z++ + 	+
 + + + + + + + + (+ 
+ + + +Z  	
     ( 
     r"   rb   c            
           e Zd Z	 ddddededdfdZd	d
dededdddf
dZde	de
ddfdZde	ddfdZddeded         ddfdZddZddeded         ddfdZdeddfdZdS )TagExtractorutf-8r   r   outfpcodecr   Nc                 t    t                               | |           || _        || _        d| _        g | _        d S r   )r   r!   r   r   pageno_stack)r   r   r   r   s       r    r!   zTagExtractor.__init__   s:     	4)))

')r"   rS   r   rT   rU   rI   r   c                    |j         }|J d}|D ]}t          |t                    rt          j        |          }t          |t
                    sA|                    |          }|D ]-}		 |                    |	          }
||
z  }# t          $ r Y *w xY w| 	                    t          j
        |                     d S )N )re   rv   r]   r	   make_compat_bytesry   rz   	to_unichrr   _writeenc)r   rS   rT   rU   rI   re   textr   charsr   chars              r    rW   zTagExtractor.render_string
  s     ~ 	 	C#s## 3-c22c5)) KK$$E  >>#..DDLDD+   D	 	EIdOO$$$$$s   +B
BBr<   r   c                     d| j          dt          j        |j                   d|j         d}|                     |           d S )Nz
<page id="z" bbox="z
" rotate="z">)r   r	   bbox2strmediaboxrotater   )r   r<   r   outputs       r    r>   zTagExtractor.begin_page"  s`    ' ' 'enT].K.K ' '{' ' ' 	 	Fr"   c                 P    |                      d           | xj        dz  c_        d S )Nz</page>
   )r   r   r@   s     r    rA   zTagExtractor.end_page)  s(    K   qr"   r3   r4   r   c                 r   d}t          |t                    r>d                    d t          |                                          D                       }dt          j        t          t          |j	                             | d}| 
                    |           | j                            |           d S )Nr   c                 n    g | ]2\  }}d t          j        |           dt          j        |           d3S ) z="")r	   r   make_compat_str).0kvs      r    
<listcomp>z*TagExtractor.begin_tag.<locals>.<listcomp>1  sS       A D	!CC(=a(@(@CCC  r"   <>)rv   dictjoinsorteditemsr	   r   r   r]   rB   r   r   append)r   r3   r4   sout_ss        r    r7   zTagExtractor.begin_tag-  s    eT"" 	 "("7"7   A 9EId311228A888E3r"   c                 
   | j         sJ t          | j                              | j                             d          }dt	          j        t          t          |j                             d}|                     |           d S )Nz</r   )	r   r]   r   popr	   r   r   rB   r   )r   r3   r   s      r    r9   zTagExtractor.end_tag:  sr    {,,C,,,,{koob!!6UYtC2233666Er"   c                 f    |                      ||           | j                            d           d S )Nr   )r7   r   r   r6   s      r    r;   zTagExtractor.do_tag@  s0    sE"""r"   r   c                 j    | j                             |                    | j                             d S r   )r   writeencoder   )r   r   s     r    r   zTagExtractor._writeD  s,    
$*--.....r"   )r   r   rX   )rY   rZ   r[   r   r]   r!   r`   r
   rW   r   r   r>   rA   r   r   r7   r9   r;   r   r$   r"   r    r   r      s       
 	
* 
*%
* 
* 	
*
 

* 
* 
* 
*%!% % 	%
 (% 
% % % %0w V     W        Y  x/D  PT            ) H[,A T    / / / / / / / /r"   r   )*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   rw   rx   ry   r`   	getLoggerrY   r}   r   rb   r   r$   r"   r    <module>r      s    . . . . . . . .                  + + + + + + : : : : : : : : $ $ $ $ $ $ ' ' ' ' ' ' ' ' ' ' ' ' ; ; ; ; ; ; ; ; ; ; ; ;             cEkE)*
		8	$	$? ? ? ? ? ? ? ?DX X X X XI X X XvH/ H/ H/ H/ H/9 H/ H/ H/ H/ H/r"   