o
    -h2                     @   sz  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 ddlmZ er\d dl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)MalformedPDFException)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!   K/var/www/html/govbot/env/lib/python3.10/site-packages/pdfplumber/display.pyr      s
    r   )2      H   .Fstreampathpage_ix
resolutionpassword	antialiasreturnc              
   C   s   |r|}n|  d | }z	tj||d}W n tjy& } zt|d }~ww ||}	|	j|d | | | dd }
|  |
	dS )Nr   )r+   r&   T)scaleno_smoothtextno_smoothpathno_smoothimageprefer_bgrxRGB)
seek	pypdfium2PdfDocumentPdfiumErrorr   get_pagerenderto_pilcloseconvert)r'   r(   r)   r*   r+   r,   src
pdfium_docepdfium_pageimgr!   r!   r"   get_page_image$   s,   

	
rB   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         )rD   is_original	root_pagerootr*   rB   pdfr'   r(   page_numberr+   rE   sizecropboxr.   bboxmediabox_reproject_bboxcropreset)selfrD   rE   r*   r,   rF   	crop_dims	bbox_dimsr!   r!   r"   __init__N   s:   
	"
	zPageImage.__init__rP   r-   c           
      C   s<   |\}}}}|  ||f\}}|  ||f\}}	||||	fS N)
_reproject)
rU   rP   x0topx1bottom_x0_top_x1_bottomr!   r!   r"   rR      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
   )rP   r.   int)rU   rc   r[   r\   r_   r`   r!   r!   r"   rZ      s   zPageImage._reprojectc                 C   s8   t jd| jj| _| j| j t j| jd| _	| S )Nr3   RGBA)
PILImagenewrE   rN   	annotatedpaste	ImageDrawDrawdrawrU   r!   r!   r"   rT      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)rs   rv   dpi)ri   rt   rf   rg   
FASTOCTREEr<   saver*   )rU   rr   rs   rt   ru   rv   rw   outr!   r!   r"   r|      s   	

zPageImage.savec                 C   s   |  | j| jS rY   )	__class__rD   rE   rn   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>r[   r\   r]   r^   fillwidth)
isinstancetuplelistdictrm   linemaprZ   )rU   r   r   r   pointsobjr!   r!   r"   	draw_line   s    zPageImage.draw_linelist_of_lineszpd.DataFramec                 C   s$   t |D ]
}| j|||d q| S Nr   r   )r   to_listr   )rU   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
   rH   r   rP   rm   r   rR   rU   r   r   r   r   r!   r!   r"   
draw_vline      zPageImage.draw_vline	locationszpd.Series[float]c                 C   "   t |D ]
}| j|||d q| S r   )r   r   rU   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   rG   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 )Nr[   r\   r]   r^   rG   r   r   )r   r   r   minmaxrR   rm   	rectangler   r    r   )rU   r   r   r   r   rP   r   r[   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   )rU   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 )Nr[   r]   rG   r\   r^   )r   r   rm   ellipserR   )
rU   r   r   r   r   centerr   cxcyrP   r!   r!   r"   draw_circle(  s   
(zPageImage.draw_circlelist_of_circlesc                 C   r   )N)r   r   r   )r   r   r   )rU   r   r   r   r   r   r!   r!   r"   draw_circles9  r   zPageImage.draw_circlesr
   tablec                 C   s   | j |j|||d | S )z+
        Outline all found tables.
        r   )r   cells)rU   r   r   r   r   r!   r!   r"   debug_tableD  s   

zPageImage.debug_tabletable_settingsc                 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$   rH   )r   r   r   )r   r   r   r   rD   debug_tablefinder
ValueErrortablesr   r   edgesr   r   intersectionskeysr   r    r   )rU   r   finderr   r!   r!   r"   r   S  s&   


zPageImage.debug_tablefinderx_tolerancey_tolerancec                 C   s&   | j j||d}| j||||d | S )N)r   r   r   r   r   )rD   extract_wordsr   )rU   r   r   r   r   r   wordsr!   r!   r"   outline_wordsr  s
   	zPageImage.outline_words)r   r   r   r   r   r   g     O@c                 C   s   | j | jj|||d | S )Nr   )r   rD   chars)rU   r   r   r   r!   r!   r"   outline_chars  s   zPageImage.outline_charsc                 C   s   t  }| |d | S )Nro   )r   r|   getvalue)rU   br!   r!   r"   
_repr_png_  s   zPageImage._repr_png_c                 C   s   | j   d S rY   )ri   showrn   r!   r!   r"   r     s   zPageImage.show)r-   rC   )ro   Trp   rq   rY   )r-   N);r   r   r   DEFAULT_RESOLUTIONr   rf   rg   r	   rd   floatboolrX   r   r   rR   r   rZ   rT   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"   rC   M   s   


4

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









$





!

rC   )F)4r   ior   r   typingr   r   r   r   r   r	   	PIL.Imagerf   PIL.ImageDrawr5    r   _typingr   r   r   r   r   r   r   r   r   r   r   utils.exceptionsr   pandaspdrD   r   r   r   r   r   r   r   r   rd   r   r   r   r   r   r   rg   rB   rC   r!   r!   r!   r"   <module>   sJ      

$	


)