
    ;3h                        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mZmZ d dlmZmZ d dlmZmZ d d	lmZmZ d d
lmZm Z m!Z!m"Z"m#Z#m$Z$ d dl%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. d dl/m0Z0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB  e j                  eD      ZE G d de      ZF G d de      ZG e4d      ZH e4d      ZI e4d      ZJ e4d      ZK e4d      ZL G d d      ZMeeNe
eNeNeNf   e
eNeNeNeNf   f   ZO G d d      ZP G d d      ZQ G d d e7ee5e*f            ZRe8e*   ZS	  G d! d"      ZTy)#    N)BytesIO)DictListMappingOptionalSequenceTupleUnioncast)settings)
safe_float)CMapCMapBaseCMapDB)PREDEFINED_COLORSPACEPDFColorSpace)	PDFDevice
PDFTextSeq)PDFExceptionPDFValueError)
PDFCIDFontPDFFontPDFFontErrorPDFTrueTypeFontPDFType1FontPDFType3Font)PDFPage)LITERALS_ASCII85_DECODE	PDFObjRef	PDFStream
dict_value
list_valueresolve1stream_value)PSEOFPSTypeError)KWDLIT	PSKeyword	PSLiteralPSStackParserPSStackTypekeyword_nameliteral_name)MATRIX_IDENTITYMatrixPathSegmentPointRectchoplistmult_matrixc                       e Zd Zy)PDFResourceErrorN__name__
__module____qualname__     R/var/www/html/audio-gradio/venv/lib/python3.12/site-packages/pdfminer/pdfinterp.pyr7   r7   6       r=   r7   c                       e Zd Zy)PDFInterpreterErrorNr8   r<   r=   r>   rA   rA   :   r?   r=   rA   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__I   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=>)
rN   rO   rP   rQ   rR   rS   rT   rU   rI   rJ   rW   s    r>   __repr__zPDFTextState.__repr__V   sT     					
r=   c                 n   t               }| j                  |_        | j                  |_        | j                  |_        | j                  |_        | j
                  |_        | j                  |_        | j                  |_        | j                  |_        | j                  |_	        | j                  |_
        |S N)rH   rN   rO   rP   rQ   rR   rS   rT   rU   rI   rJ   rX   objs     r>   copyzPDFTextState.copyi   s|    n99}}llll[[
99[[

r=   c                 (    t         | _        d| _        y )Nr   r   )r/   rI   rJ   rW   s    r>   rV   zPDFTextState.resetw   s    % r=   rK   N)rK   rH   )r9   r:   r;   r0   __annotations__r2   rY   strr\   ra   rV   r<   r=   r>   rH   rH   E   s(    N	
# 
&!r=   rH   c                   (    e Zd ZddZddZdefdZy)PDFGraphicStaterK   Nc                     d| _         d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        y Nr   		linewidthlinecaplinejoin
miterlimitdashintentflatnessscolorncolorrW   s    r>   rY   zPDFGraphicState.__init__   sE     !)-*.,059	(,*. (, (,r=   c                 L   t               }| j                  |_        | j                  |_        | j                  |_        | j                  |_        | j
                  |_        | j                  |_        | j                  |_        | j                  |_        | j                  |_	        |S r^   )
rh   rl   rm   rn   ro   rp   rq   rr   rs   rt   r_   s     r>   ra   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=r[   rk   rW   s    r>   r\   zPDFGraphicState.__repr__   sM     			
r=   rd   )rK   rh   )r9   r:   r;   rY   ra   rf   r\   r<   r=   r>   rh   rh      s    ,
# 
r=   rh   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.
    cachingrK   Nc                      || _         i | _        y r^   )ry   _cached_fonts)rX   ry   s     r>   rY   zPDFResourceManager.__init__   s    46r=   procsc                 4    |D ]  }|t         u s|t        u r y r^   )LITERAL_PDFLITERAL_TEXT)rX   r|   procs      r>   get_procsetzPDFResourceManager.get_procset   s&     	D{"dl&:		r=   cmapnamestrictc                 z    	 t        j                  |      S # t         j                  $ r |r t               cY S w xY wr^   )r   get_cmapCMapNotFoundr   )rX   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)r{   logdebugr   STRICTLITERAL_FONTr   r.   r   r   r   r   r"   r!   ra   r#   get_fontry   )rX   r   r   rN   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)r9   r:   r;   __doc__boolrY   r   objectr   rf   r   r   r   r   r   r<   r=   r>   rx   rx      so    7 7 7&!1 d  d x *f *GCK,@ *W *r=   rx   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streamsrK   Nc                 L    || _         d| _        t        j                  | d        y rj   )r   istreamr+   rY   )rX   r   s     r>   rY   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 )N   zUnexpected EOF, file truncated?)fpr   lenr   r$   r%   r   get_data)rX   strms     r>   fillfpzPDFContentParser.fillfp  sf    ww||c$,,//#DLL$>?!=>>dmmo.DG r=   posc                 P    | j                          t        j                  | |       y r^   )r   r+   seek)rX   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 | _        vrj   )	charposr   bufr   r   tellbufposreadBUFSIZrW   s    r>   fillbufzPDFContentParser.fillbuf  sm    <<#dhh-'KKM'',,.DKww||DKK0DHxx DG r=      EItargetc                 $   | j                  |       d}d}|t        |      k  r| j                          |r| j                  | j                     }t        |f      }||z  }| xj                  dz  c_        t        |      |k  r|j                         s |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)rX   r   r   idatacicjs           r>   get_inline_dataz PDFContentParser.get_inline_data  sp   		#3v;LLNXXdll+2%L	!K1$		3v;eVAYL12FAA1vay$,,?ADHHT\\AE::D#$q5DLA+ 3v;2 (Fa()vv0#t<T{ " 1DHHT\\^44D#&txx=DL1s   =AE ?FFc                 >     | j                   | j                           y r^   )add_resultspopallrW   s    r>   flushzPDFContentParser.flush>  s    $++-(r=   s   BIs   IDtokenc                    || j                   u r| j                  |d       y || j                  u r	 | j                  d      \  }}t	        |      dz  dk7  rd|}t        |      t        d|      D ci c]  \  }}t        |      t        |       }}}d}	|j                  dd       }
|
 t        |
t              r|
g}
|
d   t        v rd}	| j                  |t	        d      z   |		      \  }}|	dk7  r||	z  }t        ||      }| j                  ||f       |	dk(  r| j                  || j                   f       y 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   Fs   ~>s   ID )r   )
KEYWORD_BI
start_type
KEYWORD_IDend_typer   r&   r4   r.   r#   get
isinstancer*   r   r   r    push
KEYWORD_EIr   r   )rX   r   r   _objs	error_msgr   vdeosfilterr   r`   s                r>   
do_keywordzPDFContentParser.do_keywordE  sv   DOO#OOC*doo% MM(3	Dt9q=A%"@ II%i00@HD@QRfq!\!_hqk1RRsD)%!&)4"(ay$;;#"223V3DS2Qd%<CKD4(		3*%%<IIsDOO45   IIsEl#' S  ?? #s%   AE 6EB&E E E43E4rd   )r   )r9   r:   r;   r   r   rY   r   intr   r   r   r	   r   r   r'   r   r   r   r)   r   r<   r=   r>   r   r      s    + 0 +T +/& & &
3  %U
BS B) 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devicerK   Nc                      || _         || _        y r^   )r   r   )rX   r   r   s      r>   rY   zPDFPageInterpreter.__init__o  s    r=   c                 N    | j                  | j                  | j                        S r^   )	__class__r   r   rW   s    r>   dupzPDFPageInterpreter.dups  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   rK   c           	         t        | t              rt        | d         }nt        |       }|dk(  r9t        | t              r)t        |       dk\  rt	        |t        | d         d         S |dk(  r?t        | t              r/t        |       dk\  r!t	        |t        t        | d                     S t        j                  |      S )Nr   ICCBasedr   r   NDeviceN)	r   listr.   r   r   r$   r"   r   r   )r   names     r>   get_colorspacez9PDFPageInterpreter.init_resources.<locals>.get_colorspace  s    $%#DG,#D)z!jt&<Ta$T<Q+@+EFF"z$'=#d)q.$T3z$q'/B+CDD,0066r=   zResource: %r: %rrD   
ColorSpaceProcSetXObject)r   fontmapxobjmapr   ra   csmapr   r   r   r!   itemsr   r   r   r   r   r   r   r#   r   r"   )rX   r   r   r   r   fontidr   r   csid
colorspacexobjidxobjstrms               r>   init_resourcesz!PDFPageInterpreter.init_resourcesv  s   ".0/D/I/I/K

	7 
	7H],C 
	7 y)//1 	4DAqII(!Q/F{$.qM$7$7$9 NLFD E!$	2 $

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

4(6 i((A7i(21(;(;(= 4$FH+3DLL(4#	4r=   ctmc                 h   g | _         || _        | j                  j                  | j                         t	               | _        t               | _        g | _        g | _	        d| _
        d| _        | j                  r9t        t        | j                  j                                     x| _
        | _        yy)z<Initialize the text and graphic states for rendering a page.N)gstackr   r   set_ctmrH   	textstaterh   graphicstatecurpathargstackscsncsr   nextitervalues)rX   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 rj   )r  )rX   r  xs      r>   popzPDFPageInterpreter.pop  s9    6IMM1"#cr*r=   c                     | j                   | j                  j                         | j                  j                         fS r^   )r   r  ra   r  rW   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  )rX   r  s     r>   set_current_statez$PDFPageInterpreter.set_current_state  s-     9>54>4#4DHH%r=   c                 V    | j                   j                  | j                                y)zSave graphics stateN)r  r  r  rW   s    r>   do_qzPDFPageInterpreter.do_q  s    41134r=   c                 p    | j                   r*| j                  | j                   j                                yy)zRestore graphics stateN)r  r  r  rW   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)r5   r   r0   r   r   r  )rX   r  r  r  r   r!  r"  s          r>   do_cmzPDFPageInterpreter.do_cm  s@     tFRRR,DEtxxPDHH%r=   rl   c                 B    t        t        |      | j                  _        y)zSet line widthN)r   floatr  rl   )rX   rl   s     r>   do_wzPDFPageInterpreter.do_w  s    &*5)&<#r=   rm   c                 &    || j                   _        y)zSet line cap styleN)r  rm   )rX   rm   s     r>   do_JzPDFPageInterpreter.do_J  s    $+!r=   rn   c                 &    || j                   _        y)zSet line join styleN)r  rn   )rX   rn   s     r>   do_jzPDFPageInterpreter.do_j      %-"r=   ro   c                 &    || j                   _        y)zSet miter limitN)r  ro   )rX   ro   s     r>   do_MzPDFPageInterpreter.do_M  s    '1$r=   rp   phasec                 *    ||f| j                   _        y)zSet line dash patternN)r  rp   )rX   rp   r/  s      r>   do_dzPDFPageInterpreter.do_d  s    "&r=   rq   c                 &    || j                   _        y)zSet color rendering intentN)r  rq   )rX   rq   s     r>   do_rizPDFPageInterpreter.do_ri  s    #) r=   rr   c                 &    || j                   _        y)zSet flatness toleranceN)r  rr   )rX   rr   s     r>   do_izPDFPageInterpreter.do_i  r,  r=   r   c                      y)z7Set parameters from graphics state parameter dictionaryNr<   rX   r   s     r>   do_gszPDFPageInterpreter.do_gs      r=   r  yc                 x    | j                   j                  dt        t        |      t        t        |      f       y)zBegin new subpathmNr  r  r   r&  rX   r  r:  s      r>   do_mzPDFPageInterpreter.do_m  '    S$ua.$ua.ABr=   c                 x    | j                   j                  dt        t        |      t        t        |      f       y)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                   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   Nr=  )rX   rD  rE  rF  rG  rH  rI  s          r>   do_czPDFPageInterpreter.do_c  sT     	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   Nr=  )rX   rF  rG  rH  rI  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)r:  Nr=  )rX   rD  rE  rH  rI  s        r>   do_yzPDFPageInterpreter.do_y  rN  r=   c                 :    | j                   j                  d       y)zClose subpathhN)r  r  rW   s    r>   do_hzPDFPageInterpreter.do_h$  s    F#r=   wrS  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 pathr<  rB  rR  N)r   r&  r  r  )rX   r  r:  rU  rS  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  rW   s    r>   do_SzPDFPageInterpreter.do_S4  s-    t00$udllSr=   c                 D    | j                          | j                          y)zClose and stroke pathN)rT  r[  rW   s    r>   do_szPDFPageInterpreter.do_s9      				r=   c                 x    | j                   j                  | j                  ddd| j                         g | _        y)z+Fill path using nonzero winding number ruleFTNrY  rW   s    r>   do_fzPDFPageInterpreter.do_f>  s-    t00%udllSr=   c                      y)z6Fill path using nonzero winding number rule (obsolete)Nr<   rW   s    r>   do_FzPDFPageInterpreter.do_FC  r9  r=   c                 x    | j                   j                  | j                  ddd| j                         g | _        y)zFill path using even-odd ruleFTNrY  rW   s    r>   do_f_azPDFPageInterpreter.do_f_aF  s-    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 ruleTFNrY  rW   s    r>   do_BzPDFPageInterpreter.do_BK  s-    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 ruleTNrY  rW   s    r>   do_B_azPDFPageInterpreter.do_B_aP  s-    t00$dDLLQr=   c                 D    | j                          | j                          y)z>Close, fill, and stroke path using nonzero winding number ruleN)rT  rf  rW   s    r>   do_bzPDFPageInterpreter.do_bU  r^  r=   c                 D    | j                          | j                          y)z0Close, fill, and stroke path using even-odd ruleN)rT  rh  rW   s    r>   do_b_azPDFPageInterpreter.do_b_aZ  s    		r=   c                     g | _         y)z$End path without filling or strokingN)r  rW   s    r>   do_nzPDFPageInterpreter.do_n_  s	    r=   c                      y)z3Set clipping path using nonzero winding number ruleNr<   rW   s    r>   do_WzPDFPageInterpreter.do_Wc  r9  r=   c                      y)z%Set clipping path using even-odd ruleNr<   rW   s    r>   do_W_azPDFPageInterpreter.do_W_af  r9  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   rA   r7  s     r>   do_CSzPDFPageInterpreter.do_CSi  sK    
	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 operationsrt  N)r   r.   r	  ru  r   r   rA   r7  s     r>   do_cszPDFPageInterpreter.do_cst  sK    	Mzz,t"45DH 	M)*Dt*KLL 	Mrw  grayc                 j    t        t        |      | j                  _        | j                  d   | _        y)z&Set gray level for stroking operations
DeviceGrayNr   r&  r  rs   r   r  rX   rz  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 operationsr|  Nr   r&  r  rt   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   | _        y)z%Set RGB color for stroking operations	DeviceRGBNr}  rX   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   r<  r   c                     t        t        |      t        t        |      t        t        |      t        t        |      f| j                  _        | j                  d   | _        y)z&Set CMYK color for stroking operations
DeviceCMYKNr}  rX   r   r<  r:  r   s        r>   do_KzPDFPageInterpreter.do_K  J     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   rA   r   Colorr  r  rs   rX   r  s     r>   do_SCNzPDFPageInterpreter.do_SCN  M    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   rA   r   r  r  r  rt   r  s     r>   do_scnzPDFPageInterpreter.do_scn  r  r=   c                 $    | j                          y)z!Set color for stroking operationsN)r  rW   s    r>   do_SCzPDFPageInterpreter.do_SC      r=   c                 $    | j                          y)r  N)r  rW   s    r>   do_sczPDFPageInterpreter.do_sc  r  r=   c                      y)z%Paint area defined by shading patternNr<   r7  s     r>   do_shzPDFPageInterpreter.do_sh  r9  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  rV   rW   s    r>   do_BTzPDFPageInterpreter.do_BT  s     	r=   c                      y)zEnd a text objectNr<   rW   s    r>   do_ETzPDFPageInterpreter.do_ET  r9  r=   c                      y)zBegin compatibility sectionNr<   rW   s    r>   do_BXzPDFPageInterpreter.do_BX  r9  r=   c                      y)zEnd compatibility sectionNr<   rW   s    r>   do_EXzPDFPageInterpreter.do_EX  r9  r=   tagc                 V    | j                   j                  t        t        |             y)zDefine marked-content pointNr   do_tagr   r*   rX   r  s     r>   do_MPzPDFPageInterpreter.do_MP  s    4	3/0r=   propsc                 X    | j                   j                  t        t        |      |       y)z.Define marked-content point with property listNr  rX   r  r  s      r>   do_DPzPDFPageInterpreter.do_DP  s    4	3/7r=   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3r=   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_tagrW   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  rP   rX   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  rQ   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  rR   )rX   r  s     r>   do_TzzPDFPageInterpreter.do_Tz  s    
 "&eU!3r=   rS   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  rS   )rX   rS   s     r>   do_TLzPDFPageInterpreter.do_TL  s     #'ug"6!6r=   r   rO   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  rN   ru  r   r   rA   r   r   r   r&  rO   )rX   r   rO   s      r>   do_TfzPDFPageInterpreter.do_Tf  s    	B"&,,|F/C"DDNN
 #'uh"7	  	B)*AF*JKK"&,,"7"7b"ADNN	Bs   'A	 	ABBrT   c                 B    t        t        |      | j                  _        y)zSet the text rendering modeN)r   r   r  rT   )rX   rT   s     r>   do_TrzPDFPageInterpreter.do_Tr  s     $S& 1r=   rU   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  rU   )rX   rU   s     r>   do_TszPDFPageInterpreter.do_Ts  s    
 #5$/r=   txtyc                 @   t        |      }t        |      }|S|Q| j                  j                  \  }}}}}	}
||z  ||z  z   |	z   }||z  ||z  z   |
z   }||||||f| j                  _        n"t        j                  rt        d|d|d      d| j                  _        y)zlMove to the start of the next line

        Offset from the start of the current line by (tx , ty).
        NzInvalid offset (z, z) for Tdrc   )r   r  rI   r   r   r   rJ   rX   r  r  tx_ty_ar  r   r   efe_newf_news                r>   do_TdzPDFPageInterpreter.do_Td%  s    
 nn?s!%!6!6Q1aA!GcAg%)E!GcAg%)E%&1a$>DNN!__"22&2& IJJ$*!r=   c                 X   t        |      }t        |      }|S|Q| j                  j                  \  }}}}}	}
||z  ||z  z   |	z   }||z  ||z  z   |
z   }||||||f| j                  _        nt        j                  rt        d      ||| j                  _        d| j                  _        y)zMove to the start of the next line.

        offset from the start of the current line by (tx , ty). As a side effect, this
        operator sets the leading parameter in the text state.
        Nz"Invalid offset ({tx}, {ty}) for TDrc   )r   r  rI   r   r   r   rS   rJ   r  s                r>   do_TDzPDFPageInterpreter.do_TD7  s     nn?s!%!6!6Q1aA!GcAg%)E!GcAg%)E%&1a$>DNN!__ DEE?%(DNN"$*!r=   r  r   r  r  c           	      p    t        t        ||||||f      | j                  _        d| j                  _        y)z$Set text matrix and text line matrixrc   N)r   r0   r  rI   rJ   rX   r  r  r   r   r  r  s          r>   do_TmzPDFPageInterpreter.do_TmN  s0     !%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 linerc   N)r  rI   rS   rJ   r  s          r>   do_T_azPDFPageInterpreter.do_T_a[  st    !^^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  rN   r   r   rA   r	  r   render_stringr   r   r  ra   )rX   r  s     r>   do_TJzPDFPageInterpreter.do_TJh  st    >>&)*>??xx###!!NNS!HH""$		
r=   sc                 (    | j                  |g       y)z	Show textN)r  rX   r  s     r>   do_TjzPDFPageInterpreter.do_Tjv  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__qz  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  )rX   r  r  r  s       r>   do__wzPDFPageInterpreter.do__w  s'    
 	

2

2

A3r=   c                      y)zBegin inline image objectNr<   rW   s    r>   do_BIzPDFPageInterpreter.do_BI  r9  r=   c                      y)zBegin inline image dataNr<   rW   s    r>   do_IDzPDFPageInterpreter.do_ID  r9  r=   c                    t        |t              rwd|v rrd|v rmt        t        |            }| j                  j                  |dt               | j                  j                  ||       | j                  j                  |       yyyy)zEnd inline image objectWHr   r   r   r   N)	r   r    rf   idr   begin_figurer/   render_image
end_figure)rX   r`   iobjids      r>   do_EIzPDFPageInterpreter.do_EI  sl    c9%#*C\FKK$$V\?KKK$$VS1KK""6*	 :D*%r=   
xobjid_argc           	         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t/        || j0                               | j(                  j3                  |       y|t4        u rad	|v r]d
|v rY| j(                  j+                  |dt                | j(                  j7                  ||       | j(                  j3                  |       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   BBoxr0   	Resourcesr   WidthHeightr  )r.   r$   r   ru  r   r   rA   r   r   r   LITERAL_FORMr   r   r3   r"   r0   r/   r!   r   ra   r   r  render_contentsr5   r   r  LITERAL_IMAGEr  )
rX   r  r   xobjr   interpreterbboxrI   xobjresr   s
             r>   do_DozPDFPageInterpreter.do_Do  s   j)	V 45D
 			'.((9%l"v~((*Kjf67D&*TXXh-P"QRF hh{+G&w/	 NN//1	KK$$VT6:''1 ( 
 KK""6*%'T/h$>NKK$$V\?KKK$$VT2KK""6* ?  	)*Dv*MNN	s   F6 6'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)rX   r  x0y0rD  rE  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"   )rX   r   r   r   s       r>   r
  z"PDFPageInterpreter.render_contents  sI     			?		
 	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)Nzdo_%s*_a"_w'_qr   zexec: %s %rzexec: %szUnknown operator: %r)r   r%   
