@@ -96,10 +96,12 @@ def add_hyperlinks_and_styling(self, doc: fitz.Document, word_instances: List[Tu
9696 page = doc [page_num ]
9797
9898 # Add hyperlink annotation
99- link_annot = page .add_link_annot ( bbox , uri = link )
99+ link_annot = page .insert_link ({ "kind" : fitz . LINK_URI , " uri" : link , "from" : bbox } )
100100
101101 # Add tooltip (using annotation title)
102- link_annot .set_info (title = f"Click to visit: { word } " )
102+ # Note: PyMuPDF doesn't support tooltips directly, but we can add a text annotation
103+ tooltip_rect = fitz .Rect (bbox .x0 , bbox .y0 - 20 , bbox .x1 , bbox .y0 )
104+ page .add_text_annot (tooltip_rect .tl , f"Click to visit: { word } " )
103105
104106 # Add visual styling - blue underline
105107 # Note: PyMuPDF doesn't directly modify text color, but we can add visual indicators
@@ -170,7 +172,7 @@ def create_sample_word_list(filename: str = "word_list.csv") -> None:
170172 print (f"📝 Created sample word list: { filename } " )
171173
172174def main ():
173- if len (sys .argv ) != 4 :
175+ if len (sys .argv ) < 2 :
174176 print ("Usage: python pdf_hyperlink_adder.py input.pdf word_list.csv output.pdf" )
175177 print ("\n Example:" )
176178 print (" python pdf_hyperlink_adder.py document.pdf word_list.csv document_with_links.pdf" )
@@ -182,6 +184,14 @@ def main():
182184 create_sample_word_list ()
183185 return
184186
187+ if len (sys .argv ) != 4 :
188+ print ("Usage: python pdf_hyperlink_adder.py input.pdf word_list.csv output.pdf" )
189+ print ("\n Example:" )
190+ print (" python pdf_hyperlink_adder.py document.pdf word_list.csv document_with_links.pdf" )
191+ print ("\n To create a sample word list:" )
192+ print (" python pdf_hyperlink_adder.py --create-sample" )
193+ return
194+
185195 input_pdf = sys .argv [1 ]
186196 word_list_file = sys .argv [2 ]
187197 output_pdf = sys .argv [3 ]
0 commit comments