
    i?1i                     H   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 jz                  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:      ZNy);    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y)PDFResourceErrorN__name__
__module____qualname__     \/home/www/therecruiter.miabetepe.com/venv/lib/python3.12/site-packages/pdfminer/pdfinterp.pyr5   r5   -       r;   r5   c                       e Zd Zy)PDFInterpreterErrorNr6   r:   r;   r<   r?   r?   1   r=   r;   r?   PDFTextFontFormImagec                   F    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
y)PDFTextStatematrix
linematrixreturnNc                     d | _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        | j                          y )Nr   d   )	fontfontsize	charspace	wordspacescalingleadingrenderriseresetselfs    r<   __init__zPDFTextState.__init__@   sC    '+	  ! !!	

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=>)
rL   rM   rN   rO   rP   rQ   rR   rS   rG   rH   rU   s    r<   __repr__zPDFTextState.__repr__M   sT     					
r;   c                 n   t               }| j                  |_        | j                  |_        | j                  |_        | j                  |_        | j
                  |_        | j                  |_        | j                  |_        | j                  |_        | j                  |_	        | j                  |_
        |S N)rF   rL   rM   rN   rO   rP   rQ   rR   rS   rG   rH   rV   objs     r<   copyzPDFTextState.copy`   s|    n99}}llll[[
99[[

r;   c                 (    t         | _        d| _        y )Nr   r   )r-   rG   rH   rU   s    r<   rT   zPDFTextState.resetn   s    % r;   rI   N)rI   rF   )r7   r8   r9   r.   __annotations__r/   rW   strrZ   r_   rT   r:   r;   r<   rF   rF   <   s(    N	
# 
&!r;   rF   c                   (    e Zd ZddZddZdefdZy)PDFGraphicStaterI   Nc                     d| _         d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        y Nr   		linewidthlinecaplinejoin
miterlimitdashintentflatnessscolorncolorrU   s    r<   rW   zPDFGraphicState.__init__{   sE     !)-*.,059	(,*. (, (,r;   c                 L   t               }| j                  |_        | j                  |_        | j                  |_        | j                  |_        | j
                  |_        | j                  |_        | j                  |_        | j                  |_        | j                  |_	        |S r\   )
rf   rj   rk   rl   rm   rn   ro   rp   rq   rr   r]   s     r<   r_   zPDFGraphicState.copy   sr    ll}}99[[
}}[[
[[

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=rY   ri   rU   s    r<   rZ   zPDFGraphicState.__repr__   sM     			
r;   rb   )rI   rf   )r7   r8   r9   rW   r_   rd   rZ   r:   r;   r<   rf   rf   z   s    ,
# 
r;   rf   c                   l    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y)PDFResourceManagerzRepository of shared resources.

    ResourceManager facilitates reuse of shared resources
    such as fonts and images so that large objects are not
    allocated multiple times.
    cachingrI   Nc                      || _         i | _        y r\   )rw   _cached_fonts)rV   rw   s     r<   rW   zPDFResourceManager.__init__   s    46r;   procsc                 6    |D ]  }|t         u r|t        u r y r\   )LITERAL_PDFLITERAL_TEXT)rV   rz   procs      r<   get_procsetzPDFResourceManager.get_procset   s*     	D{"%	r;   cmapnamestrictc                 z    	 t        j                  |      S # t         j                  $ r |r t               cY S w xY wr\   )r   get_cmapCMapNotFoundr   )rV   r   r   s      r<   r   zPDFResourceManager.get_cmap   s8    	??8,,"" 	6M	s     ::objidspecc                    |r|| j                   v r| j                   |   }|S t        j                  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(  r^t        |d         }|sJ t        |d         j                         }dD ]  }||v st        ||         ||<    | j!                  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)ry   logdebugr   STRICTLITERAL_FONTr   r,   r   r   r   r   r    r   r_   r!   get_fontrw   )rV   r   r   rL   subtypedfontssubspecks           r<   r   zPDFResourceManager.get_font   s   Ud000%%e,DP M II;UDI<|3&':;;D &tI7??&'GHH!..#D$/J&&tT2G##D$/<<!$-G##D):$;<v$VAY/4462 7ADy%-d1g%6
7 }}T73??&'>'EFF#D$/,0""5)r;   )T)F)r7   r8   r9   __doc__boolrW   r   objectr   rd   r   r   r   r   r   r:   r;   r<   rv   rv      so    7 7 7&!1 d  d x *f *GCK,@ *W *r;   rv   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y)PDFContentParserstreamsrI   Nc                 L    || _         d| _        t        j                  | d        y rh   )r   istreamr)   rW   )rV   r   s     r<   rW   zPDFContentParser.__init__   s"     	tT*r;   c                 $   | j                   s| j                  t        | j                        k  r8t	        | j                  | j                           }| xj                  dz  c_        nt        d      t        |j                               | _         y y )Nr   zUnexpected EOF, file truncated?)fpr   lenr   r"   r%   r   get_data)rV   strms     r<   fillfpzPDFContentParser.fillfp   sf    ww||c$,,//#DLL$>?!=>>dmmo.DG r;   posc                 P    | j                          t        j                  | |       y r\   )r   r)   seek)rV   r   s     r<   r   zPDFContentParser.seek  s    4%r;   c                 6   | j                   t        | j                        k  ry 	 | j                          | j                  j                         | _        | j                  j                  | j                        | _        | j                  r		 d| _         y d | _        vrh   )	charposr   bufr   r   tellbufposreadBUFSIZrU   s    r<   fillbufzPDFContentParser.fillbuf
  sm    <<#dhh-'KKM'',,.DKww||DKK0DHxx DG r;      EItargetc                 4   | j                  |       d}d}|t        |      k  r| j                          |r| j                  | j                     }t        |f      }||z  }| xj                  dz  c_        t        |      |k  r|j                         r|dz  }n~|t        |      k  r|t        ||   f      k(  r|dz  }nXd}nU	 | j                  j                  |d   | j                        }|| j                  | j                  |dz    z  }|dz   | _        d}|t        |      k  r|d t        |      dz     }t        j                  dd|      }||fS # t        $ r9 || j                  | j                  d  z  }t        | j                        | _        Y ~w xY w)Nr   r;   r   s   (\x0d\x0a|[\x0d\x0a])$)r   r   r   r   r   bytesisspaceindex
ValueErrorresub)rV   r   r   idatacicjs           r<   get_inline_dataz PDFContentParser.get_inline_data  sw   		#3v;LLNXXdll+2%L	!v;!#		FAV_ufQi\/B)CFAA1vay$,,?ADHHT\\AE::D#$q5DLA% 3v;, (Fa()vv0#t<T{ " 1DHHT\\^44D#&txx=DL1s   AE ?FFc                 >     | j                   | j                           y r\   )add_resultspopallrU   s    r<   flushzPDFContentParser.flush4  s    $++-(r;   s   BIs   IDtokenc                 b   || j                   u r| j                  |d       y || j                  u r	 | j                  d      \  }}t	        |      dz  dk7  rdj                  |      }t        |      t        d|      D ci c]  \  }}t        |      | }}}| j                  |t	        d      z         \  }}	t        ||	      }
| j                  ||
f       | j                  || j                  f       y | j                  ||f       y c c}}w # t        $ r t        j                  r Y y w xY w)Ninline   r   z"Invalid dictionary construct: {!r}s   ID )
KEYWORD_BI
start_type
KEYWORD_IDend_typer   formatr(   r2   r,   r   r   push
KEYWORD_EIr   r   )rV   r   r   _objs	error_msgr   vdr   r^   s              r<   
do_keywordzPDFContentParser.do_keyword;  s   DOO#OOC*doo% MM(3	Dt9q=A% D K KD QI%i006>q$6GHFQ\!_a'HH"223V3DEd4(		3*%		301
 IIsEl# I
  ?? #s%   AD DAD D D.-D.rb   )r   )r7   r8   r9   r   r   rW   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                   J   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Zcy)PDFPageInterpreterzhProcessor for the content of a PDF page

    Reference: PDF Reference, Appendix A, Operator Summary
    rsrcmgrdevicerI   Nc                      || _         || _        y r\   )r   r   )rV   r   r   s      r<   rW   zPDFPageInterpreter.__init__[  s    r;   c                 N    | j                  | j                  | j                        S r\   )	__class__r   r   rU   s    r<   dupzPDFPageInterpreter.dup`  s    ~~dllDKK88r;   	resourcesc                 R   || _         i | _        i | _        t        j                         | _        |sydt        dt        t           fd}t        |      j                         D ]B  \  }}t        j                  d||       |dk(  rtt        |      j                         D ]W  \  }}d}t        |t              r|j                  }t        |      }| j                   j#                  ||      | j                  |<   Y |dk(  rEt        |      j                         D ](  \  }} |t%        |            }	|	|	| j
                  |<   * |dk(  r&| j                   j'                  t)        |             |d	k(  st        |      j                         D ]  \  }
}|| j                  |
<    E y)
z@Prepare the fonts and XObjects listed in the Resource attribute.Nr   rI   c           	         t        | t              rt        | d         }nt        |       }|dk(  r9t        | t              r)dt        |       k  rt	        |t        | d         d         S |dk(  r?t        | t              r/dt        |       k  r!t	        |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$i$T<Q+@+EFF"z$'=!s4y.$T3z$q'/B+CDD,0066r;   zResource: %r: %rrB   
ColorSpaceProcSetXObject)r   fontmapxobjmapr   r_   csmapr   r   r   r   itemsr   r   r   r   r   r   r   r!   r   r    )rV   r   r   r   r   fontidr   r   csid
colorspacexobjidxobjstrms               r<   init_resourcesz!PDFPageInterpreter.init_resourcesc  s   ".0/D/I/I/K

	7 
	7H],C 
	7 !+113 	4FQII(!Q/F{&0m&9&9&; NNVT E!$	2 $

%d+D+/<<+@+@+MDLL(N l"$.qM$7$7$9 6LT4!/!?J!-+5

4(6 i((A7i*4Q-*=*=*? 4&VX+3DLL(4#	4& 	r;   ctmc                 f   g | _         || _        | j                  j                  | j                         t	               | _        t               | _        g | _        g | _	        d| _
        d| _        | j                  r8t        t        | j                  j                                     x| _
        | _        y)z<Initialize the text and graphic states for rendering a page.N)gstackr   r   set_ctmrF   	textstaterf   graphicstatecurpathargstackscsncsr   nextitervalues)rV   r   s     r<   
init_statezPDFPageInterpreter.init_state  s     KMDHH%%+-*,)+,0,0::"&tDJJ,=,=,?'@"AADHtxr;   r^   c                 :    | j                   j                  |       y r\   )r  appendr]   s     r<   r   zPDFPageInterpreter.push  s    S!r;   nc                 ^    |dk(  rg S | j                   | d  }| j                   d |  | _         |S rh   )r  )rV   r  xs      r<   popzPDFPageInterpreter.pop  s9    6IMM1"#cr*r;   c                     | j                   | j                  j                         | j                  j                         fS r\   )r   r   r_   r   rU   s    r<   get_current_statez$PDFPageInterpreter.get_current_state  s/    $..--/1B1B1G1G1IJJr;   statec                 x    |\  | _         | _        | _        | j                  j	                  | j                          y r\   )r   r   r   r   r   )rV   r  s     r<   set_current_statez$PDFPageInterpreter.set_current_state  s0     9>54>4#4DHH%r;   c                 V    | j                   j                  | j                                y)zSave graphics stateN)r   r
  r  rU   s    r<   do_qzPDFPageInterpreter.do_q  s     41134r;   c                 n    | j                   r)| j                  | j                   j                                y)zRestore graphics stateN)r   r  r  rU   s    r<   do_QzPDFPageInterpreter.do_Q  s%    ;;""4;;??#45r;   a1b1c1d1e1f1c                     t        t        t        ||||||f      | j                        | _        | j                  j                  | j                         y)z3Concatenate matrix to current transformation matrixN)r3   r   r.   r   r   r   )rV   r  r  r  r  r  r  s          r<   do_cmzPDFPageInterpreter.do_cm  sC     tFRRR,DEtxxPDHH%r;   rj   c                 B    t        t        |      | j                  _        y)zSet line widthN)r   floatr   rj   )rV   rj   s     r<   do_wzPDFPageInterpreter.do_w  s    &*5)&<#r;   rk   c                 &    || j                   _        y)zSet line cap styleN)r   rk   )rV   rk   s     r<   do_JzPDFPageInterpreter.do_J  s    $+!r;   rl   c                 &    || j                   _        y)zSet line join styleN)r   rl   )rV   rl   s     r<   do_jzPDFPageInterpreter.do_j      %-"r;   rm   c                 &    || j                   _        y)zSet miter limitN)r   rm   )rV   rm   s     r<   do_MzPDFPageInterpreter.do_M  s    '1$r;   rn   phasec                 *    ||f| j                   _        y)zSet line dash patternN)r   rn   )rV   rn   r*  s      r<   do_dzPDFPageInterpreter.do_d  s    "&r;   ro   c                 &    || j                   _        y)zSet color rendering intentN)r   ro   )rV   ro   s     r<   do_rizPDFPageInterpreter.do_ri  s    #) r;   rp   c                 &    || j                   _        y)zSet flatness toleranceN)r   rp   )rV   rp   s     r<   do_izPDFPageInterpreter.do_i  r'  r;   r   c                      y)z7Set parameters from graphics state parameter dictionaryNr:   rV   r   s     r<   do_gszPDFPageInterpreter.do_gs  s     	r;   r  yc                 x    | j                   j                  dt        t        |      t        t        |      f       y)zBegin new subpathmNr  r
  r   r!  rV   r  r4  s      r<   do_mzPDFPageInterpreter.do_m  *    S$ua.$ua.ABr;   c                 x    | j                   j                  dt        t        |      t        t        |      f       y)z$Append straight line segment to pathlNr7  r8  s      r<   do_lzPDFPageInterpreter.do_l  r:  r;   x1y1x2y2x3y3c                     | j                   j                  dt        t        |      t        t        |      t        t        |      t        t        |      t        t        |      t        t        |      f       y)z4Append curved segment to path (three control points)r   Nr7  )rV   r>  r?  r@  rA  rB  rC  s          r<   do_czPDFPageInterpreter.do_c  sY     	UBUBUBUBUBUB
	
 	r;   c           
          | j                   j                  dt        t        |      t        t        |      t        t        |      t        t        |      f       y)z8Append curved segment to path (initial point replicated)r   Nr7  )rV   r@  rA  rB  rC  s        r<   do_vzPDFPageInterpreter.do_v  @    $ub/4r?DOT%QS_U	
 	r;   c           
          | j                   j                  dt        t        |      t        t        |      t        t        |      t        t        |      f       y)z6Append curved segment to path (final point replicated)r4  Nr7  )rV   r>  r?  rB  rC  s        r<   do_yzPDFPageInterpreter.do_y  rH  r;   c                 :    | j                   j                  d       y)zClose subpathhN)r  r
  rU   s    r<   do_hzPDFPageInterpreter.do_h$  s    F#r;   wrM  c                    t        t        |      }t        t        |      }t        t        |      }t        t        |      }| j                  j                  d||f       | j                  j                  d||z   |f       | j                  j                  d||z   ||z   f       | j                  j                  d|||z   f       | j                  j                  d       y)zAppend rectangle to pathr6  r<  rL  N)r   r!  r  r
  )rV   r  r4  rO  rM  s        r<   do_rezPDFPageInterpreter.do_re)  s    NNNNS!QK(S!a%O,S!a%Q/0S!QUO,F#r;   c                 x    | j                   j                  | j                  ddd| j                         g | _        y)zStroke pathTFNr   
paint_pathr   r  rU   s    r<   do_SzPDFPageInterpreter.do_S6  s0    t00$udllSr;   c                 D    | j                          | j                          y)zClose and stroke pathN)rN  rU  rU   s    r<   do_szPDFPageInterpreter.do_s<      				r;   c                 x    | j                   j                  | j                  ddd| j                         g | _        y)z+Fill path using nonzero winding number ruleFTNrS  rU   s    r<   do_fzPDFPageInterpreter.do_fB  s0    t00%udllSr;   c                 "    | j                         S )z6Fill path using nonzero winding number rule (obsolete))rZ  rU   s    r<   do_FzPDFPageInterpreter.do_FH  s    yy{r;   c                 x    | j                   j                  | j                  ddd| j                         g | _        y)zFill path using even-odd ruleFTNrS  rU   s    r<   do_f_azPDFPageInterpreter.do_f_aL  s0    t00%tT\\Rr;   c                 x    | j                   j                  | j                  ddd| j                         g | _        y)z6Fill and stroke path using nonzero winding number ruleTFNrS  rU   s    r<   do_BzPDFPageInterpreter.do_BR  s0    t00$eT\\Rr;   c                 x    | j                   j                  | j                  ddd| j                         g | _        y)z(Fill and stroke path using even-odd ruleTNrS  rU   s    r<   do_B_azPDFPageInterpreter.do_B_aX  s0    t00$dDLLQr;   c                 D    | j                          | j                          y)z>Close, fill, and stroke path using nonzero winding number ruleN)rN  r`  rU   s    r<   do_bzPDFPageInterpreter.do_b^  rX  r;   c                 D    | j                          | j                          y)z0Close, fill, and stroke path using even-odd ruleN)rN  rb  rU   s    r<   do_b_azPDFPageInterpreter.do_b_ad  s    		r;   c                     g | _         y)z$End path without filling or strokingN)r  rU   s    r<   do_nzPDFPageInterpreter.do_nj  s    r;   c                      y)z3Set clipping path using nonzero winding number ruleNr:   rU   s    r<   do_WzPDFPageInterpreter.do_Wo      r;   c                      y)z%Set clipping path using even-odd ruleNr:   rU   s    r<   do_W_azPDFPageInterpreter.do_W_as  rk  r;   c                     	 | j                   t        |         | _        y# t        $ r! t        j
                  rt        d|z        Y yw xY w)zOSet color space for stroking operations

        Introduced in PDF 1.1
        Undefined ColorSpace: %rN)r   r,   r  KeyErrorr   r   r?   r2  s     r<   do_CSzPDFPageInterpreter.do_CSw  sU    
	Mzz,t"45DH 	  	M)*Dt*KLL 	M     'A
	A
