o
     e_/                     @   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__REDGREENBLUETRANSPARENT r"   r"   E/var/www/html/venv/lib/python3.10/site-packages/pdfplumber/display.pyr      s
    r   )2      H   .Fstreampathpage_ix
resolutionpassword	antialiasreturnc           	      C   sX   |r|}n|  d | }tj||d|}|j|d | | | dd }|dS )Nr   )r,   r'   T)scaleno_smoothtextno_smoothpathno_smoothimageprefer_bgrxRGB)seek	pypdfium2PdfDocumentget_pagerenderto_pilconvert)	r(   r)   r*   r+   r,   r-   srcpdfium_pageimgr"   r"   r#   get_page_image$   s(   


r?   c                   @   s  e Zd Zdedfdddeejj deee	f de
fdd	Zd
edefddZdedefddZdYddZ				dZdeeejef dede
dedededdfddZdYd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d/d0Z"eefd*ed"ed#edd fd1d2Z#eefd-ee!e d.f d"ed#edd fd3d4Z$e%eefd5eee&f d6ed"ed#edd f
d7d8Z'e%eefd9ee!e e(d'f d6ed"ed#edd f
d:d;Z)d<e%efd=eee&f d>ed6ed"edd f
d?d@Z*d<e%efdAee!e e(d'f d>ed6ed"edd f
dBdCZ+e%edDfdEe,d6ed"ed#edd f
dFdGZ-	d[dHeee.e/e0f  dd fdIdJZ1ee%ee2j3e2j4fd"ed6ed#edKedLedd fdMdNZ5dOdPdQdQedRfefd"ed6ed#edd fdSdTZ6de7fdUdVZ8d\dWdXZ9dS )]	PageImageNFpager   originalr+   r-   c                 C   s  || _ |d u rt|jj|jj|jd |||jjd| _n|| _|jr(|| _	d}n|j
| _	|j
j|jk}|| _| jjd | j	j | _|rt|jd |j
jd  | j t|jd |j
jd  | j t|jd |j
jd  | j t|jd |j
jd  | j f}| j|| _|   d S )Nr
   )r(   r)   r*   r+   r-   r,   Fr         )rA   r?   pdfr(   r)   page_numberr,   rB   is_originalroot	root_pagebboxr+   sizewidthr/   intcropreset)selfrA   rB   r+   r-   croppedcropboxr"   r"   r#   __init__K   s4   
	zPageImage.__init__rJ   r.   c           
      C   s<   |\}}}}|  ||f\}}|  ||f\}}	||||	fS N)
_reproject)
rP   rJ   x0topx1bottom_x0_top_x1_bottomr"   r"   r#   _reproject_bboxs   s   zPageImage._reproject_bboxcoordc           
      C   s\   |\}}| j jdd \}}| jjdd \}}|| | | j }|| | | j }	||	fS )z
        Given an (x0, top) tuple from the *root* coordinate system,
        return an (x0, top) tuple in the *image* coordinate system.
        NrC   )rA   rJ   rH   r/   )
rP   r_   rV   rW   px0ptoprx0rtoprZ   r[   r"   r"   r#   rU   y   s   zPageImage._reprojectc                 C   s8   t jd| jj| _| j| j t j| jd| _	| S )Nr4   RGBA)
PILImagenewrB   rK   	annotatedpaste	ImageDrawDrawdrawrP   r"   r"   r#   rO      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)rr   ru   dpi)rh   rs   re   rf   
FASTOCTREEr;   saver+   )rP   rq   rr   rs   rt   ru   rv   outr"   r"   r#   r{      s   	

zPageImage.savec                 C   s   |  | j| jS rT   )	__class__rA   rB   rm   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 )	Nptsc                 S   s   g | ]\}}||fqS r"   r"   ).0xyr"   r"   r#   
<listcomp>   s    z'PageImage.draw_line.<locals>.<listcomp>rV   rW   rX   rY   fillrL   )
isinstancetuplelistdictrl   linemaprU   )rP   r   r   r   pointsobjr"   r"   r#   	draw_line   s    zPageImage.draw_linelist_of_linesr   c                 C   s$   t |D ]
}| j|||d q| S Nr   r   )r   to_listr   )rP   r   r   r   r   r"   r"   r#   
draw_lines   s   zPageImage.draw_lineslocationc                 C   s8   || j jd || j jd f}| jj| |||d | S )Nr
   rD   r   rA   rJ   rl   r   r^   rP   r   r   r   r   r"   r"   r#   
