
    Ng                        d dl Z d dlZd dlm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 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 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& 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/m0Z0 dd l*m1Z1 dd!l*m2Z2 dd"l*m3Z3 dd#l*m4Z4 dd$l5m6Z6 dd%l5m7Z7m8Z8m9Z9m:Z: dd&l5m;Z; dd'l5m<Z<  e j=        e>          Z? G d( d)e#          Z@ G d* d+e#          ZA e,d,          ZB e,d-          ZC e,d.          ZD e,d/          ZE e,d0          ZF G d1 d2          ZGeeHe
eHeHeHf         e
eHeHeHeHf         f         ZI G d3 d4          ZJ G d5 d6          ZK G d7 d8e1ee.e%f                            ZLe2e%         ZM	  G d9 d:          ZNdS );    N)BytesIO)DictListMappingOptionalSequenceTupleUnioncast   )settings)CMap)CMapBase)CMapDB)PDFColorSpace)PREDEFINED_COLORSPACE)	PDFDevice)
PDFTextSeq)
PDFCIDFont)PDFFont)PDFFontError)PDFTrueTypeFont)PDFType1Font)PDFType3Font)PDFPage)PDFException)	PDFObjRef)	PDFStream)
dict_value)
list_value)resolve1)stream_value)KWD)LIT)PSEOF)	PSKeyword)	PSLiteralPSTypeError)PSStackParser)PSStackType)keyword_nameliteral_name)MATRIX_IDENTITY)MatrixPointPathSegmentRect)choplist)mult_matrixc                       e Zd ZdS )PDFResourceErrorN__name__
__module____qualname__     N/var/www/html/ai-engine/env/lib/python3.11/site-packages/pdfminer/pdfinterp.pyr6   r6   -           Dr<   r6   c                       e Zd ZdS )PDFInterpreterErrorNr7   r;   r<   r=   r@   r@   1   r>   r<   r@   PDFTextFontFormImagec                   H    e Zd ZU eed<   eed<   d	dZdefdZd
dZ	d	dZ
dS )PDFTextStatematrix
linematrixreturnNc                     d | _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        |                                  d S )Nr   d   )	fontfontsize	charspace	wordspacescalingleadingrenderriseresetselfs    r=   __init__zPDFTextState.__init__@   sK    '+	  ! !!	

r<   c                     d| j         d| j        d| j        d| j        d| j        d| j        d| j        d| j        d	| j        d
| j	        dS )Nz<PDFTextState: font=z, fontsize=z, charspace=z, wordspace=z
, scaling=z
, leading=z	, render=z, rise=z	, matrix=z, linematrix=>)
rM   rN   rO   rP   rQ   rR   rS   rT   rH   rI   rV   s    r=   __repr__zPDFTextState.__repr__M   sj      							
r<   c                    t                      }| j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j	        |_	        | j
        |_
        |S N)rG   rM   rN   rO   rP   rQ   rR   rS   rT   rH   rI   rW   objs     r=   copyzPDFTextState.copy`   sj    nn9}ll[
9[

r<   c                 ,    t           | _        d| _        d S )Nr   r   )r.   rH   rI   rV   s    r=   rU   zPDFTextState.resetn   s    % r<   rJ   N)rJ   rG   )r8   r9   r:   r/   __annotations__r0   rX   strr[   r`   rU   r;   r<   r=   rG   rG   <   s         NNN	 	 	 	
# 
 
 
 
&   ! ! ! ! ! !r<   rG   c                   *    e Zd ZddZddZdefdZdS )PDFGraphicStaterJ   Nc                     d| _         d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d S Nr   		linewidthlinecaplinejoin
miterlimitdashintentflatnessscolorncolorrV   s    r=   rX   zPDFGraphicState.__init__{   sI     !)-*.,059	(,*. (, (,r<   c                     t                      }| j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j	        |_	        |S r]   )
rg   rk   rl   rm   rn   ro   rp   rq   rr   rs   r^   s     r=   r`   zPDFGraphicState.copy   sc    l}9[
}[
[

r<   c                     d| j         d| j        d| j        d| j        d| j        d| j        d| j        d| j        d	| j        d
S )Nz<PDFGraphicState: linewidth=z
, linecap=z, linejoin=z,  miterlimit=z, dash=z	, intent=z, flatness=z,  stroking color=z, non stroking color=rZ   rj   rV   s    r=   r[   zPDFGraphicState.__repr__   sa      				
r<   rc   )rJ   rg   )r8   r9   r:   rX   r`   re   r[   r;   r<   r=   rg   rg   z   sW        , , , ,   
# 
 
 
 
 
 
r<   rg   c                   z    e Zd ZdZddeddfdZdee         ddfdZdd
e	dede
fdZdedee	ef         defdZdS )PDFResourceManagerzRepository of shared resources.

    ResourceManager facilitates reuse of shared resources
    such as fonts and images so that large objects are not
    allocated multiple times.
    TcachingrJ   Nc                 "    || _         i | _        d S r]   )rx   _cached_fonts)rW   rx   s     r=   rX   zPDFResourceManager.__init__   s    46r<   procsc                 8    |D ]}|t           u r|t          u rd S r]   )LITERAL_PDFLITERAL_TEXT)rW   r{   procs      r=   get_procsetzPDFResourceManager.get_procset   s:     	 	D{""%%	 	r<   Fcmapnamestrictc                 x    	 t          j        |          S # t           j        $ r |r t                      cY S w xY wr]   )r   get_cmapCMapNotFoundr   )rW   r   r   s      r=   r   zPDFResourceManager.get_cmap   sM    	?8,,," 	 	 	 66MMM	s     99objidspecc                 b   |r|| j         v r| j         |         }nt                              d||           t          j        r|d         t
          urt          d          d|v rt          |d                   }nt          j        rt          d          d}|dv rt          | |          }n|dk    rt          | |          }n|d	k    rt          | |          }n|d