nextobjectr   r)   r-   replacehasattrgetattr__code__co_argcountr  r   r   r   r   r   rA   r   )rX   r   parserr   r`   r   methodfuncnargsargsr   s              r>   r  zPDFPageInterpreter.execute  s=   	%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__ 6 =I-i88		#5   		  s"   D2 E 2	D>=D>	EE)rK   r   rd   )dr9   r:   r;   r   rx   r   rY   r   r   r   r   r0   r  	PDFStackTr   r   r   r  r	   rH   rh   r  r  r  r  r$  r'  r)  r+  r.  r1  r3  r5  r8  r?  rC  rK  rM  rP  rT  rW  r[  r]  r`  rb  rd  rf  rh  rj  rl  rn  rp  rr  rv  ry  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   i  sx   
 2 I $ 9'4VV^(< '4 '4RBf B B""	 "d "S T)_ K5)N#O K&V\?:;& 
&56
&& & 	&
 & & & 
&=i =D =,I ,$ ,.Y .4 .2y 2T 2/ /9 / /*I *$ *.Y .4 .F) F FCi CI C$ CCi CI C$ C

 
 	

 
 
 
 

,
y 
i 
Y 
I 
RV 

y 
i 
Y 
I 
RV 
$
$y 
$Y 
$9 
$ 
$t 
$


E




B4	M) 	M 	MM) M M, ,t ,
, ,t ,
+y +Y +9 + +
+y +Y +9 + +
,i ,I ,) ,	 ,d ,,i ,I ,) ,	 ,d ,<<4& 4T 4 *(1 1t 18 89 8 84) 4 4;) ;I ;$ ;69 6 669 6 649 4 47Y 74 78I 8 8t 82I 2$ 20) 0 0+	 +y +T +$+	 +y +T +.++ + 	+
 + + + 
++
 
t 
y T y T 	 y Y 4 (&+ +t +$	 $d $L# #T #& &	*'* &!* 	*
 
*( x/  D  r=   r   )Uloggingr   ior   typingr   r   r   r   r   r	   r
   r   pdfminerr   pdfminer.castingr   pdfminer.cmapdbr   r   r   pdfminer.pdfcolorr   r   pdfminer.pdfdevicer   r   pdfminer.pdfexceptionsr   r   pdfminer.pdffontr   r   r   r   r   r   pdfminer.pdfpager   pdfminer.pdftypesr   r   r    r!   r"   r#   r$   pdfminer.psexceptionsr%   r&   pdfminer.psparserr'   r(   r)   r*   r+   r,   r-   r.   pdfminer.utilsr/   r0   r1   r2   r3   r4   r5   	getLoggerr9   r   r7   rA   r~   r   r   r	  r  rH   r&  r  rh   rx   r   r2  r   r<   r=   r>   <module>rC     sX    	  N N N  ' 2 2 B 4 >  %   5	 	 	   g!	| 		, 	 %j6{6{6{G4! 4!n 			%
	%u
$%'	-
 -
`E EPg$}U9i+?%@A g$T 	"	 6Y
 Y
r=   