draw_vline      zPageImage.draw_vline	locationsr   c                 C   "   t |D ]
}| j|||d q| S r   )r   r   rP   r   r   r   r   r"   r"   r#   draw_vlines      zPageImage.draw_vlinesc                 C   s8   | j jd || j jd |f}| jj| |||d | S )Nr   rC   r   r   r   r"   r"   r#   
draw_hline   r   zPageImage.draw_hlinec                 C   r   r   )r   r   r   r"   r"   r#   draw_hlines   r   zPageImage.draw_hlinesbbox_or_objr   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 )NrV   rW   rX   rY   rC   r   r   )r   r   r   minmaxr^   rl   	rectangler   r!   r   )rP   r   r   r   r   rJ   r   rV   rW   rX   rY   half	fill_bboxsegmentsr"   r"   r#   	draw_rect   s(   zPageImage.draw_rectlist_of_rectsc                 C   &   t |D ]}| j||||d q| S )Nr   r   r   )r   r   r   )rP   r   r   r   r   r   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 )NrV   rX   rC   rW   rY   )r   r   rl   ellipser^   )
rP   r   r   r   r   centerr   cxcyrJ   r"   r"   r#   draw_circle  s   
(zPageImage.draw_circlelist_of_circlesc                 C   r   )N)r   r   r   )r   r   r   )rP   r   r   r   r   r   r"   r"   r#   draw_circles,  r   zPageImage.draw_circlesr
   tablec                 C   s   | j |j|||d | S )z+
        Outline all found tables.
        r   )r   cells)rP   r   r   r   r   r"   r"   r#   debug_table7  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
   )r   r%   rD   )r   r   r   )r   r   r   r   rA   debug_tablefinder
ValueErrortablesr   r   edgesr   r   intersectionskeysr   r!   r    )rP   r   finderr   r"   r"   r#   r   F  s"   

zPageImage.debug_tablefinderx_tolerancey_tolerancec                 C   s&   | j j||d}| j||||d | S )N)r   r   r   r   r   )rA   extract_wordsr   )rP   r   r   r   r   r   wordsr"   r"   r#   outline_words`  s
   	zPageImage.outline_words)r   r   r   r   r   r   g     O@c                 C   s   | j | jj|||d | S )Nr   )r   rA   chars)rP   r   r   r   r"   r"   r#   outline_charso  s   zPageImage.outline_charsc                 C   s   t  }| |d | S )Nrn   )r   r{   getvalue)rP   br"   r"   r#   
_repr_png_{  s   zPageImage._repr_png_c                 C   s   | j   d S rT   )rh   showrm   r"   r"   r#   r     s   zPageImage.show)r.   r@   )rn   Tro   rp   rT   )r.   N):r   r   r   DEFAULT_RESOLUTIONr   re   rf   r	   rM   floatboolrS   r   r^   r   rU   rO   strpathlibPathr   r   r{   r~   DEFAULT_STROKEDEFAULT_STROKE_WIDTHT_contains_pointsT_colorr   r   r   r   r   r   r   r   r   DEFAULT_FILLr   r   r   r   r   r   r   r   r   r   r   r   r   DEFAULT_X_TOLERANCEDEFAULT_Y_TOLERANCEr   r   bytesr   r   r"   r"   r"   r#   r@   J   s   


(
	









$







r@   )F)4r   ior   r   typingr   r   r   r   r   r	   	PIL.Imagere   PIL.ImageDrawr6    r   _typingr   r   r   r   r   r   r   r   r   r   r   pandas.core.framer   pandas.core.seriesr   rA   r   r   r    r   r   r   r   r   rM   r   r   r   r   r   r   rf   r?   r@   r"   r"   r"   r#   <module>   sJ      

$	


&