v rt          | |          }n|dk    rxt          |d                   }|sJ t          |d                                                   }dD ]}||v rt          ||                   ||<   |                     d |          }n.t          j        rt          d|z            t          | |          }|r| j        r
|| j         |<   |S )Nz#get_font: create: objid=%r, spec=%rTypezType is not /FontSubtypezFont Subtype is not specified.Type1)r   MMType1TrueTypeType3)CIDFontType0CIDFontType2Type0DescendantFontsr   )Encoding	ToUnicodezInvalid Font spec: %r)rz   logdebugr   STRICTLITERAL_FONTr   r-   r   r   r   r   r    r   r`   r!   get_fontrx   )rW   r   r   rM   subtypedfontssubspecks           r=   r   zPDFResourceManager.get_font   s    (	1Ud000%e,DDII;UDIII <<|33&':;;;D  &tI77? I&'GHHH!...#D$//J&&&tT22G###D$//<<<!$--G###D):$;<<$VAY//44662 7 7ADyy%-d1g%6%6
}}T733? G&'>'EFFF#D$// 1 1,0"5)r<   )T)F)r8   r9   r:   __doc__boolrX   r   objectr   re   r   r   r   r   r   r;   r<   r=   rw   rw      s         7 7 7 7 7 7 7&!1 d      d x    *f *GCK,@ *W * * * * * *r<   rw   c            	           e Zd Zdee         ddfdZddZdeddfdZddZ	dded
e
deee
f         fdZddZ ed          Z ed          Z ed	          ZdededdfdZdS )PDFContentParserstreamsrJ   Nc                 L    || _         d| _        t          j        | d            d S ri   )r   istreamr)   rX   )rW   r   s     r=   rX   zPDFContentParser.__init__   s+     	tT*****r<   c                    | j         s| j        t          | j                  k     r0t	          | j        | j                           }| xj        dz  c_        nt          d          t          |                                          | _         d S d S )Nr   zUnexpected EOF, file truncated?)fpr   lenr   r"   r%   r   get_data)rW   strms     r=   fillfpzPDFContentParser.fillfp   s    w 	/|c$,////#DL$>??!=>>>dmmoo..DGGG	/ 	/r<   posc                 X    |                                   t          j        | |           d S r]   )r   r)   seek)rW   r   s     r=   r   zPDFContentParser.seek  s(    4%%%%%r<   c                     | j         t          | j                  k     rd S 	 |                                  | j                                        | _        | j                            | j                  | _        | j        rnd | _        fd| _         d S )Nr   r   )	charposr   bufr   r   tellbufposreadBUFSIZrV   s    r=   fillbufzPDFContentParser.fillbuf
  s|    <#dh--''F	KKMMM',,..DKw||DK00DHx DG	 r<      EItargetc                 j   |                      |           d}d}|t          |          k    rR|                                  |r| j        | j                 }t          |f          }||z  }| xj        dz  c_        t          |          |k    r|                                r|dz  }n|t          |          k     r |t          ||         f          k    r|dz  }nd}n	 | j                            |d         | j                  }|| j        | j        |dz            z  }|dz   | _        d}n@# t          $ r3 || j        | j        d          z  }t          | j                  | _        Y nw xY w|t          |          k    R|d t          |          dz             }t          j
        dd|          }||fS )Nr   r<   r   s   (\x0d\x0a|[\x0d\x0a])$)r   r   r   r   r   bytesisspaceindex
ValueErrorresub)rW   r   r   idatacicjs           r=   get_inline_dataz PDFContentParser.get_inline_data  s   		#3v;;LLNNN 1Xdl+2%LL	!v;;!##		#FAAV__ufQi\/B/B)C)CFAAAA1vay$,??ADHT\AE%9::D#$q5DLAA! 1 1 1DHT\^^44D#&tx==DLLL1' 3v;;, (Fa(()v0#t<<T{s   AD, ,:E)(E)c                 >     | j         |                                   d S r]   )add_resultspopallrV   s    r=   flushzPDFContentParser.flush4  s     $++--((((r<   s   BIs   IDtokenc                 x   || j         u r|                     |d           d S || j        u r	 |                     d          \  }}t	          |          dz  dk    r$d                    |          }t          |          d t          d|          D             }|                     |t	          d          z             \  }}t          ||          }| 
                    ||f           | 
                    || j        f           d S # t          $ r t          j        r Y d S w xY w| 
                    ||f           d S )Ninline   r   z"Invalid dictionary construct: {!r}c                 4    i | ]\  }}t          |          |S r;   r,   ).0r   vs      r=   
