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: //usr/lib/python3/dist-packages/pdfminer/__pycache__/pdfdocument.cpython-38.pyc
U

�R�]0k�@s�ddlZddlZddlZddlZzddlZWnek
rHddlZYnXz(ddlmZddlm	Z	ddl
mZWn(ek
r�dZ	Zddlm
ZYnXddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddl"m#Z#ddl"m$Z$ddl"m%Z%e�&e'�Z(Gdd�de �Z)Gdd�de�Z*Gdd �d e�Z+Gd!d"�d"e�Z,Gd#d$�d$e,�Z-Gd%d&�d&e,�Z.ed'�Z/ed(�Z0ed)�Z1Gd*d+�d+e2�Z3Gd,d-�d-e3�Z4Gd.d/�d/e4�Z5Gd0d1�d1e3�Z6Gd2d3�d3e2�Z7Gd4d5�d5e7�Z8Gd6d7�d7e8�Z9Gd8d9�d9e2�Z:dS):�N)�ARC4)�AES)�SHA256�)�arcfour)�PSEOF)�literal_name)�LIT)�KWD)�settings)�PDFException)�PDFTypeError)�	PDFStream)�PDFObjectNotFound)�decipher_all)�	int_value)�	str_value)�
list_value)�
dict_value)�stream_value)�PDFSyntaxError)�PDFStreamParser)�choplist)�nunpack)�decode_textc@seZdZdS)�PDFNoValidXRefN��__name__�
__module__�__qualname__�r r �6/usr/lib/python3/dist-packages/pdfminer/pdfdocument.pyr,src@seZdZdS)�
PDFNoOutlinesNrr r r r!r"/sr"c@seZdZdS)�PDFDestinationNotFoundNrr r r r!r#2sr#c@seZdZdS)�PDFEncryptionErrorNrr r r r!r$5sr$c@seZdZdS)�PDFPasswordIncorrectNrr r r r!r%8sr%c@seZdZdS)�PDFTextExtractionNotAllowedNrr r r r!r&;sr&ZObjStmZXRefZCatalogc@s$eZdZdd�Zdd�Zdd�ZdS)�PDFBaseXRefcCst�dS�N)�NotImplementedError��selfr r r!�get_trailerHszPDFBaseXRef.get_trailercCsgSr(r r*r r r!�
get_objidsKszPDFBaseXRef.get_objidscCst|��dSr()�KeyError�r+�objidr r r!�get_posQszPDFBaseXRef.get_posN)rrrr,r-r1r r r r!r'Fsr'c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�PDFXRefcCsi|_i|_dSr()�offsets�trailerr*r r r!�__init__YszPDFXRef.__init__cCsd|j��S)Nz<PDFXRef: offsets=%r>�r3�keysr*r r r!�__repr__^szPDFXRef.__repr__c	Cs�z|��\}}|��sWqWntk
r8td��YnX|sJtd|��|�d�rb|�|��q�|���d�}t|�dkr�td||f��z(tj	r�t
t|�\}}nt
t|�\}}Wn$t
k
r�td||f��YnXt|||�D]�}z|��\}}Wntk
�rtd��YnX|���d�}t|�dk�rHtd	||f��|\}}	}
|
d
k�r^q�dtj	�rpt|�nt|�t|	�f|j|<q�qt�d|j�|�|�dS)Nz Unexpected EOF - file corrupted?zPremature eof: %r�trailer� �zTrailer not found: %r: line=%rzInvalid line: %r: line=%r�z Invalid XRef format: %r, line=%r�nzxref objects: %r)�nextline�striprr�
startswith�seek�split�len�six�PY2�map�long�int�
ValueError�ranger3�log�info�load_trailer)r+�parser�pos�line�f�start�nobjsr0�_�gennoZuser r r!�loadasF