c                     	 | j                   t        |         | _        y# t        $ r! t        j
                  rt        d|z        Y yw xY w)z*Set color space for nonstroking operationsro  N)r   r,   r  rp  r   r   r?   r2  s     r<   do_cszPDFPageInterpreter.do_cs  sU    	Mzz,t"45DH 	  	M)*Dt*KLL 	Mrr  grayc                 j    t        t        |      | j                  _        | j                  d   | _        y)z&Set gray level for stroking operations
DeviceGrayNr   r!  r   rq   r   r  rV   ru  s     r<   do_GzPDFPageInterpreter.do_G  *    #'t#4 ::l+r;   c                 j    t        t        |      | j                  _        | j                  d   | _        y)z)Set gray level for nonstroking operationsrw  Nr   r!  r   rr   r   r  ry  s     r<   do_gzPDFPageInterpreter.do_g  r{  r;   rgbc                     t        t        |      t        t        |      t        t        |      f| j                  _        | j                  d   | _        y)z%Set RGB color for stroking operations	DeviceRGBNrx  rV   r  r  r  s       r<   do_RGzPDFPageInterpreter.do_RG  =    $(NDNDPQN#S ::k*r;   c                     t        t        |      t        t        |      t        t        |      f| j                  _        | j                  d   | _        y)z(Set RGB color for nonstroking operationsr  Nr}  r  s       r<   do_rgzPDFPageInterpreter.do_rg  r  r;   r   r6  r   c                     t        t        |      t        t        |      t        t        |      t        t        |      f| j                  _        | j                  d   | _        y)z&Set CMYK color for stroking operations
DeviceCMYKNrx  rV   r   r6  r4  r   s        r<   do_KzPDFPageInterpreter.do_K  M     NNNN	$
  ::l+r;   c                     t        t        |      t        t        |      t        t        |      t        t        |      f| j                  _        | j                  d   | _        y)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                  |            | j                  _	        y)z"Set color for stroking operations.No colorspace specified!r   N)
