191 lines
4.3 KiB
Plaintext
191 lines
4.3 KiB
Plaintext
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;
|
|
|