<dictcomp>z/PDFContentParser.do_keyword.<locals>.<dictcomp>E  s$    HHHFQ\!__aHHHr<   s   ID )
KEYWORD_BI
start_type
KEYWORD_IDend_typer   formatr(   r3   r   r   push
KEYWORD_EIr   r   )	rW   r   r   _objs	error_msgdr   r_   s	            r=   
do_keywordzPDFContentParser.do_keyword;  s^   DO##OOC*****do%% MM(33	Dt99q=A%% D K KD Q QI%i000HHhq$6G6GHHH"223V3DEEd4((		3*%%%		3011111   ?    IIsEl#####s   CD D D rc   )r   )r8   r9   r:   r   r   rX   r   intr   r   r   r	   r   r   r#   r   r   r   r&   r   r;   r<   r=   r   r      s"       + 0 +T + + + +/ / / /& & & & & &
 
 
 
 3  %U
BS    <) ) ) ) UJUJUJ$c $) $ $ $ $ $ $ $r<   r   c                   v   e Zd ZdZdededdfdZddZdee	e	f         ddfd	Z
d
eddfdZdeddfdZdedee         fdZdeeeef         fdZdeeeef         ddfdZddZddZdededededededdfdZdeddfdZdeddfdZd eddfd!Zd"eddfd#Zd$ed%eddfd&Zd'eddfd(Zd)eddfd*Z d+eddfd,Z!d-ed.eddfd/Z"d-ed.eddfd0Z#d1ed2ed3ed4ed5ed6eddfd7Z$d3ed4ed5ed6eddf
d8Z%d1ed2ed5ed6eddf
d9Z&dd:Z'd-ed.ed;ed<eddf
d=Z(dd>Z)dd?Z*dd@Z+ddAZ,ddBZ-ddCZ.ddDZ/ddEZ0ddFZ1ddGZ2ddHZ3ddIZ4d+eddfdJZ5d+eddfdKZ6dLeddfdMZ7dLeddfdNZ8dOedPedQeddfdRZ9dOedPedQeddfdSZ:dTedUed.edVeddf
dWZ;dTedUed.edVeddf
dXZ<ddYZ=ddZZ>dd[Z?dd\Z@d+e	ddfd]ZAdd^ZBdd_ZCdd`ZDddaZEdbeddfdcZFdbeddeddfdeZGdbeddfdfZHdbeddeddfdgZIddhZJdieddfdjZKdieddfdkZLdleddfdmZMdneddfdoZNdpedqeddfdrZOdseddfdtZPdueddfdvZQdwedxeddfdyZRdwedxeddfdzZSd{edQedTed|ed}ed~eddfdZTddZUdeddfdZVdeddfdZWdeddfdZXdedededdfdZYddZZddZ[deddfdZ\deddfdZ]de^ddfdZ_e`fdee	e	f         deae	         d
eddfdZbdeae	         ddfdZcdS )PDFPageInterpreterzhProcessor for the content of a PDF page

    Reference: PDF Reference, Appendix A, Operator Summary
    rsrcmgrdevicerJ   Nc                 "    || _         || _        d S r]   )r   r   )rW   r   r   s      r=   rX   zPDFPageInterpreter.__init__[  s    r<   c                 B    |                      | j        | j                  S r]   )	__class__r   r   rV   s    r=   dupzPDFPageInterpreter.dup`  s    ~~dlDK888r<   	resourcesc                    || _         i | _        i | _        t          j                    | _        |sdS dt          dt          t                   fd}t          |          
                                D ]X\  }}t                              d||           |dk    rxt          |          
                                D ]U\  }}d}t          |t                    r|j        }t          |          }| j                            ||          | j        |<   V|dk    rLt          |          
                                D ])\  }} |t%          |                    }	|	
