
    SAi                        S SK r S SKrS SKJr  S SKJrJrJrJrJ	r	J
r
JrJr  S SKJr  S SKJrJrJrJrJr  S SKJrJrJr  S SKJrJr  S SKJrJr  S S	KJ r J!r!  S S
K"J#r#J$r$J%r%J&r&J'r'J(r(  S SK)J*r*  S SK+J,r,J-r-J.r.J/r/J0r0J1r1J2r2  S SK3J4r4J5r5  S SK6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>  S SK?J@r@JArAJBrBJCrCJDrDJErEJFrF  \ R                  " \H5      rI " S S\ 5      rJ " S S\ 5      rK\8" S5      rL\8" S5      rM\8" S5      rN\8" S5      rO\8" S5      rP " S S5      rQ\\R\
\R\R\R4   \
\R\R\R\R4   4   rS " S S5      rT " S S5      rU " S S \;\\9\.4      5      rV\<\.   rW  " S! S"5      rXg)#    N)BytesIO)DictListMappingOptionalSequenceTupleUnioncast)settings)	safe_cmyk
safe_floatsafe_intsafe_matrixsafe_rgb)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                       \ rS rSrSrg)PDFResourceError6    N__name__
__module____qualname____firstlineno____static_attributes__r=       N/var/www/html/land-ocr/venv/lib/python3.13/site-packages/pdfminer/pdfinterp.pyr;   r;   6       rD   r;   c                       \ rS rSrSrg)PDFInterpreterError:   r=   Nr>   r=   rD   rE   rH   rH   :   rF   rD   rH   PDFTextFontFormImagec                   V    \ rS rSr% \\S'   \\S'   SS jrS\4S jr	SS jr
SS	 jrS
rg)PDFTextStateE   matrix
linematrixreturnNc                     S U l         SU l        SU l        SU l        SU l        SU l        SU l        SU l        U R                  5         g )Nr   d   )	fontfontsize	charspace	wordspacescalingleadingrenderriseresetselfs    rE   __init__PDFTextState.__init__I   sC    '+	  ! !!	

rD   c                     SU R                   < SU R                  < SU R                  < SU R                  < SU R                  < SU R
                  < SU R                  < SU R                  < S	U R                  < S
U R                  < S3$ )Nz<PDFTextState: font=z, fontsize=z, charspace=z, wordspace=z
, scaling=z
, leading=z	, render=z, rise=z	, matrix=z, linematrix=>)
rW   rX   rY   rZ   r[   r\   r]   r^   rR   rS   r`   s    rE   __repr__PDFTextState.__repr__V   sT     					
rD   c                 n   [        5       nU R                  Ul        U R                  Ul        U R                  Ul        U R                  Ul        U R
                  Ul        U R                  Ul        U R                  Ul        U R                  Ul        U R                  Ul	        U R                  Ul
        U$ N)rP   rW   rX   rY   rZ   r[   r\   r]   r^   rR   rS   ra   objs     rE   copyPDFTextState.copyi   s|    n99}}llll[[
99[[

rD   c                 (    [         U l        SU l        g )Nr   r   )r3   rR   rS   r`   s    rE   r_   PDFTextState.resetw   s    % rD   )
rY   rW   rX   r\   rS   rR   r]   r^   r[   rZ   rT   N)rT   rP   )r?   r@   rA   rB   r4   __annotations__r6   rb   strrf   rl   r_   rC   r=   rD   rE   rP   rP   E   s(    N	
# 
&!rD   rP   c                   6    \ rS rSrSS jrS	S jrS\4S jrSrg)
PDFGraphicState   rT   Nc                     SU l         S U l        S U l        S U l        S U l        S U l        S U l        SU l        [        S   U l	        SU l
        [        S   U l        g )Nr   
DeviceGray)	linewidthlinecaplinejoin
miterlimitdashintentflatnessscolorr   scsncolorncsr`   s    rE   rb   PDFGraphicState.__init__   s]     !)-*.,059	(,*. "7"E "7"ErD   c                 L   [        5       nU R                  Ul        U R                  Ul        U R                  Ul        U R                  Ul        U R
                  Ul        U R                  Ul        U R                  Ul        U R                  Ul        U R                  Ul	        U$ ri   )
ru   ry   rz   r{   r|   r}   r~   r   r   r   rj   s     rE   rl   PDFGraphicState.copy   sr    ll}}99[[
}}[[
[[

rD   c                    SU R                   < SU R                  < SU R                  < SU R                  < SU R                  < SU R
                  < SU R                  < SU R                  < S	U R                  < S
3$ )Nz<PDFGraphicState: linewidth=z
, linecap=z, linejoin=z,  miterlimit=z, dash=z	, intent=z, flatness=z,  stroking color=z, non stroking color=re   )	ry   rz   r{   r|   r}   r~   r   r   r   r`   s    rE   rf   PDFGraphicState.__repr__   sM     			
rD   )r}   r   r~   rz   r{   ry   r|   r   r   r   r   rq   )rT   ru   )	r?   r@   rA   rB   rb   rl   rs   rf   rC   r=   rD   rE   ru   ru      s    F"
# 
rD   ru   c                       \ rS rSrSrSS\SS4S jjrS\\   SS4S jr	SS	\
S
\S\4S jjrS\S\\
\4   S\4S jrSrg)PDFResourceManager   zRepository of shared resources.

