X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FUtils%2FPDF%2FUtils.php;h=f7dc760449e4427d7b694cf47e1f6f799e0ef6e3;hb=f28ac29c413280dc455dadca2d3a6da44b608a47;hp=5386287681d3174c1cafdcdae0ca8d75f390ad24;hpb=1761553f7e28866ef0c0a9f54abbb222487cea5c;p=civicrm-core.git diff --git a/CRM/Utils/PDF/Utils.php b/CRM/Utils/PDF/Utils.php index 5386287681..f7dc760449 100644 --- a/CRM/Utils/PDF/Utils.php +++ b/CRM/Utils/PDF/Utils.php @@ -23,7 +23,7 @@ | GNU Affero General Public License or the licensing of CiviCRM, | | see the CiviCRM license FAQ at http://civicrm.org/licensing | +--------------------------------------------------------------------+ -*/ + */ /** * @@ -42,7 +42,7 @@ class CRM_Utils_PDF_Utils { * * @return string|void */ - static function html2pdf(&$text, $fileName = 'civicrm.pdf', $output = FALSE, $pdfFormat = NULL) { + public static function html2pdf(&$text, $fileName = 'civicrm.pdf', $output = FALSE, $pdfFormat = NULL) { if (is_array($text)) { $pages = &$text; } @@ -59,19 +59,19 @@ class CRM_Utils_PDF_Utils { // PDF Page Format ID passed in $format = CRM_Core_BAO_PdfFormat::getById($pdfFormat); } - $paperSize = CRM_Core_BAO_PaperSize::getByName($format['paper_size']); - $paper_width = self::convertMetric($paperSize['width'], $paperSize['metric'], 'pt'); + $paperSize = CRM_Core_BAO_PaperSize::getByName($format['paper_size']); + $paper_width = self::convertMetric($paperSize['width'], $paperSize['metric'], 'pt'); $paper_height = self::convertMetric($paperSize['height'], $paperSize['metric'], 'pt'); // dompdf requires dimensions in points - $paper_size = array(0, 0, $paper_width, $paper_height); + $paper_size = array(0, 0, $paper_width, $paper_height); $orientation = CRM_Core_BAO_PdfFormat::getValue('orientation', $format); - $metric = CRM_Core_BAO_PdfFormat::getValue('metric', $format); - $t = CRM_Core_BAO_PdfFormat::getValue('margin_top', $format); - $r = CRM_Core_BAO_PdfFormat::getValue('margin_right', $format); - $b = CRM_Core_BAO_PdfFormat::getValue('margin_bottom', $format); - $l = CRM_Core_BAO_PdfFormat::getValue('margin_left', $format); + $metric = CRM_Core_BAO_PdfFormat::getValue('metric', $format); + $t = CRM_Core_BAO_PdfFormat::getValue('margin_top', $format); + $r = CRM_Core_BAO_PdfFormat::getValue('margin_right', $format); + $b = CRM_Core_BAO_PdfFormat::getValue('margin_bottom', $format); + $l = CRM_Core_BAO_PdfFormat::getValue('margin_left', $format); - $stationery_path_partial = CRM_Core_BAO_PdfFormat::getValue('stationery', $format); + $stationery_path_partial = CRM_Core_BAO_PdfFormat::getValue('stationery', $format); $stationery_path = NULL; if (strlen($stationery_path_partial)) { @@ -79,7 +79,7 @@ class CRM_Utils_PDF_Utils { $stationery_path = $doc_root . "/" . $stationery_path_partial; } - $margins = array($metric,$t,$r,$b,$l); + $margins = array($metric, $t, $r, $b, $l); $config = CRM_Core_Config::singleton(); $html = " @@ -124,37 +124,48 @@ class CRM_Utils_PDF_Utils { } } - static function _html2pdf_tcpdf($paper_size, $orientation, $margins, $html, $output, $fileName, $stationery_path) { + /** + * Convert html to tcpdf. + * + * @param $paper_size + * @param $orientation + * @param $margins + * @param $html + * @param $output + * @param $fileName + * @param $stationery_path + */ + public static function _html2pdf_tcpdf($paper_size, $orientation, $margins, $html, $output, $fileName, $stationery_path) { // Documentation on the TCPDF library can be found at: http://www.tcpdf.org // This function also uses the FPDI library documented at: http://www.setasign.com/products/fpdi/about/ // Syntax borrowed from https://github.com/jake-mw/CDNTaxReceipts/blob/master/cdntaxreceipts.functions.inc require_once 'tcpdf/tcpdf.php'; - require_once('FPDI/fpdi.php'); // This library is only in the 'packages' area as of version 4.5 + require_once 'FPDI/fpdi.php'; // This library is only in the 'packages' area as of version 4.5 - $paper_size_arr = array( $paper_size[2], $paper_size[3]); + $paper_size_arr = array($paper_size[2], $paper_size[3]); $pdf = new TCPDF($orientation, 'pt', $paper_size_arr); $pdf->Open(); - if (is_readable($stationery_path)){ - $pdf->SetStationery( $stationery_path ); + if (is_readable($stationery_path)) { + $pdf->SetStationery($stationery_path); } $pdf->SetAuthor(''); $pdf->SetKeywords('CiviCRM.org'); - $pdf->setPageUnit( $margins[0] ) ; - $pdf->SetMargins($margins[4], $margins[1], $margins[2], true); + $pdf->setPageUnit($margins[0]); + $pdf->SetMargins($margins[4], $margins[1], $margins[2], TRUE); $pdf->setJPEGQuality('100'); - $pdf->SetAutoPageBreak(true, $margins[3]); + $pdf->SetAutoPageBreak(TRUE, $margins[3]); $pdf->AddPage(); - $ln = true ; - $fill = false ; - $reset_parm = false; - $cell = false; - $align = '' ; + $ln = TRUE; + $fill = FALSE; + $reset_parm = FALSE; + $cell = FALSE; + $align = ''; // output the HTML content $pdf->writeHTML($html, $ln, $fill, $reset_parm, $cell, $align); @@ -164,7 +175,7 @@ class CRM_Utils_PDF_Utils { // close and output the PDF $pdf->Close(); - $pdf_file = 'CiviLetter'.'.pdf'; + $pdf_file = 'CiviLetter' . '.pdf'; $pdf->Output($pdf_file, 'D'); CRM_Utils_System::civiExit(1); } @@ -178,9 +189,12 @@ class CRM_Utils_PDF_Utils { * * @return string */ - static function _html2pdf_dompdf($paper_size, $orientation, $html, $output, $fileName) { - require_once 'packages/dompdf/dompdf_config.inc.php'; - spl_autoload_register('DOMPDF_autoload'); + public static function _html2pdf_dompdf($paper_size, $orientation, $html, $output, $fileName) { + // CRM-12165 - Remote file support required for image handling. + define('DOMPDF_ENABLE_REMOTE', TRUE); + define('DOMPDF_ENABLE_AUTOLOAD', FALSE); + require_once 'vendor/dompdf/dompdf/dompdf_config.inc.php'; + $dompdf = new DOMPDF(); $dompdf->set_paper($paper_size, $orientation); $dompdf->load_html($html); @@ -202,7 +216,7 @@ class CRM_Utils_PDF_Utils { * @param $output * @param string $fileName */ - static function _html2pdf_wkhtmltopdf($paper_size, $orientation, $margins, $html, $output, $fileName) { + public static function _html2pdf_wkhtmltopdf($paper_size, $orientation, $margins, $html, $output, $fileName) { require_once 'packages/snappy/src/autoload.php'; $config = CRM_Core_Config::singleton(); $snappy = new Knp\Snappy\Pdf($config->wkhtmltopdfPath); @@ -224,10 +238,9 @@ class CRM_Utils_PDF_Utils { } } - /* - * convert value from one metric to another - */ /** + * convert value from one metric to another. + * * @param $value * @param $from * @param $to @@ -235,7 +248,7 @@ class CRM_Utils_PDF_Utils { * * @return float|int */ - static function convertMetric($value, $from, $to, $precision = NULL) { + public static function convertMetric($value, $from, $to, $precision = NULL) { switch ($from . $to) { case 'incm': $value *= 2.54; @@ -302,15 +315,16 @@ class CRM_Utils_PDF_Utils { * @param string $author * @param string $title */ - static function &pdflib($fileName, + public 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' + $echo = TRUE, + $output = 'College_Match_App', + $creator = 'CiviCRM', + $author = 'http://www.civicrm.org/', + $title = '2006 College Match Scholarship Application' ) { try { $pdf = new PDFlib(); @@ -355,7 +369,6 @@ class CRM_Utils_PDF_Utils { $pdf->fit_pdi_page($page, 0, 0, 'adjustpage'); - $status = array(); /* Fill all text blocks with dynamic data */ @@ -396,15 +409,15 @@ class CRM_Utils_PDF_Utils { return $buf; } } - catch(PDFlibException$excp) { + catch (PDFlibException$excp) { CRM_Core_Error::statusBounce('PDFlib Error: Exception' . "[" . $excp->get_errnum() . "] " . $excp->get_apiname() . ": " . $excp->get_errmsg() ); } - catch(Exception$excp) { + catch (Exception$excp) { CRM_Core_Error::statusBounce("PDFlib Error: " . $excp->get_errmsg()); } } -} +}