o
    h*                     @   s  d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
mZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d
dlmZmZ d
dlm Z  d
dl!m"Z" d
dl#m$Z$m%Z% d
dl&m'Z'm(Z( d
dl)m*Z* d
dl+m,Z, e-e.Z/G dd de Z0dS )    N)BufferedReaderBytesIO)TracebackType)	AnyDict	GeneratorListLiteralOptionalTupleTypeUnion)LAParams)PDFDocument)PDFResourceManager)PDFPage)	PDFParser   )T_num
T_obj_list)	Container)Page)T_repair_setting_repairPDFStructTreeStructTreeMissing)resolve_and_decode)PdfminerExceptionc                   @   s"  e Zd ZU ejdg Zee ed< 								d0dee	e
f dedeej d	eeee ee f  d
eeeef  dee dedeed  defddZe									d1deeeje	e
f d	eeee ee f  d
eeeef  dee dedeed  dedeeeejf  dededd fddZd2ddZd3ddZdeee  dee d ee ddfd!d"Zedee fd#d$Z edeee!f fd%d&Z"edeeeef  fd'd(Z#edeeeef  fd)d*Z$edeeeef  fd+d,Z%d4d-eee  deeef fd.d/Z&dS )5PDF_pagescached_propertiesFNTstreamstream_is_externalpathpageslaparamspasswordstrict_metadataunicode_norm)NFCNFKCZNFDZNFKDraise_unicode_errorsc
                 C   s  || _ || _|| _|| _|d u rd ntdi || _|| _|| _|	| _zt	t
||p+dd| _W n ty@ }
 zt|
d }
~
ww t | _i | _| jjD ]}| j| qL| j D ]/\}}z	t|| j|< W qZ ty }
 z|rr td| dt|
  W Y d }
~
qZd }
~
ww d S )N )r'   z[WARNING] Metadata key "z(" could not be parsed due to exception:  )r"   r#   r$   pages_to_parser   r&   r'   r)   r,   r   r   doc	Exceptionr   r   Zrsrcmgrmetadatainfoupdateitemsr   loggerwarningstr)selfr"   r#   r$   r%   r&   r'   r(   r)   r,   er3   kvr.   r.   A/var/www/html/venv/lib/python3.10/site-packages/pdfplumber/pdf.py__init__   s@   zPDF.__init__default
path_or_fprepairgs_pathrepair_settingreturnc                 C   s   |rt ||||	d}d}d }nt|ttjfr$t|d}d}t|}n|}d}d }z| |||||||||
d	W S  tyF   |sE|   w )N)r'   rB   ZsettingFrbT)r$   r%   r&   r'   r(   r)   r#   r,   )r   
isinstancer8   pathlibPathopenr   close)clsr@   r%   r&   r'   r(   r)   rA   rB   rC   r,   r"   r#   r$   r.   r.   r=   rI   H   s<   
zPDF.openc                 C   s4   |    | jD ]}|  q| js| j  d S d S N)Zflush_cacher%   rJ   r#   r"   )r9   pager.   r.   r=   rJ   |   s   

z	PDF.closec                 C   s   | S rL   r.   r9   r.   r.   r=   	__enter__   s   zPDF.__enter__tvalue	tracebackc                 C   s   |    d S rL   )rJ   )r9   rP   rQ   rR   r.   r.   r=   __exit__   s   zPDF.__exit__c                    s   t  dr jS d} j}g  _dttd d f f fdd}t| D ]$\}}|d }|d ur4||vr4q#t |||d} j| ||j7 }q# jS )Nr    r   rD   c               
   3   sT    t  j} 	 zt| V  W n ty   Y d S  ty( } zt|d }~ww qrL   )r   Zcreate_pagesr0   nextStopIterationr1   r   )genr:   rN   r.   r=   
iter_pages   s   zPDF.pages.<locals>.iter_pagesr   )page_numberZinitial_doctop)	hasattrr    r/   r   r   	enumerater   appendheight)r9   ZdoctoppprW   irM   rX   pr.   rN   r=   r%      s   

z	PDF.pagesc                 C   sV   t | dr| jS i }| jD ]}|j D ]}||g |j|  ||< qq|| _| jS )N_objects)rY   r`   r%   objectskeysget)r9   Zall_objectsr_   kindr.   r.   r=   ra      s   

zPDF.objectsc                 C      dd | j D }ttj| S )Nc                 s       | ]}|j V  qd S rL   )annots.0r_   r.   r.   r=   	<genexpr>       zPDF.annots.<locals>.<genexpr>r%   list	itertoolschainr9   rV   r.   r.   r=   rg         z
PDF.annotsc                 C   re   )Nc                 s   rf   rL   )
hyperlinksrh   r.   r.   r=   rj      rk   z!PDF.hyperlinks.<locals>.<genexpr>rl   rp   r.   r.   r=   rr      rq   zPDF.hyperlinksc                 C   s,   z
dd t | D W S  ty   g  Y S w )z+Return the structure tree for the document.c                 S   s   g | ]}|  qS r.   to_dict)ri   elemr.   r.   r=   
<listcomp>   s    z&PDF.structure_tree.<locals>.<listcomp>r   rN   r.   r.   r=   structure_tree   s
   zPDF.structure_treeobject_typesc                    s   | j  fdd| jD dS )Nc                    s   g | ]}|  qS r.   rs   )ri   rM   rx   r.   r=   rv      s    zPDF.to_dict.<locals>.<listcomp>r2   r%   rz   )r9   rx   r.   ry   r=   rt      s   zPDF.to_dict)FNNNNFNT)	NNNFNFNr?   T)rD   N)rD   r   rL   )'__name__
__module____qualname__r   r!   r   r8   __annotations__r   r   r   boolr
   rG   rH   intr   r   r   r	   r>   classmethodr   rI   rJ   rO   r   BaseExceptionr   rS   propertyr   r%   r   ra   rg   rr   rw   rt   r.   r.   r.   r=   r      s   
 

	

,
	

3
	


(r   )1rn   loggingrG   ior   r   typesr   typingr   r   r   r   r	   r
   r   r   r   Zpdfminer.layoutr   Zpdfminer.pdfdocumentr   Zpdfminer.pdfinterpr   Zpdfminer.pdfpager   Zpdfminer.pdfparserr   Z_typingr   r   	containerr   rM   r   rA   r   r   Z	structurer   r   utilsr   Zutils.exceptionsr   	getLoggerr{   r6   r   r.   r.   r.   r=   <module>   s(    ,