r  ncomponentsr   r   r?   r   Colorr  r   rq   rV   r  s     r<   do_SCNzPDFPageInterpreter.do_SCN  P    88$$A)*DEEA#'txx{#; r;   c                     | j                   r| j                   j                  }nt        j                  rt	        d      d}t        t        | j                  |            | j                  _	        y)$Set color for nonstroking operationsr  r   N)
r  r  r   r   r?   r   r  r  r   rr   r  s     r<   do_scnzPDFPageInterpreter.do_scn  r  r;   c                 $    | j                          y)z!Set color for stroking operationsN)r  rU   s    r<   do_SCzPDFPageInterpreter.do_SC      r;   c                 $    | j                          y)r  N)r  rU   s    r<   do_sczPDFPageInterpreter.do_sc  r  r;   c                      y)z%Paint area defined by shading patternNr:   r2  s     r<   do_shzPDFPageInterpreter.do_sh  rk  r;   c                 8    | j                   j                          y)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   rT   rU   s    r<   do_BTzPDFPageInterpreter.do_BT  s     	r;   c                      y)zEnd a text objectNr:   rU   s    r<   do_ETzPDFPageInterpreter.do_ET  rk  r;   c                      y)zBegin compatibility sectionNr:   rU   s    r<   do_BXzPDFPageInterpreter.do_BX  rk  r;   c                      y)zEnd compatibility sectionNr:   rU   s    r<   do_EXzPDFPageInterpreter.do_EX  rk  r;   tagc                 V    | j                   j                  t        t        |             y)zDefine marked-content pointNr   do_tagr   r'   rV   r  s     r<   do_MPzPDFPageInterpreter.do_MP  s    4	3/0r;   propsc                 X    | j                   j                  t        t        |      |       y)z.Define marked-content point with property listNr  rV   r  r  s      r<   do_DPzPDFPageInterpreter.do_DP  s     4	3/7r;   c                 V    | j                   j                  t        t        |             y)zBegin marked-content sequenceNr   	begin_tagr   r'   r  s     r<   do_BMCzPDFPageInterpreter.do_BMC  s    d9c23r;   c                 X    | j                   j                  t        t        |      |       y)z0Begin marked-content sequence with property listNr  r  s      r<   do_BDCzPDFPageInterpreter.do_BDC  s     d9c2E:r;   c                 8    | j                   j                          y)zEnd marked-content sequenceN)r   end_tagrU   s    r<   do_EMCzPDFPageInterpreter.do_EMC  s    r;   spacec                 B    t        t        |      | j                  _        y)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   rN   rV   r  s     r<   do_TczPDFPageInterpreter.do_Tc       $(u#5 r;   c                 B    t        t        |      | j                  _        y)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   rO   r  s     r<   do_TwzPDFPageInterpreter.do_Tw  r  r;   scalec                 B    t        t        |      | j                  _        y)zuSet the horizontal scaling.

        :param scale: is a number specifying the percentage of the normal width
        N)r   r!  r   rP   )rV   r  s     r<   do_TzzPDFPageInterpreter.do_Tz!  s    
 "&eU!3r;   rQ   c                 D    t        t        |       | j                  _        y)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   rQ   )rV   rQ   s     r<   do_TLzPDFPageInterpreter.do_TL)  s     #'ug"6!6r;   r   rM   c                 B   	 | j                   t        |         | j                  _        t        t        |      | j                  _        y# t        $ rL t
        j                  rt        d|z        | j                  j                  di       | j                  _        Y tw xY w)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   rL   rp  r   r   r?   r   r   r   r!  rM   )rV   r   rM   s      r<   do_TfzPDFPageInterpreter.do_Tf3  s    	B"&,,|F/C"DDNN
 #'uh"7  	B)*AF*JKK"&,,"7"7b"ADNN	Bs   'A	 	ABBrR   c                 B    t        t        |      | j                  _        y)zSet the text rendering modeN)r   r   r   rR   )rV   rR   s     r<   do_TrzPDFPageInterpreter.do_TrC  s     $S& 1r;   rS   c                 B    t        t        |      | j                  _        y)z`Set the text rise

        :param rise: a number expressed in unscaled text space units
        N)r   r!  r   rS   )rV   rS   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                  _        y)zMove text positionra   N)r   r!  r   rG   rH   	rV   r  r  ar  r   r   efs	            r<   do_TdzPDFPageInterpreter.do_TdP  s    %_%_!^^2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                  _        y)z"Move text position and set leadingra   N)r   r!  r   rG   rQ   rH   r  s	            r<   do_TDzPDFPageInterpreter.do_TDY  s    %_%_!^^22Aq!Q!"Aq!R!Vb1f_q-@"q&2PQ6/TUBU V!#$*!r;   r  r   r  r  c           	      p    t        t        ||||||f      | j                  _        d| j                  _        y)z$Set text matrix and text line matrixra   N)r   r.   r   rG   rH   rV   r  r  r   r   r  r  s          r<   do_TmzPDFPageInterpreter.do_Tmc  s3     !%VaAq!Q-? @$*!r;   c                     | j                   j                  \  }}}}}}||||| j                   j                  |z  |z   | j                   j                  |z  |z   f| j                   _        d| j                   _        y)zMove to start of next text linera   N)r   rG   rQ   rH   r  s          r<   do_T_azPDFPageInterpreter.do_T_aq  sw    !^^22Aq!QNN""Q&*NN""Q&*!
 %+!r;   seqc                 4   | j                   j                  t        j                  rt	        d      y| j
                  J | j                  j                  | j                   t        t        |      | j
                  | j                  j                                y)z0Show text, allowing individual glyph positioningNzNo font specified!)r   rL   r   r   r?   r  r   render_stringr   r   r   r_   )rV   r  s     r<   do_TJzPDFPageInterpreter.do_TJ  sv    >>&)*>??xx###!!NNDS1488T=N=N=S=S=U	
 	r;   sc                 (    | j                  |g       y)z	Show textN)r  rV   r  s     r<   do_TjzPDFPageInterpreter.do_Tj  s    