|	| j        |<   *|dk    r)| j                            t)          |                     !|d	k    r1t          |          
                                D ]\  }
}|| j        |
<   ZdS )
z@Prepare the fonts and XObjects listed in the Resource attribute.Nr   rJ   c           	         t          | t                    rt          | d                   }nt          |           }|dk    rQt          | t                    r<dt          |           k    r)t	          |t          | d                   d                   S |dk    rXt          | t                    rCdt          |           k    r0t	          |t          t          | d                                       S t          j        |          S )Nr   ICCBasedr   r   NDeviceN)	
isinstancelistr-   r   r   r"   r    r   get)r   names     r=   get_colorspacez9PDFPageInterpreter.init_resources.<locals>.get_colorspacel  s    $%% *#DG,,#D))z!!jt&<&<!c$ii$T<Q+@+@+EFFF""z$'='="!s4yy..$T3z$q'/B/B+C+CDDD,0666r<   zResource: %r: %rrC   
ColorSpaceProcSetXObject)r   fontmapxobjmapr   r`   csmapr   r   r   r   itemsr   r   r   r   r   r   r   r!   r   r    )rW   r   r   r   r   fontidr   r   csid
colorspacexobjidxobjstrms               r=   init_resourcesz!PDFPageInterpreter.init_resourcesc  s   ".0/D/I/K/K
 	F
	7 
	7H],C 
	7 
	7 
	7 
	7 !++1133 	4 	4FQII(!Q///F{{&0mm&9&9&;&; N NNVT E!$	22 + $
%d++D+/<+@+@+M+MDL((N l""$.qMM$7$7$9$9 6 6LT4!/!?!?J!-+5
4(6 i((A7777i*4Q--*=*=*?*? 4 4&VX+3DL((r<   ctmc                 p   g | _         || _        | j                            | j                   t	                      | _        t                      | _        g | _        g | _	        d| _
        d| _        | j        r?t          t          | j                                                            x| _
        | _        dS )z<Initialize the text and graphic states for rendering a page.N)gstackr   r   set_ctmrG   	textstaterg   graphicstatecurpathargstackscsncsr   nextitervalues)rW   r   s     r=   
init_statezPDFPageInterpreter.init_state  s     KMDH%%%%+--*,)+,0,0: 	B"&tDJ,=,=,?,?'@'@"A"AADHtxr<   r_   c                 :    | j                             |           d S r]   )r  appendr^   s     r=   r   zPDFPageInterpreter.push  s    S!!!r<   nc                 `    |dk    rg S | j         | d          }| j         d |          | _         |S ri   )r  )rW   r  xs      r=   popzPDFPageInterpreter.pop  s;    66IM1"##crc*r<   c                 r    | j         | j                                        | j                                        fS r]   )r   r  r`   r  rV   s    r=   get_current_statez$PDFPageInterpreter.get_current_state  s.    $.--//1B1G1G1I1IJJr<   statec                 n    |\  | _         | _        | _        | j                            | j                    d S r]   )r   r  r  r   r  )rW   r  s     r=   set_current_statez$PDFPageInterpreter.set_current_state  s4     9>54>4#4DH%%%r<   c                 ^    | j                             |                                            dS )zSave graphics stateN)r  r  r  rV   s    r=   do_qzPDFPageInterpreter.do_q  s)    41133444r<   c                 l    | j         r,|                     | j                                                    dS )zRestore graphics stateN)r  r  r  rV   s    r=   do_QzPDFPageInterpreter.do_Q  s1    ; 	6""4;??#4#4555r<   a1b1c1d1e1f1c                     t          t          t          ||||||f          | j                  | _        | j                            | j                   dS )z3Concatenate matrix to current transformation matrixN)r4   r   r/   r   r   r  )rW   r  r  r  r  r   r!  s          r=   do_cmzPDFPageInterpreter.do_cm  sK     tFRRR,DEEtxPPDH%%%r<   rk   c                 D    t          t          |          | j        _        dS )zSet line widthN)r   floatr  rk   )rW   rk   s     r=   do_wzPDFPageInterpreter.do_w  s    &*5)&<&<#r<   rl   c                     || j         _        dS )zSet line cap styleN)r  rl   )rW   rl   s     r=   do_JzPDFPageInterpreter.do_J  s    $+!r<   rm   c                     || j         _        dS )zSet line join styleN)r  rm   )rW   rm   s     r=   do_jzPDFPageInterpreter.do_j      %-"r<   rn   c                     || j         _        dS )zSet miter limitN)r  rn   )rW   rn   s     r=   do_MzPDFPageInterpreter.do_M  s    '1$r<   ro   phasec                 "    ||f| j         _        dS )zSet line dash patternN)r  ro   )rW   ro   r.  s      r=   do_dzPDFPageInterpreter.do_d  s    "&r<   rp   c                     || j         _        dS )zSet color rendering intentN)r  rp   )rW   rp   s     r=   do_rizPDFPageInterpreter.do_ri  s    #) r<   rq   c                     || j         _        dS )zSet flatness toleranceN)r  rq   )rW   rq   s     r=   do_izPDFPageInterpreter.do_i  r+  r<   r   c                     dS )z7Set parameters from graphics state parameter dictionaryNr;   rW   r   s     r=   do_gszPDFPageInterpreter.do_gs  s	     	r<   r  yc                     | j                             dt          t          |          t          t          |          f           dS )zBegin new subpathmNr  r  r   r%  rW   r  r8  s      r=   do_mzPDFPageInterpreter.do_m  4    S$ua..$ua..ABBBr<   c                     | j                             dt          t          |          t          t          |          f           dS )z$Append straight line segment to pathlNr;  r<  s      r=   do_lzPDFPageInterpreter.do_l  r>  r<   x1y1x2y2x3y3c                 ,   | j                             dt          t          |          t          t          |          t          t          |          t          t          |          t          t          |          t          t          |          f           dS )z4Append curved segment to path (three control points)r   Nr;  )rW   rB  rC  rD  rE  rF  rG  s          r=   do_czPDFPageInterpreter.do_c  so     	UBUBUBUBUBUB
	
 
	
 
	
 	r<   c           
          | j                             dt          t          |          t          t          |          t          t          |          t          t          |          f           dS )z8Append curved segment to path (initial point replicated)r   Nr;  )rW   rD  rE  rF  rG  s        r=   do_vzPDFPageInterpreter.do_v  R    $ub//4r??DOOT%QS__U	
 	
 	
 	r<   c           
          | j                             dt          t          |          t          t          |          t          t          |          t          t          |          f           dS )z6Append curved segment to path (final point replicated)r8  Nr;  )rW   rB  rC  rF  rG  s        r=   do_yzPDFPageInterpreter.do_y  rL  r<   c                 :    | j                             d           dS )zClose subpathhN)r  r  rV   s    r=   do_hzPDFPageInterpreter.do_h$  s    F###r<   wrQ  c                    t          t          |          }t          t          |          }t          t          |          }t          t          |          }| j                            d||f           | j                            d||z   |f           | j                            d||z   ||z   f           | j                            d|||z   f           | j                            d           dS )zAppend rectangle to pathr:  r@  rP  N)r   r%  r  r  )rW   r  r8  rS  rQ  s        r=   do_rezPDFPageInterpreter.do_re)  s    NNNNNNNNS!QK(((S!a%O,,,S!a%Q/000S!QUO,,,F###r<   c                 d    | j                             | j        ddd| j                   g | _        dS )zStroke pathTFNr   
