static function &pdflib($fileName, $searchPath, &$values, $numPages = 1, $echo = true, $output = 'College_Match_App', $creator = 'CiviCRM', $author = 'http://www.civicrm.org/', $title = '2006 College Match Scholarship Application') { try { $pdf = new PDFlib(); $pdf->set_parameter("compatibility", "1.6"); $pdf->set_parameter("licensefile", "/home/paras/bin/license/pdflib.txt"); if ($pdf->begin_document('', '') == 0) { CRM_Core_Error::statusBounce("PDFlib Error: " . $pdf->get_errmsg()); } $config =& CRM_Core_Config::singleton(); $pdf->set_parameter('resourcefile', $config->templateDir . '/Quest/pdf/pdflib.upr'); $pdf->set_parameter('textformat', 'utf8'); /* Set the search path for fonts and PDF files */ $pdf->set_parameter('SearchPath', $searchPath); /* This line is required to avoid problems on Japanese systems */ $pdf->set_parameter('hypertextencoding', 'winansi'); $pdf->set_info('Creator', $creator); $pdf->set_info('Author', $author); $pdf->set_info('Title', $title); $blockContainer = $pdf->open_pdi($fileName, '', 0); if ($blockContainer == 0) { CRM_Core_Error::statusBounce('PDFlib Error: ' . $pdf->get_errmsg()); } for ($i = 1; $i <= $numPages; $i++) { $page = $pdf->open_pdi_page($blockContainer, $i, ''); if ($page == 0) { CRM_Core_Error::statusBounce('PDFlib Error: ' . $pdf->get_errmsg()); } $pdf->begin_page_ext(20, 20, ''); /* dummy page size */ /* This will adjust the page size to the block container's size. */ $pdf->fit_pdi_page($page, 0, 0, 'adjustpage'); $status = array(); /* Fill all text blocks with dynamic data */ foreach ($values as $key => $value) { if (is_array($value)) { continue; } // pdflib does like the forward slash character, hence convert $value = str_replace('/', '_', $value); $res = $pdf->fill_textblock($page, $key, $value, 'embedding encoding=winansi'); /** if ( $res == 0 ) { CRM_Core_Error::debug( "$key, $value: $res", $pdf->get_errmsg( ) ); } else { CRM_Core_Error::debug( "SUCCESS: $key, $value", null ); } **/ } $pdf->end_page_ext(''); $pdf->close_pdi_page($page); } $pdf->end_document(''); $pdf->close_pdi($blockContainer); $buf = $pdf->get_buffer(); $len = strlen($buf); if ($echo) { header('Content-type: application/pdf'); header("Content-Length: {$len}"); header("Content-Disposition: inline; filename={$output}.pdf"); echo $buf; exit; } else { return $buf; } } catch (PDFlibException $excp) { CRM_Core_Error::statusBounce('PDFlib Error: Exception' . "[" . $excp->get_errnum() . "] " . $excp->get_apiname() . ": " . $excp->get_errmsg()); } catch (Exception $excp) { CRM_Core_Error::statusBounce("PDFlib Error: " . $excp->get_errmsg()); } }