
    hja.                        S r SSKrSSKrSSKrSSKrSSKrSSKrSSKJ	r	  SSK
JrJrJrJrJrJrJrJr   SSKJr   SSKJrJrJr  \r\r\rSS
KJ r   \RB                  RE                  S5      (       d  \RF                  " S5        \" SS9S 5       r$\" SS9S 5       r%\" SS9S 5       r&\" SS9S 5       r'\" SS9S 5       r(g! \ a    Sr\R,                  " \ S35         Nf = f! \ a    SS	KJrJrJr   Nf = f)u}  
✘ Commands Available -

• `{i}pdf <page num> <reply to pdf file>`
    Extract & send page as an Image.(note-: For extracting all pages, just use .pdf)
    to upload selected range `{i}pdf 1-7`

• `{i}pdtext <page num> <reply to pdf file>`
    Extract Text From the Pdf.(note-: For Extraction all text just use .pdtext)
    to extract selected pages `{i}pdf 1-7`

• `{i}pdscan <reply to image>`
    It scan, crop & send image(s) as pdf.

• `{i}pdsave <reply to image/pdf>`
    It scan, crop & save file to merge.
    you can merge many pages in a single pdf.

• `{i}pdsend `
    Merge & send the pdf, collected from .pdsave.
    N)four_point_transform   )HNDLRLOGSbashcheck_filename