,
zPDFXRef.loadcCs�z4|��\}}|td�ks&tt|���|��\}}Wn6tk
rj|�d�}|sZtd��|d\}}YnX|j�	t
|��t�d|j�dS)Nr9rzUnexpected EOF - file corruptedrz
trailer=%r)
�	nexttokenr
�AssertionError�str�
nextobjectr�poprr4�updaterrK�debug)r+rNrT�kwdZdic�xr r r!rM�s
zPDFXRef.load_trailercCs|jSr(�r4r*r r r!r,�szPDFXRef.get_trailercCst�|j�Sr()rDZiterkeysr3r*r r r!r-�szPDFXRef.get_objidscCs(z|j|WStk
r"�YnXdSr()r3r.r/r r r!r1�szPDFXRef.get_posN)
rrrr5r8rVrMr,r-r1r r r r!r2Ws'r2c@s&eZdZdd�Ze�d�Zdd�ZdS)�PDFXRefFallbackcCsd|j��S)Nz<PDFXRefFallback: offsets=%r>r6r*r r r!r8�szPDFXRefFallback.__repr__z^(\d+)\s+(\d+)\s+obj\bcCs�|�d�z|��\}}Wntk
r4Y�q�YnX|�d�rf|�|�|�|�t�d|j��q�tj	rv|�
d�}|j�|�}|s�q
|�
�\}}t|�}t|�}d||f|j|<|�|�|��\}}t|t�r
|�d�tkr
t|�}	z|	d}
Wn.tk
�r$tj�rtd|	��d}
YnXt|	���}g}z|��\}}|�|��q8Wntk
�rjYnXt|
t|�d�}
t|
�D]"}
||
d}||
df|j|<�q�q
dS)	Nrr9�trailer: %rzlatin-1�Type�N�N is not defined: %rr;) rAr>rr@rMrKrLr4rDZPY3�decode�
PDFOBJ_CUE�match�groupsrHr3rZ�
isinstancer�get�LITERAL_OBJSTMrr.r�STRICTrr�get_data�append�minrCrJ)r+rNrOrP�mr0rUrT�obj�stream�nZparser1�objs�index�objid1r r r!rV�sR






zPDFXRefFallback.loadN)rrrr8�re�compilergrVr r r r!ra�s
rac@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�
PDFXRefStreamcCs(d|_d|_d|_|_|_g|_dSr()�data�entlen�fl1�fl2�fl3�rangesr*r r r!r5�s
zPDFXRefStream.__init__cCs
d|jS)Nz<PDFXRefStream: ranges=%r>)r�r*r r r!r8�szPDFXRefStream.__repr__c	Cs�|��\}}|��\}}|��\}}|��\}}t|t�rF|dtk	rNtd��|d}|�dd|f�}t|�ddkr~td��|j	�
td|��|d\|_|_
|_|��|_|j|j
|j|_|j|_t�d	d
�tt|j	��|j|j
|j�dS)NrczInvalid PDF stream spec.ZSizeZIndexrr;zInvalid index number�Wz&xref stream: objid=%s, fields=%d,%d,%dz, )rWrZrjr�LITERAL_XREFrrkrCrr��extendrr}r~rrnr{r|�attrsr4rKrL�joinrF�repr)	r+rNrTr0rUr^rs�sizeZindex_arrayr r r!rV�s,
�zPDFXRefStream.loadcCs|jSr(r`r*r r r!r,�szPDFXRefStream.get_trailerccsn|jD]b\}}t|�D]P}|j|}|j|||j�}t|d|j�d�}|dks\|dkr||VqqdS)Nrr;)r�rJr|r{rr})r+rRrS�i�offset�ent�f1r r r!r-s
zPDFXRefStream.get_objidsc
Cs�d}|jD]6\}}||kr8|||kr8|||7}qJq
||7}q
t|��|j|}|j|||j�}t|d|j�d�}t||j|j|j��}t||j|jd��}	|dkr�d||	fS|dkr�||	dfSt|��dS)Nrrr;)r�r.r|r{rr}r~)
r+r0rvrRrSr�r�r��f2Zf3r r r!r1s"



zPDFXRefStream.get_posN)	rrrr5r8rVr,r-r1r r r r!rz�s
rzc@s�eZdZdZdZd#dd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd$dd �Zd!d"�ZdS)%�PDFStandardSecurityHandlers (�N^Nu�AdNV��..��h>�/��dSiz)r;r<�cCs||_||_||_|��dSr()�docid�param�password�init)r+r�r�r�r r r!r5+s
z#PDFStandardSecurityHandler.__init__cCs.|��|j|jkr"td|j��|��dS)NzUnsupported revision: param=%r)�init_params�r�supported_revisionsr$r��init_keyr*r r r!r�2s
zPDFStandardSecurityHandler.initcCslt|j�dd��|_t|jd�|_t|jd�|_t|jd�|_t|jd�|_t|j�dd��|_	dS)	N�Vr�R�P�O�UZLength�()
rr�rk�vr��pr�o�u�lengthr*r r r!r�9sz&PDFStandardSecurityHandler.init_paramscCs |�|j�|_|jdkrt�dSr()�authenticater��keyr%r*r r r!r�Bs
z#PDFStandardSecurityHandler.init_keycCst|jd@�S)N���boolr�r*r r r!�is_printableHsz'PDFStandardSecurityHandler.is_printablecCst|jd@�S)N�r�r*r r r!�
is_modifiableKsz(PDFStandardSecurityHandler.is_modifiablecCst|jd@�S)N�r�r*r r r!�is_extractableNsz)PDFStandardSecurityHandler.is_extractablecs�|jdkrt�|��|j�St�|j�}|�|jd�t�|��|���}t	dd�D]2�d�
�fdd�t�|�D��}t�|��|�}qV||7}|SdS)Nr;rr��c3s|]}t�|�A�VqdSr(�rDZint2byte��.0�c�r�r r!�	<genexpr>[sz7PDFStandardSecurityHandler.compute_u.<locals>.<genexpr>)
r�r�newZencrypt�PASSWORD_PADDING�md5r\r��digestrJr�rD�	iterbytes)r+r��hash�result�kr r�r!�	compute_uQs
z$PDFStandardSecurityHandler.compute_ucCs�||jdd�}t�|�}|�|j�|�t�d|j��|�|jd�|jdkrf|j	sf|�d�|�
�}d}|jdkr�|jd}td	�D]}t�|d|���
�}q�|d|�S)
N� z<lrr�s�����r<r��2)
r�r�r\r��struct�packr�r�r��encrypt_metadatar�r�rJ)r+r�r�r�rtrTr r r!�compute_encryption_key`s




z1PDFStandardSecurityHandler.compute_encryption_keycCs*|�d�}|�|�}|dkr&|�|�}|S)N�latin1)�encode�authenticate_user_password�authenticate_owner_password�r+r�r�r r r!r�rs



