o
    ީZh7                     @   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 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 ddlmZ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) e*e+Z,G dd de Z-dS )    N)BufferedReaderBytesIO)TracebackType)AnyDictListOptionalTupleTypeUnion)LAParams)PDFDocument)PDFResourceManager)PDFPage)	PDFParser)PSException   )T_num
T_obj_list)	Container)Page)_repairPDFStructTreeStructTreeMissing)resolve_and_decodec                   @   s  e Zd ZU ejdg Zee ed< 						d*d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fddZe						d+d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deeeejf  dd fddZd,ddZd-d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#d.d'eee  deeef fd(d)Z$dS )/PDF_pagescached_propertiesFNstreamstream_is_externalpathpageslaparamspasswordstrict_metadatac                 C   s   || _ || _|| _|| _|d u rd ntdi || _|| _tt||p$dd| _	t
 | _i | _| j	jD ]}| j| q3| j D ]/\}	}
z	t|
| j|	< W qA typ } z|rY td|	 dt|  W Y d }~qAd }~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   docr   Zrsrcmgrmetadatainfoupdateitemsr   	Exceptionloggerwarningstr)selfr   r    r!   r"   r#   r$   r%   r+   kver'   r'   E/var/www/html/lang_env/lib/python3.10/site-packages/pdfplumber/pdf.py__init__   s2   
zPDF.__init__
path_or_fprepairgs_path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yC   |	sB|   w )N)r$   r:   FrbT)r!   r"   r#   r$   r%   r    )r   
isinstancer1   pathlibPathopenr   close)clsr8   r"   r#   r$   r%   r9   r:   r   r    r!   r'   r'   r6   r@   A   s4   

zPDF.openc                 C   s4   |    | jD ]}|  q| js| j  d S d S N)Zflush_cacher"   rA   r    r   )r2   pager'   r'   r6   rA   n   s   

z	PDF.closec                 C   s   | S rC   r'   r2   r'   r'   r6   	__enter__w   s   zPDF.__enter__tvalue	tracebackc                 C   s   |    d S rC   )rA   )r2   rG   rH   rI   r'   r'   r6   __exit__z   s   zPDF.__exit__c                 C   s   t | dr| jS d}| j}g | _tt| jD ]$\}}|d }|d ur)||vr)qt| |||d}| j| ||j	7 }q| jS )Nr   r   r   )page_numberZinitial_doctop)
hasattrr   r(   	enumerater   Zcreate_pagesr)   r   appendheight)r2   ZdoctopppirD   rK   pr'   r'   r6   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)rL   rS   r"   objectskeysget)r2   Zall_objectsrR   kindr'   r'   r6   rT      s   

zPDF.objectsc                 C      dd | j D }ttj| S )Nc                 s       | ]}|j V  qd S rC   )annots.0rR   r'   r'   r6   	<genexpr>       zPDF.annots.<locals>.<genexpr>r"   list	itertoolschainr2   genr'   r'   r6   rZ         z
PDF.annotsc                 C   rX   )Nc                 s   rY   rC   )
hyperlinksr[   r'   r'   r6   r]      r^   z!PDF.hyperlinks.<locals>.<genexpr>r_   rc   r'   r'   r6   rf      re   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)r\   elemr'   r'   r6   
<listcomp>   s    z&PDF.structure_tree.<locals>.<listcomp>r   rE   r'   r'   r6   structure_tree   s
   zPDF.structure_treeobject_typesc                    s   | j  fdd| jD dS )Nc                    s   g | ]}|  qS r'   rg   )r\   rD   rl   r'   r6   rj      s    zPDF.to_dict.<locals>.<listcomp>r*   r"   rn   )r2   rl   r'   rm   r6   rh      s   zPDF.to_dict)FNNNNF)NNNFFN)r;   N)r;   r   rC   )%__name__
__module____qualname__r   r   r   r1   __annotations__r   r   r   boolr   r>   r?   intr	   r   r   r7   classmethodr@   rA   rF   r
   BaseExceptionr   rJ   propertyr   r"   r   rT   rZ   rf   rk   rh   r'   r'   r'   r6   r      s   
 

%	
,
	


(r   ).ra   loggingr>   ior   r   typesr   typingr   r   r   r   r	   r
   r   Zpdfminer.layoutr   Zpdfminer.pdfdocumentr   Zpdfminer.pdfinterpr   Zpdfminer.pdfpager   Zpdfminer.pdfparserr   Zpdfminer.psparserr   Z_typingr   r   	containerr   rD   r   r9   r   Z	structurer   r   utilsr   	getLoggerro   r/   r   r'   r'   r'   r6   <module>   s(    $
