HEX
Server: Apache
System: Linux srv1.prosuiteplus.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: prosuiteplus (1001)
PHP: 8.3.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/pdfminer/__pycache__/pdfparser.cpython-38.pyc
U

�R�]��@s�ddlZddlmZddlmZddlmZddlmZddlmZddlm	Z	dd	l
mZdd
l
mZddl
m
Z
ddl
mZdd
l
mZe�e�ZGdd�de�ZGdd�de�ZGdd�de�ZdS)�N)�BytesIO�)�
PSStackParser)�
PSSyntaxError)�PSEOF)�KWD)�settings)�PDFException)�	PDFStream)�	PDFObjRef)�	int_value)�
dict_valuec@seZdZdS)�PDFSyntaxErrorN)�__name__�
__module__�__qualname__�rr�4/usr/lib/python3/dist-packages/pdfminer/pdfparser.pyrsrc@sXeZdZdZdd�Zdd�Zed�Zed�Zed�Z	ed	�Z
ed
�Zed�Zdd
�Z
dS)�	PDFParsera�
    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()

    cCst�||�d|_d|_dS)NF)r�__init__�doc�fallback)�self�fprrrr,szPDFParser.__init__cCs
||_dS)z0Associates the parser with a PDFDocument object.N)r)rrrrr�set_document2szPDFParser.set_document�Rsnullsendobjsstreamsxrefs	startxrefc
	Cs�||j|jfkr$|j|�d���n�||jkrB|j|�d���nb||jkr^|�|df��nF||jkr�zH|�d�\\}}\}}t|�t|�}}t	|j
||�}|�||f�Wntk
r�YnX�n�||jk�r�|�d�\\}}t
|�}d}|j�s6zt|d�}Wn*tk
�r4tj�r0td|��YnX|�|�z|��\}}	Wn(tk
�rxtj�rrtd��YdSX|t|	�7}|j�|�t|j�|��}
|�||�z|��\}}	Wn,tk
�r�tj�r�td��Y�qFYnXd	|	k�r&|	�d	�}||7}|j�rF|
|	d|�7}
�qF|t|	�7}|j�r�|
|	7}
�q�t|
�}
|�||�t�d
||||
dd��t||
|j
j �}|�||f�n|�||f�dS)zHandles PDF-related keywords.r�N�rZLengthz/Length is undefined: %rzUnexpected 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�intrrr�KEYWORD_STREAMr
rr�KeyErrorr�STRICTr�seekZnextliner�lenr�	bytearray�read�index�bytes�log�debugr
Zdecipher)
r�pos�token�_�objid�genno�objZdicZobjlen�line�dataZlinepos�irrr�
do_keyword>sr






zPDFParser.do_keywordN)rrr�__doc__rrrr&r$r#r(rr r<rrrrrsrc@s0eZdZdZdd�Zdd�Zed�Zdd�Zd	S)
�PDFStreamParsera(
    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.
    cCst�|t|��dS�N)rrr)rr:rrrr�szPDFStreamParser.__init__cCs|j|���dSr?)r!Zpopall)rrrr�flush�szPDFStreamParser.flushsobjcCs�||jkrlzH|�d�\\}}\}}t|�t|�}}t|j||�}|�||f�Wntk
rfYnXdS||j|jfkr�t	j
r�td��dS|�||f�dS)NrzKeyword endobj found in stream)r&r"r'rrr%r�KEYWORD_OBJr#rr*r)rr3r4r5r6r7r8rrrr<�s
zPDFStreamParser.do_keywordN)	rrrr=rr@rrAr<rrrrr>�s
r>)Zlogging�iorZpsparserrrrr�rZpdftypesr	r
rrr
Z	getLoggerrr1rrr>rrrr�<module>s
q