o
     e                     @   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& 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)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"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   rsrcmgrmetadatainfoupdateitemsr   	Exceptionloggerwarningstr)selfr   r   r   r   r    r!   r"   r)   kver$   r$   A/var/www/html/venv/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!   r8   FrbT)r   r   r    r!   r"   r   )r   
isinstancer/   pathlibPathopenr   close)clsr6   r   r    r!   r"   r7   r8   r   r   r   r$   r$   r4   r>   @   s4   

zPDF.openc                 C   s    |    | js| j  d S d S N)flush_cacher   r   r?   r0   r$   r$   r4   r?   m   s   z	PDF.closec                 C   s   | S rA   r$   rC   r$   r$   r4   	__enter__r   s   zPDF.__enter__tvalue	tracebackc                 C   s   |    d S rA   )r?   )r0   rE   rF   rG   r$   r$   r4   __exit__u   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_numberinitial_doctop)
hasattrr   r%   	enumerater   create_pagesr&   r   appendheight)r0   doctopppipagerI   pr$   r$   r4   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)rK   rU   r   objectskeysget)r0   all_objectsrT   kindr$   r$   r4   rV      s   

zPDF.objectsc                 C      dd | j D }ttj| S )Nc                 s       | ]}|j V  qd S rA   )annots.0rT   r$   r$   r4   	<genexpr>       zPDF.annots.<locals>.<genexpr>r   list	itertoolschainr0   genr$   r$   r4   r]         z
PDF.annotsc                 C   r[   )Nc                 s   r\   rA   )
hyperlinksr^   r$   r$   r4   r`      ra   z!PDF.hyperlinks.<locals>.<genexpr>rb   rf   r$   r$   r4   ri      rh   zPDF.hyperlinksobject_typesc                    s   | j  fdd| jD dS )Nc                    s   g | ]}|  qS r$   )to_dict)r_   rS   rj   r$   r4   
<listcomp>   s    zPDF.to_dict.<locals>.<listcomp>r(   r   rn   )r0   rj   r$   rl   r4   rk      s   zPDF.to_dict)FNNNNF)NNNFFN)r9   N)r9   r   rA   )$__name__
__module____qualname__r   r   r   r/   __annotations__r   r   r   boolr   r<   r=   intr	   r   r   r5   classmethodr>   r?   rD   r
   BaseExceptionr   rH   propertyr   r   r   rV   r]   ri   rk   r$   r$   r$   r4   r      s   
 

%	
,



(r   )+rd   loggingr<   ior   r   typesr   typingr   r   r   r   r	   r
   r   pdfminer.layoutr   pdfminer.pdfdocumentr   pdfminer.pdfinterpr   pdfminer.pdfpager   pdfminer.pdfparserr   pdfminer.psparserr   _typingr   r   	containerr   rS   r   r7   r   utilsr   	getLoggerro   r-   r   r$   r$   r$   r4   <module>   s&    $