A3r;   c                 H    | j                          | j                  |g       y)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                 l    | j                  |       | j                  |       | j                  |g       y)zqSet word and character spacing, move to next line, and show text

        The " (double quote) operator.
        N)r  r  r  )rV   r  r  r  s       r<   do__wzPDFPageInterpreter.do__w  s*    
 	

2

2

A3r;   c                      y)zBegin inline image objectNr:   rU   s    r<   do_BIzPDFPageInterpreter.do_BI  rk  r;   c                      y)zBegin inline image dataNr:   rU   s    r<   do_IDzPDFPageInterpreter.do_ID  rk  r;   c                    t        |t              rtd|v rpd|v rlt        t        |            }| j                  j                  |dt               | j                  j                  ||       | j                  j                  |       y)zEnd inline image objectWHr   r   r   r   N)	r   r   rd   idr   begin_figurer-   render_image
end_figure)rV   r^   iobjids      r<   do_EIzPDFPageInterpreter.do_EI  sd    c9%#*C\FKK$$V\?KKK$$VS1KK""6*r;   
xobjid_argc           	         t        t        t        |            }	 t        | j                  |         }t        j                  d|       |j                  d      }|t        u rd|v r| j                         }t        t        t        |d               }t        t         t        |j                  dt"                          }|j                  d      }|rt%        |      }	n| j&                  j)                         }	| j*                  j-                  |||       |j/                  |	|gt1        || j2                               | j*                  j5                  |       y|t6        u rad	|v r]d
|v rY| j*                  j-                  |dt"               | j*                  j9                  ||       | j*                  j5                  |       y	 y# t
        $ r! t        j                  rt        d|z        Y yw xY w)zInvoke named XObjectzUndefined xobject id: %rNzProcessing xobj: %rr   BBoxr.   	Resourcesr   WidthHeightr  )r   rd   r,   r"   r   rp  r   r   r?   r   r   r   LITERAL_FORMr   r1   r    r.   r-   r   r   r_   r   r  render_contentsr3   r   r  LITERAL_IMAGEr  )
