Function dol_nboflines_bis shoul work with non UTF-8 content.

This commit is contained in:
Laurent Destailleur 2009-08-02 18:05:16 +00:00
parent b57232bd24
commit e3bd60cb8a
12 changed files with 24 additions and 21 deletions

View File

@ -334,7 +334,7 @@ class BordereauChequeBlochet extends FPDF
$pdf->SetDrawColor(224,224,224);
// On positionne le debut du bas de page selon nbre de lignes de ce bas de page
$nbofligne=dol_nboflines_bis($ligne);
$nbofligne=dol_nboflines_bis($ligne,0,$outputlangs->charset_output);
//print 'e'.$ligne.'t'.dol_nboflines($ligne);exit;
$posy=$marge_basse + ($nbofligne*3) + ($ligne1?3:0) + ($ligne2?3:0);

View File

@ -233,7 +233,7 @@ class pdf_edison extends ModelePDFCommandes
//on recupere la description du produit suivant
$follow_descproduitservice = $outputlangs->convToOutputCharset($com->lignes[$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)*4);
$nblineFollowDesc = (dol_nboflines_bis($follow_descproduitservice,52,$outputlangs->charset_output)*4);
}
else // If it's last line
{

View File

@ -288,7 +288,7 @@ class pdf_einstein extends ModelePDFCommandes
//on recupere la description du produit suivant
$follow_descproduitservice = $outputlangs->convToOutputCharset($com->lignes[$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)*4);
$nblineFollowDesc = (dol_nboflines_bis($follow_descproduitservice,52,$outputlangs->charset_output)*4);
}
else // If it's last line
{

View File

@ -219,7 +219,7 @@ Class pdf_expedition_merou extends ModelePdfExpedition
$pdf->MultiCell(30, 3, $object->lignes[$i]->qty_shipped, 0, 'C', 0);
//Generation de la page 2
$curY += (dol_nboflines_bis($libelleproduitservice)*3+1);
$curY += (dol_nboflines_bis($libelleproduitservice,0,$outputlangs->charset_output)*3+1);
$nexY = $curY;
if ($nexY > ($tab_top+$tab_height-10) && $i < $nblignes - 1)
{

View File

@ -295,7 +295,7 @@ class pdf_crabe extends ModelePDFFactures
//on recupere la description du produit suivant
$follow_descproduitservice = $fac->lignes[$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)*4;
$nblineFollowDesc = dol_nboflines_bis($follow_descproduitservice,52,$outputlangs->charset_output)*4;
// Et si on affiche dates de validite, on ajoute encore une ligne
if ($fac->lignes[$i]->date_start && $fac->lignes[$i]->date_end)
{

View File

@ -289,7 +289,7 @@ class pdf_soleil extends ModelePDFFicheinter
$pdf->SetXY (10, $tab_top + 4 + $j * $height);
$pdf->writeHTMLCell(0, 3, $this->marge_gauche, $tab_top + 4 + $j * $height,
dol_htmlentitiesbr($outputlangs->convToOutputCharset($fichinterligne->desc),1), 0, 1, 0);
$tab_height+=dol_nboflines_bis($fichinterligne->desc,52)*4;
$tab_height+=dol_nboflines_bis($fichinterligne->desc,52,$outputlangs->charset_output)*4;
$j++;
}

View File

@ -237,10 +237,10 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
// Cherche nombre de lignes a venir pour savoir si place suffisante
if ($i < ($nblignes - 1)) // If it's not last line
{
//on r<EFBFBD>cup<EFBFBD>re la description du produit suivant
//on recupere la description du produit suivant
$follow_descproduitservice = $object->lignes[$i+1]->desc;
//on compte le nombre de ligne afin de v<EFBFBD>rifier la place disponible (largeur de ligne 52 caracteres)
$nblineFollowDesc = (dol_nboflines_bis($follow_descproduitservice,52)*4);
//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);
}
else // If it's last line
{

View File

@ -301,10 +301,10 @@ class pdf_typhon extends ModelePDFDeliveryOrder
// Cherche nombre de lignes a venir pour savoir si place suffisante
if ($i < ($nblignes - 1)) // If it's not last line
{
//on r<EFBFBD>cup<EFBFBD>re la description du produit suivant
//on recupere la description du produit suivant
$follow_descproduitservice = $object->lignes[$i+1]->desc;
//on compte le nombre de ligne afin de v<EFBFBD>rifier la place disponible (largeur de ligne 52 caracteres)
$nblineFollowDesc = (dol_nboflines_bis($follow_descproduitservice,52)*4);
//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);
}
else // If it's last line
{

View File

@ -303,7 +303,7 @@ class pdf_propale_azur extends ModelePDFPropales
//on recupere la description du produit suivant
$follow_descproduitservice = $propale->lignes[$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)*4);
$nblineFollowDesc = (dol_nboflines_bis($follow_descproduitservice,52,$outputlangs->charset_output)*4);
}
else // If it's last line
{

View File

@ -229,7 +229,7 @@ class pdf_propale_jaune extends ModelePDFPropales
//on recupere la description du produit suivant
$follow_descproduitservice = $outputlangs->convToOutputCharset($propale->lignes[$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)*4);
$nblineFollowDesc = (dol_nboflines_bis($follow_descproduitservice,52,$outputlangs->charset_output)*4);
}
else // If it's last line
{

View File

@ -2632,16 +2632,19 @@ function dol_nboflines($s,$maxchar=0)
/**
* \brief Return nb of lines of a formated text with \n and <br>
* \param texte Text
* \param maxlinesize Largeur de ligne en caracteres (ou 0 si pas de limite - defaut)
* \return int Number of lines
* \brief Return nb of lines of a formated text with \n and <br>
* \param texte Text
* \param maxlinesize Largeur de ligne en caracteres (ou 0 si pas de limite - defaut)
* \param charset Give the charset used to encode the $texte variable in memory.
* \return int Number of lines
*/
function dol_nboflines_bis($texte,$maxlinesize=0)
function dol_nboflines_bis($texte,$maxlinesize=0,$charset='UTF-8')
{
//print $texte;
$repTable = array("\t" => " ", "\n" => "<br>", "\r" => " ", "\0" => " ", "\x0B" => " ");
$texte = strtr($texte, $repTable);
$pattern = '/(<[^>]+>)/';
if ($charset == 'UTF-8') { $pattern = '/(<[^>]+>)/Uu'; } // /U is to have UNGREEDY regex to limit to one html tag. /u is for UTF8 support
else $pattern = '/(<[^>]+>)/U'; // /U is to have UNGREEDY regex to limit to one html tag.
$a = preg_split($pattern, $texte, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$nblines = floor((count($a)+1)/2);
// count possible auto line breaks

View File

@ -176,7 +176,7 @@ function pdf_pagefoot(&$pdf,$outputlangs,$paramfreetext,$fromcompany,$marge_bass
$pdf->SetDrawColor(224,224,224);
// On positionne le debut du bas de page selon nbre de lignes de ce bas de page
$nbofligne=dol_nboflines_bis($ligne);
$nbofligne=dol_nboflines_bis($ligne,0,$outputlangs->charset_output);
//print 'nbofligne='.$nbofligne; exit;
//print 'e'.$ligne.'t'.dol_nboflines($ligne);exit;
$posy=$marge_basse + ($nbofligne*3) + ($ligne1?3:0) + ($ligne2?3:0);