/** * 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. (1=Show address, 2=Show managers, 3=Both) * @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->name, '__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 $line1 = ""; $line2 = ""; $line3 = ""; $line4 = ""; if ($showdetails) { // 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; } // URL if ($fromcompany->url) { $line2 .= ($line2 ? " - " : "") . $fromcompany->url; } // Email if ($fromcompany->email) { $line2 .= ($line2 ? " - " : "") . $fromcompany->email; } } if ($showdetails || $fromcompany->country_code == 'DE') { // Managers if ($fromcompany->managers) { $line2 .= ($line2 ? " - " : "") . $fromcompany->managers; } } // Line 3 of company infos // Juridical status if ($fromcompany->forme_juridique_code) { $line3 .= ($line3 ? " - " : "") . $outputlangs->convToOutputCharset(getFormeJuridiqueLabel($fromcompany->forme_juridique_code)); } // Capital if ($fromcompany->capital) { $tmpamounttoshow = price2num($fromcompany->capital); // This field is a free string if (is_numeric($tmpamounttoshow) && $tmpamounttoshow > 0) { $line3 .= ($line3 ? " - " : "") . $outputlangs->transnoentities("CapitalOf", price($tmpamounttoshow, 0, $outputlangs, 0, 0, 0, $conf->currency)); } else { $line3 .= ($line3 ? " - " : "") . $outputlangs->transnoentities("CapitalOf", $tmpamounttoshow, $outputlangs); } } // 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 // 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); // The start of the bottom of this page footer is positioned according to # of lines $freetextheight = 0; if ($line) { //$line="eee<br>\nfd<strong>sf</strong>sdf<br>\nghfghg<br>"; if (empty($conf->global->PDF_ALLOW_HTML_FOR_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. if (!empty($conf->global->MAIN_USE_AUTOWRAP_ON_FREETEXT)) { $width = 200; $align = 'C'; } $freetextheight = $pdf->getStringHeight($width, $line); } else { $freetextheight = pdfGetHeightForHtmlContent($pdf, dol_htmlentitiesbr($line, 1, 'UTF-8', 0)); // New method (works for HTML content) //print '<br>'.$freetextheight;exit; } } $marginwithfooter = $marge_basse + $freetextheight + (!empty($line1) ? 3 : 0) + (!empty($line2) ? 3 : 0) + (!empty($line3) ? 3 : 0) + (!empty($line4) ? 3 : 0); $posy = $marginwithfooter + 0; if ($line) { $pdf->SetXY($dims['lm'], -$posy); if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { $pdf->MultiCell(0, 3, $line, 0, $align, 0); } else { $pdf->writeHTMLCell($pdf->page_largeur - $pdf->margin_left - $pdf->margin_right, $freetextheight, $dims['lm'], $dims['hk'] - $marginwithfooter, dol_htmlentitiesbr($line, 1, 'UTF-8', 0)); } $posy -= $freetextheight; } $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($dims['wk'] - $dims['rm'], 2, $line1, 0, 'C', 0); $posy -= 3; $pdf->SetFont('', '', 7); } if (!empty($line2)) { $pdf->SetFont('', 'B', 7); $pdf->SetXY($dims['lm'], -$posy); $pdf->MultiCell($dims['wk'] - $dims['rm'], 2, $line2, 0, 'C', 0); $posy -= 3; $pdf->SetFont('', '', 7); } if (!empty($line3)) { $pdf->SetXY($dims['lm'], -$posy); $pdf->MultiCell($dims['wk'] - $dims['rm'], 2, $line3, 0, 'C', 0); } if (!empty($line4)) { $posy -= 3; $pdf->SetXY($dims['lm'], -$posy); $pdf->MultiCell($dims['wk'] - $dims['rm'], 2, $line4, 0, 'C', 0); } // Show page nb only on iso languages (so default Helvetica font) if (strtolower(pdf_getPDFFont($outputlangs)) == 'helvetica') { $pdf->SetXY(-20, -$posy); //print 'xxx'.$pdf->PageNo().'-'.$pdf->getAliasNbPages().'-'.$pdf->getAliasNumPage();exit; if (empty($conf->global->MAIN_USE_FPDF)) { $pdf->MultiCell(13, 2, $pdf->PageNo() . '/' . $pdf->getAliasNbPages(), 0, 'R', 0); } else { $pdf->MultiCell(13, 2, $pdf->PageNo() . '/{nb}', 0, 'R', 0); } } return $marginwithfooter; }
/** * Show footer of page. Need this->emetteur object * * @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, $hidefreetext = 0) { global $conf; $default_font_size = pdf_getPDFFontSize($outputlangs); //$showdetails=0; return pdf_pagefoot($pdf, $outputlangs, 'BANK_CHEQUERECEIPT_FREE_TEXT', $this->emetteur, $this->marge_basse, $this->marge_gauche, $this->page_hauteur, $object, $showdetails, $hidefreetext); $paramfreetext = 'BANK_CHEQUERECEIPT_FREE_TEXT'; $marge_basse = $this->marge_basse; $marge_gauche = $this->marge_gauche; $page_hauteur = $this->page_hauteur; // Line of free text $line = !empty($conf->global->{$paramfreetext}) ? $outputlangs->convToOutputCharset($conf->global->{$paramfreetext}) : ""; $pdf->SetFont('', '', $default_font_size - 3); $pdf->SetDrawColor(224, 224, 224); // The start of the bottom of this page footer is positioned according to # of lines $freetextheight = 0; if ($line) { //$line="eee<br>\nfd<strong>sf</strong>sdf<br>\nghfghg<br>"; if (empty($conf->global->PDF_ALLOW_HTML_FOR_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. if (!empty($conf->global->MAIN_USE_AUTOWRAP_ON_FREETEXT)) { $width = 200; $align = 'C'; } $freetextheight = $pdf->getStringHeight($width, $line); } else { $freetextheight = pdfGetHeightForHtmlContent($pdf, dol_htmlentitiesbr($line, 1, 'UTF-8', 0)); // New method (works for HTML content) //print '<br>'.$freetextheight;exit; } } $marginwithfooter = $marge_basse + $freetextheight; $posy = $marginwithfooter + 0; if ($line) { $pdf->SetXY($dims['lm'], -$posy); if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { $pdf->MultiCell(0, 3, $line, 0, $align, 0); } else { $pdf->writeHTMLCell($pdf->page_largeur - $pdf->margin_left - $pdf->margin_right, $freetextheight, $dims['lm'], $dims['hk'] - $marginwithfooter, dol_htmlentitiesbr($line, 1, 'UTF-8', 0)); } $posy -= $freetextheight; } // 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 'e'.$line.'t'.dol_nboflines($line);exit; $posy=$marge_basse + ($nbofline*3); if ($line) // Free text { $pdf->SetXY($marge_gauche,-$posy); $pdf->MultiCell(20000, 3, $line, 0, 'L', 0); // Use a large value 20000, to not have automatic wrap. This make user understand, he need to add CR on its text. $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->SetXY($marge_gauche,-$posy); $pdf->MultiCell(200, 2, $line1, 0, 'C', 0); } if ($line2) { $posy-=3; $pdf->SetXY($marge_gauche,-$posy); $pdf->MultiCell(200, 2, $line2, 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); } }