
    ;3h2                        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      Z#e#jH                  dz   Z%e#jL                  dz   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jb                  jb                  fdZ2 G d d      Z3y)    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                       e Zd ZdZdZdZdZy)COLORS)   r   r   )r   r   r   )r   r   r   )r   r   r   r   N)__name__
__module____qualname__REDGREENBLUETRANSPARENT     R/var/www/html/audio-gradio/venv/lib/python3.12/site-packages/pdfplumber/display.pyr   r      s    
CEDKr$   r   )2      H   .streampathpage_ix
resolutionpassword	antialiasreturnc                    |r|}n| j                  d       | }	 t        j                  ||      }|j                  |      }	|	j                  |dz  | | | d      j                         }
|j                          |
j                  d      S # t        j                  j                  j
                  $ r}t        |      d }~ww xY w)Nr   )r.   r)   T)scaleno_smoothtextno_smoothpathno_smoothimageprefer_bgrxRGB)seek	pypdfium2PdfDocument_helpersmiscPdfiumErrorr   get_pagerenderto_pilcloseconvert)r*   r+   r,   r-   r.   r/   src
pdfium_docepdfium_pageimgs              r%   get_page_imagerH   $   s      	A'**3B
 %%g.K&--2o#m#m$} .  fh  ;;u% "".. '#A&&'s   B 'C4B??Cc                      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	Zd
