diff --git a/CHANGELOG.TXT b/CHANGELOG.TXT index bca6bd9..383e32d 100755 --- a/CHANGELOG.TXT +++ b/CHANGELOG.TXT @@ -1,3 +1,6 @@ +5.9.037 (2011-01-09) + - An alignment problem fot HTML texts was fixed. + 5.9.036 (2011-01-07) - A bug related to HTML tables on header was fixed. diff --git a/README.TXT b/README.TXT index 622df4b..43ac33b 100755 --- a/README.TXT +++ b/README.TXT @@ -8,8 +8,8 @@ http://sourceforge.net/donate/index.php?group_id=128076 ------------------------------------------------------------ Name: TCPDF -Version: 5.9.036 -Release date: 2011-01-07 +Version: 5.9.037 +Release date: 2011-01-09 Author: Nicola Asuni Copyright (c) 2002-2011: diff --git a/tcpdf.php b/tcpdf.php index b4a090e..c051b54 100755 --- a/tcpdf.php +++ b/tcpdf.php @@ -1,9 +1,9 @@ * @package com.tecnick.tcpdf * @author Nicola Asuni - * @version 5.9.036 + * @version 5.9.037 */ // Main configuration file. Define the K_TCPDF_EXTERNAL_CONFIG constant to skip this file. @@ -146,7 +146,7 @@ require_once(dirname(__FILE__).'/config/tcpdf_config.php'); * TCPDF project (http://www.tcpdf.org) has been originally derived in 2002 from the Public Domain FPDF class by Olivier Plathey (http://www.fpdf.org), but now is almost entirely rewritten.
* @package com.tecnick.tcpdf * @brief PHP class for generating PDF documents without requiring external extensions. - * @version 5.9.036 + * @version 5.9.037 * @author Nicola Asuni - info@tecnick.com */ class TCPDF { @@ -157,7 +157,7 @@ class TCPDF { * Current TCPDF version. * @private */ - private $tcpdf_version = '5.9.036'; + private $tcpdf_version = '5.9.037'; // Protected properties @@ -20232,6 +20232,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value: $this->x += $this->textindent; } if (!isset($dom[$key]['trimmed_space']) OR !$dom[$key]['trimmed_space']) { + $strlinelen = $this->GetStringWidth($dom[$key]['value']); if (!empty($this->HREF) AND (isset($this->HREF['url']))) { // HTML Link $hrefcolor = ''; @@ -20246,43 +20247,50 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value: } else { $wadj = 0; // space to leave for block continuity $adjblks = 0; // number of blocks - // check the next text blocks for continuity - $nkey = ($key + 1); - $write_block = true; - $same_textdir = true; - $tmp_fontname = $this->FontFamily; - $tmp_fontstyle = $this->FontStyle; - $tmp_fontsize = $this->FontSizePt; - while ($write_block AND isset($dom[$nkey])) { - if ($dom[$nkey]['tag']) { - if ($dom[$nkey]['block']) { - // end of block - $write_block = false; - } - $tmp_fontname = isset($dom[$nkey]['fontname']) ? $dom[$nkey]['fontname'] : $this->FontFamily; - $tmp_fontstyle = isset($dom[$nkey]['fontstyle']) ? $dom[$nkey]['fontstyle'] : $this->FontStyle; - $tmp_fontsize = isset($dom[$nkey]['fontsize']) ? $dom[$nkey]['fontsize'] : $this->FontSizePt; - $same_textdir = ($dom[$nkey]['dir'] == $dom[$key]['dir']); - } else { - $nextstr = preg_split('/'.$this->re_space['p'].'+/'.$this->re_space['m'], $dom[$nkey]['value']); - if (isset($nextstr[0])) { - if ($same_textdir) { - $wadj += $this->GetStringWidth($nextstr[0], $tmp_fontname, $tmp_fontstyle, $tmp_fontsize); + if ($this->rtl) { + $cwa = $this->x - $this->lMargin; + } else { + $cwa = $this->w - $this->rMargin - $this->x; + } + if ($strlinelen < $cwa) { + // check the next text blocks for continuity + $nkey = ($key + 1); + $write_block = true; + $same_textdir = true; + $tmp_fontname = $this->FontFamily; + $tmp_fontstyle = $this->FontStyle; + $tmp_fontsize = $this->FontSizePt; + while ($write_block AND isset($dom[$nkey])) { + if ($dom[$nkey]['tag']) { + if ($dom[$nkey]['block']) { + // end of block + $write_block = false; + } + $tmp_fontname = isset($dom[$nkey]['fontname']) ? $dom[$nkey]['fontname'] : $this->FontFamily; + $tmp_fontstyle = isset($dom[$nkey]['fontstyle']) ? $dom[$nkey]['fontstyle'] : $this->FontStyle; + $tmp_fontsize = isset($dom[$nkey]['fontsize']) ? $dom[$nkey]['fontsize'] : $this->FontSizePt; + $same_textdir = ($dom[$nkey]['dir'] == $dom[$key]['dir']); + } else { + $nextstr = preg_split('/'.$this->re_space['p'].'+/'.$this->re_space['m'], $dom[$nkey]['value']); + if (isset($nextstr[0])) { + if ($same_textdir) { + $wadj += $this->GetStringWidth($nextstr[0], $tmp_fontname, $tmp_fontstyle, $tmp_fontsize); + } + ++$adjblks; + } + if (isset($nextstr[1])) { + $write_block = false; } - ++$adjblks; - } - if (isset($nextstr[1])) { - $write_block = false; } + ++$nkey; } - ++$nkey; } // check for reversed text direction if (($wadj > 0) AND (($this->rtl AND ($this->tmprtl === 'L')) OR (!$this->rtl AND ($this->tmprtl === 'R')))) { // LTR text on RTL direction or RTL text on LTR direction $reverse_dir = true; $this->rtl = !$this->rtl; - $revshift = ($this->GetStringWidth($dom[$key]['value']) + $wadj) + 0.000001; // add little quantity for rounding problems + $revshift = ($strlinelen + $wadj + 0.000001); // add little quantity for rounding problems if ($this->rtl) { $this->x += $revshift; } else {