
    .i#                     J   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rd d
lmZmZmZm Z  eee!e"e#f                  Z$ e j%        e&          Z' G d d          Z( G d de(          Z) G 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                   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     N/var/www/html/analyses/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__0   s    

r$   c                     d S r   r&   r'   s    r"   r/   zPDFDevice.close3       r$   r    c                     || _         d S r   )r    )r!   r    s     r"   set_ctmzPDFDevice.set_ctm6   s    r$   tagpropsr   c                     d S r   r&   r!   r5   r6   s      r"   	begin_tagzPDFDevice.begin_tag9   r2   r$   c                     d S r   r&   r'   s    r"   end_tagzPDFDevice.end_tag<   r2   r$   c                     d S r   r&   r8   s      r"   do_tagzPDFDevice.do_tag?   r2   r$   pagec                     d S r   r&   )r!   r>   r    s      r"   
begin_pagezPDFDevice.begin_pageB   r2   r$   c                     d S r   r&   r!   r>   s     r"   end_pagezPDFDevice.end_pageE   r2   r$   namebboxmatrixc                     d S r   r&   )r!   rD   rE   rF   s       r"   begin_figurezPDFDevice.begin_figureH   r2   r$   c                     d S r   r&   )r!   rD   s     r"   
end_figurezPDFDevice.end_figureK   r2   r$   graphicstater   strokefillevenoddpathc                     d S r   r&   )r!   rK   rL   rM   rN   rO   s         r"   
paint_pathzPDFDevice.paint_pathN   s	     	r$   streamc                     d S r   r&   )r!   rD   rR   s      r"   render_imagezPDFDevice.render_imageX   r2   r$   	textstater   seqncsc                     d S r   r&   )r!   rU   rV   rW   rK   s        r"   render_stringzPDFDevice.render_string[   s	     	r$   )r   r   r   N)r   r   r   Nr   )!__name__
__module____qualname____doc__r#   strr(   r*   objectr0   r/   r   r4   r   r   r9   r;   r=   r   r@   rC   r   rH   rJ   boolr   r   rQ   r   rT   
PDFTextSeqr   rY   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 )PDFTextDevicerU   r   rV   rW   rK   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_matrixrF   fontfontsizescaling	charspace	wordspaceriseis_multibyteis_verticalrender_string_vertical
linematrixrender_string_horizontal)r!   rU   rV   rW   rK   rF   rg   rh   ri   rj   rk   rl   dxscales                r"   rY   zPDFTextDevice.render_stringf   s:    x###"9#3TX>>~%#d*''1	''1	~ 	I("W, 	#'#>#>$$ $I    $(#@#@$$ $I   r$   rF   posrg   rh   ri   rj   rk   rl   rr   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!   rV   rF   rs   rg   rh   ri   rj   rk   rl   rr   rW   rK   xyneedcharspaceobjcids                     r"   rq   z&PDFTextDevice.render_string_horizontal   s)    A 	 	C#U|,, S7]" $C'' ;;s++ ) )C$ 'Y)).v1v>> $	 	 	A byyYyY$(MM)" jsjjj    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 )NFTru   z&Cannot render vertical string because rv   rw   r   s                     r"   ro   z$PDFTextDevice.render_string_vertical   s)    A 	 	C#U|,, S7]" $C'' ;;s++ ) )C$ 'Y)).v1v>> $	 	 	A byyYyY$(MM)" hShhh    1vr$   r   c	                     dS Nr   r&   )	r!   rF   rg   rh   ri   rl   r   rW   rK   s	            r"   r}   zPDFTextDevice.render_char   s	     qr$   )r[   r\   r]   rb   r   rY   r   r   r   rz   rq   ro   ry   r}   r&   r$   r"   rd   rd   e   s       0!0 0 	0
 (0 
0 0 0 0d** * 	*
 * * * * * * * * (* 
* * * *X** * 	*
 * * * * * * * * (* 
* * * *X  	
     ( 
     r$   rd   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$   rU   r   rV   rW   rK   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 )rg   rx   r_   r   make_compat_bytesr{   r|   	to_unichrr   _writeenc)r!   rU   rV   rW   rK   rg   textr   charsr   chars              r"   rY   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         t          j        |j                  |j        fz  }|                     |           d S )Nz$<page id="%s" bbox="%s" rotate="%d">)r   r   bbox2strmediaboxrotater   )r!   r>   r    outputs       r"   r@   zTagExtractor.begin_page#  sD    7KN4=))K;
 

 	Fr$   c                 P    |                      d           | xj        dz  c_        d S )Nz</page>
   )r   r   rB   s     r"   rC   zTagExtractor.end_page+  s(    K   qr$   r5   r6   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>3  sS       A D	!CC(=a(@(@CCC  r$   <>)rx   dictjoinsorteditemsr   r   r
   r_   rD   r   r   append)r!   r5   r6   sout_ss        r"   r9   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                            z  }|                     |           d S )Nz</%s>)	r   r_   r   popr   r   r
   rD   r   )r!   r5   r   s      r"   r;   zTagExtractor.end_tag<  sm    {,,C,,,,,koob!!%)Dch$7$7888Er$   c                 f    |                      ||           | j                            d           d S )Nr   )r9   r   r   r8   s      r"   r=   zTagExtractor.do_tagB  s0    sE"""r$   r   c                 j    | j                             |                    | j                             d S r   )r   writeencoder   )r!   r   s     r"   r   zTagExtractor._writeF  s,    
$*--.....r$   )r   r   rZ   )r[   r\   r]   r   r_   r#   rb   r   rY   r   r   r@   rC   r   r   r9   r;   r=   r   r&   r$   r"   r   r      s       
 	
* 
*%
* 
* 	
*
 

* 
* 
* 
*%!% % 	%
 (% 
% % % %0w V     W        Y  x/D  PT            ) H[,A T    / / / / / / / /r$   r   )+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   ry   rz   r{   rb   	getLoggerr[   r   r   rd   r   r&   r$   r"   <module>r      s   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	       + + + + + + : : : : : : : : $ $ $ $ $ $ ' ' ' ' ' ' ' ' ' ' ' ' ; ; ; ; ; ; ; ; ; ; ; ;             eC-./
		8	$	$? ? ? ? ? ? ? ?DV V V V VI V V VrI/ I/ I/ I/ I/9 I/ I/ I/ I/ I/r$   