z'PDFStandardSecurityHandler.authenticatecCs |�|�}|�|�r|SdSdSr()r��verify_encryption_keyr�r r r!r�ys

z5PDFStandardSecurityHandler.authenticate_user_passwordcCs8|�|�}|jdkr||jkS|dd�|jdd�kS)Nr;r�)r�r�r�)r+r�r�r r r!r��s


z0PDFStandardSecurityHandler.verify_encryption_keycs�||jdd�}t�|�}|jdkrBtd�D]}t�|���}q.d}|jdkrZ|jd}|��d|�}|jdkr�t�|��|j	�}nF|j	}tddd�D]2�d	�
�fd
d�t�|�D��}t�|��|�}q�|�
|�S)Nr�r<r�r�r�r;����r�c3s|]}t�|�A�VqdSr(r�r�r�r r!r��szIPDFStandardSecurityHandler.authenticate_owner_password.<locals>.<genexpr>)r�r�r�rJr�r�rr��decryptr�r�rDr�r�)r+r�r�rTrtr�Z
user_passwordr�r r�r!r��s 




z6PDFStandardSecurityHandler.authenticate_owner_passwordNcCs|�|||�Sr()�decrypt_rc4)r+r0rUr{r�r r r!r��sz"PDFStandardSecurityHandler.decryptcCsb|jt�d|�dd�t�d|�dd�}t�|�}|��dtt|�d��}t�|��	|�S)N�<Lr<r;r�)
r�r�r�r�r�rprCrr�r��r+r0rUr{r�r�r r r!r��s.
z&PDFStandardSecurityHandler.decrypt_rc4)r�)N)rrrr�r�r5r�r�r�r�r�r�r�r�r�r�r�r�r�r�r r r r!r�%s"
	
r�csBeZdZdZ�fdd�Zdd�Zd
dd�Zd	d
�Zdd�Z�Z	S)�PDFStandardSecurityHandlerV4)r�cs�tt|���d|_t|j�d��|_t|jd�|_	t|jd�|_
t|j�dd��|_|j	|j
krtt
d|j��i|_|j��D]:\}}|�t|d��}|dkr�t
d	|j��||j|<q�|j|jd
<|j
|jkr�t
d|j��dS)N�ZCFZStmFZStrFZEncryptMetadataTz"Unsupported crypt filter: param=%rZCFMz%Unknown crypt filter method: param=%rZIdentityz Undefined crypt filter: param=%r)�superr�r�r�rr�rkZcfrZstmf�strfr�r�r$�cfm�items�get_cfm�decrypt_identity)r+r�r�rQ��	__class__r r!r��s$z(PDFStandardSecurityHandlerV4.init_paramscCs$|dkr|jS|dkr|jSdSdS)NZV2ZAESV2)r��decrypt_aes128�r+�namer r r!r��s
z$PDFStandardSecurityHandlerV4.get_cfmNcCsP|js0|dk	r0|�d�}|dk	r0t|�dkr0|S|dkr>|j}|j||||�S)NrcZMetadata)r�rkrr�r�)r+r0rUr{r�r��tr r r!r��s
z$PDFStandardSecurityHandlerV4.decryptcCs|Sr(r �r+r0rUr{r r r!r��sz-PDFStandardSecurityHandlerV4.decrypt_identitycCs~|jt�d|�dd�t�d|�dd�d}t�|�}|��dtt|�d��}tj|tj	|dd�d��
|dd��S)Nr�r<r;ssAlTr���modeZIV)r�r�r�r�r�rprCrr��MODE_CBCr�r�r r r!r��s2
z+PDFStandardSecurityHandlerV4.decrypt_aes128)NN)
rrrr�r�r�r�r�r��
__classcell__r r r�r!r��s
	r�cs8eZdZdZ�fdd�Zdd�Zdd�Zdd	�Z�ZS)
