Function dol_nboflines_bis shoul work with non UTF-8 content.
This commit is contained in:
parent
b57232bd24
commit
e3bd60cb8a
@ -334,7 +334,7 @@ class BordereauChequeBlochet extends FPDF
|
|||||||
$pdf->SetDrawColor(224,224,224);
|
$pdf->SetDrawColor(224,224,224);
|
||||||
|
|
||||||
// On positionne le debut du bas de page selon nbre de lignes de ce bas de page
|
// 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;
|
//print 'e'.$ligne.'t'.dol_nboflines($ligne);exit;
|
||||||
$posy=$marge_basse + ($nbofligne*3) + ($ligne1?3:0) + ($ligne2?3:0);
|
$posy=$marge_basse + ($nbofligne*3) + ($ligne1?3:0) + ($ligne2?3:0);
|
||||||
|
|
||||||
|
|||||||
@ -233,7 +233,7 @@ class pdf_edison extends ModelePDFCommandes
|
|||||||
//on recupere la description du produit suivant
|
//on recupere la description du produit suivant
|
||||||
$follow_descproduitservice = $outputlangs->convToOutputCharset($com->lignes[$i+1]->desc);
|
$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)
|
//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
|
else // If it's last line
|
||||||
{
|
{
|
||||||
|
|||||||
@ -288,7 +288,7 @@ class pdf_einstein extends ModelePDFCommandes
|
|||||||
//on recupere la description du produit suivant
|
//on recupere la description du produit suivant
|
||||||
$follow_descproduitservice = $outputlangs->convToOutputCharset($com->lignes[$i+1]->desc);
|
$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)
|
//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
|
else // If it's last line
|
||||||
{
|
{
|
||||||
|
|||||||
@ -219,7 +219,7 @@ Class pdf_expedition_merou extends ModelePdfExpedition
|
|||||||
$pdf->MultiCell(30, 3, $object->lignes[$i]->qty_shipped, 0, 'C', 0);
|
$pdf->MultiCell(30, 3, $object->lignes[$i]->qty_shipped, 0, 'C', 0);
|
||||||
|
|
||||||
//Generation de la page 2
|
//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;
|
$nexY = $curY;
|
||||||
if ($nexY > ($tab_top+$tab_height-10) && $i < $nblignes - 1)
|
if ($nexY > ($tab_top+$tab_height-10) && $i < $nblignes - 1)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -295,7 +295,7 @@ class pdf_crabe extends ModelePDFFactures
|
|||||||
//on recupere la description du produit suivant
|
//on recupere la description du produit suivant
|
||||||
$follow_descproduitservice = $fac->lignes[$i+1]->desc;
|
$follow_descproduitservice = $fac->lignes[$i+1]->desc;
|
||||||
//on compte le nombre de ligne afin de verifier la place disponible (largeur de ligne 52 caracteres)
|
//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
|
// Et si on affiche dates de validite, on ajoute encore une ligne
|
||||||
if ($fac->lignes[$i]->date_start && $fac->lignes[$i]->date_end)
|
if ($fac->lignes[$i]->date_start && $fac->lignes[$i]->date_end)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -289,7 +289,7 @@ class pdf_soleil extends ModelePDFFicheinter
|
|||||||
$pdf->SetXY (10, $tab_top + 4 + $j * $height);
|
$pdf->SetXY (10, $tab_top + 4 + $j * $height);
|
||||||
$pdf->writeHTMLCell(0, 3, $this->marge_gauche, $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);
|
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++;
|
$j++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -237,10 +237,10 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
|
|||||||
// Cherche nombre de lignes a venir pour savoir si place suffisante
|
// Cherche nombre de lignes a venir pour savoir si place suffisante
|
||||||
if ($i < ($nblignes - 1)) // If it's not last line
|
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;
|
$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)
|
//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
|
else // If it's last line
|
||||||
{
|
{
|
||||||
|
|||||||
@ -301,10 +301,10 @@ class pdf_typhon extends ModelePDFDeliveryOrder
|
|||||||
// Cherche nombre de lignes a venir pour savoir si place suffisante
|
// Cherche nombre de lignes a venir pour savoir si place suffisante
|
||||||
if ($i < ($nblignes - 1)) // If it's not last line
|
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;
|
$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)
|
//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
|
else // If it's last line
|
||||||
{
|
{
|
||||||
|
|||||||
@ -303,7 +303,7 @@ class pdf_propale_azur extends ModelePDFPropales
|
|||||||
//on recupere la description du produit suivant
|
//on recupere la description du produit suivant
|
||||||
$follow_descproduitservice = $propale->lignes[$i+1]->desc;
|
$follow_descproduitservice = $propale->lignes[$i+1]->desc;
|
||||||
//on compte le nombre de ligne afin de verifier la place disponible (largeur de ligne 52 caracteres)
|
//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
|
else // If it's last line
|
||||||
{
|
{
|
||||||
|
|||||||
@ -229,7 +229,7 @@ class pdf_propale_jaune extends ModelePDFPropales
|
|||||||
//on recupere la description du produit suivant
|
//on recupere la description du produit suivant
|
||||||
$follow_descproduitservice = $outputlangs->convToOutputCharset($propale->lignes[$i+1]->desc);
|
$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)
|
//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
|
else // If it's last line
|
||||||
{
|
{
|
||||||
|
|||||||
@ -2632,16 +2632,19 @@ function dol_nboflines($s,$maxchar=0)
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Return nb of lines of a formated text with \n and <br>
|
* \brief Return nb of lines of a formated text with \n and <br>
|
||||||
* \param texte Text
|
* \param texte Text
|
||||||
* \param maxlinesize Largeur de ligne en caracteres (ou 0 si pas de limite - defaut)
|
* \param maxlinesize Largeur de ligne en caracteres (ou 0 si pas de limite - defaut)
|
||||||
* \return int Number of lines
|
* \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" => " ");
|
$repTable = array("\t" => " ", "\n" => "<br>", "\r" => " ", "\0" => " ", "\x0B" => " ");
|
||||||
$texte = strtr($texte, $repTable);
|
$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);
|
$a = preg_split($pattern, $texte, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
|
||||||
$nblines = floor((count($a)+1)/2);
|
$nblines = floor((count($a)+1)/2);
|
||||||
// count possible auto line breaks
|
// count possible auto line breaks
|
||||||
|
|||||||
@ -176,7 +176,7 @@ function pdf_pagefoot(&$pdf,$outputlangs,$paramfreetext,$fromcompany,$marge_bass
|
|||||||
$pdf->SetDrawColor(224,224,224);
|
$pdf->SetDrawColor(224,224,224);
|
||||||
|
|
||||||
// On positionne le debut du bas de page selon nbre de lignes de ce bas de page
|
// 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 'nbofligne='.$nbofligne; exit;
|
||||||
//print 'e'.$ligne.'t'.dol_nboflines($ligne);exit;
|
//print 'e'.$ligne.'t'.dol_nboflines($ligne);exit;
|
||||||
$posy=$marge_basse + ($nbofligne*3) + ($ligne1?3:0) + ($ligne2?3:0);
|
$posy=$marge_basse + ($nbofligne*3) + ($ligne1?3:0) + ($ligne2?3:0);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user