paint_pathr  r  rV   s    r=   do_SzPDFPageInterpreter.do_S6  s1    t0$udlSSSr<   c                 V    |                                   |                                  dS )zClose and stroke pathN)rR  rY  rV   s    r=   do_szPDFPageInterpreter.do_s<  !    				r<   c                 d    | j                             | j        ddd| j                   g | _        dS )z+Fill path using nonzero winding number ruleFTNrW  rV   s    r=   do_fzPDFPageInterpreter.do_fB  s1    t0%udlSSSr<   c                 *    |                                  S )z6Fill path using nonzero winding number rule (obsolete))r^  rV   s    r=   do_FzPDFPageInterpreter.do_FH  s    yy{{r<   c                 d    | j                             | j        ddd| j                   g | _        dS )zFill path using even-odd ruleFTNrW  rV   s    r=   do_f_azPDFPageInterpreter.do_f_aL  s1    t0%tT\RRRr<   c                 d    | j                             | j        ddd| j                   g | _        dS )z6Fill and stroke path using nonzero winding number ruleTFNrW  rV   s    r=   do_BzPDFPageInterpreter.do_BR  s1    t0$eT\RRRr<   c                 d    | j                             | j        ddd| j                   g | _        dS )z(Fill and stroke path using even-odd ruleTNrW  rV   s    r=   do_B_azPDFPageInterpreter.do_B_aX  s1    t0$dDLQQQr<   c                 V    |                                   |                                  dS )z>Close, fill, and stroke path using nonzero winding number ruleN)rR  rd  rV   s    r=   do_bzPDFPageInterpreter.do_b^  r\  r<   c                 V    |                                   |                                  dS )z0Close, fill, and stroke path using even-odd ruleN)rR  rf  rV   s    r=   do_b_azPDFPageInterpreter.do_b_ad  s!    		r<   c                     g | _         dS )z$End path without filling or strokingN)r  rV   s    r=   do_nzPDFPageInterpreter.do_nj  s    r<   c                     dS )z3Set clipping path using nonzero winding number ruleNr;   rV   s    r=   do_WzPDFPageInterpreter.do_Wo      r<   c                     dS )z%Set clipping path using even-odd ruleNr;   rV   s    r=   do_W_azPDFPageInterpreter.do_W_as  ro  r<   c                     	 | j         t          |                   | _        n.# t          $ r! t          j        rt          d|z            Y nw xY wdS )zOSet color space for stroking operations

        Introduced in PDF 1.1
        Undefined ColorSpace: %rN)r   r-   r  KeyErrorr   r   r@   r6  s     r=   do_CSzPDFPageInterpreter.do_CSw  sq    
	Mz,t"4"45DHH 	M 	M 	M M)*Dt*KLLLM M	M 	   " (AAc                     	 | j         t          |                   | _        n.# t          $ r! t          j        rt          d|z            Y nw xY wdS )z*Set color space for nonstroking operationsrs  N)r   r-   r  rt  r   r   r@   r6  s     r=   do_cszPDFPageInterpreter.do_cs  sq    	Mz,t"4"45DHH 	M 	M 	M M)*Dt*KLLLM M	M 	rv  grayc                 h    t          t          |          | j        _        | j        d         | _        dS )z&Set gray level for stroking operations
DeviceGrayNr   r%  r  rr   r   r  rW   ry  s     r=   do_GzPDFPageInterpreter.do_G  *    #'t#4#4 :l+r<   c                 h    t          t          |          | j        _        | j        d         | _        dS )z)Set gray level for nonstroking operationsr{  Nr   r%  r  rs   r   r  r}  s     r=   do_gzPDFPageInterpreter.do_g  r  r<   rgbc                     t          t          |          t          t          |          t          t          |          f| j        _        | j        d         | _        dS )z%Set RGB color for stroking operations	DeviceRGBNr|  rW   r  r  r  s       r=   do_RGzPDFPageInterpreter.do_RG  @    $(NNDNNDPQNN#S :k*r<   c                     t          t          |          t          t          |          t          t          |          f| j        _        | j        d         | _        dS )z(Set RGB color for nonstroking operationsr  Nr  r  s       r=   do_rgzPDFPageInterpreter.do_rg  r  r<   r   r:  r   c                     t          t          |          t          t          |          t          t          |          t          t          |          f| j        _        | j        d         | _        dS )z&Set CMYK color for stroking operations
DeviceCMYKNr|  rW   r   r:  r8  r   s        r=   do_KzPDFPageInterpreter.do_K  R     NNNNNNNN	$
  :l+r<   c                     t          t          |          t          t          |          t          t          |          t          t          |          f| j        _        | j        d         | _        dS )z)Set CMYK color for nonstroking operationsr  Nr  r  s        r=   do_kzPDFPageInterpreter.do_k  r  r<   c                     | j         r| j         j        }nt          j        rt	          d          d}t          t          |                     |                    | j        _	        dS )z"Set color for stroking operations.No colorspace specified!r   N)