�PDFStandardSecurityHandlerV5)r�cs�tt|���d|_t|jd�|_t|jd�|_|jdd�|_	|jdd�|_
|jdd�|_|jdd�|_
|jdd�|_|jdd�|_dS)N�ZOEZUEr�r�)r�r�r�r�rr��oe�uer��o_hash�o_validation_salt�
o_key_saltr��u_hash�u_validation_salt�
u_key_saltr*r�r r!r��sz(PDFStandardSecurityHandlerV5.init_paramscCs|dkr|jSdSdS)NZAESV3)�decrypt_aes256r�r r r!r��sz$PDFStandardSecurityHandlerV5.get_cfmcCs�|�d�dd�}t�|�}|�|j�|�|j�|��|jkr�t�|�}|�|j�|�|j�t	j|��t	j
dd��|j�St�|�}|�|j
�|��|jkr�t�|�}|�|j�t	j|��t	j
dd��|j�SdS)Nzutf-8�sr�)r�rr�r\r�r�r�r�r�rr�r�r�r�r�r�r�)r+r�r�r r r!r��s 



z)PDFStandardSecurityHandlerV5.authenticatecCs*tj|jtj|dd�d��|dd��S)Nr�r�)rr�r�r�r�r�r r r!r�sz+PDFStandardSecurityHandlerV5.decrypt_aes256)	rrrr�r�r�r�r�r�r r r�r!r��s

r�c@s�eZdZdZeed�Zedk	r6eed<edk	r6e	ed<ddd	�Z
ed
�Zd dd�Z
d
d�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)!�PDFDocumentaPPDFDocument object represents a PDF document.

    Since a PDF file can be very big, normally it is not loaded at
    once. So PDF document has to cooperate with a PDF parser in order to
    dynamically import the data as processing goes.

    Typical usage:
      doc = PDFDocument(parser, password)
      obj = doc.getobj(objid)

    )rr;Nr�r�r�TcCsb||_g|_g|_d|_d|_d|_d|_i|_i|_||_|j�	|�d|_
|_|_z|�
|�}|�|||j�Wntk
r�YnX|r�d|_t�}|�|�|j�|�|jD]x}|��}|s�q�d|kr�t|d�t|d�f|_|�|�d|k�r|j�t|d��d|kr�t|d�|_�q<q�td��|j�d�tk	�r^tj�r^td	��dS)
z1Set the document to use a given PDFParser object.NTZEncryptZIDZInfoZRootz(No /Root object! - Is this really a PDF?rczCatalog not found!)�caching�xrefsrL�catalog�
encryption�decipher�_parser�_cached_objs�_parsed_objs�set_documentr�r�r��	find_xref�read_xref_fromr�fallbackrarVror,rr�_initialize_passwordrrk�LITERAL_CATALOGrrm)r+rNr�r�r�rO�xrefr4r r r!r5sR




�

zPDFDocument.__init__�objcCs�|j\}}t|�d��dkr(td|��t|�dd��}|j�|�}|dkrXtd|��||||�}|j|_|��|_|�	�|_	|�
�|_
d|j_dS)NZFilterZStandardzUnknown filter: param=%rr�rzUnknown algorithm: param=%rF)
r�rrkr$r�security_handler_registryr�r�r�r�r�r�r�)r+r�r�r�r��factoryZhandlerr r r!r�Ss



z PDFDocument._initialize_passwordcCs�|j|jkr|j|j\}}n$|�|�\}}|jrB||f|j|j<|d|}z||}Wn tk
rztd|��YnX|S)Nr;zindex too big: %r)r0r��_get_objectsr��
IndexErrorr)r+rsrvr0rurtr�rrr r r!�_getobj_objstmcszPDFDocument._getobj_objstmcCs�|�d�tk	r tjr td|��z|d}Wn*tk
rVtjrNtd|��d}YnXt|���}|�|�g}z|�	�\}}|�
|�qtWntk
r�YnX||fS)NrczNot a stream object: %rrdrer)rkrlrrmrr.rrnr�rZror)r+rsrtrNrurTrrr r r!rqs$

