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NFKCNFD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   rsrcmgrmetadatainfoupdateitemsr   loggerwarningstr)selfr"   r#   r$   r%   r&   r'   r(   r)   r.   er6   kvr0   r0   G/var/www/html/govbot/env/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'   rE   settingFrbT)r$   r%   r&   r'   r(   r)   r#   r.   )r   
isinstancer;   pathlibPathopenr   close)clsrC   r%   r&   r'   r(   r)   rD   rE   rF   r.   r"   r#   r$   r0   r0   r@   rM   H   s<   
zPDF.openc                 C   s4   |    | jD ]}|  q| js| j  d S d S N)flush_cacher%   rN   r#   r"   )r<   pager0   r0   r@   rN   |   s   

z	PDF.closec                 C   s   | S rP   r0   r<   r0   r0   r@   	__enter__   s   zPDF.__enter__tvalue	tracebackc                 C   s   |    d S rP   )rN   )r<   rU   rV   rW   r0   r0   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   rG   c               
   3   sT    t  j} 	 zt| V  W n ty   Y d S  ty( } zt|d }~ww qrP   )r   create_pagesr2   nextStopIterationr3   r   )genr=   rS   r0   r@   
iter_pages   s   zPDF.pages.<locals>.iter_pagesr   )page_numberinitial_doctop)	hasattrr    r1   r   r   	enumerater   appendheight)r<   doctopppr]   irR   r^   pr0   rS   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)r`   rh   r%   objectskeysget)r<   all_objectsrg   kindr0   r0   r@   ri      s   

zPDF.objectsc                 C      dd | j D }ttj| S )Nc                 s       | ]}|j V  qd S rP   )annots.0rg   r0   r0   r@   	<genexpr>       zPDF.annots.<locals>.<genexpr>r%   list	itertoolschainr<   r\   r0   r0   r@   rp         z
PDF.annotsc                 C   rn   )Nc                 s   ro   rP   )
hyperlinksrq   r0   r0   r@   rs      rt   z!PDF.hyperlinks.<locals>.<genexpr>ru   ry   r0   r0   r@   r{      rz   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 r0   to_dict)rr   elemr0   r0   r@   
<listcomp>   s    z&PDF.structure_tree.<locals>.<listcomp>r   rS   r0   r0   r@   structure_tree   s
   zPDF.structure_treeobject_typesc                    s   | j  fdd| jD dS )Nc                    s   g | ]}|  qS r0   r|   )rr   rR   r   r0   r@   r      s    zPDF.to_dict.<locals>.<listcomp>r5   r%   r   )r<   r   r0   r   r@   r}      s   zPDF.to_dict)FNNNNFNT)	NNNFNFNrB   T)rG   N)rG   r   rP   )'__name__
__module____qualname__r   r!   r   r;   __annotations__r   r   r   boolr
   rK   rL   intr   r   r   r	   rA   classmethodr   rM   rN   rT   r   BaseExceptionr   rX   propertyr   r%   r   ri   rp   r{   r   r}   r0   r0   r0   r@   r      s   
 

	

,
	

3
	


(r   )1rw   loggingrK   ior   r   typesr   typingr   r   r   r   r	   r
   r   r   r   pdfminer.layoutr   pdfminer.pdfdocumentr   pdfminer.pdfinterpr   pdfminer.pdfpager   pdfminer.pdfparserr   _typingr   r   	containerr   rR   r   rD   r   r   	structurer   r   utilsr   utils.exceptionsr   	getLoggerr   r9   r   r0   r0   r0   r@   <module>   s(    ,
