diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 22c1d56de4a..e9ee32dcd0e 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3332,6 +3332,28 @@ function dol_textishtml($msg,$option=0) } } +/** + * Concat 2 descriptions (second one after first one) + * text1 html + text2 html => text1 + '
' + text2 + * text1 html + text2 txt => text1 + '
' + dol_nl2br(text2) + * text1 txt + text2 html => dol_nl2br(text1) + '
' + text2 + * text1 txt + text2 txt => text1 + '\n' + text2 + * + * @param string $text1 Text 1 + * @param string $text2 Text 2 + * @param string $forxml false=Use
, true=Use
+ * @return string Text 1 + new line + Text2 + * @see dol_textishtml + */ +function dol_concatdesc($text1,$text2,$forxml=false) +{ + $ret=''; + $ret.= (! dol_textishtml($text1) && dol_textishtml($text2))?dol_nl2br($text1, 0, $forxml):$text1; + $ret.= (! empty($text1) && ! empty($text2)) ? ((dol_textishtml($text1) || dol_textishtml($text2))?($forxml?"
\n":"
\n") : "\n") : ""; + $ret.= (dol_textishtml($text1) && ! dol_textishtml($text2))?dol_nl2br($text2, 0, $forxml):$text2; + return $ret; +} + /** * Make substition into a string * There is two type of substitions: diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 6b03772a6d5..605a1902a80 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -517,147 +517,149 @@ function pdf_bank(&$pdf,$outputlangs,$curx,$cury,$account,$onlynumber=0,$default } -/** - * Show footer of page for PDF generation - * - * @param PDF &$pdf The PDF factory - * @param Translate $outputlangs Object lang for output - * @param string $paramfreetext Constant name of free text - * @param Societe $fromcompany Object company - * @param int $marge_basse Margin bottom we use for the autobreak - * @param int $marge_gauche Margin left (no more used) - * @param int $page_hauteur Page height (no more used) - * @param Object $object Object shown in PDF - * @param int $showdetails Show company details into footer. This param seems to not be used by standard version. - * @return int Return height of bottom margin including footer text - */ -function pdf_pagefoot(&$pdf,$outputlangs,$paramfreetext,$fromcompany,$marge_basse,$marge_gauche,$page_hauteur,$object,$showdetails=0) -{ - global $conf,$user; - - $outputlangs->load("dict"); - $line=''; - - $dims=$pdf->getPageDimensions(); - - // Line of free text - if (! empty($conf->global->$paramfreetext)) - { - // Make substitution - $substitutionarray=array( - '__FROM_NAME__' => $fromcompany->nom, - '__FROM_EMAIL__' => $fromcompany->email, - '__TOTAL_TTC__' => $object->total_ttc, - '__TOTAL_HT__' => $object->total_ht, - '__TOTAL_VAT__' => $object->total_vat - ); - complete_substitutions_array($substitutionarray,$outputlangs,$object); - $newfreetext=make_substitutions($conf->global->$paramfreetext,$substitutionarray); - $line.=$outputlangs->convToOutputCharset($newfreetext); - } - - // First line of company infos - - if ($showdetails) - { - $line1=""; - // Company name - if ($fromcompany->name) - { - $line1.=($line1?" - ":"").$outputlangs->transnoentities("RegisteredOffice").": ".$fromcompany->name; - } - // Address - if ($fromcompany->address) - { - $line1.=($line1?" - ":"").$fromcompany->address; - } - // Zip code - if ($fromcompany->zip) - { - $line1.=($line1?" - ":"").$fromcompany->zip; - } - // Town - if ($fromcompany->town) - { - $line1.=($line1?" ":"").$fromcompany->town; - } - // Phone - if ($fromcompany->phone) - { - $line1.=($line1?" - ":"").$outputlangs->transnoentities("Phone").": ".$fromcompany->phone; - } - // Fax - if ($fromcompany->fax) - { - $line1.=($line1?" - ":"").$outputlangs->transnoentities("Fax").": ".$fromcompany->fax; - } - - $line2=""; - // URL - if ($fromcompany->url) - { - $line2.=($line2?" - ":"").$fromcompany->url; - } - // Email - if ($fromcompany->email) - { - $line2.=($line2?" - ":"").$fromcompany->email; - } - } - - // Line 3 of company infos - $line3=""; - // Juridical status - if ($fromcompany->forme_juridique_code) - { - $line3.=($line3?" - ":"").$outputlangs->convToOutputCharset(getFormeJuridiqueLabel($fromcompany->forme_juridique_code)); - } - // Capital - if ($fromcompany->capital) - { - $line3.=($line3?" - ":"").$outputlangs->transnoentities("CapitalOf",$fromcompany->capital)." ".$outputlangs->transnoentities("Currency".$conf->currency); - } - // Prof Id 1 - if ($fromcompany->idprof1 && ($fromcompany->country_code != 'FR' || ! $fromcompany->idprof2)) - { - $field=$outputlangs->transcountrynoentities("ProfId1",$fromcompany->country_code); - if (preg_match('/\((.*)\)/i',$field,$reg)) $field=$reg[1]; - $line3.=($line3?" - ":"").$field.": ".$outputlangs->convToOutputCharset($fromcompany->idprof1); - } - // Prof Id 2 - if ($fromcompany->idprof2) - { - $field=$outputlangs->transcountrynoentities("ProfId2",$fromcompany->country_code); - if (preg_match('/\((.*)\)/i',$field,$reg)) $field=$reg[1]; - $line3.=($line3?" - ":"").$field.": ".$outputlangs->convToOutputCharset($fromcompany->idprof2); - } - - // Line 4 of company infos - $line4=""; - // Prof Id 3 - if ($fromcompany->idprof3) - { - $field=$outputlangs->transcountrynoentities("ProfId3",$fromcompany->country_code); - if (preg_match('/\((.*)\)/i',$field,$reg)) $field=$reg[1]; - $line4.=($line4?" - ":"").$field.": ".$outputlangs->convToOutputCharset($fromcompany->idprof3); - } - // Prof Id 4 - if ($fromcompany->idprof4) - { - $field=$outputlangs->transcountrynoentities("ProfId4",$fromcompany->country_code); - if (preg_match('/\((.*)\)/i',$field,$reg)) $field=$reg[1]; - $line4.=($line4?" - ":"").$field.": ".$outputlangs->convToOutputCharset($fromcompany->idprof4); - } - // IntraCommunautary VAT - if ($fromcompany->tva_intra != '') - { - $line4.=($line4?" - ":"").$outputlangs->transnoentities("VATIntraShort").": ".$outputlangs->convToOutputCharset($fromcompany->tva_intra); - } - - $pdf->SetFont('','',7); - $pdf->SetDrawColor(224,224,224); - - // On positionne le debut du bas de page selon nbre de lignes de ce bas de page +/** + * Show footer of page for PDF generation + * + * @param PDF &$pdf The PDF factory + * @param Translate $outputlangs Object lang for output + * @param string $paramfreetext Constant name of free text + * @param Societe $fromcompany Object company + * @param int $marge_basse Margin bottom we use for the autobreak + * @param int $marge_gauche Margin left (no more used) + * @param int $page_hauteur Page height (no more used) + * @param Object $object Object shown in PDF + * @param int $showdetails Show company details into footer. This param seems to not be used by standard version. + * @param int $hidefreetext 1=Hide free text, 0=Show free text + * @return int Return height of bottom margin including footer text + */ +function pdf_pagefoot(&$pdf,$outputlangs,$paramfreetext,$fromcompany,$marge_basse,$marge_gauche,$page_hauteur,$object,$showdetails=0,$hidefreetext=0) +{ + global $conf,$user; + + $outputlangs->load("dict"); + $line=''; + + $dims=$pdf->getPageDimensions(); + + // Line of free text + if (empty($hidefreetext) && ! empty($conf->global->$paramfreetext)) + { + // Make substitution + $substitutionarray=array( + '__FROM_NAME__' => $fromcompany->nom, + '__FROM_EMAIL__' => $fromcompany->email, + '__TOTAL_TTC__' => $object->total_ttc, + '__TOTAL_HT__' => $object->total_ht, + '__TOTAL_VAT__' => $object->total_vat + ); + complete_substitutions_array($substitutionarray,$outputlangs,$object); + $newfreetext=make_substitutions($conf->global->$paramfreetext,$substitutionarray); + $line.=$outputlangs->convToOutputCharset($newfreetext); + } + + // First line of company infos + + if ($showdetails) + { + $line1=""; + // Company name + if ($fromcompany->name) + { + $line1.=($line1?" - ":"").$outputlangs->transnoentities("RegisteredOffice").": ".$fromcompany->name; + } + // Address + if ($fromcompany->address) + { + $line1.=($line1?" - ":"").$fromcompany->address; + } + // Zip code + if ($fromcompany->zip) + { + $line1.=($line1?" - ":"").$fromcompany->zip; + } + // Town + if ($fromcompany->town) + { + $line1.=($line1?" ":"").$fromcompany->town; + } + // Phone + if ($fromcompany->phone) + { + $line1.=($line1?" - ":"").$outputlangs->transnoentities("Phone").": ".$fromcompany->phone; + } + // Fax + if ($fromcompany->fax) + { + $line1.=($line1?" - ":"").$outputlangs->transnoentities("Fax").": ".$fromcompany->fax; + } + + $line2=""; + // URL + if ($fromcompany->url) + { + $line2.=($line2?" - ":"").$fromcompany->url; + } + // Email + if ($fromcompany->email) + { + $line2.=($line2?" - ":"").$fromcompany->email; + } + } + + // Line 3 of company infos + $line3=""; + // Juridical status + if ($fromcompany->forme_juridique_code) + { + $line3.=($line3?" - ":"").$outputlangs->convToOutputCharset(getFormeJuridiqueLabel($fromcompany->forme_juridique_code)); + } + // Capital + if ($fromcompany->capital) + { + $line3.=($line3?" - ":"").$outputlangs->transnoentities("CapitalOf",$fromcompany->capital)." ".$outputlangs->transnoentities("Currency".$conf->currency); + } + // Prof Id 1 + if ($fromcompany->idprof1 && ($fromcompany->country_code != 'FR' || ! $fromcompany->idprof2)) + { + $field=$outputlangs->transcountrynoentities("ProfId1",$fromcompany->country_code); + if (preg_match('/\((.*)\)/i',$field,$reg)) $field=$reg[1]; + $line3.=($line3?" - ":"").$field.": ".$outputlangs->convToOutputCharset($fromcompany->idprof1); + } + // Prof Id 2 + if ($fromcompany->idprof2) + { + $field=$outputlangs->transcountrynoentities("ProfId2",$fromcompany->country_code); + if (preg_match('/\((.*)\)/i',$field,$reg)) $field=$reg[1]; + $line3.=($line3?" - ":"").$field.": ".$outputlangs->convToOutputCharset($fromcompany->idprof2); + } + + // Line 4 of company infos + $line4=""; + // Prof Id 3 + if ($fromcompany->idprof3) + { + $field=$outputlangs->transcountrynoentities("ProfId3",$fromcompany->country_code); + if (preg_match('/\((.*)\)/i',$field,$reg)) $field=$reg[1]; + $line4.=($line4?" - ":"").$field.": ".$outputlangs->convToOutputCharset($fromcompany->idprof3); + } + // Prof Id 4 + if ($fromcompany->idprof4) + { + $field=$outputlangs->transcountrynoentities("ProfId4",$fromcompany->country_code); + if (preg_match('/\((.*)\)/i',$field,$reg)) $field=$reg[1]; + $line4.=($line4?" - ":"").$field.": ".$outputlangs->convToOutputCharset($fromcompany->idprof4); + } + // IntraCommunautary VAT + if ($fromcompany->tva_intra != '') + { + $line4.=($line4?" - ":"").$outputlangs->transnoentities("VATIntraShort").": ".$outputlangs->convToOutputCharset($fromcompany->tva_intra); + } + + $pdf->SetFont('','',7); + $pdf->SetDrawColor(224,224,224); + + // On positionne le debut du bas de page selon nbre de lignes de ce bas de page + $freetextheight=0; if ($line) // Free text { $width=20000; $align='L'; // By default, ask a manual break: We use a large value 20000, to not have automatic wrap. This make user understand, he need to add CR on its text. diff --git a/htdocs/core/modules/cheque/pdf/pdf_blochet.class.php b/htdocs/core/modules/cheque/pdf/pdf_blochet.class.php index 92e51460e84..f7e2ac0c54d 100644 --- a/htdocs/core/modules/cheque/pdf/pdf_blochet.class.php +++ b/htdocs/core/modules/cheque/pdf/pdf_blochet.class.php @@ -344,9 +344,10 @@ class BordereauChequeBlochet extends ModeleChequeReceipts * @param PDF &$pdf PDF * @param Object $object Object to show * @param Translate $outputlangs Object lang for output + * @param int $hidefreetext 1=Hide free text * @return void */ - function _pagefoot(&$pdf,$object,$outputlangs) + function _pagefoot(&$pdf,$object,$outputlangs,$hidefreetext=0) { global $conf; $default_font_size = pdf_getPDFFontSize($outputlangs); diff --git a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php index 9b1c2871fe9..180839cbd87 100644 --- a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php @@ -360,7 +360,7 @@ class pdf_einstein extends ModelePDFCommandes { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } - $this->_pagefoot($pdf,$object,$outputlangs); + $this->_pagefoot($pdf,$object,$outputlangs,1); $pagenb++; $pdf->setPage($pagenb); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. @@ -376,7 +376,7 @@ class pdf_einstein extends ModelePDFCommandes { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } - $this->_pagefoot($pdf,$object,$outputlangs); + $this->_pagefoot($pdf,$object,$outputlangs,1); // New page $pdf->AddPage(); if (! empty($tplidx)) $pdf->useTemplate($tplidx); @@ -1083,11 +1083,12 @@ class pdf_einstein extends ModelePDFCommandes * @param PDF &$pdf PDF * @param Object $object Object to show * @param Translate $outputlangs Object lang for output + * @param int $hidefreetext 1=Hide free text * @return int Return height of bottom margin including footer text */ - function _pagefoot(&$pdf,$object,$outputlangs) + function _pagefoot(&$pdf,$object,$outputlangs,$hidefreetext=0) { - return pdf_pagefoot($pdf,$outputlangs,'COMMANDE_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object); + return pdf_pagefoot($pdf,$outputlangs,'COMMANDE_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object,0,$hidefreetext); } } diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 493a074adcb..e4547003ac5 100755 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -362,7 +362,7 @@ class pdf_crabe extends ModelePDFFactures { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } - $this->_pagefoot($pdf,$object,$outputlangs); + $this->_pagefoot($pdf,$object,$outputlangs,1); $pagenb++; $pdf->setPage($pagenb); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. @@ -378,7 +378,7 @@ class pdf_crabe extends ModelePDFFactures { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } - $this->_pagefoot($pdf,$object,$outputlangs); + $this->_pagefoot($pdf,$object,$outputlangs,1); // New page $pdf->AddPage(); if (! empty($tplidx)) $pdf->useTemplate($tplidx); @@ -1271,11 +1271,12 @@ class pdf_crabe extends ModelePDFFactures * @param PDF &$pdf PDF * @param Object $object Object to show * @param Translate $outputlangs Object lang for output + * @param int $hidefreetext 1=Hide free text * @return int Return height of bottom margin including footer text */ - function _pagefoot(&$pdf,$object,$outputlangs) + function _pagefoot(&$pdf,$object,$outputlangs,$hidefreetext=0) { - return pdf_pagefoot($pdf,$outputlangs,'FACTURE_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object); + return pdf_pagefoot($pdf,$outputlangs,'FACTURE_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object,0,$hidefreetext); } } diff --git a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php index 91f4b18c172..cd20ea4dfb2 100644 --- a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php +++ b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php @@ -25,10 +25,10 @@ * \ingroup ficheinter * \brief Fichier de la classe permettant de generer les fiches d'intervention au modele Soleil */ -require_once(DOL_DOCUMENT_ROOT."/core/modules/fichinter/modules_fichinter.php"); -require_once(DOL_DOCUMENT_ROOT."/core/lib/company.lib.php"); -require_once(DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'); -require_once(DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'); +require_once DOL_DOCUMENT_ROOT.'/core/modules/fichinter/modules_fichinter.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; /** @@ -84,25 +84,29 @@ class pdf_soleil extends ModelePDFFicheinter $this->option_multilang = 0; // Dispo en plusieurs langues $this->option_draft_watermark = 1; //Support add of a watermark on drafts - // Recupere emmetteur + // Get source company $this->emetteur=$mysoc; - if (! $this->emetteur->code_pays) $this->emetteur->code_pays=substr($langs->defaultlang,-2); // By default, if not defined + if (empty($this->emetteur->country_code)) $this->emetteur->country_code=substr($langs->defaultlang,-2); // By default, if not defined - // Defini position des colonnes + // Define position of columns $this->posxdesc=$this->marge_gauche+1; } /** * Function to build pdf onto disk * - * @param object $object Object to generate + * @param int $object Id of object to generate * @param object $outputlangs Lang output object - * @return int 1=ok, 0=ko + * @param string $srctemplatepath Full path of source filename for generator using a template file + * @param int $hidedetails Do not show line details + * @param int $hidedesc Do not show desc + * @param int $hideref Do not show ref + * @param object $hookmanager Hookmanager object + * @return int 1=OK, 0=KO */ - function write_file($object,$outputlangs) + function write_file($object,$outputlangs,$srctemplatepath='',$hidedetails=0,$hidedesc=0,$hideref=0,$hookmanager=false) { global $user,$langs,$conf,$mysoc; - $default_font_size = pdf_getPDFFontSize($outputlangs); if (! is_object($outputlangs)) $outputlangs=$langs; // For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO @@ -113,6 +117,8 @@ class pdf_soleil extends ModelePDFFicheinter $outputlangs->load("companies"); $outputlangs->load("interventions"); + $default_font_size = pdf_getPDFFontSize($outputlangs); + if ($conf->ficheinter->dir_output) { $object->fetch_thirdparty(); @@ -134,6 +140,9 @@ class pdf_soleil extends ModelePDFFicheinter if (file_exists($dir)) { $pdf=pdf_getInstance($this->format); + $heightforinfotot = 50; // Height reserved to output the info and total part + $heightforfooter = 25; // Height reserved to output the footer (value include bottom margin) + $pdf->SetAutoPageBreak(1,0); if (class_exists('TCPDF')) { @@ -157,34 +166,30 @@ class pdf_soleil extends ModelePDFFicheinter $pdf->SetCreator("Dolibarr ".DOL_VERSION); $pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs))); $pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("InterventionCard")); - if ($conf->global->MAIN_DISABLE_PDF_COMPRESSION) $pdf->SetCompression(false); + if (! empty($conf->global->MAIN_DISABLE_PDF_COMPRESSION)) $pdf->SetCompression(false); $pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right - $pdf->SetAutoPageBreak(1,0); // New page $pdf->AddPage(); if (! empty($tplidx)) $pdf->useTemplate($tplidx); $pagenb++; - $this->_pagehead($pdf, $object, 1, $outputlangs); - $pdf->SetTextColor(0,0,0); + $this->_pagehead($pdf, $object, 1, $outputlangs, $hookmanager); $pdf->SetFont('','', $default_font_size - 1); $pdf->MultiCell(0, 3, ''); // Set interline to 3 + $pdf->SetTextColor(0,0,0); - $tab_top = 100; - $tab_top_middlepage = 50; - $tab_top_newpage = 50; - $tab_height = 120; + $tab_top = 90; + $tab_top_newpage = (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)?42:10); + $tab_height = 130; $tab_height_newpage = 150; - $tab_height_middlepage = 200; - $tab_height_endpage = 170; // Affiche notes if (! empty($object->note_public)) { $tab_top = 88; - $pdf->SetFont('','', $default_font_size - 1); // Dans boucle pour gerer multi-page + $pdf->SetFont('','', $default_font_size - 1); $pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, dol_htmlentitiesbr($object->note_public), 0, 1); $nexY = $pdf->GetY(); $height_note=$nexY-$tab_top; @@ -240,81 +245,64 @@ class pdf_soleil extends ModelePDFFicheinter if ($valide > 0 || $object->specimen) { $curY = $nexY; + $pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage + $pdf->SetTextColor(0,0,0); - $pdf->SetFont('','B', $default_font_size - 1); - $pdf->SetXY($this->marge_gauche, $curY); - $txt=dol_htmlentitiesbr($outputlangs->transnoentities("Date")." : ".dol_print_date($objectligne->datei,'dayhour',false,$outputlangs,true)." - ".$outputlangs->transnoentities("Duration")." : ".convertSecondToTime($objectligne->duration),1,$outputlangs->charset_output); + $pdf->setTopMargin($tab_top_newpage); + $pdf->setPageOrientation('', 1, $this->marge_basse+$heightforfooter+$heightforinfotot); // The only function to edit the bottom margin of current page to set it. + $pageposbefore=$pdf->getPage(); - $curYold=$nexYold=$nexY; - $pdf->writeHTMLCell(0, 3, $this->marge_gauche, $curY, $txt, 0, 1, 0); - $curY = $pdf->GetY(); - $nexY+=3; + // Description of product line + $txt=''.dol_htmlentitiesbr($outputlangs->transnoentities("Date")." : ".dol_print_date($objectligne->datei,'dayhour',false,$outputlangs,true)." - ".$outputlangs->transnoentities("Duration")." : ".convertSecondToTime($objectligne->duration),1,$outputlangs->charset_output).''; + $desc=dol_htmlentitiesbr($objectligne->desc,1); - $pdf->SetFont('','', $default_font_size - 1); + $pdf->writeHTMLCell(0, 0, $curX, $curY, dol_concatdesc($txt,$desc), 0, 1, 0); - $pdf->SetXY($this->marge_gauche, $nexY); - $desc = dol_htmlentitiesbr($objectligne->desc,1); + $nexY = $pdf->GetY(); + $pageposafter=$pdf->getPage(); + $pdf->setPage($pageposbefore); + $pdf->setTopMargin($this->marge_haute); + $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. - $curYold = $pdf->GetY(); - $nexYold = $curYold; - - $pdf->writeHTMLCell(0, 3, $this->marge_gauche, $curY, $desc, 0, 1, 0); - - $stringheight=$pdf->getStringHeight('A', $txt); - $curY = $pdf->GetY(); - - $nexY+=(dol_nboflines_bis($objectligne->desc,0,$outputlangs->charset_output)*$stringheight); - //print $curYold."-".$nexYold." +".dol_nboflines_bis($objectligne->desc,52,$outputlangs->charset_output)."*".$stringheight."= ".$curY."-".$nexY."
"; - - $nexY+=2; // Passe espace entre les lignes - - // Cherche nombre de lignes a venir pour savoir si place suffisante - if ($i < ($nblines - 1) && empty($hidedesc)) // If it's not last line - { - //on recupere la description du produit suivant - $follow_descproduitservice = $objectligne->desc; - //on compte le nombre de ligne afin de verifier la place disponible (largeur de ligne 52 caracteres) - $nblineFollowDesc = (dol_nboflines_bis($follow_descproduitservice,52,$outputlangs->charset_output)*3); - } - else // If it's last line - { - $nblineFollowDesc = 0; + // We suppose that a too long description is moved completely on next page + if ($pageposafter > $pageposbefore) { + $pdf->setPage($pageposafter); $curY = $tab_top_newpage; } - // Test if a new page is required - if ($pagenb == 1) - { - $tab_top_in_current_page=$tab_top; - $tab_height_in_current_page=$tab_height; - } - else - { - $tab_top_in_current_page=$tab_top_newpage; - $tab_height_in_current_page=$tab_height_middlepage; - } - if (($nexY+$nblineFollowDesc) > ($tab_top_in_current_page+$tab_height_in_current_page) && $i < ($nblines - 1)) + $pdf->SetFont('','', $default_font_size - 1); // On repositionne la police par defaut + + // Detect if some page were added automatically and output _tableau for past pages + while ($pagenb < $pageposafter) { + $pdf->setPage($pagenb); if ($pagenb == 1) { - $this->_tableau($pdf, $tab_top, $tab_height + 20, $nexY, $outputlangs); + $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } else { - $this->_tableau($pdf, $tab_top_newpage, $tab_height_middlepage, $nexY, $outputlangs); + $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } - - $this->_pagefoot($pdf,$object,$outputlangs); - + $this->_pagefoot($pdf,$object,$outputlangs,1); + $pagenb++; + $pdf->setPage($pagenb); + $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. + } + if (isset($object->lines[$i+1]->pagebreak) && $object->lines[$i+1]->pagebreak) + { + if ($pagenb == 1) + { + $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); + } + else + { + $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); + } + $this->_pagefoot($pdf,$object,$outputlangs,1); // New page $pdf->AddPage(); - if (! empty($tplidx)) $pdf->useTemplate($tplidx); + if (! empty($tplidx)) $pdf->useTemplate($tplidx); $pagenb++; - $this->_pagehead($pdf, $object, 0, $outputlangs); - $pdf->SetFont('','', $default_font_size - 1); - $pdf->MultiCell(0, 3, ''); // Set interline to 3 - $pdf->SetTextColor(0,0,0); - - $nexY = $tab_top_newpage + 7; } } } @@ -322,17 +310,15 @@ class pdf_soleil extends ModelePDFFicheinter // Show square if ($pagenb == 1) { - $this->_tableau($pdf, $tab_top, $tab_height, $nexY, $outputlangs); - $bottomlasttab=$tab_top + $tab_height + 1; + $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfooter, 0, $outputlangs, 0, 0); + $bottomlasttab=$this->page_hauteur - $heightforfooter - $heightforfooter + 1; } else { - $this->_tableau($pdf, $tab_top_newpage, $tab_height_newpage, $nexY, $outputlangs); - $bottomlasttab=$tab_top_newpage + $tab_height_newpage + 1; + $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfooter, 0, $outputlangs, 1, 0); + $bottomlasttab=$this->page_hauteur - $heightforfooter - $heightforfooter + 1; } - $pdf->SetFont('','', $default_font_size - 1); // On repositionne la police par defaut - $this->_pagefoot($pdf,$object,$outputlangs); $pdf->AliasNbPages(); @@ -367,11 +353,18 @@ class pdf_soleil extends ModelePDFFicheinter * @param string $tab_height Height of table (rectangle) * @param int $nexY Y * @param Translate $outputlangs Langs object + * @param int $hidetop Hide top bar of array + * @param int $hidebottom Hide bottom bar of array * @return void */ - function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs) + function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs, $hidetop=0, $hidebottom=0) { global $conf; + + // Force to disable hidetop and hidebottom + $hidebottom=0; + if ($hidetop) $hidetop=-1; + $default_font_size = pdf_getPDFFontSize($outputlangs); /* $pdf->SetXY($this->marge_gauche, $tab_top); @@ -398,21 +391,24 @@ class pdf_soleil extends ModelePDFFicheinter $pdf->MultiCell(0, 3, ''); // Set interline to 3. Then writeMultiCell must use 3 also. */ - $pdf->Rect($this->marge_gauche, $tab_top, ($this->page_largeur-$this->marge_gauche-$this->marge_droite), $tab_height+3); - $pdf->SetXY($this->marge_gauche, $pdf->GetY() + 20); - $pdf->MultiCell(60, 5, '', 0, 'J', 0); - $pdf->SetXY(20,230); - $pdf->MultiCell(66,5, $outputlangs->transnoentities("NameAndSignatureOfInternalContact"),0,'L',0); + // Output Rect + $this->printRect($pdf, $this->marge_gauche, $tab_top, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $tab_height+3, $hidetop, $hidebottom); // Rect prend une longueur en 3eme param et 4eme param - $pdf->SetXY(20,235); - $pdf->MultiCell(80,30, '', 1); + if (empty($hidebottom)) + { + $pdf->SetXY(20,230); + $pdf->MultiCell(66,5, $outputlangs->transnoentities("NameAndSignatureOfInternalContact"),0,'L',0); - $pdf->SetXY(110,230); - $pdf->MultiCell(80,5, $outputlangs->transnoentities("NameAndSignatureOfExternalContact"),0,'L',0); + $pdf->SetXY(20,235); + $pdf->MultiCell(80,25, '', 1); - $pdf->SetXY(110,235); - $pdf->MultiCell(80,30, '', 1); + $pdf->SetXY(110,230); + $pdf->MultiCell(80,5, $outputlangs->transnoentities("NameAndSignatureOfExternalContact"),0,'L',0); + + $pdf->SetXY(110,235); + $pdf->MultiCell(80,25, '', 1); + } } /** @@ -556,7 +552,7 @@ class pdf_soleil extends ModelePDFFicheinter if (! empty($usecontact)) { // On peut utiliser le nom de la societe du contact - if ($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT) $socname = $object->contact->socname; + if (! empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) $socname = $object->contact->socname; else $socname = $object->client->nom; $carac_client_name=$outputlangs->convToOutputCharset($socname); } @@ -565,29 +561,31 @@ class pdf_soleil extends ModelePDFFicheinter $carac_client_name=$outputlangs->convToOutputCharset($object->client->nom); } - $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,$object->contact,$usecontact,'target'); + $carac_client=pdf_build_address($outputlangs, $this->emetteur, $object->client, (isset($object->contact)?$object->contact:''), $usecontact, 'target'); // Show recipient + $widthrecbox=100; + if ($this->page_largeur < 210) $widthrecbox=84; // To work with US executive format $posy=42; - $posx=$this->page_largeur-$this->marge_droite-100; + $posx=$this->page_largeur-$this->marge_droite-$widthrecbox; if (! empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) $posx=$this->marge_gauche; // Show recipient frame $pdf->SetTextColor(0,0,0); $pdf->SetFont('','', $default_font_size - 2); - $pdf->SetXY($posx,$posy-5); - $pdf->Rect($posx, $posy, 100, $hautcadre); + $pdf->SetXY($posx+2,$posy-5); + $pdf->Rect($posx, $posy, $widthrecbox, $hautcadre); $pdf->SetTextColor(0,0,0); // Show recipient name $pdf->SetXY($posx+2,$posy+3); $pdf->SetFont('','B', $default_font_size); - $pdf->MultiCell(100,4, $carac_client_name, 0, 'L'); + $pdf->MultiCell($widthrecbox, 4, $carac_client_name, 0, 'L'); // Show recipient information $pdf->SetFont('','', $default_font_size - 1); $pdf->SetXY($posx+2,$posy+4+(dol_nboflines_bis($carac_client_name,50)*4)); - $pdf->MultiCell(100,4, $carac_client, 0, 'L'); + $pdf->MultiCell($widthrecbox, 4, $carac_client, 0, 'L'); } } @@ -599,9 +597,9 @@ class pdf_soleil extends ModelePDFFicheinter * @param Translate $outputlangs Object lang for output * @return void */ - function _pagefoot(&$pdf,$object,$outputlangs) + function _pagefoot(&$pdf,$object,$outputlangs,$hidefreetext=0) { - return pdf_pagefoot($pdf,$outputlangs,'FICHINTER_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object); + return pdf_pagefoot($pdf,$outputlangs,'FICHINTER_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object,0,$hidefreetext); } } diff --git a/htdocs/core/modules/project/pdf/pdf_baleine.modules.php b/htdocs/core/modules/project/pdf/pdf_baleine.modules.php index b34d3b9a6fc..38337c4314e 100644 --- a/htdocs/core/modules/project/pdf/pdf_baleine.modules.php +++ b/htdocs/core/modules/project/pdf/pdf_baleine.modules.php @@ -23,11 +23,11 @@ * \author Regis Houssin */ -require_once(DOL_DOCUMENT_ROOT."/core/modules/project/modules_project.php"); -require_once(DOL_DOCUMENT_ROOT."/projet/class/project.class.php"); -require_once(DOL_DOCUMENT_ROOT."/projet/class/task.class.php"); -require_once(DOL_DOCUMENT_ROOT."/core/lib/company.lib.php"); -require_once(DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'); +require_once DOL_DOCUMENT_ROOT.'/core/modules/project/modules_project.php'; +require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; +require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'; /** @@ -127,6 +127,9 @@ class pdf_baleine extends ModelePDFProjects if (file_exists($dir)) { $pdf=pdf_getInstance($this->format); + $heightforinfotot = 50; // Height reserved to output the info and total part + $heightforfooter = 25; // Height reserved to output the footer (value include bottom margin) + $pdf->SetAutoPageBreak(1,0); if (class_exists('TCPDF')) { @@ -151,10 +154,9 @@ class pdf_baleine extends ModelePDFProjects $pdf->SetCreator("Dolibarr ".DOL_VERSION); $pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs))); $pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("Project")); - if ($conf->global->MAIN_DISABLE_PDF_COMPRESSION) $pdf->SetCompression(false); + if (! empty($conf->global->MAIN_DISABLE_PDF_COMPRESSION)) $pdf->SetCompression(false); $pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right - $pdf->SetAutoPageBreak(1,0); // New page $pdf->AddPage(); @@ -225,43 +227,52 @@ class pdf_baleine extends ModelePDFProjects $nexY+=2; // Passe espace entre les lignes - // Cherche nombre de lignes a venir pour savoir si place suffisante - if ($i < ($nblignes - 1) && empty($hidedesc)) // If it's not last line + // Detect if some page were added automatically and output _tableau for past pages + while ($pagenb < $pageposafter) { - //on recupere la description du produit suivant - $follow_descproduitservice = $object->lines[$i+1]->desc; - //on compte le nombre de ligne afin de verifier la place disponible (largeur de ligne 52 caracteres) - $nblineFollowDesc = (dol_nboflines_bis($follow_descproduitservice,52,$outputlangs->charset_output)*4); + $pdf->setPage($pagenb); + if ($pagenb == 1) + { + $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); + } + else + { + $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); + } + $this->_pagefoot($pdf,$object,$outputlangs,1); + $pagenb++; + $pdf->setPage($pagenb); + $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. } - else // If it's last line + if (isset($object->lines[$i+1]->pagebreak) && $object->lines[$i+1]->pagebreak) { - $nblineFollowDesc = 0; - } - - if (($nexY+$nblineFollowDesc) > ($tab_top+$tab_height) && $i < ($nblignes - 1)) - { - $this->_tableau($pdf, $tab_top, $tab_height + 20, $nexY, $outputlangs); - - $this->_pagefoot($pdf, $object, $outputlangs); - + if ($pagenb == 1) + { + $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); + } + else + { + $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); + } + $this->_pagefoot($pdf,$object,$outputlangs,1); // New page $pdf->AddPage(); + if (! empty($tplidx)) $pdf->useTemplate($tplidx); $pagenb++; - $this->_pagehead($pdf, $object, 0, $outputlangs); - $pdf->SetFont('','', $default_font_size - 1); - $pdf->MultiCell(0, 3, ''); // Set interline to 3 - $pdf->SetTextColor(0,0,0); - - $tab_top=$tab_top_newpage; - $tab_height=$tab_height_newpage; - - $nexY = $tab_top + 7; } } // Show square - $this->_tableau($pdf, $tab_top, $tab_height, $nexY, $outputlangs); - $bottomlasttab=$tab_top + $tab_height + 1; + if ($pagenb == 1) + { + $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfooter, 0, $outputlangs, 0, 0); + $bottomlasttab=$this->page_hauteur - $heightforinfotot - $heightforfooter + 1; + } + else + { + $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfooter, 0, $outputlangs, 1, 0); + $bottomlasttab=$this->page_hauteur - $heightforinfotot - $heightforfooter + 1; + } /* * Pied de page @@ -297,9 +308,11 @@ class pdf_baleine extends ModelePDFProjects * @param string $tab_height Height of table (rectangle) * @param int $nexY Y * @param Translate $outputlangs Langs object + * @param int $hidetop Hide top bar of array + * @param int $hidebottom Hide bottom bar of array * @return void */ - function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs) + function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs, $hidetop=0, $hidebottom=0) { global $conf,$mysoc; @@ -412,11 +425,12 @@ class pdf_baleine extends ModelePDFProjects * @param PDF &$pdf PDF * @param Object $object Object to show * @param Translate $outputlangs Object lang for output + * @param int $hidefreetext 1=Hide free text * @return void */ - function _pagefoot(&$pdf,$object,$outputlangs) + function _pagefoot(&$pdf,$object,$outputlangs,$hidefreetext=0) { - return pdf_pagefoot($pdf,$outputlangs,'DELIVERY_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object); + return pdf_pagefoot($pdf,$outputlangs,'PROJECT_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object,0,$hidefreetext); } } diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index 5938d404782..225ddba488a 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -360,7 +360,7 @@ class pdf_azur extends ModelePDFPropales { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } - $this->_pagefoot($pdf,$object,$outputlangs); + $this->_pagefoot($pdf,$object,$outputlangs,1); $pagenb++; $pdf->setPage($pagenb); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. @@ -376,7 +376,7 @@ class pdf_azur extends ModelePDFPropales { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } - $this->_pagefoot($pdf,$object,$outputlangs); + $this->_pagefoot($pdf,$object,$outputlangs,1); // New page $pdf->AddPage(); if (! empty($tplidx)) $pdf->useTemplate($tplidx); @@ -1158,11 +1158,12 @@ class pdf_azur extends ModelePDFPropales * @param PDF &$pdf PDF * @param Object $object Object to show * @param Translate $outputlangs Object lang for output + * @param int $hidefreetext 1=Hide free text * @return int Return height of bottom margin including footer text */ - function _pagefoot(&$pdf,$object,$outputlangs) + function _pagefoot(&$pdf,$object,$outputlangs,$hidefreetext=0) { - return pdf_pagefoot($pdf,$outputlangs,'PROPALE_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object); + return pdf_pagefoot($pdf,$outputlangs,'PROPALE_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object,0,$hidefreetext); } } diff --git a/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php b/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php index 2ccbdf031ff..03d940b72e2 100755 --- a/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php +++ b/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php @@ -350,7 +350,7 @@ if ($pageposafter > $pageposbefore) { { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } - $this->_pagefoot($pdf,$object,$outputlangs); + $this->_pagefoot($pdf,$object,$outputlangs,1); $pagenb++; $pdf->setPage($pagenb); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. @@ -365,7 +365,7 @@ if ($pageposafter > $pageposbefore) { { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } - $this->_pagefoot($pdf,$object,$outputlangs); + $this->_pagefoot($pdf,$object,$outputlangs,1); // New page $pdf->AddPage(); if (! empty($tplidx)) $pdf->useTemplate($tplidx); @@ -976,11 +976,12 @@ if ($pageposafter > $pageposbefore) { * @param PDF &$pdf PDF * @param Object $object Object to show * @param Translate $outputlangs Object lang for output + * @param int $hidefreetext 1=Hide free text * @return int Return height of bottom margin including footer text */ - function _pagefoot(&$pdf, $object, $outputlangs) + function _pagefoot(&$pdf, $object, $outputlangs,$hidefreetext=0) { - return pdf_pagefoot($pdf,$outputlangs,'SUPPLIER_INVOICE_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object); + return pdf_pagefoot($pdf,$outputlangs,'SUPPLIER_INVOICE_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object,0,$hidefreetext); } } diff --git a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php index 1644955bfd4..62e704aa179 100644 --- a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php +++ b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php @@ -367,7 +367,7 @@ if ($pageposafter > $pageposbefore) { { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } - $this->_pagefoot($pdf,$object,$outputlangs); + $this->_pagefoot($pdf,$object,$outputlangs,1); $pagenb++; $pdf->setPage($pagenb); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. @@ -382,7 +382,7 @@ if ($pageposafter > $pageposbefore) { { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } - $this->_pagefoot($pdf,$object,$outputlangs); + $this->_pagefoot($pdf,$object,$outputlangs,1); // New page $pdf->AddPage(); if (! empty($tplidx)) $pdf->useTemplate($tplidx); @@ -1082,11 +1082,12 @@ if ($pageposafter > $pageposbefore) { * @param PDF &$pdf PDF * @param Object $object Object to show * @param Translate $outputlangs Object lang for output + * @param int $hidefreetext 1=Hide free text * @return int Return height of bottom margin including footer text */ - function _pagefoot(&$pdf, $object, $outputlangs) + function _pagefoot(&$pdf, $object, $outputlangs, $hidefreetext=0) { - return pdf_pagefoot($pdf,$outputlangs,'SUPPLIER_INVOICE_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object); + return pdf_pagefoot($pdf,$outputlangs,'SUPPLIER_INVOICE_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object,0,$hidefreetext); } }