
    BhC                         S r SSKrSSKrSSKrSSKJr  SSKJr  SSK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  SS
KJr  SSKJr  S rSS jrS rS rS rS rg)z4Insert anchors, links, bookmarks and inputs in PDFs.    N)md5)basename)unquoteurlsplit   )
Attachment)LOGGER)ffigobjectpango)get_font_description)URLFetchingErrorc                    U u  pgU GHs  u  ppUR                   " U
SS 6 u  pUR                   " U
SS 6 u  pUS;   d  M7  [        R                  " SS[        R                  " XX/5      [        R                  " SS05      S.5      Ul        U(       a#  [        R
                  " U	5      UR                  S	'   US
:X  a$  [        R
                  " U	5      UR                  S'   O;[        R                  " SS[        R
                  " U	5      S.5      UR                  S'   UR                  UR                  5        SU;  a  [        R                  " 5       US'   US   R                  UR                  R                  5        GMv     U HT  nUu  nnnUR                  UU5      u  nnUR                  U[        R                  " UR                  SUUS/5      /5        MV     g)z%Include hyperlinks in given PDF page.Nr   )internalexternal/Annotz/LinkWr   )TypeSubtypeRectBSContentsr   Dest/Actionz/URI)r   SURIAAnnots/XYZ)	transform_pointpydyf
DictionaryArraylink_annotationString
add_objectappend	reference)links_and_anchorsmatrixpdfpagenamesmarklinksanchors	link_typelink_target	rectangleboxx1y1x2y2anchoranchor_namexys                       H/var/www/html/env/lib/python3.13/site-packages/weasyprint/pdf/anchors.py	add_linksr>      s   &NE27.		''2A7''12700"'"2"2 "RR$45&&Qx0	4 #C 27,,{2K##J/J&.3ll;.G##F++0+;+;% <<4= ,##C(
 NN3../t#!&XN!!#"5"5"?"?@/ 382 "Q%%a+1dnnfaA%FGI 	J     c                 R   [        U5      n/ nU GH  u  nu  pgpn
[        R                  " U R                  U   SXxS45      n[        R                  " [        R
                  " U5      US.5      nU R                  U5        [        X	US9u  pXS'   U
S:X  a  US==   S-  ss'   OX>-  nU(       a$  US   R                  US'   UR                  US   S	'   U(       a$  US   R                  US
'   US   R                  US'   Ub  UR                  US'   UR                  U5        GM     Uc}  U(       av  [        R                  " UUS   R                  US   R                  S.5      nU R                  U5        U H  nUR                  US'   M     UR                  U R                  S'   XC4$ )z!Include bookmark outlines in PDF.r   r   )Titler   )parentCountclosedPrevNextFirstLastParent)rC   rH   rI   Outlines)lenr!   r#   page_referencesr"   r%   r&   add_outlinesr(   r'   catalog)r+   	bookmarksrB   countoutlinestitler,   r;   r<   childrenstatedestinationoutlinechildren_outlineschildren_countoutlines_dictionarys                   r=   rN   rN   7   s   	NEH09,|ukk3#6#6t#<faA"NO""\\%(+$? @w,8'-+))HG"#E&rl44GFO#*#4#4HRL 03==GG/3==GFO & 0 0GH ) 1:, ~(#..a[**RL**0
 
 	*+G 3 = =GH  "5"?"?J?r?   c                 :   U (       a  [        U R                  5       5      (       d  gSU;  a  [        R                  " 5       US'   SUR                  ;  aD  [        R
                  " [        R                  " 5       UR                  SS.5      UR                  S'   US   R                  5       S   n[        R                  " [        R                  " U5      [        R                  5      nU R                  5        V	V
VVVs/ s H  u  pU
  H
  u  pnXX4PM     M     nnnn
n	n[        R                   " ["        5      n[        R                   " ["        5      n [%        U5       G	H.  u  nu  pp/ UR&                  " USS 6 QUR&                  " USS 6 Q7nUR(                  R+                  S	5      nUR(                  R+                  S
S5      nSUR-                  5        SU 3nUR(                  R+                  SU5      nUS   S-  nUR/                  5       nUR1                  US   5        [        R
                  " SS[        R                  " U5      UR                  S[        R2                  " U5      S.5      nUS;   GaC  US:X  a  UX   ;  a  [        R
                  " SS[        R2                  " U5      S[        R                  " 5       [        R                  " 5       S.5      =X   U'   nUR5                  U5        UR                  S   S   R7                  UR                  5        X   U   nUS   S-  nSnOSnUS   US   -
  nUS    US!   -
  nUR/                  UR                  S"S#[        R                  " SSUU45      S$.S%9nUR9                  5         UR;                  5         UR1                  US   5        UR=                  S&U5        UUS-  -
  S-  nUUS-  -
  S-  nUR?                  UU5        URA                  U5        URC                  5         URE                  5         UR5                  U5        UR=                  S&U5        S'UR(                  ;   nUS:X  a  [G        WS(   5      OS)n [        R
                  " U UR                  05      n!SUS*'   [        R2                  " S+RI                  URJ                  5      5      US,'   U(       a  S-U  3OSUS.'   [        R
                  " S/U!05      US0'   [        R
                  " S1[        R2                  " U5      05      US2'   UR5                  U5        US:X  af  WR                  US3'   U(       a  S-U  3US4'   US(   R7                  UR                  5        US5   R7                  [        R2                  " U5      5        GO[        R2                  " U5      US6'   US.   US4'   GOvURL                  S7:X  Ga  [O        U5      n"[        RP                  " XhU"5      n#URS                  U#5      u  n#n$S8U#l*        UR=                  U#RV                  U5        / n%/ n&U H  n'[        R2                  " U'R(                  R+                  S
S95      5      n([        R2                  " U'RX                  =(       d    S95      n)U%R7                  [        R                  " U(U)/5      5        S:U'R(                  ;   d  M  U&R7                  U(5        M     S;US*'   [        R2                  " S+RI                  URJ                  5      5      US,'   [        R                  " U%5      US5'   S<UR(                  ;   a  S=US>'   [        R                  " U&5      US4'   O*S?US>'   U&(       a  U&S@   O[        R2                  " S95      US4'   UR5                  U5        GOUSA:X  d  URL                  SB:X  Ga0  Sn*U	R(                  R+                  SCS95      R[                  5       SD:w  a  U*SE-  n*[        R                  " SF X	   R                  5        5       5      n+SUS*'   [        R2                  " S+RI                  URJ                  5      5      US,'   [        R2                  " U	R(                  R+                  S
S95      5      US4'   SGUS>'   [        R
                  " SHSI[        R2                  " U	R(                  R+                  SJ5      5      U+U*SK.5      USL'   UR5                  U5        GOY[O        U5      n"[        RP                  " XhU"5      n#URS                  U#5      u  n#n$S8U#l*        UR=                  U#RV                  U5        SMUS*'   [        R2                  " S+RI                  URJ                  5      5      US,'   [        R2                  " UR(                  R+                  S
S95      5      US4'   URL                  SN:X  a2  SOUS>'   [        R2                  " URX                  =(       d    S95      US4'   OUSP:X  a  SQUS>'   OUSR:X  a  SSUS>'   UR+                  STS95      =n,R]                  5       (       a  U,USU'   UR5                  U5        US   R7                  UR                  5        UR                  S   S   R7                  UR                  5        UU ;  d  G	M'  UX	   U'   G	M1     gs  snnnn
n	f )VzInclude form inputs in PDF.Nr   AcroFormtrue)FieldsDRNeedAppearancesr   r   r   typevalueYeszunknown--name	font_sizeg      ?colorr   z/Widget   )r   r   r   PFT)radiocheckboxrl   z/Btni   z/Off)FTFfrk   VKidsOptr^   g      ?l4      /XObject/Form)	Resourcesr   r   BBox)extraZaDbcheckedrq   onrn       DA/ASNAPCAMKrJ   rp   rr   rk   selectT selectedz/Chmultiplei    ro   i   rE   submitbuttonmethodpost   c              3   8   #    U  H  oR                   v   M     g 7fN)r(   ).0fields     r=   	<genexpr>add_forms.<locals>.<genexpr>   s     !T?Se//?Ss   i   r   z/SubmitFormaction)r   r   rj   r^   Flagsr   z/Txtextarea   passwordi    filei   	maxlengthMaxLen)/anyvaluesr!   r#   rO   r"   r(   splitr
   gcr   pango_font_map_create_contextr   g_object_unrefitemscollectionsdefaultdictdict	enumerater    attribgetdecodeclone	set_colorr%   r&   r'   
push_state
begin_textset_font_sizemove_text_toshow_text_stringend_text	pop_staterL   joinstreamtagr   pango_font_map_load_fontadd_fontused_in_formshashtextlowerisdigit)-formsr*   r+   r,   	resourcesr   font_mappage_referencecontextforminputselementstyler3   inputs_with_formsradio_groupsi
input_typeinput_valuedefault_name
input_namerf   field_streamr   group	characterwidthheightchecked_streamr;   r<   r}   key
appearancefont_descriptionfont_optionsselected_valuesoptionrb   r   flagsfields
max_lengths-                                                r=   	add_formsr   _   s!	   ELLN++tX$"'"2"2kkm%%%4
 #J
 *%++-a0Nff++H5 G
 "KKM)LD)/%GI 
))/ 	*)  
 **40L##D)E09:K0L,,D55##Yr]35##Yqr]35	 ^^''/
nn((%8!."7"7"9!:!A3?^^''=
+&-	||~uW~.   KK	*j)"
  ..W$\%77=B=M=M$?"\\*5# %${{}O > L&z2U NN5)KK
+H5<<U__M$*:6!+.4			 aL9Q</Eq\IaL0F#\\&00""Q5&$9:	1\ N %%'%%'$$U7^4((;T))Q.A)d**a/A''1-++I6##%$$&NN>*&&vy97>>1G(2g(=#eFm$4C))30H0H*IJJ E$K,,tyy1D1D'EFE$K'.AcU)FE$K**C+<=E$K**D%,,y2I+JKE$KNN5!W$"'//h#$SEE#Jf$$U__5e##ELL$=>"\\*5c
"4[c
[[H$3E:11#35Dood+GD!!%D&&tyy)<G O!V]]%6%6w%CD||FKK$526u{{E4=9:.#**51 "  E$K,,tyy1D1D'EFE$K ;;w/E%LW^^++d"[[9c
+d+:OB'b) c
 NN5!8#w{{h'> E{{x,224>%[[!Tu{?Q?Q?S!TUF E$K,,tyy1D1D'EFE$Kdkkoogr&BCE#J'E$K))!"\\$++//(";< + E#J NN5!  4E:11#35Dood+GD!!%D&&tyy)<E$K,,tyy1D1D'EFE$Kgnn&8&8"&EFE#J{{j(+d"\\',,*<"=c
z)+dv%+d%kk+r::
CCEE",hNN5!Xeoo.J)00AU"&+EK
#{ 1Ms   >jc                    U  GHb  u  pxpUS:w  a  M  X;  a!  [        XR                  S9n[        X;U5      XX'   XX   nUc  M>  / UR                  " U	SS 6 QUR                  " U	SS 6 Q7n	[        R
                  " / SS[        R                  " U	5      S.U5      nUR                  U5        [        R                  " S[        R                  " U	5      S	[        R                  " 5       UR                  [        R                  " S
UR                  05      SS.5      nUR                  U5        SU;  a  [        R                  " 5       US'   US   R                  UR                  5        GMe     g)zInclude annotations in PDF.
attachment)urlurl_fetcherNr   rw   rx   )r   r   rz   r   z/FileAttachmentr   z/N)r   r   r   rk   FSr   r   r   )r   r   write_pdf_attachmentr    r!   Streamr#   r&   r"   r%   r(   r'   )r/   r*   documentr+   r,   annot_filescompressr1   annot_targetr3   r   r   
annot_filer   annots                  r=   add_annotationsr     sc    27-	$* $ .B.BDJ(<)+K% .
5##Yr]35##Yqr]35	 bKK	*#
 	
 	v  KK	*(&&""C)9)9#:;"
  	u4"[[]DNXeoo.M 27r?   c                 6  ^ SnSnSn UR                    u  nmp6[        T[        5      (       a  TR                  5       m[        T[        5      (       a  [
        R                  " T5      m[        U4S jS5       H  nU[        U5      -  nXW-  nM     SSS5        [        USS	9R                  5       Ul        UR                  (       a  UR                  n	OKU(       aB  [!        U5      R"                  (       a(  [%        ['        [!        U5      R"                  5      5      n	OS
n	[(        R*                  " U	SS9S   n
U
(       d  Sn
[,        R.                  " UR0                  R3                  S5      5      n[,        R.                  " UR4                  R3                  S5      5      n[,        R6                  " SSU
R9                  SS5       3[,        R6                  " SUR                   S3UUUS.5      S.5      n[,        R:                  " U/XS9nU R=                  U5        [,        R6                  " S[,        R.                  " U	R                  SS95      [,        R.                  " U	5      [,        R6                  " SUR>                  05      [,        R.                  " UR@                  =(       d    S5      S.5      nU R=                  U5        U$ ! , (       d  f       GN:= f! [         a6  n[        R                  " SU5        [        R                  " SUS9   SnAgSnAff = f)z&Write an attachment to the PDF stream.Nr   r?   c                  &   > T R                  S5      $ )Nr   )read)sources   r=   <lambda>&write_pdf_attachment.<locals>.<lambda>W  s    V[[%6r?   zFailed to load attachment: %szError while loading attachment:)exc_infoF)usedforsecurityzattachment.bin)strictzapplication/octet-streamzD:%Y%m%d%H%M%SZz/EmbeddedFiler   z#2f<>)CheckSumSizeCreationDateModDate)r   r   Params)r   z	/Filespecignore)errorsrj   r   )r   rj   UFEFDesc)!r   
isinstancestrencodebytesioBytesIOiterrL   r   r	   errordebugr   	hexdigestre   r   pathr   r   	mimetypes
guess_typer!   r%   createdstrftimemodifiedr"   replacer   r&   r(   description)r+   r   r   r   uncompressed_lengthr   r   data	exceptionfilename	mime_typecreationmod
file_extrafile_streampdf_attachmentr   s                   @r=   r   r   J  s{    CF"51fc&#&&&%((F+6<#s4y0# =  7AACJN ??	###GHSM$6$678#$$Xe<Q?I.	||J..778IJKH
,,z**334EF
GC!!y((e456""JNN+1-'$	$
 	# 	J ,,xGKNN;%%\\(///:;ll8$[%:%:;<Z339r:' N NN>"c   4i@6Ks5   K A>KK 
KK K 
L",LLc              #     #    [        5       n/ n[        U 5       Hl  u  p4UR                  / 5        UR                  R	                  5        H8  u  nu  pg  nXQ;  d  M  US   R                  XVU45        UR                  U5        M:     Mn     U  Hz  n/ n	UR                   HQ  n
U
u  p  nUS:X  a1  XQ;  a  [        R                  " SU5        M-  U	R                  U
5        M@  U	R                  U
5        MS     XR                  S5      4v   M|     g7f)a  Resolve internal hyperlinks.

Links to a missing anchor are removed with a warning.

If multiple anchors have the same name, the first one is used.

:returns:
    A generator yielding lists (one per page) like :attr:`Page.links`,
    except that ``target`` for internal hyperlinks is
    ``(page_number, x, y)`` instead of an anchor name.
    The page number is a 0-based index into the :attr:`pages` list,
    and ``x, y`` are in CSS pixels from the top-left of the page.

rE   r   z(No anchor #%s for internal URI referencer   N)
setr   r'   r0   r   addr/   r	   r  pop)pagesr0   paged_anchorsr   r,   r:   point_xpoint_yr   
page_linkslinkr1   s               r=   resolve_linksr*    s     eGMU#R 59\\5G5G5I1K1'Aq)b!((+)HIK( 6J $ 
JJD+/(IAqJ&-LLB#% %%d+ !!$'  ++A... s   ADB0Dr   )__doc__r   r  r  hashlibr   os.pathr   urllib.parser   r   r!   r   r   loggerr	   text.ffir
   r   r   
text.fontsr   urlsr   r>   rN   r   r   r   r*   r?   r=   <module>r4     sT    :  	    *    * * - #!JH%Pu,r//d9x%/r?   