r  ncomponentsr   r   r@   r   Colorr  r  rr   rW   r  s     r=   do_SCNzPDFPageInterpreter.do_SCN  [    8 	$AA F)*DEEEA#'txx{{#;#; r<   c                     | j         r| j         j        }nt          j        rt	          d          d}t          t          |                     |                    | j        _	        dS )$Set color for nonstroking operationsr  r   N)
r  r  r   r   r@   r   r  r  r  rs   r  s     r=   do_scnzPDFPageInterpreter.do_scn  r  r<   c                 .    |                                   dS )z!Set color for stroking operationsN)r  rV   s    r=   do_SCzPDFPageInterpreter.do_SC      r<   c                 .    |                                   dS )r  N)r  rV   s    r=   do_sczPDFPageInterpreter.do_sc  r  r<   c                     dS )z%Paint area defined by shading patternNr;   r6  s     r=   do_shzPDFPageInterpreter.do_sh  ro  r<   c                 8    | j                                          dS )zBegin text object

        Initializing the text matrix, Tm, and the text line matrix, Tlm, to
        the identity matrix. Text objects cannot be nested; a second BT cannot
        appear before an ET.
        N)r  rU   rV   s    r=   do_BTzPDFPageInterpreter.do_BT  s     	r<   c                     dS )zEnd a text objectNr;   rV   s    r=   do_ETzPDFPageInterpreter.do_ET  ro  r<   c                     dS )zBegin compatibility sectionNr;   rV   s    r=   do_BXzPDFPageInterpreter.do_BX  ro  r<   c                     dS )zEnd compatibility sectionNr;   rV   s    r=   do_EXzPDFPageInterpreter.do_EX  ro  r<   tagc                 `    | j                             t          t          |                     dS )zDefine marked-content pointNr   do_tagr   r'   rW   r  s     r=   do_MPzPDFPageInterpreter.do_MP  s'    4	3//000r<   propsc                 b    | j                             t          t          |          |           dS )z.Define marked-content point with property listNr  rW   r  r  s      r=   do_DPzPDFPageInterpreter.do_DP  s)    4	3//777r<   c                 `    | j                             t          t          |                     dS )zBegin marked-content sequenceNr   	begin_tagr   r'   r  s     r=   do_BMCzPDFPageInterpreter.do_BMC  s'    d9c22333r<   c                 b    | j                             t          t          |          |           dS )z0Begin marked-content sequence with property listNr  r  s      r=   do_BDCzPDFPageInterpreter.do_BDC  s)    d9c22E:::r<   c                 8    | j                                          dS )zEnd marked-content sequenceN)r   end_tagrV   s    r=   do_EMCzPDFPageInterpreter.do_EMC  s    r<   spacec                 D    t          t          |          | j        _        dS )zSet character spacing.

        Character spacing is used by the Tj, TJ, and ' operators.

        :param space: a number expressed in unscaled text space units.
        N)r   r%  r  rO   rW   r  s     r=   do_TczPDFPageInterpreter.do_Tc       $(u#5#5 r<   c                 D    t          t          |          | j        _        dS )zSet the word spacing.

        Word spacing is used by the Tj, TJ, and ' operators.

        :param space: a number expressed in unscaled text space units
        N)r   r%  r  rP   r  s     r=   do_TwzPDFPageInterpreter.do_Tw  r  r<   scalec                 D    t          t          |          | j        _        dS )zuSet the horizontal scaling.

        :param scale: is a number specifying the percentage of the normal width
        N)r   r%  r  rQ   )rW   r  s     r=   do_TzzPDFPageInterpreter.do_Tz!  s    
 "&eU!3!3r<   rR   c                 F    t          t          |           | j        _        dS )zSet the text leading.

        Text leading is used only by the T*, ', and " operators.

        :param leading: a number expressed in unscaled text space units
        N)r   r%  r  rR   )rW   rR   s     r=   do_TLzPDFPageInterpreter.do_TL)  s      #'ug"6"6!6r<   r   rN   c                 6   	 | j         t          |                   | j        _        nS# t          $ rF t
          j        rt          d|z            | j        	                    di           | j        _        Y nw xY wt          t          |          | j        _        dS )zSet the text font

        :param fontid: the name of a font resource in the Font subdictionary
            of the current resource dictionary
        :param fontsize: size is a number representing a scale factor.
        zUndefined Font id: %rN)r   r-   r  rM   rt  r   r   r@   r   r   r   r%  rN   )rW   r   rN   s      r=   do_TfzPDFPageInterpreter.do_Tf3  s    	B"&,|F/C/C"DDN 	B 	B 	B L)*AF*JKKK"&,"7"7b"A"ADN	B #'uh"7"7s   $' AA76A7rS   c                 D    t          t          |          | j        _        dS )zSet the text rendering modeN)r   r   r  rS   )rW   rS   s     r=   do_TrzPDFPageInterpreter.do_TrC  s     $S& 1 1r<   rT   c                 D    t          t          |          | j        _        dS )z`Set the text rise

        :param rise: a number expressed in unscaled text space units
        N)r   r%  r  rT   )rW   rT   s     r=   do_TszPDFPageInterpreter.do_TsH  s    
 #5$//r<   txtyc                     t          t          |          }t          t          |          }| j        j        \  }}}}}}||||||z  ||z  z   |z   ||z  ||z  z   |z   f| j        _        d| j        _        dS )zMove text positionrb   N)r   r%  r  rH   rI   	rW   r  r  ar  r   r   efs	            r=   do_TdzPDFPageInterpreter.do_TdP  s}    %__%__!^2Aq!Q!"Aq!R!Vb1f_q-@"q&2PQ6/TUBU V$*!r<   c                    t          t          |          }t          t          |          }| j        j        \  }}}}}}||||||z  ||z  z   |z   ||z  ||z  z   |z   f| j        _        || j        _        d| j        _        dS )z"Move text position and set leadingrb   N)r   r%  r  rH   rR   rI   r  s	            r=   do_TDzPDFPageInterpreter.do_TDY  s    %__%__!^2Aq!Q!"Aq!R!Vb1f_q-@"q&2PQ6/TUBU V!#$*!r<   r  r   r  r  c           	      h    t          t          ||||||f          | j        _        d| j        _        dS )z$Set text matrix and text line matrixrb   N)r   r/   r  rH   rI   rW   r  r  r   r   r  r  s          r=   do_TmzPDFPageInterpreter.do_Tmc  s4     !%VaAq!Q-? @ @$*!r<   c                     | j         j        \  }}}}}}||||| j         j        |z  |z   | j         j        |z  |z   f| j         _        d| j         _        dS )zMove to start of next text linerb   N)r  rH   rR   rI   r  s          r=   do_T_azPDFPageInterpreter.do_T_aq  sf    !^2Aq!QN"Q&*N"Q&*!
 %+!r<   seqc                    | j         j        t          j        rt	          d          dS | j        J | j                            | j         t          t          |          | j        | j
                                                   dS )z0Show text, allowing individual glyph positioningNzNo font specified!)r  rM   r   r   r@   r  r   render_stringr   r   r  r`   )rW   r  s     r=   do_TJzPDFPageInterpreter.do_TJ  s    >& @)*>???Fx###!!NDS1148T=N=S=S=U=U	
 	
 	
 	r<   sc                 2    |                      |g           dS )z	Show textN)r  rW   r  s     r=   do_TjzPDFPageInterpreter.do_Tj  s    

A3r<   c                 Z    |                                   |                     |g           dS )zPMove to next line and show text

        The ' (single quote) operator.
        N)r  r  r  s     r=   do__qzPDFPageInterpreter.do__q  s'    
 	

A3r<   awacc                     |                      |           |                     |           |                     |g           dS )zqSet word and character spacing, move to next line, and show text

        The " (double quote) operator.
        N)r  r  r  )rW   r  r  r  s       r=   do__wzPDFPageInterpreter.do__w  s8    
 	

2

2

A3r<   c                     dS )zBegin inline image objectNr;   rV   s    r=   do_BIzPDFPageInterpreter.do_BI  ro  r<   c                     dS )zBegin inline image dataNr;   rV   s    r=   do_IDzPDFPageInterpreter.do_ID  ro  r<   c                 $   t          |t                    rzd|v rvd|v rrt          t          |                    }| j                            |dt                     | j                            ||           | j                            |           dS )zEnd inline image objectWHr   r   r   r   N)	r   r   re   idr   begin_figurer.   render_image
end_figure)rW   r_   iobjids      r=   do_EIzPDFPageInterpreter.do_EI  s    c9%% 	+#**C\\FK$$V\?KKKK$$VS111K""6***r<   
xobjid_argc           	      d   t          t          t          |                    }	 t          | j        |                   }n/# t
          $ r" t          j        rt          d|z            Y dS w xY wt          
                    d|           |                    d          }|t          u rd|v r|                                 }t          t          t          |d                             }t          t           t          |                    dt"                                        }|                    d          }|rt%          |          }	n| j                                        }	| j                            |||           |                    |	|gt1          || j                             | j                            |           ni|t6          u r_d	|v r[d
|v rW| j                            |dt"                     | j                            ||           | j                            |           n	 dS )zInvoke named XObjectzUndefined xobject id: %rNzProcessing xobj: %rr   BBoxr/   	Resourcesr   WidthHeightr  )r   re   r-   r"   r   rt  r   r   r@   r   r   r   LITERAL_FORMr   r2   r    r/   r.   r   r   r`   r   r  render_contentsr4   r   r  LITERAL_IMAGEr  )
rW   r  r   xobjr   interpreterbboxrH   xobjresr   s
             r=   do_DozPDFPageInterpreter.do_Do  s   c<
