o
    j7                     @   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   rsrcmgrmetadatainfoupdateitemsr   	Exceptionloggerwarningstr)selfr   r    r!   r"   r#   r$   r%   r,   kver'   r'   T/var/www/html/fyndo/pharma/fyndo/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$   r;   FrbT)r!   r"   r#   r$   r%   r    )r   
isinstancer2   pathlibPathopenr   close)clsr9   r"   r#   r$   r%   r:   r;   r   r    r!   r'   r'   r7   rA   A   s4   

zPDF.openc                 C   s4   |    | jD ]}|  q| js| j  d S d S N)flush_cacher"   rB   r    r   )r3   pager'   r'   r7   rB   n   s   

z	PDF.closec                 C   s   | S rD   r'   r3   r'   r'   r7   	__enter__w   s   zPDF.__enter__tvalue	tracebackc                 C   s   |    d S rD   )rB   )r3   rI   rJ   rK   r'   r'   r7   __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_numberinitial_doctop)
hasattrr   r(   	enumerater   create_pagesr)   r   appendheight)r3   doctopppirF   rM   pr'   r'   r7   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)rO   rX   r"   objectskeysget)r3   all_objectsrW   kindr'   r'   r7   rY      s   

zPDF.objectsc                 C      dd | j D }ttj| S )Nc                 s       | ]}|j V  qd S rD   )annots.0rW   r'   r'   r7   	<genexpr>       zPDF.annots.<locals>.<genexpr>r"   list	itertoolschainr3   genr'   r'   r7   r`         z
PDF.annotsc                 C   r^   )Nc                 s   r_   rD   )
hyperlinksra   r'   r'   r7   rc      rd   z!PDF.hyperlinks.<locals>.<genexpr>re   ri   r'   r'   r7   rl      rk   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)rb   elemr'   r'   r7   
<listcomp>   s    z&PDF.structure_tree.<locals>.<listcomp>r   rG   r'   r'   r7   structure_tree   s
   zPDF.structure_treeobject_typesc                    s   | j  fdd| jD dS )Nc                    s   g | ]}|  qS r'   rm   )rb   rF   rr   r'   r7   rp      s    zPDF.to_dict.<locals>.<listcomp>r+   r"   rt   )r3   rr   r'   rs   r7   rn      s   zPDF.to_dict)FNNNNF)NNNFFN)r<   N)r<   r   rD   )%__name__
__module____qualname__r   r   r   r2   __annotations__r   r   r   boolr   r?   r@   intr	   r   r   r8   classmethodrA   rB   rH   r
   BaseExceptionr   rL   propertyr   r"   r   rY   r`   rl   rq   rn   r'   r'   r'   r7   r      s   
 

%	
,
	


(r   ).rg   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   rF   r   r:   r   	structurer   r   utilsr   	getLoggerru   r0   r   r'   r'   r'   r7   <module>   s(    $
