diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 11588be8ed4..d7e297b8395 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -517,203 +517,211 @@ 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 - * @param int $marge_gauche Margin left - * @param int $page_hauteur Page height - * @param Object $object Object shown in PDF - * @param int $showdetails Show company details - * @return void - */ -function pdf_pagefoot(&$pdf,$outputlangs,$paramfreetext,$fromcompany,$marge_basse,$marge_gauche,$page_hauteur,$object,$showdetails=0) -{ - global $conf,$user; - - $outputlangs->load("dict"); - $line=''; - - // 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 - $nbofline=dol_nboflines_bis($line,0,$outputlangs->charset_output); - //print 'nbofline='.$nbofline; exit; - //print 'e'.$line.'t'.dol_nboflines($line);exit; - $posy=$marge_basse + ($nbofline*3) + ($line1?3:0) + ($line2?3:0) + ($line3?3:0) + ($line4?3:0); - - if ($line) // Free text - { - $pdf->SetXY($marge_gauche,-$posy); - $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. - if ($conf->global->MAIN_USE_AUTOWRAP_ON_FREETEXT) { $width=200; $align='C'; } - $pdf->MultiCell($width, 3, $line, 0, $align, 0); - $posy-=($nbofline*3); // 6 of ligne + 3 of MultiCell - } - - $pdf->SetY(-$posy); - $pdf->line($marge_gauche, $page_hauteur-$posy, 200, $page_hauteur-$posy); - $posy--; - - if ($line1) - { - $pdf->SetFont('','B',7); - $pdf->SetXY($marge_gauche,-$posy); - $pdf->MultiCell(200, 2, $line1, 0, 'C', 0); - $posy-=3; - $pdf->SetFont('','',7); - } - - if ($line2) - { - $pdf->SetFont('','B',7); - $pdf->SetXY($marge_gauche,-$posy); - $pdf->MultiCell(200, 2, $line2, 0, 'C', 0); - $posy-=3; - $pdf->SetFont('','',7); - } - - if ($line3) - { - $pdf->SetXY($marge_gauche,-$posy); - $pdf->MultiCell(200, 2, $line3, 0, 'C', 0); - } - - if ($line4) - { - $posy-=3; - $pdf->SetXY($marge_gauche,-$posy); - $pdf->MultiCell(200, 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; - } +/** + * 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 + $nbofline=dol_nboflines_bis($line,0,$outputlangs->charset_output); + //print 'nbofline='.$nbofline; exit; + //print 'e'.$line.'t'.dol_nboflines($line);exit; + $marginwithfooter=$marge_basse + ($nbofline*3) + (! empty($line1)?3:0) + (! empty($line2)?3:0) + (! empty($line3)?3:0) + (! empty($line4)?3:0); + $posy=$marginwithfooter+0; + + if ($line) // Free text + { + $pdf->SetXY($dims['lm'],-$posy); + $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. + if (! empty($conf->global->MAIN_USE_AUTOWRAP_ON_FREETEXT)) { + $width=200; $align='C'; + } + $pdf->MultiCell($width, 3, $line, 0, $align, 0); + $posy-=($nbofline*3); // 6 of ligne + 3 of MultiCell + } + + $pdf->SetY(-$posy); + $pdf->line($dims['lm'], $dims['hk']-$posy, $dims['wk']-$dims['rm'], $dims['hk']-$posy); + $posy--; + + if (! empty($line1)) + { + $pdf->SetFont('','B',7); + $pdf->SetXY($dims['lm'],-$posy); + $pdf->MultiCell(200, 2, $line1, 0, 'C', 0); + $posy-=3; + $pdf->SetFont('','',7); + } + + if (! empty($line2)) + { + $pdf->SetFont('','B',7); + $pdf->SetXY($dims['lm'],-$posy); + $pdf->MultiCell(200, 2, $line2, 0, 'C', 0); + $posy-=3; + $pdf->SetFont('','',7); + } + + if (! empty($line3)) + { + $pdf->SetXY($dims['lm'],-$posy); + $pdf->MultiCell(200, 2, $line3, 0, 'C', 0); + } + + if (! empty($line4)) + { + $posy-=3; + $pdf->SetXY($dims['lm'],-$posy); + $pdf->MultiCell(200, 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; + } + + return $marginwithfooter; } + /** * Show linked objects for PDF generation *