downloadereor
get_stringultroid_cmd)Imagez: PIL  not Installed.)	PdfReader	PdfWriter	PdfMerger)PdfFileMergerPdfFileReaderPdfFileWriter)PhotoSaveFileInvalidErrorpdfzpdf( (.*)|$))patternc           	      ,	  #    U R                  5       I S h  vN nU R                  R                  S5      R                  5       nU(       a+  UR                  (       a  UR                  R
                  S:X  d  U R                  S5      I S h  vN   g U R                  [        S5      5      I S h  vN nUR                  R                  n[        R                  " 5       nSn[        SU 3XCUSU S35      I S h  vN nUR                  5       I S h  vN   S	nUR                  S
S5        [        U5      n	U(       Gd7  / n[        U	R                  5       H  n
[!        5       nUR#                  U	R%                  U
5      5        [&        R(                  R+                  SU
S-    S35      nUR-                  U5        [/        US5       nUR1                  U5        S S S 5        M     [&        R2                  " U5        U H1  nU R4                  R7                  U R8                  U5      I S h  vN   M3     [:        R<                  " S5        [&        R>                  " S5        UR                  5       I S h  vN   g SU;   a  [A        URC                  S5      S   5      S-
  n[        U5       H  n[!        5       nUR#                  U	R%                  U5      5        [/        [&        R(                  R+                  S5      S5       nUR1                  U5        S S S 5        U RE                  SS9I S h  vN   [&        R2                  " S5        M     [&        R2                  " U5        g [A        U5      S-
  n[!        5       nUR#                  U	R%                  U5      5        [/        [&        R(                  R+                  S5      S5       nUR1                  U5        S S S 5        [&        R2                  " U5         U RE                  SS9I S h  vN   [&        R2                  " S5        g  GN GN GNt GN- GN! , (       d  f       GM  = f GN GN! , (       d  f       GN?= f GN0! , (       d  f       N= f Ni! [F         a    U RE                  SSS9I S h  vN     Nf = f7f)Nr   application/pdf$`Reply The pdf u Want to Download..`com_1zhehe.pdfpdf/Downloading ...zpdf/hehe.pdf.pdf zpdf/ultz.pngwbr   -zult.png)fileT)r#   force_document)$get_reply_messagepattern_matchgroupstripdocument	mime_typer
   r   mediatimer	   deletereplacer   rangenumPagesr   addPagegetPageospathjoinappendopenwriteremoveclient	send_filechat_idshutilrmtreemkdirintsplitreplyr   )eventokmsgxxr#   kfilenameresultpdfpr   numpwfilfzos                   %/root/TeamUltroid/plugins/pdftools.pypdfseimgrR   C   sk     &&(	(B



#
#A
&
,
,
.CBKKR[[%:%:>O%Oii>???yyG,-	-B88D		AH
xj4Q,xj(D F ))+DLL

C&CBJJs{{3'('',,q	67CIIcNc4A ! ' 			$A,,((::: e
iik	3#$q(rABJJs{{1~&bggll9-t4 5++     IIi   			$HqL_


3;;q>""'',,y)40AHHQK 1
		$	C++9+--- 			)o 
) 	@	-  ! ; 	 54 10 .( 	C++9T+BBB	Cs  RPA3R
P"R-P!.A	R7P$8RP'B2RP*AR$P=%AR,Q -BR9QR%Q&BR<QR-Q+ ?Q) Q+ RR!R$R'R*
P:	4
R R
Q		R
Q&"R)Q+ +RR	RRRRzpdtext( (.*)|$)c           	        ^#    U R                  5       I S h  vN nU R                  R                  S5      R                  5       nU(       dE  UR                  (       a4  UR                  R
                  S:X  a  U R                  S5      I S h  vN   g U R                  [        S5      5      I S h  vN nUR                  R                  n[        R                  " 5       nUR                  R                  n[        XdX5SU S35      I S h  vN nUR                  5       I S h  vN   UR                  nU(       Gd"  [        U5      n	UR                  S5      S    S	3n
[!        U
S
5       n[#        U	R$                  5       Hn  nU	R'                  U5      nUR)                  5       nUR+                  SUS-    S35        UR+                  SR-                  SS5      5        UR+                  U5        Mp     S S S 5        U R.                  R1                  U R2                  U
U R4                  S9I S h  vN   [6        R8                  " U
5        [6        R8                  " U5        g SU;   as  UR                  S5      u  nn[        U5      mSR;                  U4S j[#        [=        U5      S-
  [=        U5      5      5       5      nUR                  S5      S    SU S	3n
OR[=        U5      S-
  n[        U5      mTR'                  U5      R)                  5       nUR                  S5      S    SU S	3n
[!        U
S
5       nUR+                  U5        S S S 5        U R.                  R1                  U R2                  U
U R4                  S9I S h  vN   [6        R8                  " U
5        [6        R8                  " U5        g  GN GN( GN GN GN! , (       d  f       GN= f GN! , (       d  f       N= f Nf7f)Nr   r   r   r   r   r   .r   z.txtwzPage 
r   d   r!   reply_toc              3   b   >#    U  H$  nTR                  U5      R                  5       v   M&     g 7f)N)r2   extractText).0ias     rQ   	<genexpr>pdfsetxt.<locals>.<genexpr>   s'     T:SQaiil..00:Ss   ,/ z Pg-)r%   r&   r'   r(   r)   r*   r
   r   r+   r,   r#   namer	   r-   r   rA   r7   r/   r0   r2   r[   r8   centerr:   r;   r<   reply_to_msg_idr3   r9   r5   r@   )rC   rD   rE   rF   r#   rG   rH   rI   dlr   textrN   page_numpageObjtxtudstrr^   s                     @rQ   pdfsetxtrm      s     &&(	(B



#
#A
&
,
,
.C"++"++"7"7;L"Lii>???yyG,-	-B88D		Aww||Hhb|H:S5QRRF
))+	BB((3-"#4($_!#,,/++h/))+%1~R01		#s+, 0  ll$$MM** % 
 	
 	

 			$
		"
czyy~1"ggT%A
CPQF:STT((3-"#1SE.HqL"iil&&(((3-"#4uD1	dCA	 

,,
 
 && !   
 IIdOIIbMc 
) 	@	- S
 _	
& 
s   O'N0A3O'N3"O'.N6/AO'N9	O' N<!AO''BN?/:O')O*DO'2O:O'>O%?2O'3O'6O'9O'<O'?
O		O'
O"O'zpdscan( (.*)|$)c                 
  #    U R                  5       I S h  vN nU(       a  UR                  (       d  U R                  S5      I S h  vN   g UR                  (       d_  UR                  R
                  (       a*  UR                  R
                  R                  S5      (       d  U R                  S5      I S h  vN   g UR                  5       I S h  vN nU R                  [        S5      5      I S h  vN n[        R                  " U5      nUR                  5       nUR                  S   S-  nUR                  S S u  pxS[        U5      -  n	[        X-  5      S4n
[        R                  " XJ[        R                   S	9n[        R"                  " U[        R$                  5      n[&        R(                  " UR                  S S [&        R*                  5      nUS S 2S S 2S4   US S 2S S 24'   [        R,                  " US
S5      n[        R.                  " USSSS9n[        R0                  " U[        R2                  [        R4                  5      u  nn/ nU H  n[        R6                  " U5      nUR9                  [        R:                  " US[        R<                  " US5      -  S5      5        [?        U[        R@                  SS9n[        RB                  " UUS   SSS5        US   nM     [E        W5      S:X  ak   SSK#J$n  [U        UURW                  SS5      U-  5      n[        R"                  " U[        RX                  5      nU" USSSS9nUU:  R[                  S5      S -  n[E        U5      S:w  a  [        R\                  " USS!S"9n[        R^                  " S#U5        [`        Rb                  " S#5      nURe                  S$5      nS%URg                  S&5      S    S'3nURi                  U5        U Rj                  Rm                  U Rn                  UU Rp                  S(9I S h  vN   URs                  5       I S h  vN   [t        Rv                  " U5        [t        Rv                  " S#5        [t        Rv                  " U5        g  GNo GNA GN GN GN! [J         ag    [L        RN                  " S5        URQ                  S5      I S h  vN    [S        S5      I S h  vN  u  nn[L        RN                  " U5        SSK#J$n   GNf = f N N7f))Nr   pngjpgjpegwebpz`Reply to a Image only...`r   r        @@     interpolation   rz   2      rz   apertureSize{Gz?TFkeyreverser"   r   r            threshold_localScikit-Image is not Installed.7`Installing Scikit-Image...
This may take some long...`pip install scikit-image   
   gaussianoffsetmethoduint8r   333333?sigma_ssigma_ro.pngRGBzScanned rT   r   rX   )<r%   r+   r
   photor#   rb   endswithdownload_mediar   cv2imreadcopyshapefloatr@   resize
INTER_AREAcvtColorCOLOR_BGR2YUVnpzerosr   GaussianBlurCannyfindContoursRETR_EXTERNALCHAIN_APPROX_SIMPLE
convexHullr6   approxPolyDP	arcLengthsortedcontourAreadrawContourslenskimage.filtersr   ImportErrorr   infoeditr   r   reshapeCOLOR_BGR2GRAYastypedetailEnhanceimwriter   r7   convertrA   saver:   r;   r<   rd   r-   r3   r9   )rC   rD   ulttrF   imageoriginal_imageratiohiwidradmes	image_yuvimage_yimage_blurrededgescontours	hierarchypolygonscnthull
sortedPolysimplified_cntr   ___cropped_image
gray_imageTimage1im1scanns                                  rQ   imgscanr      s     &&(	(BBHHii>???
GGLLRWW\\223QRRii4555""$$DyyG,-	-BJJtEZZ\NKKNU"Ekk"1oGB	uRyBM3DJJu#..AEUC$5$56Ihhyr*BHH5GaAg&GAqDM$$Wfa8MIImR1=E**Hi
 H~~c"((tcmmD$6O/OQVWXH#//4H

1r;B#A  >a	87 -""1a(50
 \\-1C1CD
J2jI1n$$W-3
>a~r4HKKZZ F
..
Ctzz#q)*$/EHHUO
,,
 
 @U@U
 
VVV
))+IIdOIIgIIe 
)? 	6$	-8  	8II68''TUUU9:::EArIIaL77	8( Ws   TR0TRA/T7R8TR!T2R3H	T=R D"T%T&T=T
>ATTTTT4TS	TS$TTTT
Tzpdsave( (.*)|$)c                 	  #    U R                  5       I S h  vN nU(       a  UR                  (       d  [        U S5      I S h  vN   g UR                  5       I S h  vN nUR	                  S5      (       GaG  U R                  [        S5      5      I S h  vN n[        R                  " U5      nUR                  5       nUR                  S   S-  nUR                  S S u  pxS[        U5      -  n	[        R                  " U[        X-  5      S4[        R                  S9n[        R                  " U[        R                  5      n
[         R"                  " U
R                  S S [         R$                  5      nU
S S 2S S 2S4   US S 2S S 24'   [        R&                  " US	S5      n[        R(                  " US
SSS9n[        R*                  " U[        R,                  [        R.                  5      u  p/ nU H  n[        R0                  " U5      nUR3                  [        R4                  " US[        R6                  " US5      -  S5      5        [9        U[        R:                  SS9n[        R<                  " UUS   SSS5        US   nM     [?        W5      S:X  ak   SSK J!n  [O        UURQ                  SS5      U-  5      n[        R                  " U[        RR                  5      nU" USSSS9nUU:  RU                  S5      S-  n[?        U5      S:w  a  [        RV                  " USS S!9n[        RX                  " S"U5        [Z        R\                  " S"5      nUR_                  S#5      n[a        S$5      nURc                  U5        URK                  S%[d         S&35      I S h  vN   [f        Rh                  " S"5        O{UR	                  S'5      (       aL  [a        S$5      nU Rj                  R                  UU5      I S h  vN   [        U S%[d         S&35      I S h  vN   OU R                  S(5      I S h  vN   [f        Rh                  " U5        g  GN: GN GN GN! [D         ag    [F        RH                  " S5        URK                  S5      I S h  vN    [M        S5      I S h  vN  u  nn[F        RH                  " U5        SSK J!n   GN)f = f GN. N N N7f))Nz=`Reply to Images/pdf which u want to merge as a single pdf..`ro   r   r   rt   ru   rv   rw   ry   r{   r|   rz   r}   r   TFr   r"   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   pdf/scan.pdfz8Done, Now Reply Another Image/pdf if completed then use z"pdsend to merge nd send all as pdfr   z`Reply to a Image/pdf only...`)6r%   r+   r
   r   r   r   r   r   r   r   r   r   r@   r   r   r   r   r   r   r   r   r   r   r   r   r6   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   r   r   r   r   r3   r9   r:   )rC   rD   r   rF   r   r   r   h__vm_r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r^   s                                 rQ   savepdfr      s     &&(	(BBHHK
 	
 	
 	""$$D}}34499Z011

4 A&Ra59_

53rw<"5S^^TLL(9(9:	((9??2A.9!!Q'*1((&!<		-SqA!..##

 C>>#&DOO  tcmmD$.G'GO  cootLJUJqM2{AF']N  ~!#	<; 1&&q!,u4M mS5G5GHJ
Br*MAq.((1C7B~!#"">2tLBGR G$nnU#>*ggFugMop
 	
 	
 			'	v		>*ll))"a000FugMop
 	
 	

 ii8999IIdOS 
)	

 %1:  <		:<ggN   ##=>>>2		!;;<,	
 	1	

 	:s   SQ+SQSQ8SQHSQ #C?S"S#AS>S?SSS4S5SSSS4SRS$R'%$S	SSSSSSzpdsend( (.*)|$)c                   #    [         R                  R                  S5      (       d  [        U S5      I S h  vN   g U R                  R                  S5      R                  5       nU(       a  U S3OSn[        5       n[        R                  " S5      n/ [        U5      QnU H,  nUR                  S5      (       d  M  UR                  U5        M.     UR                  U5        U R                  R                  U R                  XPR                   S9I S h  vN   [         R"                  " U5        [$        R&                  " S	5        [         R(                  " S	5        g  GN& NJ7f)
Nr   zRfirst select pages by replying .pdsave of which u want to make multi page pdf filer   r   zMy PDF File.pdfzpdf/*r   rX   r   )r3   r4   existsr
   r&   r'   r(   r   globr   r   r6   r8   r:   r;   r<   rd   r9   r=   r>   makedirs)rC   rE   rD   mergeraflok_items          rQ   sendpdfr   O  s     77>>.))`
 	
 	
 	



#
#A
&
,
,
.CC5"3B_F
))G
C
F3K.C==MM$  LL
,,
 
 >S>S
 
TTTIIcN
MM&KK#	
 Us*   4E!EBE!=AE!EAE!E!))__doc__r   r3   r=   r,   r   numpyr   pyUltroid.fns.toolsr   r   r   r   r   r   r	   r
   r   r   PILr   r   r   __file__PyPDF2r   r   r   r   r   r   telethon.errors.rpcerrorlistr   r4   isdirr?   rR   rm   r   r   r        rQ   <module>r      sN  *  	   
  4	 	 	2C66MMM C	ww}}UHHUO 88v 22j @@F JJZ   2EII
/012  CBBCs"   C C% C"!C"%C87C8