Pdf/demo/link_annotation_demo.tsl

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;