#!/usr/bin/env php

<?php
/**
 * FILENAME:
 * pdflib_demo
 *
 * DESCRIPTION:
 * Demonstration of the pdflib PHP Library for generating PDF files
 *
 */

/**
 Links:
  - https://www.pdflib.com/developer/technical-documentation/manuals/
  - https://www.pdflib.com/pdflib-cookbook/browse-all-topics/
  - https://www.pdflib.com/pdflib-cookbook/graphics/layers-and-bookmarks/php-layers-and-bookmarks/
  - https://www.pdflib.com/pdflib-cookbook/text-output/create-interactive-index/php-create-interactive-index/
  - https://www.pdflib.com/pdflib-cookbook/general-programming/starter-basic/php-general-progamming-issues/
  - https://www.pdflib.com/en/pdflib-cookbook/block-handling-and-pps/linked-textblocks/php-linked-textblocks/
  - https://www.pdflib.com/pdflib-cookbook/interactive-elements/link-annotations/php-link-annotations/
  - https://www.pdflib.com/pdflib-cookbook/text-output/footnotes-in-text/footnotes-in-text/
  - https://www.pdflib.com/fileadmin/pdflib/Cookbook/pdf/footnotes_in_text.pdf
  - https://www.pdflib.com/pdflib-cookbook/pdf-import/import-in-reverse-order/php-import-in-reverse-order/

*/

// set a default timezone
date_default_timezone_set("America/Los_Angeles");

//require_once('tcpdf_include.php');
$outfile = __DIR__ . '/pdflib_output.pdf';

// page placement defaults
$pageTopYPortrait = 750;
$pageTopYLandscape = 570;


// wrap PDFlib usage in a try{} block
try {
   $pdf = new PDFlib();

   // set up some PDFlib options
   $pdf->set_option("errorpolicy=return");
   $pdf->set_option("stringformat=utf8");
   // all paths in 'searchpath' need to be inside curly braces
   // multiple curly-braced paths in $searchpath need to be separated with
   // space characters
   $searchpath = '{/usr/share/fonts/dejavu/}';
   $pdf->set_option("searchpath={" . $searchpath . "}");

   if ($pdf->begin_document($outfile, "") == 0)
      throw new Exception("Error: " . $pdf->get_errmsg());

   // set up the document metadata info
   $pdf->set_info('Creator', 'IODP Science Support Office');
   $pdf->set_info('Author', 'IODP Science Support Office');
   $pdf->set_info('Title', 'Demo of TCPDF for generating IODP Proposals');
   $pdf->set_info('Subject', 'IODP Proposals');
   $pdf->set_info('Keywords', 'IODP proposal ocean drilling core expedition');

   $textOpts = "fontname={DejaVuSans} embedding fontsize=20 "
      . "encoding=unicode ";

   // START PAGE 1
   $pdf->begin_page_ext(612, 792, '');

   // create bookmarks first thing
   $action = $pdf->create_action("GoTo", "destination={page=1}");
   $pdf->create_bookmark("Page 1", " action={activate= " . $action . "}");

   // action
   $action = $pdf->create_action("GoTo", "destination={page=2}");
   // bookmark
   $pdf->create_bookmark("Page 2", " action={activate= " . $action . "}");


   // text/image
   $pdf->fit_textline("Jump to SSF for SHACK-10A", 20, 750,
      $textOpts . " underline=true matchbox={name=to_second_page}");
   // annotation; reuse the "page 2" action above
   $optlist = "action={activate " . $action . "} linewidth=0 " .
                 "usematchbox={to_second_page}";
   $pdf->create_annotation(0, 0, 0, 0, "Link", $optlist);

   // the rest of the text on page 1
   $pdf->fit_textline("This is some text on the first page; ", 20, 720,
      $textOpts);
   $pdf->fit_textline("Привет! Этот немного текста.", 20, 690, $textOpts);

   // END PAGE 1
   $pdf->end_page_ext('');

   // START PAGE 2
   //$pdf->begin_page_ext(612, 792, '');
   $ssfPDF = $pdf->open_pdi_document(__DIR__ . "/site_summary_figure.pdf", '');
   if ($ssfPDF == 0)
      throw new Exception("Error: " . $p->get_errmsg());

   $ssfPage = $pdf->open_pdi_page($ssfPDF, 1, '');
   $ssfWidth = $pdf->pcos_get_number($ssfPDF, "pages[0]/width");
   $ssfHeight = $pdf->pcos_get_number($ssfPDF, "pages[0]/height");
   //print "Page width/height: $ssfWidth x $ssfHeight\n";

   $pdf->begin_page_ext($ssfWidth, $ssfHeight, '');

   $pdf->fit_pdi_page($ssfPage, 0, 0, '');
   $pdf->close_pdi_page($ssfPage);
   $pdf->close_pdi_document($ssfPDF);

   // write some text on to the page
   // for landscape mode...
   //$pdf->fit_textline("Back to Top", 20, 570,
   //$linkOpts = linkAttribs(1, 750);
   $action = $pdf->create_action("GoTo", "destination={page=1}");
   $pdf->fit_textline("Back to Top", 20, $ssfHeight - 30,
      $textOpts . " underline=true matchbox={name=to_first_page}");

   // call create_annotation here
   $optlist = "action={activate " . $action . "} linewidth=0 " .
                 "usematchbox={to_first_page}";
   $pdf->create_annotation(0, 0, 0, 0, "Link", $optlist);

   // END PAGE 2
   $pdf->end_page_ext('');

   // close the document
   $pdf->end_document('');
}

