
    $|h"                        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# G d
 d      Z$ G d de$      Z% G d de$      Z&y)    )TYPE_CHECKINGBinaryIOIterableListOptionalSequenceUnioncast)utils)PDFColorSpace)PDFFontPDFUnicodeNotDefined)PDFPage)	PDFStream)	PSLiteral)MatrixPathSegmentPointRect)PDFGraphicStatePDFResourceManager	PDFStackTPDFTextStatec                   >   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 y).	PDFDevicezGTranslate the output of PDFPageInterpreter to the output that is neededreturnNc                      || _         d | _        y N)rsrcmgrctm)selfr   s     Q/var/www/html/test/engine/venv/lib/python3.12/site-packages/pdfminer/pdfdevice.py__init__zPDFDevice.__init__#   s    %)    c                      y)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                 $    | j                          y r   )close)r!   r+   r,   r-   s       r"   __exit__zPDFDevice.__exit__-   s    

r$   c                      y r   r&   r'   s    r"   r/   zPDFDevice.close0       r$   r    c                     || _         y r   )r    )r!   r    s     r"   set_ctmzPDFDevice.set_ctm3   s	    r$   tagpropsr   c                      y r   r&   r!   r5   r6   s      r"   	begin_tagzPDFDevice.begin_tag6   r2   r$   c                      y r   r&   r'   s    r"   end_tagzPDFDevice.end_tag9   r2   r$   c                      y r   r&   r8   s      r"   do_tagzPDFDevice.do_tag<   r2   r$   pagec                      y r   r&   )r!   r>   r    s      r"   
begin_pagezPDFDevice.begin_page?   r2   r$   c                      y r   r&   r!   r>   s     r"   end_pagezPDFDevice.end_pageB   r2   r$   namebboxmatrixc                      y r   r&   )r!   rD   rE   rF   s       r"   begin_figurezPDFDevice.begin_figureE   r2   r$   c                      y r   r&   )r!   rD   s     r"   
end_figurezPDFDevice.end_figureH   r2   r$   graphicstater   strokefillevenoddpathc                      y r   r&   )r!   rK   rL   rM   rN   rO   s         r"   
paint_pathzPDFDevice.paint_pathK   s     	r$   streamc                      y r   r&   )r!   rD   rR   s      r"   render_imagezPDFDevice.render_imageU   r2   r$   	textstater   seqncsc                      y r   r&   )r!   rU   rV   rW   rK   s        r"   render_stringzPDFDevice.render_stringX   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*#  & & 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y)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 |j                         rd}
d|z  |z  }|j                         r,| j                  |||j                  ||||	|
||||      |_        y | j                  |||j                  ||||	|
||||      |_        y )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_stringc   s1    xx###""9#3#3TXX>~~%%##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}$|j                  |      D ]H  }|r||z  }|| j	                  t        j                  |||f      ||||	|||      z  }|dk(  r|r||z  }d}J  ||fS NFT    
isinstanceintfloatdecoderender_charr   translate_matrix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        A 	)C#U|,S7]" $;;s+ )C$Y))..v1v> $	 	A byYY$(M)	)* 1vr$   c                     |\  }}d}|D ]  }t        |t        t        f      r|||
z  z  }d}$|j                  |      D ]H  }|r||z  }|| j	                  t        j                  |||f      ||||	|||      z  }|dk(  r|r||z  }d}J  ||fS ru   rw   r~   s                     r"   ro   z$PDFTextDevice.render_string_vertical   r   r$   r   c	                      yNr   r&   )	r!   rF   rg   rh   ri   rl   r   rW   rK   s	            r"   r|   zPDFTextDevice.render_char   s     r$   )r[   r\   r]   rb   r   rY   r   r   r   rz   rq   ro   ry   r|   r&   r$   r"   rd   rd   b   s   0!0 0 	0
 (0 
0d&& & 	&
 & & & & & & & & (& 
&P&& & 	&
 & & & & & & & & (& 
&P  	
     ( 
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y)TagExtractorr   r   outfpcodecr   Nc                 h    t         j                  | |       || _        || _        d| _        g | _        y r   )r   r#   r   r   pageno_stack)r!   r   r   r   s       r"   r#   zTagExtractor.__init__   s0     	4)

')r$   rU   r   rV   rW   rK   r   c                 f   |j                   }|J d}|D ]g  }t        |t              rt        j                  |      }t        |t
              s9|j                  |      }|D ]  }		 |j                  |	      }
||
z  } i | j                  t        j                  |             y # t        $ r Y Nw xY w)N )rg   rx   r_   r   make_compat_bytesbytesr{   	to_unichrr   _writeenc)r!   rU   rV   rW   rK   rg   textr   charsr   chars              r"   rY   zTagExtractor.render_string   s     ~~ 	C#s#--c2c5)KK$E >>#.DDLD	 	EIIdO$ , s   %B$$	B0/B0r>   r    c                     d| j                   t        j                  |j                        |j                  fz  }| j                  |       y )Nz$<page id="%s" bbox="%s" rotate="%d">)r   r   bbox2strmediaboxrotater   )r!   r>   r    outputs       r"   r@   zTagExtractor.begin_page  s=    7KKNN4==)KK;
 

 	Fr$   c                 P    | j                  d       | xj                  dz  c_        y )Nz</page>
   )r   r   rB   s     r"   rC   zTagExtractor.end_page   s    K qr$   r5   r6   r   c                    d}t        |t              rhdj                  t        |j	                               D cg c]4  \  }}dt        j                  |       dt        j                  |       d6 c}}      }dt        j                  t        t        |j                               | d}| j                  |       | j                  j                  |       y c c}}w )Nr    z=""<>)rx   dictjoinsorteditemsr   r   make_compat_strr
   r_   rD   r   r   append)r!   r5   r6   skvout_ss          r"   r9   zTagExtractor.begin_tag$  s    eT" #)"7A 		!~R(=(=a(@'ACA EIId3123A3a8E3s   9C
c                    | j                   sJ t        | j                               | j                   j                  d      }dt	        j
                  t        t        |j                              z  }| j                  |       y )Nz</%s>)	r   r_   r   popr   r   r
   rD   r   )r!   r5   r   s      r"   r;   zTagExtractor.end_tag1  sX    {{,C,,{kkoob!%))Dchh$788Er$   c                 ^    | j                  ||       | j                  j                  d       y )Nr   )r9   r   r   r8   s      r"   r=   zTagExtractor.do_tag7  s     sE"r$   r   c                 l    | j                   j                  |j                  | j                               y r   )r   writeencoder   )r!   r   s     r"   r   zTagExtractor._write;  s!    

$**-.r$   )zutf-8r   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   N)'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   r   rd   r   r&   r$   r"   <module>r      s{   	 	 	  + : $ ' ' ; ;  eC-./
? ?DNI NbI/9 I/r$   