XylotrechusZ
<?php
/* $Id: starter_textflow.php,v 1.6 2006/10/02 21:11:38 tm Exp $
*
* Textflow starter:
* Create multi-column text output which may span multiple pages
*
* required software: PDFlib/PDFlib+PDI/PPS 7 or above
* required data: none
*/
$outfilename = "starter_textflow.pdf";
$tf = 0;
$llx1= 50; $lly1=50; $urx1=250; $ury1=800;
$llx2=300; $lly2=50; $urx2=500; $ury2=800;
/* Repeat the dummy text to produce more contents */
$count = 50;
$optlist1 = "fontname=Helvetica fontsize=10.5 encoding=unicode " .
"fillcolor={gray 0} alignment=justify";
$optlist2 = "fontname=Helvetica-Bold fontsize=14 encoding=unicode " .
"fillcolor={rgb 1 0 0} charref";
/* Dummy text for filling the columns. Soft hyphens are marked with
* the character reference "­" (character references are
* enabled by the charref option).
*/
$text=
"Lorem ipsum dolor sit amet, consectetur adi­pi­sicing elit, sed do eius­mod tempor incidi­dunt ut labore et dolore magna ali­qua. Ut enim ad minim ve­niam, quis nostrud exer­citation ull­amco la­bo­ris nisi ut ali­quip ex ea commodo con­sequat. Duis aute irure dolor in repre­henderit in voluptate velit esse cillum dolore eu fugiat nulla pari­atur. Excep­teur sint occae­cat cupi­datat non proident, sunt in culpa qui officia dese­runt mollit anim id est laborum. ";
$p = PDF_new();
# This means we must check return values of load_font() etc.
PDF_set_parameter($p, "errorpolicy", "return");
/* we use "utf8" as textformat, this allows to use unicode encoding */
PDF_set_parameter($p, "textformat", "utf8");
if (PDF_begin_document($p, $outfilename, "") == 0) {
die("Error: " . PDF_get_errmsg($p));
}
PDF_set_info($p, "Creator", "PDFlib starter sample");
PDF_set_info($p, "Title", "starter_textflow");
/* Create some amount of dummy text and feed it to a Textflow
* object with alternating options.
*/
for ($i=1; $i<=$count; $i++) {
$num = $i . " ";
$tf = PDF_add_textflow($p, $tf, $num, $optlist2);
if ($tf == 0)
die("Error: " . PDF_get_errmsg($p));
$tf = PDF_add_textflow($p, $tf, $text, $optlist1);
if ($tf == 0)
die("Error: " . PDF_get_errmsg($p));
}
/* Loop until all of the text is placed; create new pages
* as long as more text needs to be placed. Two columns will
* be created on all pages.
*/
do {
/* Add "showborder to visualize the fitbox borders */
$optlist = "verticalalign=justify linespreadlimit=120% ";
PDF_begin_page_ext($p, 0, 0, "width=a4.width height=a4.height");
/* Fill the first column */
$result = PDF_fit_textflow($p, $tf, $llx1, $lly1, $urx1, $ury1, $optlist);
/* Fill the second column if we have more text*/
if ($result != "_stop") {
$result = PDF_fit_textflow($p, $tf,
$llx2, $lly2, $urx2, $ury2, $optlist);
}
PDF_end_page_ext($p, "");
/* "_boxfull" means we must continue because there is more text;
* "_nextpage" is interpreted as "start new column"
*/
} while ($result == "_boxfull" || $result == "_nextpage");
/* Check for errors */
if (!$result == "_stop") {
/* "_boxempty" happens if the box is very small and doesn't
* hold any text at all.
*/
if ($result == "_boxempty") {
die("Error: Textflow box too small");
} else {
/* Any other return value is a user exit caused by
* the "return" option; this requires dedicated code to
* deal with.
*/
die("User return '" . $result . "' found in Textflow");
}
}
PDF_delete_textflow($p, $tf);
PDF_end_document($p, "");
PDF_delete($p);
print "$outfilename generated";
?>