
    NgS"                     B   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rd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          Z# G d de#          Z$ G 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                   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/ai-engine/env/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#   r0   zPDFDevice.close/       r%   r!   c                     || _         d S r    )r!   )r"   r!   s     r#   set_ctmzPDFDevice.set_ctm2   s    r%   tagpropsr   c                     d S r    r'   r"   r6   r7   s      r#   	begin_tagzPDFDevice.begin_tag5   r3   r%   c                     d S r    r'   r(   s    r#   end_tagzPDFDevice.end_tag8   r3   r%   c                     d S r    r'   r9   s      r#   do_tagzPDFDevice.do_tag;   r3   r%   pagec                     d S r    r'   )r"   r?   r!   s      r#   
begin_pagezPDFDevice.begin_page>   r3   r%   c                     d S r    r'   r"   r?   s     r#   end_pagezPDFDevice.end_pageA   r3   r%   namebboxmatrixc                     d S r    r'   )r"   rE   rF   rG   s       r#   begin_figurezPDFDevice.begin_figureD   r3   r%   c                     d S r    r'   )r"   rE   s     r#   
end_figurezPDFDevice.end_figureG   r3   r%   graphicstater   strokefillevenoddpathc                     d S r    r'   )r"   rL   rM   rN   rO   rP   s         r#   
paint_pathzPDFDevice.paint_pathJ   s	     	r%   streamc                     d S r    r'   )r"   rE   rS   s      r#   render_imagezPDFDevice.render_imageT   r3   r%   	textstater   seqncsc                     d S r    r'   )r"   rV   rW   rX   rL   s        r#   render_stringzPDFDevice.render_stringW   s	     	r%   )r   r   r   N)r   r   r   Nr    )!__name__
__module____qualname____doc__r$   strr)   r+   objectr1   r0   r   r5   r   r   r:   r<   r>   r   rA   rD   r   rI   rK   boolr   r   rR   r   rU   
PDFTextSeqr   rZ   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 )PDFTextDevicerV   r   rW   rX   rL   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_matrixrG   fontfontsizescaling	charspace	wordspaceriseis_multibyteis_verticalrender_string_vertical
linematrixrender_string_horizontal)r"   rV   rW   rX   rL   rG   rh   ri   rj   rk   rl   rm   dxscales                r#   rZ   zPDFTextDevice.render_stringb   s:    x###"9#3TX>>~%#d*''1	''1	~ 	I("W, 	#'#>#>$$ $I    $(#@#@$$ $I   r%   rG   posrh   ri   rj   rk   rl   rm   rs   c                 4   |\  }}d}|D ]}t          |t          t          f          r|||
z  z  }d})|                    |          D ]L}|r||z  }||                     t          j        |||f          ||||	|||          z  }|dk    r|r||z  }d}M||fS NFT    
isinstanceintfloatdecoderender_charr   translate_matrixr"   rW   rG   rt   rh   ri   rj   rk   rl   rm   rs   rX   rL   xyneedcharspaceobjcids                     r#   rr   z&PDFTextDevice.render_string_horizontal        A 	) 	)C#U|,, )S7]" $;;s++ ) )C$ 'Y)).v1v>> $	 	 	A byyYyY$(MM)  1vr%   c                 4   |\  }}d}|D ]}t          |t          t          f          r|||
z  z  }d})|                    |          D ]L}|r||z  }||                     t          j        |||f          ||||	|||          z  }|dk    r|r||z  }d}M||fS rv   rx   r   s                     r#   rp   z$PDFTextDevice.render_string_vertical   r   r%   r   c	                     dS Nr   r'   )	r"   rG   rh   ri   rj   rm   r   rX   rL   s	            r#   r}   zPDFTextDevice.render_char   s	     qr%   )r\   r]   r^   rc   r   rZ   r   r   r   r{   rr   rp   rz   r}   r'   r%   r#   re   re   a   s       0!0 0 	0
 (0 
0 0 0 0d&& & 	&
 & & & & & & & & (& 
& & & &P&& & 	&
 & & & & & & & & (& 
& & & &P  	
     ( 
     r%   re   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%   rV   r   rW   rX   rL   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 )rh   ry   r`   r   make_compat_bytesbytesr|   	to_unichrr   _writeenc)r"   rV   rW   rX   rL   rh   textr   charsr   chars              r#   rZ   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#   rA   zTagExtractor.begin_page  sC    7KN4=))K;
 

 	Fr%   c                 P    |                      d           | xj        dz  c_        d S )Nz</page>
r   )r   r   rC   s     r#   rD   zTagExtractor.end_page  s)    K   qr%   r6   r7   r   c                    d}t          |t                    r>d                    d t          |                                          D                       }d                    t          j        t          t          |j
                            |          }|                     |           | j                            |           d S )Nr   c                     g | ]?\  }}d                      t          j        |          t          j        |                    @S )z {}="{}")formatr   r   make_compat_str).0kvs      r#   
<listcomp>z*TagExtractor.begin_tag.<locals>.<listcomp>&  sO       A %%eillE4I!4L4LMM  r%   z<{}{}>)ry   dictjoinsorteditemsr   r   r   r
   r`   rE   r   r   append)r"   r6   r7   sout_ss        r#   r:   zTagExtractor.begin_tag"  s    eT"" 	 "("7"7   A 	$sCH*=*= > >BB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
   rE   r   )r"   r6   r   s      r#   r<   zTagExtractor.end_tag0  sl    {,,C,,,,,koob!!%)Dch$7$7888Er%   c                 f    |                      ||           | j                            d           d S )Nr   )r:   r   r   r9   s      r#   r>   zTagExtractor.do_tag7  s/    sE"""r%   r   c                 j    | j                             |                    | j                             d S r    )r   writeencoder   )r"   r   s     r#   r   zTagExtractor._write<  s,    
$*--.....r%   )r   r    r[   )r\   r]   r^   r   r`   r$   rc   r   rZ   r   r   rA   rD   r   r   r:   r<   r>   r   r'   r%   r#   r   r      s|       KR* *+*4<*EH*	* * * *%!% % 	%
 (% 
% % % %0w V     W     
 Y x/D PT        ) H[,A T    
/ / / / / / / /r%   r   N)&typingr   r   r   r   r   r   r	   r
   pdfminer.psparserr   r   r   pdfcolorr   pdffontr   r   pdfpager   pdftypesr   r   r   r   r   	pdfinterpr   r   r   r   rz   r{   r   rc   r   re   r   r'   r%   r#   <module>r      s  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ( ' ' ' ' '       # # # # # #       ) ) ) ) ) )             3 3 3 3 3 3 3 3 3 3 3 3 %******------''''''$$$$$$ eC-./
? ? ? ? ? ? ? ?DN N N N NI N N NbK/ K/ K/ K/ K/9 K/ K/ K/ K/ K/r%   