zPDFDocument._get_objectsc	Cs�|j�|�|j��\}}|j��\}}|j��\}}||krzg}||jk	rf|j��\}}|�|�qB|rz|d}|d}||kr�td||f��|td�kr�td|��|j��\}}|S)N���r�zobjid mismatch: %r=%rr�zInvalid object spec: offset=%r)r�rArW�KEYWORD_OBJrorr
rZ)	r+rOr0rTrwrUr^r_rrr r r!�
_getobj_parse�s$
zPDFDocument._getobj_parsec
Cs2|dkst�|jstd��t�d|�||jkr@|j|\}}n�|jD]�}z|�|�\}}}Wntk
rvYqFYnXzj|dk	r�t|�	|��}|�
|||�}n"|�||�}|jr�t
|j|||�}t|t�r�|�||�W�q
WqFttfk
r�YqFYqFXqFt|��t�d||�|j�r.||f|j|<|S)NrzPDFDocument is not initializedzgetobj: objid=%rzregister: objid=%r: %r)rXr�rrKr]r�r1r.r�getobjrrr�rrjrZ	set_objidrrrr�)r+r0rrrUr�Zstrmidrvrsr r r!r�s8



zPDFDocument.getobjcs*d|jkrt��fdd���|jdd�S)NZOutlinesc3s�t|�}d|kr^d|ks d|kr^tt|d��}|�d�}|�d�}|�d�}|||||fVd|kr�d|kr��|d|d�D]
}|Vq�d|kr��|d|�D]
}|Vq�dS)	NZTitle�AZDestZSEZFirstZLastrZNext)rrrrk)�entry�level�title�dest�actionZser_��searchr r!r�s


z(PDFDocument.get_outlines.<locals>.searchr)r�r"r*r rr!�get_outlines�s
zPDFDocument.get_outlinesc	s\zt|jd�}Wn$ttfk
r6t��f��YnXt|��}���fdd���|�S)N�Namescs�d|kr,t|d�\}}�|ks(|�kr,dSd|krVt|d�}ttd|��}|�Sd|kr�t|d�D]}�t|��}|rj|Sqjt��f��dS)NZLimitsrr;ZKids)r�dictrrr.)�dZk1Zk2ru�namesr�r���catr��lookupr r!r�s
z'PDFDocument.lookup_name.<locals>.lookup)rr�r
r.)r+rr�r�d0r rr!�lookup_name�szPDFDocument.lookup_namecCsbz|�d|�}WnLtk
r\d|jkr2t|��t|jd�}||krPt|��||}YnX|S)NZDests)rr.r�r#r)r+r�rrrr r r!�get_dest�s
zPDFDocument.get_destcCsdd}|��D],}|��}t�d|�|dkr0qB|r|}qtd��t�d|�tjr\t|�St	|�S)z0Internal function used to locate the first XRef.Nz
find_xref: %rs	startxref�Unexpected EOFzxref found: pos=%r)
Zrevreadlinesr?rKr]rrLrDrErGrH)r+rN�prevrPr r r!r�szPDFDocument.find_xrefcCs|�|�|��z|��\}}Wntk
r>td��YnXt�d||�t|t�r||�|�|��t	�}|�
|�n"||jkr�|��t
�}|�
|�|�|�|��}t�d|�d|kr�t|d�}|�|||�d|k�rt|d�}|�|||�dS)z$Reads XRefs from the given location.rz"read_xref_from: start=%d, token=%rrbZXRefStmZPrevN)rA�resetrWrrrKrLrjrHrzrVZKEYWORD_XREFr>r2ror,rr�)r+rNrRr�rO�tokenr�r4r r r!r�s4






zPDFDocument.read_xref_from)r�TT)r�)rrr�__doc__r�rrr�rr�r5r
rr�rrrrrrrr�r�r r r r!r�s(
�
1
"r�);rxr�ZloggingrDZhashlibr��ImportErrorZ
Crypto.CipherrrZCrypto.Hashrr�rZpsparserrrr	r
rZpdftypesrr
rrrrrrrrZ	pdfparserrrZutilsrrrZ	getLoggerrrKrr"r#r$r%r&rlr�r��objectr'r2rarzr�r�r�r�r r r r!�<module>sj
N8H3/