diff options
author | Toshi MARUYAMA <marutosijp2@yahoo.co.jp> | 2012-06-17 13:05:05 +0000 |
---|---|---|
committer | Toshi MARUYAMA <marutosijp2@yahoo.co.jp> | 2012-06-17 13:05:05 +0000 |
commit | e3eab40ec4ec86d6eb3da309227536f64c735cc9 (patch) | |
tree | 56540d4e67344ed59a4e1b52125f00300a2b308c /lib/plugins | |
parent | b93e040bb897d25603aca5eba26961dfa84946a9 (diff) | |
download | redmine-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-x | lib/plugins/rfpdf/lib/tcpdf.rb | 49 |
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(/ /, " "); + elsif (@href) element.gsub!(/[\t\r\n\f]/, ""); - element.gsub!(/ /, " "); - 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' |