rV   r  r   xobjr   interpreterbboxrG   xobjresr   s
             r<   do_DozPDFPageInterpreter.do_Do  s   c<
34	V 45D
 			'.((9%l"v~((*Kjf67D&*TXXh-P"QRF hh{+G&w/	 NN//1	KK$$VT6:''D6{6488'D (  KK""6* 	 %'T/h$>NKK$$V\?KKK$$VT2KK""6* 	 =  	)*Dv*MNN	s   G 'G/.G/pagec                    t         j                  d|       |j                  \  }}}}|j                  dk(  r
dddd| |f}n;|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                  |j                  |       | j                  j                  |       y )	NzProcessing page: %rZ   r   r      i  r  )
r   r   mediaboxrotater   
begin_pager  r   contentsend_page)rV   r  x0y0r>  r?  r   s          r<   process_pagezPDFPageInterpreter.process_page  s    		'.==RR;;"b!QR(C[[Cq!RR(C[[CaQRC(CaAsRC(CtS)T^^T]]DT"r;   r   c                     t         j                  d|||       | j                  |       | j                  |       | j	                  t        |             y)zTRender the content streams.

        This method may be called recursively.
        z1render_contents: resources=%r, streams=%r, ctm=%rN)r   r   r   r  executer    )rV   r   r   r   s       r<   r  z"PDFPageInterpreter.render_contents  sJ     			?GUX	
 	I&Z()r;   c                    	 t        |      }	 	 |j                         \  }}t        |t              rt        |      }d|j                  dd      j                  dd      j                  dd      z  }t        | |      rt        | |      }|j                  j                  dz
  }|r<| j                  |      }	t        j                  d	||	       t        |	      |k(  rU ||	  nOt        j                  d
|        |        n1t        j                   r!d|z  }
t#        |
      | j%                  |       $# t        $ r Y y w xY w# t        $ r Y y w xY w)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   )rV   r   parserr   r^   r   methodfuncnargsargsr   s              r<   r  zPDFPageInterpreter.execute  sA   	%g.F !,,.C #y)#C( 4<<T#:#B#B3#M#U#U$  4("40D MM559E#xx		-t<t9- $K		*d3$:T$A	1)<<		#5   		  . 	1s"   D2 E 2	D>=D>	EE)rI   r   rb   )dr7   r8   r9   r   rv   r   rW   r   r   r   r   r.   r  	PDFStackTr   r   r   r  r	   rF   rf   r  r  r  r  r  r"  r$  r&  r)  r,  r.  r0  r3  r9  r=  rE  rG  rJ  rN  rQ  rU  rW  rZ  r\  r^  r`  rb  rd  rf  rh  rj  rm  rq  rt  rz  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  s`   
 2 I $ 
9(VV^(< ( (Tf  $	 d S T)_ K5)N#O 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.   r/   r0   r1   r2   r3   	getLoggerr7   r   r5   r?   r|   r}   r   r   r  rF   r!  r  rf   rv   r   r)  r   r:   r;   r<   <module>r7     sl    	  N N N     # +   !   ! $ ! !  "        "     , # ! " " " 3 3  g!	| 		, 	 %j6{6{6{G4! 4!n 			%
	%u
$%'	-
 -
`G GTZ$}U9i+?%@A Z$z 	"	 6G Gr;   