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);