Uses TSPdfEnumerations; {$IFDEF LINUX} separator := "/"; {$ELSE} separator := "\\"; {$ENDIF} alias := ""; path := ""; InitCmdParams(alias, path); output_file := "link_annotation_demo.pdf"; output_file := path + separator + output_file; pdf := new PdfFile(); uri := "http://sourceforge.net/projects/libharu"; // create default-font font := pdf.GetFont("Helvetica", ""); // create index page page := pdf.AddPage(); page.SetWidth(300); page.SetHeight(220); // Add 7 pages to the document. page_arr := array(); for i:=0 to 6 do begin p := pdf.AddPage(); page_arr[i] := p; PrintPage(page_arr[i], font, i + 1); end page.BeginText(); page.SetFontAndSize(font, 10); page.MoveTextPos(15, 200); page.ShowText("Link Annotation Demo"); page.EndText(); // Create Link-Annotation object on index page. page.BeginText(); page.SetFontAndSize(font, 8); page.MoveTextPos(20, 180); page.SetTextLeading(23); // page1 (ANNOT_NO_HIGHTLIGHT) tp := page.GetCurrentTextPos(); page.ShowText("Jump to Page1(HilightMode=TSPdfEnumerations.ANNOT_NO_HIGHTLIGHT)"); pos := page.GetCurrentTextPos(); rect := array(tp[0] - 4, tp[1] - 4, pos[0] + 4, pos[1] + 10); page.MoveToNextLine(); dst := page_arr[0].CreateDestination(); annot := page.CreateLinkAnnot(rect, dst); annot.LinkAnnotSetHighlightMode(TSPdfEnumerations.ANNOT_NO_HIGHTLIGHT); // page2(pdf.ANNOT_INVERT_BOX) tp := page.GetCurrentTextPos(); page.ShowText("Jump to Page2(HilightMode=TSPdfEnumerations.ANNOT_INVERT_BOX)"); pos := page.GetCurrentTextPos(); rect := array(tp[0] - 4, tp[1] - 4, pos[0] + 4, pos[1] + 10); page.MoveToNextLine(); dst := page_arr[1].CreateDestination(); annot := page.CreateLinkAnnot(rect, dst); annot.LinkAnnotSetHighlightMode(TSPdfEnumerations.ANNOT_INVERT_BOX); // page3(pdf.ANNOT_INVERT_BORDER) tp := page.GetCurrentTextPos(); page.ShowText("Jump to Page3(HilightMode=TSPdfEnumerations.ANNOT_INVERT_BORDER)"); pos := page.GetCurrentTextPos(); pos := page.GetCurrentTextPos(); rect := array(tp[0] - 4, tp[1] - 4, pos[0] + 4, pos[1] + 10); page.MoveToNextLine(); dst := page_arr[2].CreateDestination(); annot := page.CreateLinkAnnot(rect, dst); annot.LinkAnnotSetHighlightMode(TSPdfEnumerations.ANNOT_INVERT_BORDER); // page4(pdf.ANNOT_DOWN_APPEARANCE) tp := page.GetCurrentTextPos(); page.ShowText("Jump to Page4(HilightMode=TSPdfEnumerations.ANNOT_DOWN_APPEARANCE)"); pos := page.GetCurrentTextPos(); rect := array(tp[0] - 4, tp[1] - 4, pos[0] + 4, pos[1] + 10); page.MoveToNextLine(); dst := page_arr[3].CreateDestination(); annot := page.CreateLinkAnnot(rect, dst); annot.LinkAnnotSetHighlightMode(TSPdfEnumerations.ANNOT_DOWN_APPEARANCE); // page5(dash border) tp := page.GetCurrentTextPos(); page.ShowText("Jump to Page5(dash border)"); pos := page.GetCurrentTextPos(); rect := array(tp[0] - 4, tp[1] - 4, pos[0] + 4, pos[1] + 10); page.MoveToNextLine(); dst := page_arr[4].CreateDestination(); annot := page.CreateLinkAnnot(rect, dst); annot.LinkAnnotSetBorderStyle(1, 3, 2); // page6(no border) tp := page.GetCurrentTextPos(); page.ShowText("Jump to Page6(no border)"); pos := page.GetCurrentTextPos(); rect := array(tp[0] - 4, tp[1] - 4, pos[0] + 4, pos[1] + 10); page.MoveToNextLine(); dst := page_arr[5].CreateDestination(); annot := page.CreateLinkAnnot(rect, dst); annot.LinkAnnotSetBorderStyle(0, 0, 0); // page7(bold border) tp := page.GetCurrentTextPos(); page.ShowText("Jump to Page7(bold border)"); pos := page.GetCurrentTextPos(); rect := array(tp[0] - 4, tp[1] - 4, pos[0] + 4, pos[1] + 10); page.MoveToNextLine(); dst := page_arr[6].CreateDestination(); annot := page.CreateLinkAnnot(rect, dst); annot.LinkAnnotSetBorderStyle(2, 0, 0); // URI link tp := page.GetCurrentTextPos(); page.ShowText("URI("); page.ShowText(uri); page.ShowText(")"); pos := page.GetCurrentTextPos(); rect := array(tp[0] - 4, tp[1] - 4, pos[0] + 4, pos[1] + 10); page.CreateURILinkAnnot(rect, uri); page.EndText(); // save the document to a file err := pdf.SaveToFile(alias, output_file); echo "SaveToFile::\t", "err := ", format("%x", err), "\toutput_file := ", output_file, "\n"; return; Function PrintPage(page, font, page_num); Begin page.SetWidth(200); page.SetHeight(200); page.SetFontAndSize(font, 20); page.BeginText(); page.MoveTextPos(50, 150); buf := format("Page:%d", page_num); page.ShowText(buf); page.EndText(); End;