3344	V 455DD 	 	 	 O)*Dv*MNNNFF	 			'...((9%%l""v~~((**Kjf6677D&*TXXh-P-P"Q"QRRF hh{++G 2&w//		 N//11	K$$VT6:::''D6{648'D'D (    K""6****%%'T//h$>N>NK$$V\?KKKK$$VT222K""6**** s   ? (A+*A+pagec                    t                               d|           |j        \  }}}}|j        dk    r
dddd| |f}n3|j        dk    r	dddd||f}n|j        dk    r
dddd|| f}n
dddd| | f}| j                            ||           |                     |j        |j        |           | j        	                    |           d S )	NzProcessing page: %rZ   r   r      i  r  )
r   r   mediaboxrotater   
begin_pager  r   contentsend_page)rW   r  x0y0rB  rC  r   s          r=   process_pagezPDFPageInterpreter.process_page  s    		'...=RR;"b!QR(CC[Cq!RR(CC[CaQRC(CCaAsRC(CtS)))T^T]DDDT"""r<   r   c                     t                               d|||           |                     |           |                     |           |                     t          |                     dS )zTRender the content streams.

        This method may be called recursively.
        z1render_contents: resources=%r, streams=%r, ctm=%rN)r   r   r   r  executer    )rW   r   r   r   s       r=   r  z"PDFPageInterpreter.render_contents  sk     			?GUX	
 	
 	
 	I&&&Z(()))r<   c                    	 t          |          }n# t          $ r Y d S w xY w	 	 |                                \  }}n# t          $ r Y nCw xY wt          |t                    rt          |          }d|                    dd                              dd                              dd          z  }t          | |          rt          | |          }|j	        j
        dz
  }|rJ|                     |          }	t                              d	||	           t          |	          |k    r ||	  n\t                              d
