Fix: Line at bottom of PDF was too long
This commit is contained in:
parent
8fe8a1a6fd
commit
df4bfc77a4
@ -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
|
||||
*
|
||||
|
||||
Loading…
Reference in New Issue
Block a user