o
    j1                     @   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"   X/var/www/html/fyndo/pharma/fyndo/venv/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)scaleno_smoothtextno_smoothpathno_smoothimageprefer_bgrxRGB)seek	pypdfium2PdfDocumentget_pagerenderto_pilcloseconvert)
r(   r)   r*   r+   r,   r-   src
pdfium_docpdfium_pageimgr"   r"   r#   get_page_image$   s"   


rA   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         )rC   is_original	root_pagerootr+   rA   pdfr(   r)   page_numberr,   rD   sizecropboxr/   bboxmediabox_reproject_bboxcropreset)selfrC   rD   r+   r-   rE   	crop_dims	bbox_dimsr"   r"   r#   __init__L   s:   
	"
	zPageImage.__init__rO   r.   c           
      C   s<   |\}}}}|  ||f\}}|  ||f\}}	||||	fS N)
_reproject)
rT   rO   x0topx1bottom_x0_top_x1_bottomr"   r"   r#   rQ      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
   )rO   r/   int)rT   rb   rZ   r[   r^   r_   r"   r"   r#   rY      s   zPageImage._reprojectc                 C   s8   t jd| jj| _| j| j t j| jd| _	| S )Nr4   RGBA)
PILImagenewrD   rM   	annotatedpaste	ImageDrawDrawdrawrT   r"   r"   r#   rS      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+   )rT   rq   rr   rs   rt   ru   rv   outr"   r"   r#   r{      s   	

zPageImage.savec                 C   s   |  | j| jS rX   )	__class__rC   rD   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>rZ   r[   r\   r]   fillwidth)
isinstancetuplelistdictrl   linemaprY   )rT   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   )rT   r   r   r   r   r"   r"   r#   
draw_lines   s   zPageImage.draw_lineslocationc                 C   s4   || j d || j d f}| jj| |||d | S )Nr
   rG   r   rO   rl   r   rQ   rT   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   rT   r   r   r   r   r"   r"   r#   draw_vlines      zPageImage.draw_vlinesc                 C   s4   | j d || j d |f}| jj| |||d | S )Nr   rF   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 )NrZ   r[   r\   r]   rF   r   r   )r   r   r   minmaxrQ   rl   	rectangler   r!   r   )rT   r   r   r   r   rO   r   rZ   r[   r\   r]   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   )rT   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 )NrZ   r\   rF   r[   r]   )r   r   rl   ellipserQ   )
rT   r   r   r   r   centerr   cxcyrO   r"   r"   r#   draw_circle&  s   
(zPageImage.draw_circlelist_of_circlesc                 C   r   )N)r   r   r   )r   r   r   )rT   r   r   r   r   r   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)rT   r   r   r   r   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
   )r   r%   rG   )r   r   r   )r   r   r   r   rC   debug_tablefinder
ValueErrortablesr   r   edgesr   r   intersectionskeysr   r!   r    )rT   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   r   r   r   )rC   extract_wordsr   )rT   r   r   r   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   rC   chars)rT   r   r   r   r"   r"   r#   outline_charsz  s   zPageImage.outline_charsc                 C   s   t  }| |d | S )Nrn   )r   r{   getvalue)rT   br"   r"   r#   
_repr_png_  s   zPageImage._repr_png_c                 C   s   | j   d S rX   )rh   showrm   r"   r"   r#   r     s   zPageImage.show)r.   rB   )rn   Tro   rp   rX   )r.   N);r   r   r   DEFAULT_RESOLUTIONr   re   rf   r	   rc   floatboolrW   r   r   rQ   r   rY   rS   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#   rB   K   s   


4

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









$







rB   )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   rC   r   r   r    r   r   r   r   r   rc   r   r   r   r   r   r   rf   rA   rB   r"   r"   r"   r#   <module>   sJ      

$	


'