
    SAi              
           S SK r S SKJr  S SKJrJrJrJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJrJrJrJr  S SKJr  S S	KJrJrJr  \(       a  S S
KJr  \ R6                  " \5      r " S S\5      r " S S\\\\\S4      5      r " S S\5      r g)    N)BytesIO)TYPE_CHECKINGBinaryIOOptionalUnion)settings)safe_int)PDFException)	PDFObjRef	PDFStream
dict_value	int_value)PSEOF)KWD	PSKeywordPSStackParser)PDFDocumentc                       \ rS rSrSrg)PDFSyntaxError    N)__name__
__module____qualname____firstlineno____static_attributes__r       N/var/www/html/land-ocr/venv/lib/python3.13/site-packages/pdfminer/pdfparser.pyr   r      s    r   r   c                       \ rS rSrSrS\SS4S jrSS jr\" S5      r	\" S	5      r
\" S
5      r\" S5      r\" S5      r\" S5      rS\S\SS4S jrSrg)	PDFParser   ar  PDFParser fetch PDF objects from a file stream.
It can handle indirect references by referring to
a PDF document set by set_document method.
It also reads XRefs at the end of every PDF file.

Typical usage:
  parser = PDFParser(fp)
  parser.read_xref()
  parser.read_xref(fallback=True) # optional
  parser.set_document(doc)
  parser.seek(offset)
  parser.nextobject()

fpreturnNc                 L    [         R                  " X5        S U l        SU l        g )NF)r   __init__docfallback)selfr"   s     r   r%   PDFParser.__init__'   s    t(*.r   c                     Xl         g)z0Associates the parser with a PDFDocument object.N)r&   )r(   r&   s     r   set_documentPDFParser.set_document,   s    r      Rs   nulls   endobjs   streams   xrefs	   startxrefpostokenc           	         X R                   U R                  4;   a  U R                  " U R                  S5      6   gX R                  L a  U R                  " U R                  S5      6   gX R
                  L a  U R                  US45        gX R                  L ah  [        U R                  5      S:  aN  U R                  S5      u  u  p4n[        U5      nUb)  [        U R                  U5      nU R                  X45        gggX R                  L Ga  U R                  S5      u  u  p7[        U5      nSnU R                  (       d   [!        US   5      nU R+                  U5         U R-                  5       u  p9U[        U	5      -  nU R0                  R+                  U5        [3        U R0                  R5                  U5      5      n
U R+                  X-   5          U R-                  5       u  pS	U	;   a.  U	R7                  S	5      nX-  nU R                  (       a  XSU -  n
O%U[        U	5      -  nU R                  (       a  X-  n
Ml  U R+                  X-   5        [8        R;                  S
UUUU
SS 5        U R                  c   e[=        U[?        U
5      U R                  R@                  5      nU R                  X45        gU R                  X45        g! ["         a'    [$        R&                  (       a  [)        SU-  5      e GNf = f! [.         a#    [$        R&                  (       a  [)        S5      e gf = f! [.         a%    [$        R&                  (       a  [)        S5      e GM   f = f)zHandles PDF-related keywords.      N   r   Lengthz/Length is undefined: %rzUnexpected EOFs	   endstreamz-Stream: pos=%d, objlen=%d, dic=%r, data=%r...
   )!KEYWORD_XREFKEYWORD_STARTXREFadd_resultspopKEYWORD_ENDOBJKEYWORD_NULLpush	KEYWORD_Rlencurstackr	   r   r&   KEYWORD_STREAMr   r'   r   KeyErrorr   STRICTr   seeknextliner   r"   	bytearrayreadindexlogdebugr   bytesdecipher)r(   r.   r/   _
_object_id	object_idobjdicobjlenlinedatalineposistreams                 r   
do_keywordPDFParser.do_keyword7   s   &&(>(>??dhhqk*)))dhhqk*'''IIsDk"nn$4==!Q&%)XXa["$Z0	(#DHHi8CIIsj) ) ' )))((1+KXaS/CF==O&s8}5F IIcN MMO	
 3t9CGGLLTWW\\&12DIIcl#&*mmoOW
  4'

<0AKF}}Ra(#d)#==LD   IIcl#II?Sb	 88'''sE$K1B1BCFIIsm$ IIsl#[   O,-G#-MNN 'O  ??()9::  ,-=>>s6   K #L L4 -L L*L10L14*M#"M#)r&   r'   )r&   r   r#   N)r   r   r   r   __doc__r   r%   r+   r   r=   r;   r:   r@   r6   r7   intr   rW   r   r   r   r   r    r       sw    8  
 D	Iw<L^N^Nw<LL)J$c J$) J$ J$r   r    c                   Z    \ rS rSrSrS\SS4S jrSS jr\" S5      r	S	\
S
\SS4S jrSrg)PDFStreamParser   a  PDFStreamParser is used to parse PDF content streams
that is contained in each page and has instructions
for rendering the page. A reference to a PDF document is
needed because a PDF content stream can also have
indirect references to other objects in the same document.
rS   r#   Nc                 B    [         R                  U [        U5      5        g N)r    r%   r   )r(   rS   s     r   r%   PDFStreamParser.__init__   s    4/r   c                 >    U R                   " U R                  5       6   g r_   )r8   popall)r(   s    r   flushPDFStreamParser.flush   s    $++-(r   s   objr.   r/   c                 V   X R                   L aM  U R                  S5      u  u  p4n[        U5      nUb(  [        U R                  U5      nU R                  X45        g X R                  U R                  4;   a!  [        R                  (       a  [        S5      eg U R                  X45        g )Nr3   zKeyword endobj found in stream)r=   r9   r	   r   r&   r<   KEYWORD_OBJr:   r   rB   r   )r(   r.   r/   rL   rM   rN   rO   s          r   rW   PDFStreamParser.do_keyword   s    NN"!%!OQQ ,I$)4		3*%'')<)<== %%EFF 			3,r   r   )r#   N)r   r   r   r   rY   rJ   r%   rc   r   rf   rZ   r   rW   r   r   r   r   r\   r\      sD    0U 0t 0) f+K c  )    r   r\   )!loggingior   typingr   r   r   r   pdfminerr   pdfminer.castingr	   pdfminer.pdfexceptionsr
   pdfminer.pdftypesr   r   r   r   pdfminer.psexceptionsr   pdfminer.psparserr   r   r   pdfminer.pdfdocumentr   	getLoggerr   rH   r   r    r\   r   r   r   <module>rs      sy      ; ;  % / I I ' ; ;0!	\ 	
j$eIy)T$IJK j$Z" i " r   