PDFlib
KAUFEN
PDFlib

blocks/starter_block

Import a PDF page containing blocks, and process all blocks. The blocks are retrieved via pCOS, and the block filling functions are used to visualize the blocks on the output page. A real-world application would of course fill the blocks with data retrieved from some external data source.

Download PHP 4 Code   PHP 5 Code      Switch to Java Code      Show Output PDF

<?

/* $Id: starter_block.php,v 1.4.2.1 2008/05/09 10:11:54 rjs Exp $

 *

 * Block starter:

 * Import a PDF page containing, and process all blocks. The blocks are

 * retrieved via pCOS, and the block filling functions are used to

 * visualize the blocks on the output page. A real-world application would

 * of course fill the blocks with data retrieved from some external data

 * source.

 *

 * required software: PPS 7 or above

 * required data: input PDF

 */


/* This is where the data files are. Adjust as necessary. */

$searchpath = "../data";

$infile = "boilerplate.pdf";

$outfilename = "starter_block.pdf";


$p = PDF_new();


# This means we must check return values of load_font() etc.

PDF_set_parameter($p, "errorpolicy", "return");


PDF_set_parameter($p, "SearchPath", $searchpath);


/* 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_block");


/* Open a PDF containing blocks */

$indoc = PDF_open_pdi_document($p, $infile, "");

if ($indoc == 0) {

    die("Error: " . PDF_get_errmsg($p));

}


/* Open the first $page */

$page = PDF_open_pdi_page($p, $indoc, 1, "");

if ($page == 0) {

    die("Error: " . PDF_get_errmsg($p));

}


$width = PDF_pcos_get_number($p, $indoc, "pages[0]/width");

$height = PDF_pcos_get_number($p, $indoc, "pages[0]/height");


PDF_begin_page_ext($p, $width, $height, "");


/* Place the imported $page on the output $page */

PDF_fit_pdi_page($p, $page, 0, 0, "");


/* Query the number of blocks on the first page */

$blockcount = PDF_pcos_get_number($p, $indoc, "length:pages[0]/blocks");


if ($blockcount == 0) {

    die("Error: "$infile . "does not contain any PDFlib blocks");

}


/* Loop over all blocks on the $page */

for ($i = 0; $i$blockcount; $i++) {

    /* Fetch the name and type of the $i-th block on the first page

     * (one of Text/Image/PDF)

     */

    $blockname = PDF_pcos_get_string($p, $indoc,

        "pages[0]/blocks[" . $i . "]/Name");


    $blocktype = PDF_pcos_get_string($p, $indoc,

        "pages[0]/blocks[" . $i . "]/Subtype");


    /* Visualize all text blocks */

    if ($blocktype == "Text") {

        $optlist = "fontname=Helvetica encoding=unicode " .

            "fillcolor={rgb 1 0 0} " .

            "bordercolor={gray 0} linewidth=0.25";


        /* We simply use the $blockname as content */

        if (PDF_fill_textblock($p,

                    $page, $blockname, $blockname, $optlist) == 0) {

            print("Warning: " . PDF_get_errmsg($p));

        }

    }

}


PDF_end_page_ext($p, "");

PDF_close_pdi_page($p, $page);


PDF_end_document($p, "");

PDF_close_pdi_document($p, $indoc);


PDF_delete($p);


print "$outfilename generated";

?>