
    Mif                     X   S SK r S SKrS SKJrJrJrJr  S SKrS SK	J
r  S SKJr  S SKJrJrJrJrJrJr  S\\\\4      4S jrS\\   4S jrSS\\   4S jjrS	\S
\R4                  S\\   4S jrS\S
\R4                  S\4S jrS\S\\   S\\   4S jrS\S\R4                  4S jrg)    N)DictListOptionalTuple)matrix_intersection_area)BboxLinkPagePageReferencePagesSpanreturnc           	         [         R                  " 5       n[         R                  " 5       n[         R                  " 5       n[         R                  " 5       n[         R                  " 5       n[         R                  " 5       n[        R                  " XX#XEU5      nU(       a:  UR
                  (       a)  UR
                  (       a  UR
                  UR
                  4$ g )N)ctypesc_intc_floatpdfium_cFPDFDest_GetLocationInPagevalue)desthas_xhas_yhas_zoomx_coordy_coord
zoom_levelsuccesss           k/var/www/eduai.edurigo.com/storigo/production/storigo_env/lib/python3.13/site-packages/pdftext/pdf/links.py_get_dest_positionr      s    LLNELLNE||~HnnGnnG!J11U*G ;;5;;=='--//    c                    [         R                  " [        US   US   -
  5      5      n[         R                  " [        US   US   -
  5      5      nU u  pVpxXQS   -  nXqS   -  nXaS   -  nXS   -  nXF-
  n	XH-
  n
[        XW5      [        X5      [	        XW5      [	        X5      /nU Vs/ s H  n[        US5      PM     nn[        U5      R                  X4U5      R                  $ s  snf )N   r         )	mathceilabsminmaxroundr   rotatebbox)rect	page_bboxpage_rotation
page_widthpage_heightcx_startcy_startcx_endcy_endty_startty_endr,   xs                r   _rect_to_scaled_bboxr9      s    3y|il:;<J))C	!y| ;<=K)-&H!H
lF!H
lF%H!F!3x#8#h:OQTU]QfgD!%&AE!QKD&:ZmDIII 's   (C%c                 8    [        X-
  X-
  X-   X-   /X#5      S S $ )Nr"   )r9   )r8   yr.   r/   	expand_bys        r   _xy_to_scaled_posr=   /   s*    q}am \^gwxzyz{{r    page_idxpdfc                    / nUR                  U 5      nUR                  5       nSn UR                  5       n[        R                  " U5      n[        U5       GH  nU S S S S S.n[        R                  " X75      n	[        R                  " U	5      [        R                  :w  a  ML  [        R                  " 5       n
[        R                  " X5      nU(       d  M  [        U
R                  U
R                  U
R                  U
R                  /XE5      US'   [        R                   " U	5      n[        R"                  " X5      nU(       a@  [        R$                  " X5      nXS'   ['        U5      nU(       a  [)        / UQUPUP76 US'   GOG[        R*                  " U5      n[        R,                  " U5      nU[        R.                  :X  a  GMq  U[        R0                  :X  a]  [        R2                  " UU5      nU(       a>  [        R$                  " X5      nXS'   ['        U5      nU(       a  [)        / UQUPUP76 US'   OU[        R4                  :X  a  [        R6                  " UUS S5      nUS:  a`  [8        R:                  " U5      n[        R6                  " UUUU5        UR<                  S U R?                  SSS9RA                  S	5      nUUS
'   URC                  U5        GM     U$ !    GN= f)Nr   )pager,   	dest_pagedest_posurlr,   rB   rC   zutf-8replace)errors rD   )"get_pageget_bboxget_rotationr   FPDFPage_GetAnnotCountrangeFPDFPage_GetAnnotFPDFAnnot_GetSubtypeFPDF_ANNOT_LINKFS_RECTFFPDFAnnot_GetRectr9   lefttoprightbottomFPDFAnnot_GetLinkFPDFLink_GetDestFPDFDest_GetDestPageIndexr   r=   FPDFLink_GetActionFPDFAction_GetTypePDFACTION_UNSUPPORTEDPDFACTION_GOTOFPDFAction_GetDestPDFACTION_URIFPDFAction_GetURIPathr   create_string_bufferrawdecoderstripappend)r>   r?   urlsrA   r.   r/   annot_countilinkannotfs_rectr   link_objr   tgt_pagedest_positionactiona_type
needed_lenbufuris                        r   	get_linksrs   3   s   D<<!D!]]_IM))+ 11$7K;
 **43((/83K3KK##%,,U<+\\7;;w~~F
V
 --e4((799#DH (.t4M#4#^m#^Y#^P]#^Z  00:F008F7778222223?'AA#LH(0%$6t$<M$+<+fm+fY+fXe+fZ(8111%;;CqQ
> 55jAC223ZP''+:.55gi5PWWX^_C"%DKDu  v Ks   K% %K*rA   refsc           
      L   U S   n[        X15      nU S    VVVs/ s H  oUS     H  ofS     H  owPM     M     M     nnnnU Vs/ s H  owS   R                  PM     n	nU V
s/ s H  oS   PM	     nn
[        X5      n0 n[        U5       H  u  pX   nUR	                  5       S:X  a  M  UR                  5       nUU   nU
S   nUb=  U
S	   (       a  U
S	   nOUU:X  a  MT  S
S
/nUR                  UU5      nUR                  U
S'   UR                  U/ 5        UU   R                  U
5        M     SnU S    H[  nUS    HO  n/ nUS    H=  nUU;   a  UR                  [        X}U   5      5        OUR                  U5        US-  nM?     XS'   MQ     M]     gs  snnnf s  snf s  sn
f )z
Merges links with spans. Some spans can also have multiple links associated with them.
We break up the spans and reconstruct them taking the links into account.
rA   blockslinesspansr,   r   rB   NrC   g        rD   r#   )rs   r,   r   	enumeratesumargmaxadd_refrD   
setdefaultrd   extend_reconstruct_spans)rA   r?   rt   page_idlinksblocklinespanrx   span_bboxesrh   link_bboxesintersection_matrixspan_link_maplink_idxintersection_linkmax_intersectionrB   rC   refspan_idxs                        r   merge_linksr   }   s   
 6lGg#E#H~c~e.$ZaUbTTUbT.T~Ec167<$$K7,12ED<EK22;L+-M#E*/9  "a',335%&%	 J
+ ':,,y(3C''DK  !126&'..t4/ +2 Hh'NDEW},LL!3D:Q!RSLL&A & "M #  C d72s   #FF#F!	orig_spanr   c           
         / nSnU Vs/ s H  n[        US   5      PM     nnU S    GH<  n[        US   R                  5      n/ n[        U5       Hj  u  pUR                  S:  a  U
R	                  U5      nO&U
R	                  [        US   R                  SS95      nUS:  d  MU  UR                  XU	   45        Ml     SnU(       a  UR                  S SS	9  US   S
   S   nU(       a  XS   :w  a.  UUS   US   US   US   US   U/US.nUR                  U5        M  US==   US   -  ss'   US   US'   US   R                  U5      US'   US   R                  U5        GM?     U$ s  snf )zS
Reconstructs the spans by breaking them up into smaller spans based on the links.
Nr,   charsr   T)ensure_nonzero_area c                     U S   $ )Nr    )r8   s    r   <lambda>$_reconstruct_spans.<locals>.<lambda>   s    QqTr    )keyreverser#   rD   charrotationfontchar_idx)r,   textr   r   char_start_idxchar_end_idxr   rD   r   r   )r   r,   ry   areaintersection_areard   sortmerge)r   r   rx   r   rh   r   r   	char_bboxintersectionsrg   	link_bboxr   current_urls                r   r   r      s    ED278%$4V%%K8'"f**+	24%k2LA~~! 229= 224V8I8I_c3deax$$d!H%56 3 >4@'*1-e4K{5k1!V ,V"&z"2 $Z 0"	D LLLDL(L#'
#3D <--i8DLM  &A #D LI 9s   E+pagespdf_docc                     [        5       nU  H  n[        X1U5        M     U  H  nUR                  US   5      US'   M     g )NrA   rt   )r   r   get_refs)r   r   rt   rA   s       r   add_links_and_refsr      s?    ?DD4(  }}T&\2V r    )r#   ) r   r%   typingr   r   r   r   	pypdfium2pdfiumpypdfium2.rawra   r   pdftext.pdf.utilsr   pdftext.schemar   r	   r
   r   r   r   floatr   r9   r=   intPdfDocumentrs   r   dictr   r   r   r    r   <module>r      s      . .    6 G Gue|)< = "JDK J$|d5k |G G&"4"4 Gd GT3"d 3"!3!3 3"= 3"l*$ *tDz *d4j *Z3e 3f.@.@ 3r    