|            |             n6t          j        rd|z  }
t#          |
          n|                     |           id S )Nr   zdo_%s*_a"_w'_qzexec: %s %rzexec: %szUnknown operator: %r)r   r%   
nextobjectr   r&   r+   replacehasattrgetattr__code__co_argcountr  r   r   r   r   r   r@   r   )rW   r   parserr   r_   r   methodfuncnargsargsr   s              r=   r  zPDFPageInterpreter.execute  s   	%g..FF 	 	 	FF		!,,..CC   #y)) #C(( 4<<T#:#:#B#B3#M#M#U#U$ $  4(( ="400D M59E #xx		-t<<<t99-- D$KK		*d333 =$:T$A	1)<<<= 		#5	6 	s    
  = 
A
A)rJ   r   rc   )dr8   r9   r:   r   rw   r   rX   r   r   r   r   r/   r  	PDFStackTr   r   r   r  r	   rG   rg   r  r  r  r  r#  r&  r(  r*  r-  r0  r2  r4  r7  r=  rA  rI  rK  rN  rR  rU  rY  r[  r^  r`  rb  rd  rf  rh  rj  rl  rn  rq  ru  rx  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r.   r   r  r  r;   r<   r=   r   r   U  sM        
 2 I $    
9 9 9 9(VV^(< ( ( ( ( (Tf     $	 d    S T)_    K5)N#O K K K K6<@A	      
     	
    
   i D    
I $    
Y 4    
y T    
 9     
I $    
Y 4    
)     
i I $    
i I $    
  	
    
   .y i Y I RV    y i Y I RV       
y Y 9  t                                  
      
) 
 
 
 
 
)      t     t    y Y 9     y Y 9     	i 	I 	) 		 	d 	 	 	 		i 	I 	) 		 	d 	 	 	 		 	 	 		 	 	 	   
   
& T                 t    
 9     
)     
) I $    
   
9     9     9     Y 4    I  t     I $    
)     	 y T    	 y T      	
    
      
 
t 
 
 
 
y T    
y T    	 y Y 4           t    #	 #d # # # #J T    ( &	 ' &! 	
 
   $!x/ !D ! ! ! ! ! !r<   r   )Ologgingr   ior   typingr   r   r   r   r   r	   r
   r    r   cmapdbr   r   r   pdfcolorr   r   	pdfdevicer   r   pdffontr   r   r   r   r   r   pdfpager   pdftypesr   r   r   r   r    r!   r"   psparserr#   r$   r%   r&   r'   r(   r)   r*   r+   r-   utilsr.   r/   r0   r1   r2   r3   r4   	getLoggerr8   r   r6   r@   r}   r~   r   r  r  rG   r%  r  rg   rw   r   r-  r   r;   r<   r=   <module>r;     s    				       N N N N N N N N N N N N N N N N N N N N                         # # # # # # + + + + + +             ! ! ! ! ! !             ! ! ! ! ! ! $ $ $ $ $ $ ! ! ! ! ! ! ! ! ! ! ! !       " " " " " "                                           " " " " " "                         , , , , , , , , # # # # # # ! ! ! ! ! ! " " " " " " " " " " " " " " " " " " 3 3 3 3 3 3 3 3 3 3 3 3            g!!	 	 	 	 	| 	 	 		 	 	 	 	, 	 	 	 c%jjs6{{s6{{s6{{G4! 4! 4! 4! 4! 4! 4! 4!n 			%
	%u
$%'	-
 -
 -
 -
 -
 -
 -
 -
`G G G G G G G GTZ$ Z$ Z$ Z$ Z$}U9i+?%@A Z$ Z$ Z$z 	"	 6G G G G G G G G G Gr<   