function writeBlock() { // テンプレートを使用する if (!file_exists($this->pdfpath)) { return; } // 既存PDFのドキュメントを取得 $doc = pdf_open_pdi($this->pdf, $this->pdfpath, NULL, 0); // 既存PDFのドキュメントから指定ページを取得 $page = pdf_open_pdi_page($this->pdf, $doc, 1, NULL); // ページを開く $this->openPage(); // 既存PDFのページを割り当てる PDF_fit_pdi_page($this->pdf, $page, 0, 0, "adjustpage"); // テキストブロックの書き込み $max = count($this->arrText); for ($i = 0; $i < $max; $i++) { foreach ($this->arrText[$i] as $key => $val) { if ($val != "") { // 文字コードの変換 mb_convert_variables($this->dst_code, $this->src_code, $val); // 書き込み $ret = PDF_fill_textblock($this->pdf, $page, $key, $val, $this->block_option); } } } // イメージブロックの書き込み $max = count($this->arrImage); for ($i = 0; $i < $max; $i++) { foreach ($this->arrImage[$i] as $key => $val) { if ($val != "") { $img = PDF_load_image($this->pdf, "auto", $val, NULL); $ret = PDF_fill_imageblock($this->pdf, $page, $key, $img, NULL); } } } // 割り当てたページを閉じる PDF_close_pdi_page($this->pdf, $page); // 割り当てたドキュメントを閉じる PDF_close_pdi($this->pdf, $doc); }
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 */ PDF_close_pdi_page($p, $page); PDF_close($p); /* close PDF document */ PDF_close_pdi($p, $blockcontainer); $buf = PDF_get_buffer($p); $len = strlen($buf); header("Content-type: application/pdf"); header("Content-Length: {$len}"); header("Content-Disposition: inline; filename=businesscard.pdf"); print $buf; PDF_delete($p); /* delete the PDFlib object */
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; }