o
    ީZh1                     @   s~  d dl Z d dlmZmZ d dlmZmZmZmZm	Z	m
Z
 d dlZd dlZd dlZddlmZ ddlmZmZmZmZmZmZ ddlmZmZmZmZ er^d dlmZ d d	lm Z  dd
l!m"Z" G dd dZ#e#j$d Z%e#j&d Z'dZ(dZ)e
e	e*e*e*f e	e*e*e*e*f e+f Z,e
e	edf ee ef Z-	dde
eef dee j. de*de
e*e/f dee+ de0dej1j1fddZ2G dd dZ3dS )    N)BufferedReaderBytesIO)TYPE_CHECKINGAnyListOptionalTupleUnion   )utils)T_bboxT_numT_obj
T_obj_listT_pointT_seq)T_table_settingsTableTableFinderTableSettings)	DataFrame)Series)Pagec                   @   s   e Zd ZdZdZdZdZdS )COLORS)   r   r   )r   r   r   )r   r   r   )r   r   r   r   N)__name__
__module____qualname__REDZGREENBLUETRANSPARENT r!   r!   I/var/www/html/lang_env/lib/python3.10/site-packages/pdfplumber/display.pyr      s
    r   )2      H   .Fstreampathpage_ix
resolutionpassword	antialiasreturnc           
      C   sd   |r|}n|  d | }tj||d}||}|j|d | | | dd }	|  |	dS )Nr   )r+   r&   T)scaleZno_smoothtextZno_smoothpathZno_smoothimageZprefer_bgrxRGB)seek	pypdfium2ZPdfDocumentZget_pagerenderZto_pilcloseconvert)
r'   r(   r)   r*   r+   r,   srcZ
pdfium_docZpdfium_pageZimgr!   r!   r"   get_page_image$   s"   


r6   c                   @   s6  e Zd Zdeddfdddeejj deee	f de
de
f
d	d
Zdedeeeeef fddZdedeeef fddZdZddZ				d[deeejef dede
dedededdfddZdZd d!Zeefd"ed#ed$edd fd%d&Zeefd'eee d(f d#ed$edd fd)d*Zeefd+e d#ed$edd fd,d-Z!eefd.ee"e  d/f d#ed$edd fd0d1Z#eefd+e d#ed$edd fd2d3Z$eefd.ee"e  d/f d#ed$edd fd4d5Z%e&eefd6eee'f d7ed#ed$edd f
d8d9Z(e&eefd:ee"e e)d(f d7ed#ed$edd f
d;d<Z*d=e&efd>eee'f d?ed7ed#edd f
d@dAZ+d=e&efdBee"e e)d(f d?ed7ed#edd f
dCdDZ,e&edEfdFe-d7ed#ed$edd f
dGdHZ.	d\dIeee/e0e1f  dd fdJdKZ2ee&ee3j4e3j5fd#ed7ed$edLe dMe dd fdNdOZ6dPdQdRdRedSfefd#ed7ed$edd fdTdUZ7de8fdVdWZ9d]dXdYZ:dS )^	PageImageNFpager   originalr*   r,   force_mediaboxc                 C   s  || _ |jr|n|j| _|| _|d u r(t|jj|jj|j	d |||jj
d| _n|| _| jjd |jd |jd   | _|j|jkrE|jn|rJ|jn|j| _|j|jkr| |j}| | j}| j|d |d  |d |d  |d |d  |d |d  f| _|   d S )Nr
   )r'   r(   r)   r*   r,   r+   r         )r8   Zis_originalZ	root_pagerootr*   r6   Zpdfr'   r(   Zpage_numberr+   r9   sizeZcropboxr.   bboxZmediabox_reproject_bboxcropreset)selfr8   r9   r*   r,   r:   Z	crop_dimsZ	bbox_dimsr!   r!   r"   __init__L   s:   
	"
	zPageImage.__init__r?   r-   c           
      C   s<   |\}}}}|  ||f\}}|  ||f\}}	||||	fS N)
_reproject)
rC   r?   x0topx1bottom_x0_topZ_x1_bottomr!   r!   r"   r@      s   zPageImage._reproject_bboxcoordc                 C   s@   |\}}|| j d  | j }|| j d  | j }t|t|fS )z
        Given an (x0, top) tuple from the *root* coordinate system,
        return an (x0, top) tuple in the *image* coordinate system.
        r   r
   )r?   r.   int)rC   rN   rG   rH   rK   rL   r!   r!   r"   rF      s   zPageImage._reprojectc                 C   s8   t jd| jj| _| j| j t j| jd| _	| S )Nr/   ZRGBA)
PILImagenewr9   r>   	annotatedZpasteZ	ImageDrawZDrawdrawrC   r!   r!   r"   rB      s   zPageImage.resetPNGT      destformatquantizecolorsbitskwargsc                 K   sL   |r| j j|tjjdd}n| j }|j|f||| j| jfd| d S )N)methodP)rZ   r]   Zdpi)rS   r[   rP   rQ   Z
FASTOCTREEr4   saver*   )rC   rY   rZ   r[   r\   r]   r^   outr!   r!   r"   ra      s   	

