
    %oi              
          S SK r S SKJr  S SK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  \ R4                  " \5      r " S S\5      r " S S\\\\\S4      5      r " S S\5      rg)    N)BytesIO)TYPE_CHECKINGBinaryIO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  p:U[        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! ["         a0  n	[$        R&                  (       a  [)        SU< 35      U	e Sn	A	GNSn	A	ff = f! [.         a+  n	[$        R&                  (       a  [)        S5      U	e Sn	A	gSn	A	ff = f! [.         a-  n	[$        R&                  (       a  [)        S5      U	e Sn	A	GM5  Sn	A	ff = f)zHandles PDF-related keywords.      N   r   Lengthz/Length is undefined: z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err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==X&s8}5F IIcN MMO	
 3t9CGGLLTWW\\&12DIIcl#'+}}$X
  4'

<0AKF}}Ra(#d)#==LD   IIcl#II?Sb	 88'''sE$K1B1BCFIIsm$ IIsl#[   X,/EcW-MNTWW 'X  ??()9:C  ,-=>CGsH   K #L M 
L
%LL

M!L==M
M<!M77M<)r%   r&   )r%   r   r"   N)r   r   r   r   __doc__r   r$   r*   r   r<   r:   r9   r?   r5   r6   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_   )r7   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 )Nr2   zKeyword endobj found in stream)r<   r8   r   r
   r%   r;   KEYWORD_OBJr9   r   rA   r   )r'   r-   r.   rK   rL   rM   rN   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   rI   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   pdfminerr   pdfminer.castingr   pdfminer.pdfexceptionsr	   pdfminer.pdftypesr
   r   r   r   pdfminer.psexceptionsr   pdfminer.psparserr   r   r   pdfminer.pdfdocumentr   	getLoggerr   rG   r   r   r\   r   r   r   <module>rs      sy      1 1  % / I I ' ; ;0!	\ 	
j$eIy)T$IJK j$Z" i " r   