catch (PDFlibException $e) {
       die("PDFlib exception occurred in sample:\n" .
               "[" . $e->get_errnum() . "] " . $e->get_apiname() . ": " .
                       $e->get_errmsg() . "\n");
}

catch (Exception $e) {
       die($e);
}

$p = 0;

function linkAttribs($pageNum = 1, $pageY = 750) {
   return "destination={page={$pageNum} type=fixed left=0 top={$pageY}}"
      . " underline=true";
}

/*
// write out the contents of the first page
$pdf->AddPage();
$topLink = $pdf->AddLink();
$pdf->SetLink($topLink);
//$pdf->AddFont('DejaVu','','DejaVuSansCondensed.ttf',true);
$pdf->AddFont('dejavusanscondensed','','dejavusanscondensed.php',true);
//$pdf->SetFont('DejaVu', '', 20);
$pdf->SetFont('dejavusanscondensed', '', 20);
$pdf->SetFont('', 'U');
$ssfLink = $pdf->AddLink();
$pdf->Write(10, "Jump to SSF for SHACK-10A", $ssfLink);
$pdf->SetFont('');
$pdf->Ln();
$pdf->Write(10, "This is some text on the first page; ");
$pdf->Ln();
$pdf->Write(10, "Привет! Этот немного текста.");

// load up the Site Summary Figure to go on page #2
$ssfPageCount = $pdf->setSourceFile(__DIR__ . '/site_summary_figure.pdf');
//print "Page count of site summary figure form is $ssfPageCount\n";

// import the SSF page
$ssfTemplate= $pdf->importPage(1);
//print "Page size of site summary figure PDF is: ";
//$ssfSize = $pdf->getTemplateSize($ssfTemplate);
//print "{$ssfSize['w']}mm x {$ssfSize['h']}mm\n";

// add the SSF file to the 2nd page
$pdf->AddPage();
$pdf->SetLink($ssfLink);
$pdf->useTemplate($ssfTemplate);
$pdf->SetFont('Helvetica');
$pdf->SetXY(5,5);
$pdf->SetFont('', 'U');
$pdf->Write(8, "Top", $topLink);
$pdf->SetFont('');
$pdf->SetXY(40, 5);
$pdf->Write(8, " SSF: P771/SHACK-10A");

// destination, F = "local file"; filename; isUTF8 (boolean)
//$pdf->Output('F', 'output.pdf', TRUE);
$pdf->Output(__DIR__ . '/output.pdf', 'F');
*/

// vim: expandtab filetype=php shiftwidth=3 tabstop=3