zPageImage.savec                 C   s   |  | j| jS rE   )	__class__r8   r9   rU   r!   r!   r"   copy   s   zPageImage.copypoints_or_objstrokestroke_widthc                 C   s   t |ttfr
|}n%t |trd|v rdd |d D }n|}|d |d f|d |d ff}| jjtt| j|||d | S )	NZptsc                 S   s   g | ]\}}||fqS r!   r!   ).0xyr!   r!   r"   
<listcomp>   s    z'PageImage.draw_line.<locals>.<listcomp>rG   rH   rI   rJ   fillwidth)
isinstancetuplelistdictrT   linemaprF   )rC   re   rf   rg   pointsobjr!   r!   r"   	draw_line   s    zPageImage.draw_linelist_of_linesr   c                 C   s$   t |D ]
}| j|||d q| S Nrf   rg   )r   to_listrw   )rC   rx   rf   rg   ri   r!   r!   r"   
draw_lines   s   zPageImage.draw_lineslocationc                 C   s4   || j d || j d f}| jj| |||d | S )Nr
   r<   rl   r?   rT   rs   r@   rC   r}   rf   rg   ru   r!   r!   r"   
draw_vline      zPageImage.draw_vline	locationsr   c                 C   "   t |D ]
}| j|||d q| S ry   )rq   r   rC   r   rf   rg   ri   r!   r!   r"   draw_vlines      zPageImage.draw_vlinesc                 C   s4   | j d || j d |f}| jj| |||d | S )Nr   r;   rl   r~   r   r!   r!   r"   
draw_hline   r   zPageImage.draw_hlinec                 C   r   ry   )rq   r   r   r!   r!   r"   draw_hlines   r   zPageImage.draw_hlinesbbox_or_objrm   c                 C   s  t |ttfr
|}n|}|d |d |d |d f}|\}}}	}
|d }t|| ||	 d }t|| ||
 d }t|	| ||	 d }	t|
| ||
 d }
| |||	|
f}| j||tj	 |dkr||f|	|ff||
f|	|
ff||f||
ff|	|f|	|
ffg}| j
|||d | S )NrG   rH   rI   rJ   r;   r   rz   )ro   rp   rq   minmaxr@   rT   Z	rectangler   r    r|   )rC   r   rm   rf   rg   r?   rv   rG   rH   rI   rJ   ZhalfZ	fill_bboxsegmentsr!   r!   r"   	draw_rect   s(   zPageImage.draw_rectlist_of_rectsc                 C   &   t |D ]}| j||||d q| S )Nrm   rf   rg   )r   r{   r   )rC   r   rm   rf   rg   ri   r!   r!   r"   
draw_rects     zPageImage.draw_rects   center_or_objradiusc           
      C   sz   t |tr|}n|}|d |d  d |d |d  d f}|\}}|| || || || f}	| j| |	|| | S )NrG   rI   r;   rH   rJ   )ro   rp   rT   Zellipser@   )
rC   r   r   rm   rf   centerrv   Zcxcyr?   r!   r!   r"   draw_circle&  s   
(zPageImage.draw_circlelist_of_circlesc                 C   r   )N)r   rm   rf   )r   r{   r   )rC   r   r   rm   rf   ri   r!   r!   r"   draw_circles7  r   zPageImage.draw_circlesr
   tablec                 C   s   | j |j|||d | S )z+
        Outline all found tables.
        r   )r   cells)rC   r   rm   rf   rg   r!   r!   r"   debug_tableB  s   

zPageImage.debug_tabletfc                 C   s   t |tr|}n|d u st |ttfr| j|}ntd|jD ]}| | q!| j	|j
dd | jt|j tjtjd dd | S )NzGArgument must be instance of TableFinderor a TableFinder settings dict.r
   )rg   r$   r<   )rm   rf   r   )ro   r   r   rr   r8   debug_tablefinder
ValueErrorZtablesr   r|   edgesr   rq   Zintersectionskeysr   r    r   )rC   r   finderr   r!   r!   r"   r   Q  s"   

zPageImage.debug_tablefinderx_tolerancey_tolerancec                 C   s&   | j j||d}| j||||d | S )N)r   r   rf   rm   rg   )r8   Zextract_wordsr   )rC   rf   rm   rg   r   r   wordsr!   r!   r"   outline_wordsk  s
   	zPageImage.outline_words)r   r   r   r   r   r   g     O@c                 C   s   | j | jj|||d | S )Nr   )r   r8   chars)rC   rf   rm   rg   r!   r!   r"   outline_charsz  s   zPageImage.outline_charsc                 C   s   t  }| |d | S )NrV   )r   ra   getvalue)rC   br!   r!   r"   
_repr_png_  s   zPageImage._repr_png_c                 C   s   | j   d S rE   )rS   showrU   r!   r!   r"   r     s   zPageImage.show)r-   r7   )rV   TrW   rX   rE   )r-   N);r   r   r   DEFAULT_RESOLUTIONr   rP   rQ   r	   rO   floatboolrD   r   r   r@   r   rF   rB   strpathlibPathr   r   ra   rd   DEFAULT_STROKEDEFAULT_STROKE_WIDTHT_contains_pointsT_colorrw   r   r|   r   r   r   r   r   r   DEFAULT_FILLr   r   r   r   r   r   r   r   r   r   r   r   r   ZDEFAULT_X_TOLERANCEZDEFAULT_Y_TOLERANCEr   r   bytesr   r   r!   r!   r!   r"   r7   K   s   


4

	









$







r7   )F)4r   ior   r   typingr   r   r   r   r   r	   Z	PIL.ImagerP   ZPIL.ImageDrawr1    r   Z_typingr   r   r   r   r   r   r   r   r   r   r   Zpandas.core.framer   Zpandas.core.seriesr   r8   r   r   r   r   r   r   r   r   rO   r   r   r   r   r   r   rQ   r6   r7   r!   r!   r!   r"   <module>   sJ      

$	


'