edeeeeef   fdZdedeeef   fdZd@dZ	 	 	 	 dAdeeej(                  ef   dede
dedededdfdZd@dZeefdedededd fdZeefdeee   df   dededd fdZeefde dededd fd Z!eefd!ee"e    d"f   dededd fd#Z#eefde dededd fd$Z$eefd!ee"e    d"f   dededd fd%Z%e&eefd&eee'f   d'edededd f
d(Z(e&eefd)ee"e   e)df   d'edededd f
d*Z*d+e&efd,eee'f   d-ed'ededd f
d.Z+d+e&efd/ee"e   e)df   d-ed'ededd f
d0Z,e&ed1fd2e-d'edededd f
d3Z.	 dBd4eee/e0e1f      dd fd5Z2ee&ee3jh                  e3jj                  fded'eded6e d7e dd fd8Z6d9d:d;d; ed<      fefded'ededd fd=Z7de8fd>Z9dCd?Z:y)D	PageImageNFpager   originalr-   r/   force_mediaboxc                    || _         |j                  r|n|j                  | _        || _        |`t        |j                  j                  |j                  j                  |j                  dz
  |||j                  j                        | _        n|| _        | j                  j                  d   |j                  d   |j                  d   z
  z  | _        |j                  |j                   k7  r|j                  n|r|j                   n|j                  | _        |j                  |j                  k7  r~| j#                  |j                        }| j#                  | j                        }| j                  j%                  |d   |d   z
  |d   |d   z
  |d   |d   z
  |d   |d   z
  f      | _        | j'                          y )Nr   )r*   r+   r,   r-   r/   r.   r         )rK   is_original	root_pagerootr-   rH   pdfr*   r+   page_numberr.   rL   sizecropboxr2   bboxmediabox_reproject_bboxcropreset)selfrK   rL   r-   r/   rM   	crop_dims	bbox_dimss           r%   __init__zPageImage.__init__P   sz    	 ,,D$..	$*xxXX]]((1,%#**DM %DM]]''*dll1oQ.OP
 yyDMM) II#1$--t|| 		 99$,,T\\:I,,TYY7I MM..aL9Q</aL9Q</aL9Q</aL9Q</	DM 	

r$   rX   r0   c                 t    |\  }}}}| j                  ||f      \  }}| j                  ||f      \  }}	||||	fS N)
_reproject)
r]   rX   x0topx1bottom_x0_top_x1_bottoms
             r%   rZ   zPageImage._reproject_bbox   sK    "CVOORI.	TF|4WT3((r$   coordc                     |\  }}|| j                   d   z
  | j                  z  }|| j                   d   z
  | j                  z  }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   )rX   r2   int)r]   rl   rd   re   rh   ri   s         r%   rc   zPageImage._reproject   sV    
 CDIIaL DJJ.diil"djj0C#d)$$r$   c                     t         j                  j                  d| j                  j                        | _        | j
                  j                  | j                         t         j                  j                  | j
                  d      | _	        | S )Nr7   RGBA)
PILImagenewrL   rV   	annotatedpaste	ImageDrawDrawdrawr]   s    r%   r\   zPageImage.reset   sY    udmm.@.@AT]]+MM&&t~~v>	r$   destformatquantizecolorsbitskwargsc                    |rE| j                   j                  |t        j                  j                        j                  d      }n| j                   } |j                  |f||| j                  | j                  fd| y )N)methodP)r{   r~   dpi)rt   r|   rq   rr   
FASTOCTREErB   saver-   )r]   rz   r{   r|   r}   r~   r   outs           r%   r   zPageImage.save   sy     ..))&9M9M)NVVC ..C	
$//2		

 	
r$   c                 N    | j                  | j                  | j                        S rb   )	__class__rK   rL   ry   s    r%   copyzPageImage.copy   s    ~~dii77r$   points_or_objstrokestroke_widthc                 B   t        |t        t        f      r|}nDt        |t              rd|v r|d   D cg c]	  \  }}||f }}}n|}|d   |d   f|d   |d   ff}| j                  j                  t        t        | j                  |            ||       | S c c}}w )Nptsrd   re   rf   rg   fillwidth)
isinstancetuplelistdictrx   linemaprc   )r]   r   r   r   pointsxyobjs           r%   	draw_linezPageImage.draw_line   s     meT]3"Ft,-1G)6u)=>Aq!f>F>  C4y#e*-D	3x=/IJF		T__f-.V< 	 	
  ?s   Blist_of_lineszpd.DataFramec                 b    t        j                  |      D ]  }| j                  |||        | S Nr   r   )r   to_listr   )r]   r   r   r   r   s        r%   
draw_lineszPageImage.draw_lines   s5     }- 	HANN1V,NG	Hr$   locationc                     || j                   d   || j                   d   f}| j                  j                  | j                  |      ||       | S )Nr   rP   r   rX   rx   r   rZ   r]   r   r   r   r   s        r%   
draw_vlinezPageImage.draw_vline   sH     DIIaL(DIIaLA		t++F3&Ur$   	locationszpd.Series[float]c                 N    t        |      D ]  }| j                  |||        | S r   )r   r   r]   r   r   r   r   s        r%   draw_vlineszPageImage.draw_vlines   0     i 	IAOOAf<OH	Ir$   c                     | j                   d   || j                   d   |f}| j                  j                  | j                  |      ||       | S )Nr   rO   r   r   r   s        r%   
draw_hlinezPageImage.draw_hline   sH     ))A,$))A,A		t++F3&Ur$   c                 N    t        |      D ]  }| j                  |||        | S r   )r   r   r   s        r%   draw_hlineszPageImage.draw_hlines   r   r$   bbox_or_objr   c                    t        |t        t        f      r|}n|}|d   |d   |d   |d   f}|\  }}}	}
|dz  }t        ||z   ||	z   dz        }t        ||z   ||
z   dz        }t	        |	|z
  ||	z   dz        }	t	        |
|z
  ||
z   dz        }
| j                  |||	|
f      }| j                  j                  ||t        j                         |dkD  r2||f|	|ff||
f|	|
ff||f||
ff|	|f|	|
ffg}| j                  |||       | S )Nrd   re   rf   rg   rO   r   r   )r   r   r   minmaxrZ   rx   	rectangler   r"   r   )r]   r   r   r   r   rX   r   rd   re   rf   rg   half	fill_bboxsegmentss                 r%   	draw_rectzPageImage.draw_rect   sQ    kE4=1DCIs5z3t9c(mDD"CVadR"WM*#*sV|q01dR"WM*Vd]S6\Q$67(("c2v)>?			ItV-?-?@!cRI&fF|,cRL)cRL)	H OOHV,OOr$   list_of_rectsc                 d    t        j                  |      D ]  }| j                  ||||        | S )Nr   r   r   )r   r   r   )r]   r   r   r   r   r   s         r%   
draw_rectszPageImage.draw_rects  s7     }- 	SANN14\NR	Sr$      center_or_objradiusc                     t        |t              r|}n|}|d   |d   z   dz  |d   |d   z   dz  f}|\  }}||z
  ||z
  ||z   ||z   f}	| j                  j                  | j	                  |	      ||       | S )Nrd   rf   rO   re   rg   )r   r   rx   ellipserZ   )
r]   r   r   r   r   centerr   cxcyrX   s
             r%   draw_circlezPageImage.draw_circle*  s     mU+"FC4y3t9,1CJX4NRS3STFBVR&["v+rF{C		$..t4dFCr$   list_of_circlesc                 d    t        j                  |      D ]  }| j                  ||||        | S )N)r   r   r   )r   r   r   )r]   r   r   r   r   r   s         r%   draw_circleszPageImage.draw_circles;  s:     / 	IAQvDH	Ir$   r   tablec                 D    | j                  |j                  |||       | S )z+
        Outline all found tables.
        r   )r   cells)r]   r   r   r   r   s        r%   debug_tablezPageImage.debug_tableF  s)     	KKd6 	 	
 r$   table_settingsc                    t        |t              r|}n?|t        |t        t        f      r| j                  j                  |      }nt        d      |j                  D ]  }| j                  |        | j                  |j                  d       | j                  t        |j                  j                               t        j                   t        j"                  dz   d       | S )NzGArgument must be instance of TableFinderor a TableFinder settings dict.r   )r   r'   rP   )r   r   r   )r   r   r   r   rK   debug_tablefinder
ValueErrortablesr   r   edgesr   r   intersectionskeysr   r"   r!   )r]   r   finderr   s       r%   r   zPageImage.debug_tablefinderU  s     nk2#F#z]D1(
 YY00@F2 
 ]] 	$EU#	$ 	15%%**,-##;;'	 	 	
 r$   x_tolerancey_tolerancec                 j    | j                   j                  ||      }| j                  ||||       | S )N)r   r   r   r   r   )rK   extract_wordsr   )r]   r   r   r   r   r   wordss          r%   outline_wordszPageImage.outline_wordst  s=     		''# ( 
 	f4lSr$   )r   r   r   r   r   r   g     O@c                 X    | j                  | j                  j                  |||       | S )Nr   )r   rK   chars)r]   r   r   r   s       r%   outline_charszPageImage.outline_chars  s-     	IIOOFL 	 	
 r$   c                 Z    t               }| j                  |d       |j                         S )NPNG)r   r   getvalue)r]   bs     r%   
_repr_png_zPageImage._repr_png_  s#    I		!Uzz|r$   c                 8    | j                   j                          y rb   )rt   showry   s    r%   r   zPageImage.show  s    r$   )r0   rJ   )r   T      rb   )r0   N);r   r   r   DEFAULT_RESOLUTIONr   rq   rr   r
   rn   floatboolr`   r   r	   rZ   r   rc   r\   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%   rJ   rJ   O   s    /3(:$22 399??+2 #u*%	2
 2 2h)F )uS#sC5G/H )% %E#s(O % 
Cw./
 
 	

 
 
 
 

08 )0	(  	
 
4 )0	U#45~EF  	
 
 )0	  	
 
 )0	e&889  	
 
 )0	  	
 
 )0	e&889  	
 
 %(065=)  	
  
H %(0	T&\:~EF	 	 		
 	 
	 $(We^,  	
  
( $(	tG}j.HI	 	 		
 	 
	 %(  	
  
& 	 +}.>>?

 
B )$0"66"66  	
   
" +aCL10	

 
 	

 

E 
r$   rJ   )F)4r   ior   r   typingr   r   r   r   r	   r
   	PIL.Imagerq   PIL.ImageDrawr9    r   _typingr   r   r   r   r   r   r   r   r   r   r   utils.exceptionsr   pandaspdrK   r   r   r!   r   r   r   r   r   rn   r   r   r   r   r   r   rr   rH   rJ   r#   r$   r%   <module>r     s3    & C C     E E F F 3  {{U"f$  
c3m$eCc3,>&?D
E%-tG}eCD  (.')*(
7<<
 ( ( c5j!	(
 sm( ( 	YY__(VF Fr$   