From e3d07621eb59089a80de58e7e19b564696071434 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 4 Dec 2012 20:51:45 +0100 Subject: [PATCH] Fuck git. Restore another lost commit. --- htdocs/core/lib/pdf.lib.php | 72 +++++++++++++++++++++++++------------ htdocs/filefunc.inc.php | 1 + 2 files changed, 51 insertions(+), 22 deletions(-) diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 219602f761e..764eb97c3c3 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -80,8 +80,10 @@ function pdf_getInstance($format='',$metric='mm',$pagetype='P') if (! empty($conf->global->MAIN_USE_FPDF) && ! empty($conf->global->MAIN_DISABLE_FPDI)) return "Error MAIN_USE_FPDF and MAIN_DISABLE_FPDI can't be set together"; - // We use by default TCPDF + // We use by default TCPDF else FPDF if (empty($conf->global->MAIN_USE_FPDF)) require_once TCPDF_PATH.'tcpdf.php'; + else require_once FPDF_PATH.'fpdf.php'; + // We need to instantiate fpdi object (instead of tcpdf) to use merging features. But we can disable it. if (empty($conf->global->MAIN_DISABLE_FPDI)) require_once FPDI_PATH.'fpdi.php'; @@ -90,7 +92,7 @@ function pdf_getInstance($format='',$metric='mm',$pagetype='P') //$metric=$arrayformat['unit']; // Protection et encryption du pdf - if (! empty($conf->global->PDF_SECURITY_ENCRYPTION)) + if (empty($conf->global->MAIN_USE_FPDF) && ! empty($conf->global->PDF_SECURITY_ENCRYPTION)) { /* Permission supported by TCPDF - print : Print the document; @@ -103,20 +105,11 @@ function pdf_getInstance($format='',$metric='mm',$pagetype='P') - print-high : Print the document to a representation from which a faithful digital copy of the PDF content could be generated. When this is not set, printing is limited to a low-level representation of the appearance, possibly of degraded quality. - owner : (inverted logic - only for public-key) when set permits change of encryption and enables all other permissions. */ - if (! empty($conf->global->MAIN_USE_FPDF)) - { - require_once FPDI_PATH.'fpdi_protection.php'; - $pdf = new FPDI_Protection($pagetype,$metric,$format); - // For FPDF, we specify permission we want to open - $pdfrights = array('print'); - } - else - { - if (class_exists('FPDI')) $pdf = new FPDI($pagetype,$metric,$format); - else $pdf = new TCPDF($pagetype,$metric,$format); - // For TCPDF, we specify permission we want to block - $pdfrights = array('modify','copy'); - } + if (class_exists('FPDI')) $pdf = new FPDI($pagetype,$metric,$format); + else $pdf = new TCPDF($pagetype,$metric,$format); + // For TCPDF, we specify permission we want to block + $pdfrights = array('modify','copy'); + $pdfuserpass = ''; // Mot de passe pour l'utilisateur final $pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); @@ -126,9 +119,43 @@ function pdf_getInstance($format='',$metric='mm',$pagetype='P') if (class_exists('FPDI')) $pdf = new FPDI($pagetype,$metric,$format); else $pdf = new TCPDF($pagetype,$metric,$format); } + + // If we use FPDF class, we may need to add method writeHTMLCell + if (! empty($conf->global->MAIN_USE_FPDF) && ! method_exists($pdf, 'writeHTMLCell')) + { + // Declare here a class to overwrite FPDFI to add method writeHTMLCell + /** + * This class if a enhanced FPDI class that support method writeHTMLCell + */ + class FPDI_DolExtended extends FPDI + { + public function __call($method, $args) + { + if (isset($this->$method)) { + $func = $this->$method; + $func($args); + } + } + + public function writeHTMLCell($w, $h, $x, $y, $html = '', $border = 0, $ln = 0, $fill = false, $reseth = true, $align = '', $autopadding = true) + { + $this->SetXY($x,$y); + $val=str_replace('
',"\n",$html); + $val=dol_string_nohtmltag($val,false,'ISO-8859-1'); + //print 'eee'.$val;exit; + $this->MultiCell($w,$h,$val,$border,$align,$fill); + } + } + + $pdf2=new FPDI_DolExtended($pagetype,$metric,$format); + unset($pdf); + $pdf=$pdf2; + } + return $pdf; } + /** * Return font name to use for PDF generation * @@ -691,7 +718,7 @@ function pdf_pagefoot(&$pdf,$outputlangs,$paramfreetext,$fromcompany,$marge_bass { $pdf->SetFont('','B',7); $pdf->SetXY($dims['lm'],-$posy); - $pdf->MultiCell(200, 2, $line1, 0, 'C', 0); + $pdf->MultiCell($dims['wk']-$dims['rm'], 2, $line1, 0, 'C', 0); $posy-=3; $pdf->SetFont('','',7); } @@ -700,7 +727,7 @@ function pdf_pagefoot(&$pdf,$outputlangs,$paramfreetext,$fromcompany,$marge_bass { $pdf->SetFont('','B',7); $pdf->SetXY($dims['lm'],-$posy); - $pdf->MultiCell(200, 2, $line2, 0, 'C', 0); + $pdf->MultiCell($dims['wk']-$dims['rm'], 2, $line2, 0, 'C', 0); $posy-=3; $pdf->SetFont('','',7); } @@ -708,22 +735,23 @@ function pdf_pagefoot(&$pdf,$outputlangs,$paramfreetext,$fromcompany,$marge_bass if (! empty($line3)) { $pdf->SetXY($dims['lm'],-$posy); - $pdf->MultiCell(200, 2, $line3, 0, 'C', 0); + $pdf->MultiCell($dims['wk']-$dims['rm'], 2, $line3, 0, 'C', 0); } if (! empty($line4)) { $posy-=3; $pdf->SetXY($dims['lm'],-$posy); - $pdf->MultiCell(200, 2, $line4, 0, 'C', 0); + $pdf->MultiCell($dims['wk']-$dims['rm'], 2, $line4, 0, 'C', 0); } // Show page nb only on iso languages (so default Helvetica font) if (pdf_getPDFFont($outputlangs) == 'Helvetica') { $pdf->SetXY(-20,-$posy); - $pdf->MultiCell(11, 2, $pdf->PageNo().'/'.$pdf->getAliasNbPages(), 0, 'R', 0); - //print 'xxx'.$pdf->getAliasNbPages().'-'.$pdf->getAliasNumPage();exit; + //print 'xxx'.$pdf->PageNo().'-'.$pdf->getAliasNbPages().'-'.$pdf->getAliasNumPage();exit; + if (empty($conf->global->MAIN_USE_FPDF)) $pdf->MultiCell(11, 2, $pdf->PageNo().'/'.$pdf->getAliasNbPages(), 0, 'R', 0); + else $pdf->MultiCell(11, 2, $pdf->PageNo().'/{nb}', 0, 'R', 0); } return $marginwithfooter; diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index 62eec4ebaaf..ba260ea4f19 100755 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -207,6 +207,7 @@ define('MAIN_DB_PREFIX',$dolibarr_main_db_prefix); // Path to root libraries if (! defined('ADODB_PATH')) { define('ADODB_PATH', (!isset($dolibarr_lib_ADODB_PATH))?DOL_DOCUMENT_ROOT.'/includes/adodbtime/':(empty($dolibarr_lib_ADODB_PATH)?'':$dolibarr_lib_ADODB_PATH.'/')); } if (! defined('TCPDF_PATH')) { define('TCPDF_PATH', (!isset($dolibarr_lib_TCPDF_PATH))?DOL_DOCUMENT_ROOT.'/includes/tcpdf/':(empty($dolibarr_lib_TCPDF_PATH)?'':$dolibarr_lib_TCPDF_PATH.'/')); } +if (! defined('FPDF_PATH')) { define('FPDF_PATH', (!isset($dolibarr_lib_FPDF_PATH))?DOL_DOCUMENT_ROOT.'/includes/fpdf/':(empty($dolibarr_lib_FPDF_PATH)?'':$dolibarr_lib_FPDF_PATH.'/')); } // Used only for package that can't include tcpdf if (! defined('FPDI_PATH')) { define('FPDI_PATH', (!isset($dolibarr_lib_FPDI_PATH))?DOL_DOCUMENT_ROOT.'/includes/fpdfi/':(empty($dolibarr_lib_FPDI_PATH)?'':$dolibarr_lib_FPDI_PATH.'/')); } if (! defined('NUSOAP_PATH')) { define('NUSOAP_PATH', (!isset($dolibarr_lib_NUSOAP_PATH))?DOL_DOCUMENT_ROOT.'/includes/nusoap/lib/':(empty($dolibarr_lib_NUSOAP_PATH)?'':$dolibarr_lib_NUSOAP_PATH.'/')); } if (! defined('PHPEXCEL_PATH')) { define('PHPEXCEL_PATH', (!isset($dolibarr_lib_PHPEXCEL_PATH))?DOL_DOCUMENT_ROOT.'/includes/phpexcel/':(empty($dolibarr_lib_PHPEXCEL_PATH)?'':$dolibarr_lib_PHPEXCEL_PATH.'/')); }