$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); }
$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 */
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; }