
    Ng                     :   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 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%m&Z& ddl'm(Z(m)Z) ddl*m+Z+  ej,        e-          Z. G d de!          Z/dS )    N)BufferedReaderBytesIO)TracebackType)AnyDictListLiteralOptionalTupleTypeUnion)LAParams)PDFDocument)PDFResourceManager)PDFPage)	PDFParser)PSException   )T_num
T_obj_list)	Container)Page)T_repair_setting_repairPDFStructTreeStructTreeMissing)resolve_and_decodec                      e Zd ZU ej        dgz   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deed                  f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ed                  dedeeeej        f                  dedd fd            Zd%dZd&dZdeee                  dee         dee         ddfdZedee         fd            Z edeee!f         fd            Z"edeeeef                  fd            Z#edeeeef                  fd            Z$edeeeef                  fd             Z%d'd!eee                  deeef         fd"Z&dS )(PDF_pagescached_propertiesFNstreamstream_is_externalpathpageslaparamspasswordstrict_metadataunicode_norm)NFCNFKCNFDNFKDc	           
      P   || _         || _        || _        || _        |d nt	          di || _        || _        || _        t          t          |          |pd          | _
        t                      | _        i | _        | j
        j        D ]}	| j                            |	           | j                                        D ]d\  }
}	 t#          |          | j        |
<   # t$          $ r:}|r t&                              d|
 dt+          |                      Y d }~]d }~ww xY 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   docr   rsrcmgrmetadatainfoupdateitemsr   	Exceptionloggerwarningstr)selfr#   r$   r%   r&   r'   r(   r)   r*   r6   kves                J/var/www/html/ai-engine/env/lib/python3.11/site-packages/pdfplumber/pdf.py__init__zPDF.__init__   su    "4	# ( 0h6J6J6J6J (y008>rJJJ)++HM 	' 	'DM  &&&&M'')) 	 	DAq#5a#8#8a   	 	 	"  +q + +"%a&&+ +       		 	s   C
D#)0DD#default
path_or_fprepairgs_pathrepair_settingreturnc
           
      D   |rt          ||||	          }
d}d }nNt          |t          t          j        f          r't          |d          }
d}t          j        |          }n|}
d}d }	  | |
|||||||          S # t          $ r |s|
                                  w xY w)N)r(   rF   settingFrbT)r%   r&   r'   r(   r)   r*   r$   )r   
isinstancer<   pathlibPathopenr   close)clsrD   r&   r'   r(   r)   r*   rE   rF   rG   r#   r$   r%   s                rA   rO   zPDF.openC   s       	Xw  F "' DD
S',$788 	*d++F!&<
++DDF!%D	3!! /)#5	 	 	 	  	 	 	% 	s   *A= ="Bc                     |                                   | j        D ]}|                                 | j        s| j                                         d S d S N)flush_cacher&   rP   r$   r#   )r=   pages     rA   rP   z	PDF.closeu   sc    J 	 	DJJLLLL& 	 K	  	     c                     | S rS   r1   r=   s    rA   	__enter__zPDF.__enter__~   s    rV   tvalue	tracebackc                 .    |                                   d S rS   )rP   )r=   rZ   r[   r\   s       rA   __exit__zPDF.__exit__   s     	

rV   c                 <   t          | d          r| j        S d}| j        }g | _        t          t	          j        | j                            D ]H\  }}|dz   }|||vrt          | |||          }| j                            |           ||j	        z  }I| j        S )Nr!   r   r   )page_numberinitial_doctop)
hasattrr!   r2   	enumerater   create_pagesr3   r   appendheight)r=   doctopppirU   r`   ps          rA   r&   z	PDF.pages   s    4"" 	; "$ !5dh!?!?@@ 	 	GAta%K~+R"7"7T4[PPPAKq!!!ahFF{rV   c                     t          | d          r| j        S i }| j        D ]E}|j                                        D ])}|                    |g           |j        |         z   ||<   *F|| _        | j        S )N_objects)rb   rl   r&   objectskeysget)r=   all_objectsrj   kinds       rA   rm   zPDF.objects   s    4$$ 	!= -/ 	P 	PA	(( P P$/OOD"$=$=	$$OD!!P/:}rV   c                 Z    d | j         D             }t          t          j        |           S )Nc              3   $   K   | ]}|j         V  d S rS   )annots.0rj   s     rA   	<genexpr>zPDF.annots.<locals>.<genexpr>   s$      ,,Aqx,,,,,,rV   r&   list	itertoolschainr=   gens     rA   rt   z
PDF.annots   s,    ,,,,,IOS)***rV   c                 Z    d | j         D             }t          t          j        |           S )Nc              3   $   K   | ]}|j         V  d S rS   )
hyperlinksru   s     rA   rw   z!PDF.hyperlinks.<locals>.<genexpr>   s$      00q|000000rV   rx   r|   s     rA   r   zPDF.hyperlinks   s,    00TZ000IOS)***rV   c                 Z    	 d t          |           D             S # t          $ r g cY S w xY w)z+Return the structure tree for the document.c                 6    g | ]}|                                 S r1   to_dict)rv   elems     rA   
<listcomp>z&PDF.structure_tree.<locals>.<listcomp>   s     CCCtDLLNNCCCrV   r   rX   s    rA   structure_treezPDF.structure_tree   sG    	CC}T/B/BCCCC  	 	 	III	s    **object_typesc                 :    | j         fd| j        D             dS )Nc                 :    g | ]}|                               S r1   r   )rv   rU   r   s     rA   r   zPDF.to_dict.<locals>.<listcomp>   s%    HHHTdll<00HHHrV   r5   r&   r   )r=   r   s    `rA   r   zPDF.to_dict   s0    HHHHTZHHH
 
 	
rV   )FNNNNFN)NNNFNFNrC   )rH   N)rH   r    rS   )'__name__
__module____qualname__r   r"   r   r<   __annotations__r   r   r   boolr
   rM   rN   intr   r   r   r	   rB   classmethodr   rO   rP   rY   r   BaseExceptionr   r^   propertyr   r&   r   rm   rt   r   r   r   r1   rV   rA   r    r       s        #,#>(#KtCyKKK
 $)'+8<-1"& %HL% %ng-.% !% w|$	%
 d3is345% 4S>*% 3-% % w'CDE% % % %N  9=-1"& %HL6:+4/ /#w|^WDE/ d3is345/ 4S>*	/
 3-/ / w'CDE/ / %W\ 123/ )/ 
/ / / [/b          D'( & M*	
 
    tDz    X  c:o.    X +T#s(^, + + + X+ +Dc3h0 + + + X+ T#s(^ 4    X
 
HT#Y$7 
4S> 
 
 
 
 
 
rV   r    )0rz   loggingrM   ior   r   typesr   typingr   r   r   r	   r
   r   r   r   pdfminer.layoutr   pdfminer.pdfdocumentr   pdfminer.pdfinterpr   pdfminer.pdfpager   pdfminer.pdfparserr   pdfminer.psparserr   _typingr   r   	containerr   rU   r   rE   r   r   	structurer   r   utilsr   	getLoggerr   r:   r    r1   rV   rA   <module>r      s         & & & & & & & &       I I I I I I I I I I I I I I I I I I I I $ $ $ $ $ $ , , , , , , 1 1 1 1 1 1 $ $ $ $ $ $ ( ( ( ( ( ( ) ) ) ) ) ) & & & & & & & &                   - - - - - - - - 7 7 7 7 7 7 7 7 % % % % % %		8	$	$b
 b
 b
 b
 b
) b
 b
 b
 b
 b
rV   