set_option("errorpolicy=exception searchPath={" . $searchpath . "}"); /* all strings are expected as utf8 */ $p->begin_document("", "pdfua=PDF/UA-1 lang=en " . "tag={tagname=Document Title={PDFlib PDF/UA-1 demo}}") ; $p->set_info("Creator", "starter_pdfua1"); $p->set_info("Title", "PDFlib PDF/UA-1 demo"); /* Automatically create spaces between chunks of text */ $p->set_option("autospace=true"); $p->begin_page_ext(0, 0, "width=a4.width height=a4.height taborder=structure"); $p->create_bookmark("PDF/UA-1 demo", ""); $font = $p->load_font("NotoSerif-Regular", "unicode", ""); $p->setfont($font, 24.0); /* =================== Simple text ======================== */ /* Use abbreviated tagging with the "tag" option */ $p->fit_textline("Introduction to Paper Planes", 50, 700, "tag={tagname=H1 Title={Introduction}} fontsize=24"); $p->fit_textline( "Paper planes can be made from any kind of paper.", 50, 675, "tag={tagname=P} fontsize=12"); $p->fit_textline("Most paper planes don't have an engine.", 50, 650, "tag={tagname=P} fontsize=12"); /* =================== Interactive Link ======================== */ /* Open both P and Link elements in a single call */ $id = $p->begin_item("P", "tag={tagname=Link Title={Kraxi on the Web}}"); /* Create visible content which represents the link */ $p->fit_textline("Learn more on the Kraxi website.", 50, 625, "matchbox={name={kraxi.com}} fontsize=12 " . "strokecolor=blue fillcolor=blue underline"); /* Create URI action */ $action = $p->create_action("URI", "url={http://www.kraxi.com}"); /* Create Link annotation on named matchbox "kraxi.com". * This automatically creates an OBJR (object reference) element. */ $optlist = "linewidth=0 usematchbox={kraxi.com} " . "contents={Link to Kraxi Inc. Web site} " . "action={activate=" . $action. " } "; $p->create_annotation(0, 0, 0, 0, "Link", $optlist); $p->end_item($id); /* =================== Image ======================== */ /* A grouping element is required as container for Figure and Caption */ $id = $p->begin_item("Sect", ""); $image = $p->load_image("auto", $imagefile, ""); /* The "Placement" attribute is recommended for Figure elements * as children of grouping elements. */ $p->fit_image($image, 50, 400, "tag={tagname=Figure Placement=Block Alt={Image of Kraxi waiting for customers.}} " . "scale=0.5"); $p->close_image($image); /* Caption text below the image; Caption element follows Figure. * Since Caption doesn't allow direct content in PDF 1.7 we create * an additional P element. */ $p->fit_textline("Kraxi waiting for customers.", 50, 375, "tag={tagname=Caption tag={tagname=P}} fontsize=12 "); $p->end_item($id); /* =================== Artifact ======================== */ $p->fit_textline("Page 1", 250, 100, "tag={tagname=Artifact} fontsize=12"); $p->end_page_ext(""); $p->end_document(""); $buf = $p->get_buffer(); $len = strlen($buf); header("Content-type: application/pdf"); header("Content-Length: $len"); header("Content-Disposition: inline; filename=starter_pdfua1.pdf"); print $buf; } catch (PDFlibException $e) { echo("PDFlib exception occurred in starter_pdfua1 sample:\n" . "[" . $e->get_errnum() . "] " . $e->get_apiname() . ": " . $e->get_errmsg() . "\n"); exit(1); } catch (Throwable $e) { echo($e); exit(1); } $p = 0; ?>