diff --git a/htdocs/includes/modules/cheque/pdf/pdf_blochet.class.php b/htdocs/includes/modules/cheque/pdf/pdf_blochet.class.php
index 1addf337f81..7595244a429 100644
--- a/htdocs/includes/modules/cheque/pdf/pdf_blochet.class.php
+++ b/htdocs/includes/modules/cheque/pdf/pdf_blochet.class.php
@@ -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);
diff --git a/htdocs/includes/modules/commande/pdf_edison.modules.php b/htdocs/includes/modules/commande/pdf_edison.modules.php
index 6fe0a021266..ca8b79922ee 100644
--- a/htdocs/includes/modules/commande/pdf_edison.modules.php
+++ b/htdocs/includes/modules/commande/pdf_edison.modules.php
@@ -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
{
diff --git a/htdocs/includes/modules/commande/pdf_einstein.modules.php b/htdocs/includes/modules/commande/pdf_einstein.modules.php
index b57449d680a..f5d031da1b9 100644
--- a/htdocs/includes/modules/commande/pdf_einstein.modules.php
+++ b/htdocs/includes/modules/commande/pdf_einstein.modules.php
@@ -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
{
diff --git a/htdocs/includes/modules/expedition/pdf/pdf_expedition_merou.modules.php b/htdocs/includes/modules/expedition/pdf/pdf_expedition_merou.modules.php
index 60ba0a87909..2ce7c1a0a66 100644
--- a/htdocs/includes/modules/expedition/pdf/pdf_expedition_merou.modules.php
+++ b/htdocs/includes/modules/expedition/pdf/pdf_expedition_merou.modules.php
@@ -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)
{
diff --git a/htdocs/includes/modules/facture/pdf_crabe.modules.php b/htdocs/includes/modules/facture/pdf_crabe.modules.php
index 55ba225f016..6697a9d739b 100644
--- a/htdocs/includes/modules/facture/pdf_crabe.modules.php
+++ b/htdocs/includes/modules/facture/pdf_crabe.modules.php
@@ -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)
{
diff --git a/htdocs/includes/modules/fichinter/pdf_soleil.modules.php b/htdocs/includes/modules/fichinter/pdf_soleil.modules.php
index 5119d90680b..3bd8c674c9e 100644
--- a/htdocs/includes/modules/fichinter/pdf_soleil.modules.php
+++ b/htdocs/includes/modules/fichinter/pdf_soleil.modules.php
@@ -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++;
}
diff --git a/htdocs/includes/modules/livraison/pdf/pdf_sirocco.modules.php b/htdocs/includes/modules/livraison/pdf/pdf_sirocco.modules.php
index a7d64caf9eb..a44fb0d6c24 100644
--- a/htdocs/includes/modules/livraison/pdf/pdf_sirocco.modules.php
+++ b/htdocs/includes/modules/livraison/pdf/pdf_sirocco.modules.php
@@ -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�cup�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�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
{
diff --git a/htdocs/includes/modules/livraison/pdf/pdf_typhon.modules.php b/htdocs/includes/modules/livraison/pdf/pdf_typhon.modules.php
index d0ed09efba7..2a9ecc9335e 100644
--- a/htdocs/includes/modules/livraison/pdf/pdf_typhon.modules.php
+++ b/htdocs/includes/modules/livraison/pdf/pdf_typhon.modules.php
@@ -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�cup�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�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
{
diff --git a/htdocs/includes/modules/propale/pdf_propale_azur.modules.php b/htdocs/includes/modules/propale/pdf_propale_azur.modules.php
index be800ed9923..666ecd66868 100644
--- a/htdocs/includes/modules/propale/pdf_propale_azur.modules.php
+++ b/htdocs/includes/modules/propale/pdf_propale_azur.modules.php
@@ -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
{
diff --git a/htdocs/includes/modules/propale/pdf_propale_jaune.modules.php b/htdocs/includes/modules/propale/pdf_propale_jaune.modules.php
index 6aa5f426066..ff52f22615a 100644
--- a/htdocs/includes/modules/propale/pdf_propale_jaune.modules.php
+++ b/htdocs/includes/modules/propale/pdf_propale_jaune.modules.php
@@ -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
{
diff --git a/htdocs/lib/functions.lib.php b/htdocs/lib/functions.lib.php
index 433ff674531..6bb62e12ea1 100644
--- a/htdocs/lib/functions.lib.php
+++ b/htdocs/lib/functions.lib.php
@@ -2632,16 +2632,19 @@ function dol_nboflines($s,$maxchar=0)
/**
- * \brief Return nb of lines of a formated text with \n and
- * \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
+ * \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" => "
", "\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
diff --git a/htdocs/lib/pdf.lib.php b/htdocs/lib/pdf.lib.php
index f7fc6f6e9db..71fd4e37c82 100644
--- a/htdocs/lib/pdf.lib.php
+++ b/htdocs/lib/pdf.lib.php
@@ -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);