ResourceManager facilitates reuse of shared resources
such as fonts and images so that large objects are not
allocated multiple times.
cachingrT   Nc                     Xl         0 U l        g ri   )r   _cached_fonts)ra   r   s     rE   rb   PDFResourceManager.__init__   s    46rD   procsc                 >    U H  nU[         L d	  U[        L a  M  M     g ri   )LITERAL_PDFLITERAL_TEXT)ra   r   procs      rE   get_procsetPDFResourceManager.get_procset   s!    D{"dl&:	 rD   cmapnamestrictc                      [         R                  " U5      $ ! [         R                   a    U(       a  e [        5       s $ f = fri   )r   get_cmapCMapNotFoundr   )ra   r   r   s      rE   r   PDFResourceManager.get_cmap   s8    	??8,,"" 	6M	s    &A Aobjidspecc                 T   U(       a   XR                   ;   a  U R                   U   nU$ [        R                  SX5        [        R                  (       a  US   [
        La  [        S5      eSU;   a  [        US   5      nO"[        R                  (       a  [        S5      eSnUS;   a  [        X5      nOUS:X  a  [        X5      nOUS	:X  a  [        X5      nOUS
;   a  [        X5      nOUS:X  ae  [        US   5      nU(       d   e[        US   5      R                  5       nS H  nXr;   d  M
  [        X'   5      Xg'   M     U R!                  S U5      nO.[        R                  (       a  [        SU-  5      e[        X5      nU(       a  U R"                  (       a  X0R                   U'   U$ )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   r2   r   r   r    r   r&   r%   rl   r'   get_fontr   )ra   r   r   rW   subtypedfontssubspecks           rE   r   PDFResourceManager.get_font   st   U000%%e,DP M II;UI<|3&':;;D &tI7??&'GHH!..#D/J&&t2G##D/<<!$-G##D):$;<v$VAY/4462Ay%-dg%6
 3 }}T73??&'>'EFF#D/,0""5)rD   )r   r   )T)F)r?   r@   rA   rB   __doc__boolrb   r   objectr   rs   r   r   r   r   r   rC   r=   rD   rE   r   r      so    7 7 7&!1 d  d x *f *GCK,@ *W *rD   r   c            	           \ rS rSrS\\   SS4S jrSS jrS\SS4S jr	SS	 jr
SS\S\S\\\4   4S jjrSS jr\" S5      r\" S5      r\" S
5      rS\S\SS4S jrSrg)PDFContentParser   streamsrT   Nc                 L    Xl         SU l        [        R                  " U S 5        g Nr   )r   istreamr/   rb   )ra   r   s     rE   rb   PDFContentParser.__init__   s      	tT*rD   c                 0   U R                   (       d  U R                  [        U R                  5      :  a8  [	        U R                  U R                     5      nU =R                  S-  sl        O[        S5      e[        UR                  5       5      U l         g g )N   zUnexpected EOF, file truncated?)fpr   lenr   r(   r)   r   get_data)ra   strms     rE   fillfpPDFContentParser.fillfp  sf    ww||c$,,//#DLL$>?!=>>dmmo.DG rD   posc                 P    U R                  5         [        R                  " X5        g ri   )r   r/   seek)ra   r   s     rE   r   PDFContentParser.seek  s    4%rD   c                 D   U R                   [        U R                  5      :  a  g  U R                  5         U R                  R                  5       U l        U R                  R                  U R                  5      U l        U R                  (       a  O	S U l        Mt  SU l         g r   )	charposr   bufr   r   tellbufposreadBUFSIZr`   s    rE   fillbufPDFContentParser.fillbuf  sm    <<#dhh-'KKM'',,.DKww||DKK0DHxxDG  rD      EItargetc                 B   U R                  U5        SnSnU[        U5      ::  Ga	  U R                  5         U(       a  U R                  U R                     n[        U45      nXF-  nU =R                  S-  sl        [        U5      U::  a  UR                  5       (       d!  U[        U5      :  a  U[        X#   45      :X  a  US-  nOWSnOT U R                  R                  US   U R                  5      nX@R                  U R                  US-    -  nUS-   U l        SnU[        U5      ::  a  GM	  US [        U5      S-   *  n[        R                  " SSU5      nX4$ ! [         a8    X@R                  U R                  S  -  n[        U R                  5      U l         Nf = f)Nr   rD   r   s   (\x0d\x0a|[\x0d\x0a])$)r   r   r   r   r   bytesisspaceindex
ValueErrorresub)ra   r   r   idatacicjs           rE   get_inline_data PDFContentParser.get_inline_data  sh   		#3v;LLNXXdll+2%L	!K1$		3v;eVYL12FAA1vay$,,?AHHT\\AE::D#$q5DLA+ 3v;2 (Fa()vv0#t<{ " 1HHT\\^44D#&txx=DL1s   
AE ?FFc                 >    U R                   " U R                  5       6   g ri   )add_resultspopallr`   s    rE   flushPDFContentParser.flush@  s    $++-(rD   s   BIs   IDtokenc                    X R                   L a  U R                  US5        g X R                  L Ga   U R                  S5      u  p4[	        U5      S-  S:w  a  SU< 3n[        U5      e[        SU5       VVs0 s H  u  pg[        U5      [        U5      _M     nnnSn	UR                  SS 5      n
U
b'  [        U
[        5      (       a  U
/n
U
S   [        ;   a  Sn	U R                  U[	        S5      -   U	S	9u  pU	S:w  a  X-  n[        X5      nU R                  X45        U	S:X  a  U R                  XR                   45        g g U R                  X45        g s  snnf ! [
         a    ["        R$                  (       a  e  g f = f)
Ninline   r   zInvalid dictionary construct: r   Fs   ~>s   ID )r   )
KEYWORD_BI
start_type
KEYWORD_IDend_typer   r*   r8   r2   r'   get
isinstancer.   r"   r   r$   push
KEYWORD_EIr   r   )ra   r   r   _objs	error_msgr   vdeosfilterr   rk   s                rE   
do_keywordPDFContentParser.do_keywordG  sh   OO#OOC*oo% MM(3	t9q=A%"@ II%i00@HD@QR@Qfq\!_hqk1@QRsD)%!&)44"(ay$;;#"223V3DS2Q%<KD(		3*%%<IIsOO45   IIsl#' S  ?? #s%   AE 7!EB(E E  E>=E>)r   r   r   r   r   r   rq   )r   )r?   r@   rA   rB   r   r   rb   r   intr   r   r   r	   r   r   r+   r   r   r   r-   r   rC   r=   rD   rE   r   r      s    + 0 +T +/& & &
3  %U
BS B) UJUJUJ$c $) $ $rD   r   c                      \ rS rSrSrS\S\SS4S jrSS jrS	\	\
\
4   SS4S
 jrS\SS4S jrS\SS4S jrS\S\\   4S jrS\\\\4   4S jrS\\\\4   SS4S jrSS jrSS jrS\S\S\S\S\S\SS4S jrS\SS4S jrS\SS4S  jrS!\SS4S" jrS#\SS4S$ jrS%\S&\SS4S' jrS(\SS4S) jr S*\SS4S+ jr!S,\SS4S- jr"S.\S/\SS4S0 jr#S.\S/\SS4S1 jr$S2\S3\S4\S5\S6\S7\SS4S8 jr%S4\S5\S6\S7\SS4
S9 jr&S2\S3\S6\S7\SS4
S: jr'SS; jr(S.\S/\S<\S=\SS4
S> jr)SS? jr*SS@ jr+SSA jr,SSB jr-SSC jr.SSD jr/SSE jr0SSF jr1SSG jr2SSH jr3SSI jr4SSJ jr5S,\SS4SK jr6S,\SS4SL jr7SM\SS4SN jr8SM\SS4SO jr9SP\SQ\SR\SS4SS jr:SP\SQ\SR\SS4ST jr;SU\SV\S/\SW\SS4
SX jr<SU\SV\S/\SW\SS4
SY jr=SSZ jr>SS[ jr?SS\ jr@SS] jrAS,\
SS4S^ jrBSS_ jrCSS` jrDSSa jrESSb jrFSc\SS4Sd jrGSc\Se\SS4Sf jrHSc\SS4Sg jrISc\Se\SS4Sh jrJSSi jrKSj\SS4Sk jrLSj\SS4Sl jrMSm\SS4Sn jrNSo\SS4Sp jrOSq\Sr\SS4Ss jrPSt\SS4Su jrQSv\SS4Sw jrRSx\Sy\SS4Sz jrSSx\Sy\SS4S{ jrTS|\SR\SU\S}\S~\S\SS4S jrUSS jrVS\SS4S jrWS\SS4S jrXS\SS4S jrYS\S\S\SS4S jrZSS jr[SS jr\S\SS4S jr]S\SS4S jr^S\_SS4S jr`\a4S	\	\
\
4   S\b\
   S\SS4S jjrcS\b\
   SS4S jrdSreg)PDFPageInterpreterik  z`Processor for the content of a PDF page

Reference: PDF Reference, Appendix A, Operator Summary
rsrcmgrdevicerT   Nc                     Xl         X l        g ri   )r  r  )ra   r  r  s      rE   rb   PDFPageInterpreter.__init__q  s    rD   c                 N    U R                  U R                  U R                  5      $ ri   )	__class__r  r  r`   s    rE   dupPDFPageInterpreter.dupu  s    ~~dllDKK88rD   	resourcesc                 |   Xl         0 U l        0 U l        [        R                  " 5       U l        U(       d  gS[        S[        [           4S jn[        U5      R                  5        GHP  u  p4[        R                  SX45        US:X  az  [        U5      R                  5        H[  u  pVSn[        U[        5      (       a  UR                  n[        U5      nU R                   R#                  Xv5      U R                  U'   M]     M  US:X  aH  [        U5      R                  5        H)  u  pU" [%        U5      5      n	U	c  M  XR
                  U'   M+     M  US:X  a'  U R                   R'                  [)        U5      5        GM  US	:X  d  GM   [        U5      R                  5        H  u  pXR                  U
'   M     GMS     g)
z@Prepare the fonts and XObjects listed in the Resource attribute.Nr   rT   c           	         [        U [        5      (       a  [        U S   5      nO[        U 5      nUS:X  a?  [        U [        5      (       a*  [        U 5      S:  a  [	        U[        U S   5      S   5      $ US:X  aE  [        U [        5      (       a0  [        U 5      S:  a!  [	        U[        [        U S   5      5      5      $ [        R                  " U5      $ )Nr   ICCBasedr   r   NDeviceN)	r   listr2   r   r   r(   r&   r   r   )r   names     rE   get_colorspace9PDFPageInterpreter.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6rD   zResource: %r: %rrL   
ColorSpaceProcSetXObject)r  fontmapxobjmapr   rl   csmapr   r   r   r%   itemsr   r   r   r#   r   r  r   r'   r   r&   )ra   r  r  r   r   fontidr   r   csid
colorspacexobjidxobjstrms               rE   init_resources!PDFPageInterpreter.init_resourcesx  s_   ".0/D/I/I/K

	7 
	7H],C 
	7 y)//1DAII(!/F{$.qM$7$7$9LF E!$	22 $

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

4( #8 i((A7i(21(;(;(=$F+3LL( )># 2rD   ctmc                     / U l         Xl        U R                  R                  U R                  5        [	        5       U l        [        5       U l        / U l        / U l	        g)z<Initialize the text and graphic states for rendering a page.N)
gstackr$  r  set_ctmrP   	textstateru   graphicstatecurpathargstack)ra   r$  s     rE   
init_statePDFPageInterpreter.init_state  sJ     KMDHH%%+-*,)+rD   rk   c                 :    U R                   R                  U5        g ri   )r+  appendrj   s     rE   r   PDFPageInterpreter.push  s    S!rD   nc                 `    US:X  a  / $ U R                   U* S  nU R                   S U*  U l         U$ r   )r+  )ra   r1  xs      rE   popPDFPageInterpreter.pop  s9    6IMM1"#cr*rD   c                     U R                   U R                  R                  5       U R                  R                  5       4$ ri   )r$  r(  rl   r)  r`   s    rE   get_current_state$PDFPageInterpreter.get_current_state  s/    $..--/1B1B1G1G1IJJrD   statec                 x    Uu  U l         U l        U l        U R                  R	                  U R                   5        g ri   )r$  r(  r)  r  r'  )ra   r9  s     rE   set_current_state$PDFPageInterpreter.set_current_state  s-     9>54>4#4DHH%rD   c                 V    U R                   R                  U R                  5       5        g)zSave graphics stateN)r&  r/  r7  r`   s    rE   do_qPDFPageInterpreter.do_q  s    41134rD   c                 z    U R                   (       a*  U R                  U R                   R                  5       5        gg)zRestore graphics stateN)r&  r;  r4  r`   s    rE   do_QPDFPageInterpreter.do_Q  s'    ;;""4;;??#45 rD   a1b1c1d1e1f1c           	          [        XX4XV5      nUc  [        R                  SXX4XV4< S35        g[        XpR                  5      U l        U R
                  R                  U R                  5        g)z3Concatenate matrix to current transformation matrixNzUCannot concatenate matrix to current transformation matrix because not all values in  can be parsed as floats)r   r   warningr9   r$  r  r'  )ra   rC  rD  rE  rF  rG  rH  rR   s           rE   do_cmPDFPageInterpreter.do_cm  sr     RRR4>KKgikqsy{  iA  hD  D\  ] #6884DHKK)rD   ry   c                 v    [        U5      nUc  [        R                  SU< S35        gX R                  l        g)zSet line widthNzCannot set line width because  is an invalid float value)r   r   rK  r)  ry   )ra   ry   linewidth_fs      rE   do_wPDFPageInterpreter.do_w  s9     +KK0=WX +6'rD   rz   c                 $    XR                   l        g)zSet line cap styleN)r)  rz   )ra   rz   s     rE   do_JPDFPageInterpreter.do_J  s    $+!rD   r{   c                 $    XR                   l        g)zSet line join styleN)r)  r{   )ra   r{   s     rE   do_jPDFPageInterpreter.do_j      %-"rD   r|   c                 $    XR                   l        g)zSet miter limitN)r)  r|   )ra   r|   s     rE   do_MPDFPageInterpreter.do_M  s    '1$rD   r}   phasec                 (    X4U R                   l        g)zSet line dash patternN)r)  r}   )ra   r}   r]  s      rE   do_dPDFPageInterpreter.do_d  s    "&rD   r~   c                 $    XR                   l        g)zSet color rendering intentN)r)  r~   )ra   r~   s     rE   do_riPDFPageInterpreter.do_ri  s    #) rD   r   c                 $    XR                   l        g)zSet flatness toleranceN)r)  r   )ra   r   s     rE   do_iPDFPageInterpreter.do_i  rY  rD   r  c                     g)z7Set parameters from graphics state parameter dictionaryNr=   ra   r  s     rE   do_gsPDFPageInterpreter.do_gs       rD   r3  yc                     [        U5      n[        U5      nUb  Uc  SX4n[        R                  SU< S35        gSX44nU R                  R	                  U5        g)zBegin new subpathNmz3Cannot start new subpath because not all values in rJ  r   r   rK  r*  r/  ra   r3  rl  x_fy_fpoints         rE   do_mPDFPageInterpreter.do_m  s\    mm;#+!KEKKEeYNfg #OELL&rD   c                     [        U5      n[        U5      nUb  Uc  SX4n[        R                  SU< S35        gSX44nU R                  R	                  U5        g)z$Append straight line segment to pathNlzFCannot append straight line segment to path because not all values in rJ  ro  rp  s         rE   do_lPDFPageInterpreter.do_l  s^    mm;#+!KEKKXY^Xaayz #OELL&rD   x1y1x2y2x3y3c                 0   [        U5      n[        U5      n[        U5      n	[        U5      n
[        U5      n[        U5      nUb  Ub  U	b	  U
b  Ub  Uc!  SXX4XV4n[        R                  SU< S35        gSXxXX4nU R                  R	                  U5        g)z4Append curved segment to path (three control points)Nr   ?Cannot append curved segment to path because not all values in rJ  ro  )ra   rz  r{  r|  r}  r~  r  x1_fy1_fx2_fy2_fx3_fy3_frs  s                 rE   do_cPDFPageInterpreter.do_c  s     "~"~"~"~"~"~L|||||"""1EKKQRWQZZrs $d$=ELL&rD   c                     [        U5      n[        U5      n[        U5      n[        U5      nUb	  Ub  Ub  Uc   SXX44n	[        R                  SU	< S35        gSXVXx4n	U R                  R	                  U	5        g)z8Append curved segment to path (initial point replicated)Nr   r  rJ  ro  )
ra   r|  r}  r~  r  r  r  r  r  rs  s
             rE   do_vPDFPageInterpreter.do_v?  ~    "~"~"~"~<4<4<4<"")EKKQRWQZZrs $d1ELL&rD   c                     [        U5      n[        U5      n[        U5      n[        U5      nUb	  Ub  Ub  Uc   SXX44n	[        R                  SU	< S35        gSXVXx4n	U R                  R	                  U	5        g)z6Append curved segment to path (final point replicated)Nrl  r  rJ  ro  )
ra   rz  r{  r~  r  r  r  r  r  rs  s
             rE   do_yPDFPageInterpreter.do_yN  r  rD   c                 :    U R                   R                  S5        g)zClose subpathhN)r*  r/  r`   s    rE   do_hPDFPageInterpreter.do_h]  s    F#rD   wr  c                    [        U5      n[        U5      n[        U5      n[        U5      nUb	  Ub  Ub  Uc  XX44n	[        R                  SU	< S35        gU R                  R	                  SXV45        U R                  R	                  SXW-   U45        U R                  R	                  SXW-   Xh-   45        U R                  R	                  SXVU-   45        U R                  R	                  S5        g)zAppend rectangle to pathNz:Cannot append rectangle to path because not all values in rJ  rn  rw  r  ro  )
ra   r3  rl  r  r  rq  rr  w_fh_fvaluess
             rE   do_rePDFPageInterpreter.do_rea  s    mmmm;#+A\FKKLVJVno LLc0LLci 56LLci ;<LLc9 56LL'rD   c                 x    U R                   R                  U R                  SSSU R                  5        / U l        g)zStroke pathTFNr  
paint_pathr)  r*  r`   s    rE   do_SPDFPageInterpreter.do_St  s-    t00$udllSrD   c                 D    U R                  5         U R                  5         g)zClose and stroke pathN)r  r  r`   s    rE   do_sPDFPageInterpreter.do_sy      				rD   c                 x    U R                   R                  U R                  SSSU R                  5        / U l        g)z+Fill path using nonzero winding number ruleFTNr  r`   s    rE   do_fPDFPageInterpreter.do_f~  s-    t00%udllSrD   c                     g)z6Fill path using nonzero winding number rule (obsolete)Nr=   r`   s    rE   do_FPDFPageInterpreter.do_F  rk  rD   c                 x    U R                   R                  U R                  SSSU R                  5        / U l        g)zFill path using even-odd ruleFTNr  r`   s    rE   do_f_aPDFPageInterpreter.do_f_a  s-    t00%tT\\RrD   c                 x    U R                   R                  U R                  SSSU R                  5        / U l        g)z6Fill and stroke path using nonzero winding number ruleTFNr  r`   s    rE   do_BPDFPageInterpreter.do_B  s-    t00$eT\\RrD   c                 x    U R                   R                  U R                  SSSU R                  5        / U l        g)z(Fill and stroke path using even-odd ruleTNr  r`   s    rE   do_B_aPDFPageInterpreter.do_B_a  s-    t00$dDLLQrD   c                 D    U R                  5         U R                  5         g)z>Close, fill, and stroke path using nonzero winding number ruleN)r  r  r`   s    rE   do_bPDFPageInterpreter.do_b  r  rD   c                 D    U R                  5         U R                  5         g)z0Close, fill, and stroke path using even-odd ruleN)r  r  r`   s    rE   do_b_aPDFPageInterpreter.do_b_a  s    		rD   c                     / U l         g)z$End path without filling or strokingN)r*  r`   s    rE   do_nPDFPageInterpreter.do_n  s	    rD   c                     g)z3Set clipping path using nonzero winding number ruleNr=   r`   s    rE   do_WPDFPageInterpreter.do_W  rk  rD   c                     g)z%Set clipping path using even-odd ruleNr=   r`   s    rE   do_W_aPDFPageInterpreter.do_W_a  rk  rD   c                      U R                   [        U5         U R                  l        g! [         a&    [
        R                  (       a  [        SU-  5      e gf = f)z?Set color space for stroking operations

Introduced in PDF 1.1
Undefined ColorSpace: %rN)r  r2   r)  r   KeyErrorr   r   rH   rh  s     rE   do_CSPDFPageInterpreter.do_CS  sR    
	M$(JJ|D/A$BD! 	M)*Dt*KLL 	M   '* -AAc                      U R                   [        U5         U R                  l        g! [         a&    [
        R                  (       a  [        SU-  5      e gf = f)z*Set color space for nonstroking operationsr  N)r  r2   r)  r   r  r   r   rH   rh  s     rE   do_csPDFPageInterpreter.do_cs  sR    	M$(JJ|D/A$BD! 	M)*Dt*KLL 	Mr  grayc                     [        U5      nUc  [        R                  SU< S35        gX R                  l        U R
                  S   U R                  l        g)z&Set gray level for stroking operationsNCannot set gray level because rO  rx   )r   r   rK  r)  r   r  r   ra   r  gray_fs      rE   do_GPDFPageInterpreter.do_G  O    D!>KK08RS (.$$(JJ|$<D!rD   c                     [        U5      nUc  [        R                  SU< S35        gX R                  l        U R
                  S   U R                  l        g)z)Set gray level for nonstroking operationsNr  rO  rx   )r   r   rK  r)  r   r  r   r  s      rE   do_gPDFPageInterpreter.do_g  r  rD   rgbc                     [        XU5      nUc  [        R                  SXU4< S35        gX@R                  l        U R
                  S   U R                  l        g)z%Set RGB color for stroking operationsNz6Cannot set RGB stroke color because not all values in rJ  	DeviceRGB)r   r   rK  r)  r   r  r   ra   r  r  r  rgbs        rE   do_RGPDFPageInterpreter.do_RG  sV    qQ;KKH!PQUmn (+$$(JJ{$;D!rD   c                     [        XU5      nUc  [        R                  SXU4< S35        gX@R                  l        U R
                  S   U R                  l        g)z(Set RGB color for nonstroking operationsNz:Cannot set RGB non-stroke color because not all values in rJ  r  )r   r   rK  r)  r   r  r   r  s        rE   do_rgPDFPageInterpreter.do_rg  sV    qQ;KKLaTUYMYqr (+$$(JJ{$;D!rD   r   rn  r   c                     [        XX45      nUc  [        R                  SXX44< S35        gXPR                  l        U R
                  S   U R                  l        g)z&Set CMYK color for stroking operationsNz7Cannot set CMYK stroke color because not all values in rJ  
DeviceCMYK)r   r   rK  r)  r   r  r   ra   r   rn  rl  r   cmyks         rE   do_KPDFPageInterpreter.do_K  sW    q$<KKI1QR,IYYqr (,$$(JJ|$<D!rD   c                     [        XX45      nUc  [        R                  SXX44< S35        gXPR                  l        U R
                  S   U R                  l        g)z)Set CMYK color for nonstroking operationsNz;Cannot set CMYK non-stroke color because not all values in rJ  r  )r   r   rK  r)  r   r  r   r  s         rE   do_kPDFPageInterpreter.do_k  sW    q$<KKMqUVlM]]uv (,$$(JJ|$<D!rD   c                    U R                   R                  R                  nU R                  U5      n[	        U5      U:w  a  [
        R                  SU SUS 35        g[	        U5      S:X  a?  US   n[        U5      nUc  [
        R                  SU< S35        gX@R                   l        g[	        U5      S	:X  a7  [        U6 nUc  [
        R                  S
U< S35        gXPR                   l        g[	        U5      S:X  a7  [        U6 nUc  [
        R                  SU< S35        gX`R                   l        g[
        R                  S[	        U5       S35        g)z"Set color for stroking operations.z)Cannot set stroke color because expected  components but got !rr   r   Nz%Cannot set gray stroke color because rO     z/Cannot set RGB stroke color because components  cannot be parsed as RGB   z0Cannot set CMYK stroke color because components  cannot be parsed as CMYKz Cannot set stroke color because T components are specified but only 1 (grayscale), 3 (rgb) and 4 (cmyk) are supported)r)  r   ncomponentsr4  r   r   rK  r   r   r   r   ra   r1  
componentsr  r  r  r  s          rE   do_SCNPDFPageInterpreter.do_SCN  sL   !!--XXa[
z?aKK;A3>RS]^`Rab _!a=D%F~;D8C]^ ,2!!(_!J'C{Ej^Skl ,/!!(_!j)D|FznTmn ,0!!( KK23z?2C  DX  YrD   c                    U R                   R                  R                  nU R                  U5      n[	        U5      U:w  a  [
        R                  SU SUS 35        g[	        U5      S:X  a?  US   n[        U5      nUc  [
        R                  SU< S35        gX@R                   l        g[	        U5      S	:X  a7  [        U6 nUc  [
        R                  S
U< S35        gXPR                   l        g[	        U5      S:X  a7  [        U6 nUc  [
        R                  SU< S35        gX`R                   l        g[
        R                  S[	        U5       S35        g)$Set color for nonstroking operationsz-Cannot set non-stroke color because expected r  r  r   r   Nz)Cannot set gray non-stroke color because rO  r  z3Cannot set RGB non-stroke color because components r  r  z4Cannot set CMYK non-stroke color because components r  z$Cannot set non-stroke color because r  )r)  r   r  r4  r   r   rK  r   r   r   r   r  s          rE   do_scnPDFPageInterpreter.do_scn1  sL   !!--XXa[
z?aKK?sBVWabdVef _!a=D%F~?xGab ,2!!(_!J'C{I*Wop ,/!!(_!j)D|J:.Xqr ,0!!( KK6s:6G  H\  ]rD   c                 $    U R                  5         g)z!Set color for stroking operationsN)r  r`   s    rE   do_SCPDFPageInterpreter.do_SC^      rD   c                 $    U R                  5         g)r  N)r  r`   s    rE   do_scPDFPageInterpreter.do_scb  r  rD   c                     g)z%Paint area defined by shading patternNr=   rh  s     rE   do_shPDFPageInterpreter.do_shf  rk  rD   c                 8    U R                   R                  5         g)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(  r_   r`   s    rE   do_BTPDFPageInterpreter.do_BTi  s     	rD   c                     g)zEnd a text objectNr=   r`   s    rE   do_ETPDFPageInterpreter.do_ETr  rk  rD   c                     g)zBegin compatibility sectionNr=   r`   s    rE   do_BXPDFPageInterpreter.do_BXu  rk  rD   c                     g)zEnd compatibility sectionNr=   r`   s    rE   do_EXPDFPageInterpreter.do_EXx  rk  rD   tagc                     [        U[        5      (       a  U R                  R                  U5        g[        R                  SU< S35        g)zDefine marked-content pointz+Cannot define marked-content point because  is not a PSLiteralNr   r.   r  do_tagr   rK  ra   r  s     rE   do_MPPDFPageInterpreter.do_MP{  s:    c9%%KKs#KK=cWDWXrD   propsc                     [        U[        5      (       a  U R                  R                  X5        g[        R                  SU< S35        g)z.Define marked-content point with property listz>Cannot define marked-content point with property list because r  Nr  ra   r  r  s      rE   do_DPPDFPageInterpreter.do_DP  s<    c9%%KKs*KKPQTPWWjkrD   c                     [        U[        5      (       a  U R                  R                  U5        g[        R                  SU< S35        g)zBegin marked-content sequencez-Cannot begin marked-content sequence because r  Nr   r.   r  	begin_tagr   rK  r  s     rE   do_BMCPDFPageInterpreter.do_BMC  s:    c9%%KK!!#&KK?wFYZrD   c                     [        U[        5      (       a  U R                  R                  X5        g[        R                  SU< S35        g)z0Begin marked-content sequence with property listz@Cannot begin marked-content sequence with property list because r  Nr"  r  s      rE   do_BDCPDFPageInterpreter.do_BDC  s<    c9%%KK!!#-KKRSVRYYlmrD   c                 8    U R                   R                  5         g)zEnd marked-content sequenceN)r  end_tagr`   s    rE   do_EMCPDFPageInterpreter.do_EMC  s    rD   spacec                 v    [        U5      nUc  [        R                  SU< S35        gX R                  l        g)zSet character spacing.

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

:param space: a number expressed in unscaled text space units.
Nz(Could not set character spacing because rO  )r   r   rK  r(  rY   )ra   r-  rY   s      rE   do_TcPDFPageInterpreter.do_Tc  s9     u%	KK:5)C]^ (1NN$rD   c                 v    [        U5      nUc  [        R                  SU< S35        gX R                  l        g)zSet the word spacing.

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

:param space: a number expressed in unscaled text space units
Nz#Could not set word spacing becuase rO  )r   r   rK  r(  rZ   )ra   r-  rZ   s      rE   do_TwPDFPageInterpreter.do_Tw  s9     u%	KK5eY>XY (1NN$rD   scalec                 v    [        U5      nUc  [        R                  SU< S35        gX R                  l        g)zeSet the horizontal scaling.

:param scale: is a number specifying the percentage of the normal width
Nz)Could not set horizontal scaling because rO  )r   r   rK  r(  r[   )ra   r4  scale_fs      rE   do_TzPDFPageInterpreter.do_Tz  s8    
 U#?KK;E9D^_ &-NN"rD   r\   c                 z    [        U5      nUc  [        R                  SU< S35        gU* U R                  l        g)zSet the text leading.

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

:param leading: a number expressed in unscaled text space units
Nz#Could not set text leading because rO  )r   r   rK  r(  r\   )ra   r\   	leading_fs      rE   do_TLPDFPageInterpreter.do_TL  s=     w'	KK5g[@Z[ '0ZDNN"rD   r  rX   c                     U R                   [        U5         U R                  l        [        U5      nUc  [        R                  SU< S35        gX0R                  l        g! [         aQ    [
        R                  (       a  [        SU-  5      eU R                  R                  S0 5      U R                  l         Nf = f)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: %rNz Could not set text font because rO  )r  r2   r(  rW   r  r   r   rH   r  r   r   r   rK  rX   )ra   r  rX   
fontsize_fs       rE   do_TfPDFPageInterpreter.do_Tf  s    	B"&,,|F/C"DDNN  )
KK28,>XY '1NN#  	B)*AF*JKK"&,,"7"7b"ADNN	Bs   'A# #AB>=B>r]   c                 v    [        U5      nUc  [        R                  SU< S35        gX R                  l        g)zSet the text rendering modeNz*Could not set text rendering mode because z is an invalid int value)r   r   rK  r(  r]   )ra   r]   render_is      rE   do_TrPDFPageInterpreter.do_Tr  s7    F#KK<VJF^_ %-NN!rD   r^   c                 v    [        U5      nUc  [        R                  SU< S35        gX R                  l        g)zPSet the text rise

:param rise: a number expressed in unscaled text space units
Nz Could not set text rise because rO  )r   r   rK  r(  r^   )ra   r^   rise_fs      rE   do_TsPDFPageInterpreter.do_Ts  s8    
 D!>KK24(:TU #)NNrD   txtyc                 >   [        U5      n[        U5      nUbJ  UbG  U R                  R                  u  pVpxpX5-  XG-  -   U	-   nX6-  XH-  -   U
-   nXVXxX4U R                  l        O)[        R                  (       a  [        SU< SU< S35      eSU R                  l        g)z\Move to the start of the next line

Offset from the start of the current line by (tx , ty).
NzInvalid offset (z, z) for Tdro   )r   r(  rR   r   r   r   rS   ra   rI  rJ  tx_ty_ar  r   r   efe_newf_news                rE   do_TdPDFPageInterpreter.do_Td  s    
 nn?s!%!6!6Q1Gcg%)EGcg%)E%&1$>DNN!__"22&2& IJJ$*!rD   c                 R   [        U5      n[        U5      nUbJ  UbG  U R                  R                  u  pVpxpX5-  XG-  -   U	-   nX6-  XH-  -   U
-   nXVXxX4U R                  l        O [        R                  (       a  [        S5      eUb  X@R                  l        SU R                  l        g)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 TDro   )r   r(  rR   r   r   r   r\   rS   rL  s                rE   do_TDPDFPageInterpreter.do_TD  s     nn?s!%!6!6Q1Gcg%)EGcg%)E%&1$>DNN!__ DEE?%(NN"$*!rD   rO  r   rP  rQ  c                     XX4XV4n[        U6 nUc  [        R                  SU< S35        gXR                  l        SU R                  l        g)z$Set text matrix and text line matrixNz4Could not set text matrix because not all values in rJ  ro   )r   r   rK  r(  rR   rS   )	ra   rO  r  r   r   rP  rQ  r  rR   s	            rE   do_TmPDFPageInterpreter.do_Tm6  sP     a#f%>KKFvjPhi %+NN!(.DNN%rD   c                     U R                   R                  u  pp4pVUUUUU R                   R                  U-  U-   U R                   R                  U-  U-   4U R                   l        SU R                   l        g)zMove to start of next text linero   N)r(  rR   r\   rS   )ra   rO  r  r   r   rP  rQ  s          rE   do_T_aPDFPageInterpreter.do_T_aK  sn    !^^22qQNN""Q&*NN""Q&*!
 %+!rD   seqc                 8   U R                   R                  c!  [        R                  (       a  [	        S5      egU R
                  R                  U R                   [        [        U5      U R                  R                  U R                  R                  5       5        g)z0Show text, allowing individual glyph positioningNzNo font specified!)r(  rW   r   r   rH   r  render_stringr   r   r)  r   rl   )ra   r_  s     rE   do_TJPDFPageInterpreter.do_TJX  sl    >>&)*>??!!NNS!!!""$		
rD   sc                 (    U R                  U/5        g)z	Show textN)rb  ra   rd  s     rE   do_TjPDFPageInterpreter.do_Tje  s    

A3rD   c                 H    U R                  5         U R                  U/5        g)z@Move to next line and show text

The ' (single quote) operator.
N)r]  rb  rf  s     rE   do__qPDFPageInterpreter.do__qi  s    
 	

A3rD   awacc                 l    U R                  U5        U R                  U5        U R                  U/5        g)zaSet word and character spacing, move to next line, and show text

The " (double quote) operator.
N)r2  r/  rb  )ra   rl  rm  rd  s       rE   do__wPDFPageInterpreter.do__wq  s'    
 	

2

2

A3rD   c                     g)zBegin inline image objectNr=   r`   s    rE   do_BIPDFPageInterpreter.do_BIz  rk  rD   c                     g)zBegin inline image dataNr=   r`   s    rE   do_IDPDFPageInterpreter.do_ID}  rk  rD   c                 "   [        U[        5      (       az  SU;   as  SU;   al  [        [        U5      5      nU R                  R                  US[        5        U R                  R                  X!5        U R                  R                  U5        gggg)zEnd inline image objectWHr   r   r   r   N)	r   r$   rs   idr  begin_figurer3   render_image
end_figure)ra   rk   iobjids      rE   do_EIPDFPageInterpreter.do_EI  sm    c9%%#*C\FKK$$V\?KKK$$V1KK""6*	 :D*%rD   
xobjid_argc           	         [        U5      n [        U R                  U   5      n[        R                  SU5        UR                  S5      nU[        L a  SU;   a  U R                  5       n[        [        [        US   5      5      n[        [        [        UR                  S[         5      5      5      nUR                  S5      nU(       a  [#        U5      n	OU R$                  R'                  5       n	U R(                  R+                  X&U5        UR-                  U	U/[/        XpR0                  5      S9  U R(                  R3                  U5        gU[4        L ad  S	U;   a^  S
U;   aX  U R(                  R+                  US[         5        U R(                  R7                  X#5        U R(                  R3                  U5        gg! [         a&    [        R
                  (       a  [        SU-  5      e gf = f)zInvoke named XObjectzUndefined xobject id: %rNzProcessing xobj: %rr   BBoxr4   	Resourcesr$  WidthHeightrz  )r2   r(   r  r  r   r   rH   r   r   r   LITERAL_FORMr
  r   r7   r&   r4   r3   r%   r  rl   r  r|  render_contentsr9   r$  r~  LITERAL_IMAGEr}  )
ra   r  r   xobjr   interpreterbboxrR   xobjresr  s
             rE   do_Do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$$V6:''1 ( 
 KK""6*%'T/h$>NKK$$V\?KKK$$V2KK""6* ?  	)*Dv*MNN	s   F= =-G-,G-pagec                    [         R                  SU5        UR                  u  p#pEUR                  S:X  a
  SSSSU* U4nO;UR                  S:X  a  SSSSXE4nO#UR                  S:X  a	  SSSSXR* 4nO
SSSSU* U* 4nU R                  R                  X5        U R                  UR                  UR                  US9  U R                  R                  U5        g )	NzProcessing page: %rZ   r   r      i  r  )
r   r   mediaboxrotater  
begin_pager  r  contentsend_page)ra   r  x0y0rz  r{  r$  s          rE   process_pagePDFPageInterpreter.process_page  s    		'.==;;"b!QR(C[[Cq!R(C[[CaQC(CaAsRC(Ct)T^^T]]DT"rD   r   c                     [         R                  SUUU5        U R                  U5        U R                  U5        U R	                  [        U5      5        g)zDRender the content streams.

This method may be called recursively.
z1render_contents: resources=%r, streams=%r, ctm=%rN)r   r   r"  r,  executer&   )ra   r  r   r$  s       rE   r  "PDFPageInterpreter.render_contents  sI     			?		
 	I&Z()rD   c                     [        U5      n  UR                  5       u  p4[        U[        5      (       a  [        U5      nSUR                  SS5      R                  SS5      R                  SS5      -  n[        X5      (       a  [        X5      nUR                  R                  S-
  nU(       a<  U R                  U5      n	[        R                  S	XY5        [        U	5      U:X  a  U" U	6   OU[        R                  S
U5        U" 5         O7[        R                   (       a  SU-  n
[#        U
5      eOU R%                  U5        GM7  ! [         a     g f = f! [         a     g f = f)Nzdo_%s*_a"_w'_qr   zexec: %s %rzexec: %szUnknown operator: %r)r   r)   
nextobjectr   r-   r1   replacehasattrgetattr__code__co_argcountr4  r   r   r   r   r   rH   r   )ra   r   parserr   rk   r  methodfuncnargsargsr   s              rE   r  PDFPageInterpreter.execute  sC   	%g.F !,,. #y))#C( 4<<T#:#B#B3#M#U#U$  4(("40D MM559E#xx		-<t9- $K		*d3__ 6 =I-i88 % 		#5   		  s"   E E 
EE
E"!E")r+  r  r$  r*  r  r  r)  r&  r  r  r(  r  )rT   r  rq   )fr?   r@   rA   rB   r   r   r   rb   r
  r   r   r"  r4   r,  	PDFStackTr   r  r   r4  r	   rP   ru   r7  r;  r>  rA  rL  rQ  rT  rW  r[  r_  rb  re  ri  rt  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/  r2  r7  r;  r?  rC  rG  rT  rW  rZ  r]  rb  rg  rj  ro  rr  ru  r  r  r!   r  r3   r   r  r  rC   r=   rD   rE   r  r  k  sp   
 2 I $ 9'4VV^(< '4 '4R
,f 
, 
,"	 "d "S T)_ K5)N#O K&V\?:;& 
&56
** * 	*
 * * * 
*(6i 6D 6,I ,$ ,.Y .4 .2y 2T 2/ /9 / /*I *$ *.Y .4 .F) F F'i 'I '$ ''i 'I '$ ''' ' 	'
 ' ' ' 
'@'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 
=+Z+Z4& 4T 4 *( t  9  )  ) I $ 19 1 119 1 1-9 - -0Y 04 01I 1 1t 1,	-I 	-$ 	-)) ) )+	 +y +T +$+	 +y +T +.// / 	/
 / / / 
/*+
 
t 
y T y T 	 y Y 4 (&+ +t +$	 $d $L# #T #& &	*'* &!* 	*
 
*( x/  D  rD   r  )Yloggingr   ior   typingr   r   r   r   r   r	   r
   r   pdfminerr   pdfminer.castingr   r   r   r   r   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/   r0   r1   r2   pdfminer.utilsr3   r4   r5   r6   r7   r8   r9   	getLoggerr?   r   r;   rH   r   r   r   r  r  rP   floatColorru   r   r   r  r  r=   rD   rE   <module>r     sY    	  N N N  S S 2 2 B 4 >  %   5	 	 	   !	| 		, 	 %j6{6{6{G4! 4!n 			%
	%u
$%'	/
 /
dE EPg$}U9i+?%@A g$T 	"	 6F FrD   