
    )i              
       H   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  SS	K
Jr  SS
K
Jr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  \(       a  SSKJr  \ R0                  " \5      r " S S\5      r " S S\\\\\S4      5      r " S S\5      rg)    N)BytesIO)BinaryIOTYPE_CHECKINGOptionalUnion   )settings)PDFException)	PDFObjRef)	PDFStream)
dict_value)	int_value)KWD)PSEOF)	PSKeyword)PSStackParser)PSSyntaxError)PDFDocumentc                       \ rS rSrSrg)PDFSyntaxError    N)__name__
__module____qualname____firstlineno____static_attributes__r       R/var/www/html/land-doc-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   as  
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(,0r   c                     Xl         g)z0Associates the parser with a PDFDocument object.N)r'   )r)   r'   s     r   set_documentPDFParser.set_document2   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 a  [        U R                  5      S:  af   U R                  S5      u  u  p4u  p5[        U5      [        U5      pTU R                  c   e[        U R                  XE5      nU R                  X45        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 R2                  R-                  U5        [5        U R2                  R7                  U5      5      n
U R-                  X-   5          U R/                  5       u  pS	U	;   a.  U	R9                  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        [:        R=                  S
UUUU
SS 5        U R                  c   e[?        U[A        U
5      U R                  RB                  5      nU R                  X45        gU R                  X45        g! [         a     gf = f! [$         a'    [&        R(                  (       a  [+        SU-  5      e GNf = f! [0         a#    [&        R(                  (       a  [+        S5      e gf = f! [0         a%    [&        R(                  (       a  [+        S5      e GM0  f = f)zHandles PDF-related keywords.r      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curstackintr'   r   r   KEYWORD_STREAMr   r(   r   KeyErrorr	   STRICTr   seeknextliner   r#   	bytearrayreadindexlogdebugr   bytesdecipher)r)   r/   r0   _objidgennoobjdicobjlenlinedatalineposistreams                 r   
do_keywordPDFParser.do_keyword=   s    &&(>(>??dhhqk*)))dhhqk*'''IIsDk"nn$4==!Q&/3xx{,Za!&)%j#e*E88///#DHHe;C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 %    O,-G#-MNN 'O  ??()9::  ,-=>>sI   2A$K( K8 ;L, /M (
K54K58-L)(L),*MM*N
N)r'   r(   )r'   r   r$   N)r   r   r   r   __doc__r   r&   r,   r   r=   r;   r:   rA   r6   r7   r@   r   rX   r   r   r   r   r!   r!      sw     8  
 D	Iw<L^N^Nw<LL)M$c M$) M$ M$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.
rT   r$   Nc                 B    [         R                  U [        U5      5        g N)r!   r&   r   )r)   rT   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/   r0   c                    X R                   L aW   U R                  S5      u  u  p4u  p5[        U5      [        U5      pT[        U R                  XE5      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 ! [         a     g f = f)Nr3   zKeyword endobj found in stream)r=   r9   r@   r   r'   r<   r   KEYWORD_OBJr:   r	   rC   r   )r)   r/   r0   rM   rN   rO   rP   s          r   rX   PDFStreamParser.do_keyword   s    NN"+/88A;(!Za"%e*c%j%7		3*% '')<)<== %%EFF		3, ! s   AB5 5
CCr   )r$   N)r   r   r   r   rZ   rK   r&   rc   r   rf   r@   r   rX   r   r   r   r   r\   r\      sD    0U 0t 0) f+K c  )    r   r\   )loggingior   typingr   r   r   r    r	   pdftypesr
   r   r   r   r   psparserr   r   r   r   r   pdfdocumentr   	getLoggerr   rI   r   r!   r\   r   r   r   <module>rp      s      ; ;  "         # #(!	\ 	
n$eIy)T$IJK n$b# i # r   