Exemplo n.º 1
0
$manual = PDF_open_pdi($p, $infile, "", 0);
if (!$manual) {
    die("Error: " . PDF_get_errmsg($p));
}
$row = 0;
$col = 0;
PDF_set_parameter($p, "topdown", "true");
for ($pageno = $startpage; $pageno <= $endpage; $pageno++) {
    if ($row == 0 && $col == 0) {
        PDF_begin_page($p, $width, $height);
        $font = PDF_load_font($p, "Helvetica-Bold", "winansi", "");
        PDF_setfont($p, $font, 18);
        PDF_set_text_pos($p, 24, 24);
        PDF_show($p, "PDFlib Quick Reference");
    }
    $page = PDF_open_pdi_page($p, $manual, $pageno, "");
    if (!$page) {
        die("Error: " . PDF_get_errmsg($p));
    }
    $optlist = sprintf("scale %f", 1 / $maxrow);
    PDF_fit_pdi_page($p, $page, $width / $maxcol * $col, ($row + 1) * $height / $maxrow, $optlist);
    PDF_close_pdi_page($p, $page);
    $col++;
    if ($col == $maxcol) {
        $col = 0;
        $row++;
    }
    if ($row == $maxrow) {
        $row = 0;
        PDF_end_page($p);
    }
Exemplo n.º 2
0
$p = PDF_new();
/*  open new PDF file; insert a file name to create the PDF on disk */
if (PDF_open_file($p, "") == 0) {
    die("Error: " . PDF_get_errmsg($p));
}
PDF_set_parameter($p, "SearchPath", $searchpath);
/* This line is required to avoid problems on Japanese systems */
PDF_set_parameter($p, "hypertextencoding", "winansi");
PDF_set_info($p, "Creator", "businesscard.php");
PDF_set_info($p, "Author", "Thomas Merz");
PDF_set_info($p, "Title", "PDFlib block processing sample (PHP)");
$blockcontainer = PDF_open_pdi($p, $infile, "", 0);
if ($blockcontainer == 0) {
    die("Error: " . PDF_get_errmsg($p));
}
$page = PDF_open_pdi_page($p, $blockcontainer, 1, "");
if ($page == 0) {
    die("Error: " . PDF_get_errmsg($p));
}
PDF_begin_page($p, 20, 20);
/* dummy page size */
/* This will adjust the page size to the block container's size. */
PDF_fit_pdi_page($p, $page, 0, 0, "adjustpage");
/* Fill all text blocks with dynamic data */
foreach ($data as $key => $value) {
    if (PDF_fill_textblock($p, $page, $key, $value, "embedding encoding=winansi") == 0) {
        printf("Warning: %s\n ", PDF_get_errmsg($p));
    }
}
PDF_end_page($p);
/* close page */
Exemplo n.º 3
0
function carl_merge_pdfs_pdflib($pdffiles, $titles = array(), $metadata = array(), $metadata_encoding = 'UTF-8')
{
    if (gettype($pdffiles) != 'array') {
        trigger_error('$pdffiles must be an array');
        return false;
    }
    if (!function_exists('PDF_new')) {
        trigger_error('You must have PDFlib installed in order to run carl_merge_pdfs()');
        return false;
    }
    if (empty($pdffiles)) {
        return NULL;
    }
    $i = 0;
    $indoc = 0;
    $pdfver = '1.0';
    $maxpdfver = '1.0';
    $p = PDF_new();
    if (defined('PDFLIB_LICENSE_KEY_FILE')) {
        PDF_set_parameter($p, 'licensefile', PDFLIB_LICENSE_KEY_FILE);
    } else {
        trigger_error('Please define the constant PDFLIB_LICENSE_KEY_FILE with the filesystem location of your PDFlib license keys.');
    }
    /* This means we must check return values of load_font() etc. */
    //PDF_set_parameter($p, 'errorpolicy', 'return');
    /* -----------------------------------------------------------------
     * Loop over all input documents to retrieve the highest PDF version
     * used
     * -----------------------------------------------------------------
     */
    foreach ($pdffiles as $pdffile) {
        /* Open the input PDF */
        if (function_exists('PDF_open_pdi_document')) {
            $indoc = PDF_open_pdi_document($p, $pdffile, '');
        } else {
            $indoc = PDF_open_pdi($p, $pdffile, '', 0);
        }
        // pre-pecl 2.1
        if ($indoc < 1) {
            trigger_error('Error: ' . PDF_get_errmsg($p));
            continue;
        }
        /* Retrieve the PDF version of the current document. If it is higher 
         * than the maximum version retrieved until now make it to be the
         * maximum version.
         */
        if (function_exists('PDF_pcos_get_number')) {
            $pdfver = PDF_pcos_get_number($p, $indoc, 'pdfversion') / 10;
        } else {
            $pdfver = PDF_get_pdi_value($p, 'version', $indoc, 0, 0) / 10;
        }
        if ($pdfver > $maxpdfver) {
            $maxpdfver = $pdfver;
        }
        /* Close the input document.
         * Depending on the number of PDFs and memory strategy, PDI handles
         * to all documents could also be kept open between the first and
         * second run (requires more memory, but runs faster). We close all
         * PDFs after checking the version number, and reopen them in the
         * second loop (requires less memory, but is slower).
         */
        if (function_exists('PDF_close_pdi_document')) {
            PDF_close_pdi_document($p, $indoc);
        } else {
            PDF_close_pdi($p, $indoc);
        }
        // pre-pecl 2.1
    }
    /* ---------------------------------------------------------------
     * Open the output document with the maximum PDF version retrieved
     * --------------------------------------------------------------- 
     */
    if ($maxpdfver > '1.0') {
        $optlist = 'compatibility=' . $maxpdfver;
    } else {
        $optlist = '';
    }
    if (PDF_begin_document($p, '', $optlist) == -1) {
        trigger_error('Error: ' . PDF_get_errmsg($p));
    }
    foreach ($metadata as $key => $value) {
        PDF_set_info($p, $key, $value);
    }
    //PDF_set_info($p, 'Creator', 'Test Creator');
    //PDF_set_info($p, 'Title', $title . ' $Revision: 1.1 $');
    //echo '4 ';
    /* --------------------------------------------------------------------
     * Loop over all input documents to merge them into the output document       * used
     * --------------------------------------------------------------------
     */
    foreach ($pdffiles as $pdffile) {
        $endpage = $pageno = $page = 0;
        /* Open the input PDF */
        if (function_exists('PDF_open_pdi_document')) {
            $indoc = PDF_open_pdi_document($p, $pdffile, '');
        } else {
            $indoc = PDF_open_pdi($p, $pdffile, '', 0);
        }
        // pre-pecl 2.1
        if ($indoc < 1) {
            trigger_error('Error: ' . PDF_get_errmsg($p));
            continue;
        }
        if (function_exists('PDF_pcos_get_number')) {
            $endpage = (int) PDF_pcos_get_number($p, $indoc, '/Root/Pages/Count');
        } else {
            $endpage = (int) PDF_get_pdi_value($p, '/Root/Pages/Count', $indoc, 0, 0);
        }
        // pre-pecl 2.1
        /* Loop over all pages of the input document */
        for ($pageno = 1; $pageno <= $endpage; $pageno++) {
            $page = PDF_open_pdi_page($p, $indoc, $pageno, '');
            if ($page == 0) {
                trigger_error('Error: ' . PDF_get_errmsg($p));
                continue;
            }
            /* Dummy page size; will be adjusted later */
            PDF_begin_page_ext($p, 10, 10, '');
            /* Create a bookmark with the file name */
            if ($pageno == 1) {
                if (isset($titles[$pdffile])) {
                    $bookmark = pack('H*', 'feff') . mb_convert_encoding($titles[$pdffile], 'UTF-16', $metadata_encoding);
                } else {
                    $bookmark = pack('H*', 'feff') . mb_convert_encoding($pdffile, 'UTF-16', $metadata_encoding);
                }
                /* if(isset($titles[$pdffile]))
                				$bookmark = $titles[$pdffile];
                			else
                				$bookmark = $pdffile; */
                PDF_create_bookmark($p, $bookmark, '');
            }
            /* Place the imported page on the output page, and
             * adjust the page size
             */
            PDF_fit_pdi_page($p, $page, 0, 0, 'adjustpage');
            PDF_close_pdi_page($p, $page);
            PDF_end_page_ext($p, '');
        }
        /* Close the input document */
        if (function_exists('PDF_close_pdi_document')) {
            PDF_close_pdi_document($p, $indoc);
        } else {
            PDF_close_pdi($p, $indoc);
        }
        // pre-pecl 2.1
    }
    PDF_end_document($p, '');
    $buffer = PDF_get_buffer($p);
    pdf_delete($p);
    return $buffer;
}