summaryrefslogtreecommitdiffstats
path: root/lib/plugins
diff options
context:
space:
mode:
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>2012-06-17 13:05:05 +0000
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>2012-06-17 13:05:05 +0000
commite3eab40ec4ec86d6eb3da309227536f64c735cc9 (patch)
tree56540d4e67344ed59a4e1b52125f00300a2b308c /lib/plugins
parentb93e040bb897d25603aca5eba26961dfa84946a9 (diff)
downloadredmine-e3eab40ec4ec86d6eb3da309227536f64c735cc9.tar.gz
redmine-e3eab40ec4ec86d6eb3da309227536f64c735cc9.zip
fix PDF export tables problems (#10688)
Contributed by Jun NAITOH. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9853 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'lib/plugins')
-rwxr-xr-xlib/plugins/rfpdf/lib/tcpdf.rb49
1 files changed, 28 insertions, 21 deletions
diff --git a/lib/plugins/rfpdf/lib/tcpdf.rb b/lib/plugins/rfpdf/lib/tcpdf.rb
index e8878934c..56ae756e1 100755
--- a/lib/plugins/rfpdf/lib/tcpdf.rb
+++ b/lib/plugins/rfpdf/lib/tcpdf.rb
@@ -283,6 +283,7 @@ class TCPDF
@state ||= 0
@tableborder ||= 0
@tdbegin ||= false
+ @tdtext ||= ''
@tdwidth ||= 0
@tdheight ||= 0
@tdalign ||= "L"
@@ -3510,28 +3511,12 @@ class TCPDF
else
#Text
- if (@href)
+ if (@tdbegin)
element.gsub!(/[\t\r\n\f]/, "");
- addHtmlLink(@href, element, fill);
- elsif (@tdbegin)
+ @tdtext << element.gsub(/&nbsp;/, " ");
+ elsif (@href)
element.gsub!(/[\t\r\n\f]/, "");
- element.gsub!(/&nbsp;/, " ");
- base_page = @page;
- base_x = @x;
- base_y = @y;
-
- MultiCell(@tdwidth, @tdheight, unhtmlentities(element.strip), @tableborder, @tdalign, @tdfill, 1);
- tr_end = @t_cells[@table_id][@tr_id][@td_id]['j1'] + 1;
- if @max_td_page[tr_end].nil? or (@max_td_page[tr_end] < @page)
- @max_td_page[tr_end] = @page
- @max_td_y[tr_end] = @y
- elsif (@max_td_page[tr_end] == @page)
- @max_td_y[tr_end] = @y if @max_td_y[tr_end].nil? or (@max_td_y[tr_end] < @y)
- end
-
- @page = base_page;
- @x = base_x + @tdwidth;
- @y = base_y;
+ addHtmlLink(@href, element, fill);
elsif (@pre_state == true and element.length > 0)
Write(@lasth, unhtmlentities(element), '', fill);
elsif (element.strip.length > 0)
@@ -3825,6 +3810,7 @@ class TCPDF
@x += 5;
when 'table'
+ Ln();
if @default_table_columns < @max_table_columns[@table_id]
@table_columns = @max_table_columns[@table_id];
else
@@ -3921,6 +3907,11 @@ class TCPDF
when 'img'
if (!attrs['src'].nil?)
+ # Don't generates image inside table tag
+ if (@tdbegin)
+ @tdtext << attrs['src'];
+ return
+ end
# Only generates image include a pdf if RMagick is avalaible
unless Object.const_defined?(:Magick)
Write(@lasth, attrs['src'], '', fill);
@@ -4079,6 +4070,23 @@ class TCPDF
Ln();
when 'td','th'
+ base_page = @page;
+ base_x = @x;
+ base_y = @y;
+
+ MultiCell(@tdwidth, @tdheight, unhtmlentities(@tdtext.strip), @tableborder, @tdalign, @tdfill, 1);
+ tr_end = @t_cells[@table_id][@tr_id][@td_id]['j1'] + 1;
+ if @max_td_page[tr_end].nil? or (@max_td_page[tr_end] < @page)
+ @max_td_page[tr_end] = @page
+ @max_td_y[tr_end] = @y
+ elsif (@max_td_page[tr_end] == @page)
+ @max_td_y[tr_end] = @y if @max_td_y[tr_end].nil? or (@max_td_y[tr_end] < @y)
+ end
+
+ @page = base_page;
+ @x = base_x + @tdwidth;
+ @y = base_y;
+ @tdtext = '';
@tdbegin = false;
@tdwidth = 0;
@tdheight = 0;
@@ -4126,7 +4134,6 @@ class TCPDF
@l_margin -= 5;
@r_margin -= 5;
@tableborder=0;
- Ln();
@table_id += 1;
when 'strong'