Exemple #1
0
/**
 *  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);
     }
 }