Re: wiki 索引(名前順)からPDF出力時 テーブルのレイアウトが正しく反映されない

410 views
Skip to first unread message

nobu_toyofuku

unread,
Jan 11, 2013, 3:55:10 AM1/11/13
to redmine-...@googlegroups.com
  豊福です。

2012年12月26日水曜日 10時16分20秒 UTC+9 Michihiro Suzuki:

wikiの索引(名前順)からPDF出力を出力すると、しおり付きで出力してくれるため利用しています。
便利な機能なのですが、textileで表記したテーブルの内容が正しく反映されなくて困っています。


セル内の改行には対応していないようです。
取りあえず改行の代わりに空白を出力するという日和った回避策ならば
以下のパッチでできると思います。

--- lib/plugins/rfpdf/lib/tcpdf.rb.org
+++ lib/plugins/rfpdf/lib/tcpdf.rb
@@ -3531,4 +3531,5 @@
                 if (@tdbegin)
                     element.gsub!(/[\t\r\n\f]/, "");
+@tdtext << " " if @after_br
                     @tdtext << element.gsub(/&nbsp;/, " ");
                 elsif (@href)
@@ -4003,4 +4004,7 @@
                 @quote_count += 1
             when 'br'
+if @tdbegin
+  @after_br = true
+else
                 Ln();
 
@@ -4008,4 +4012,5 @@
                     @x += GetStringWidth(@li_spacer);
                 end
+end
                 
             when 'p'
@@ -4089,4 +4094,5 @@
 
             when 'td','th'
+@after_br = nil
                 base_page = @page;
                 base_x = @x;
 
 ---

nobu_toyofuku

unread,
Jan 11, 2013, 7:18:42 AM1/11/13
to redmine-...@googlegroups.com
  豊福です。

  ちょっと既視感があってメーリングリスト内を調べたら 2012年6月の
「PDFにDESCRIPTIONを追加したい」というスレッドを思い出しました。
チケット一覧のPDF出力では(<br>対応ではありませんが)カラム幅を
超える文字列は空白が入っているところなど折り曲げられる位置でセル内に
折り曲げて表示しているのですね。
この処理を参考にすれば tcpdf.rb を(誰かが)修正できそうです。
---

nobu_toyofuku

unread,
Jan 11, 2013, 8:58:19 AM1/11/13
to redmine-...@googlegroups.com
  豊福です。

2013年1月11日金曜日 21時18分42秒 UTC+9 nobu_toyofuku:
チケット一覧のPDF出力では(<br>対応ではありませんが)カラム幅を
超える文字列は空白が入っているところなど折り曲げられる位置でセル内に
折り曲げて表示しているのですね。

気になって調べてみたら lib/plugins/rfpdf/lib/fpdf/japanese.rb の
def SJISMultiCell の中でやっているようでした。
if(o==10)  #Explicit line break
というコードがあったのでもしやと思い前のパッチで空白を入れている
ところを "¥n" を入れるようにしたらセル内改行されました。ということで
以下のパッチでどうでしょう。(前回のパッチの " " を "¥n" に変えただけです。)
SJISMultiCell という名前からして Redmine の言語設定が日本語でない
ときはダメかもしれませんが。

--- tcpdf.rb.org
+++ tcpdf.rb

@@ -3531,4 +3531,5 @@
                 if (@tdbegin)
                     element.gsub!(/[\t\r\n\f]/, "");
+@tdtext << "\n" if @after_br

Michihiro Suzuki

unread,
Jan 24, 2013, 1:13:41 AM1/24/13
to redmine-...@googlegroups.com
豊福様

 返信いただいていたのに、放置気味になってしまい大変申し訳ありませんでした。
 情報だけでなく対応策まで頂き、有り難うございます。
 まずは、頂いた情報を元に対応させていただこうと思います。
 対応結果を投稿させて頂きたいと思います。

Michihiro Suzuki

unread,
Jan 28, 2013, 8:23:18 PM1/28/13
to redmine-...@googlegroups.com
豊福様

お陰様でwikiと同じイメージで出力することが出来ました。
有難うございました。
rubyは使ったことがなかったので途方に暮れておりましたが、これを機に勉強しようと思います。

4.対応後 

nobu_toyofuku

unread,
Jan 31, 2013, 2:30:23 AM1/31/13
to redmine-...@googlegroups.com
  豊福です。

「PDF export mix cells」
http://www.redmine.org/issues/11987#change-45153
に Jun NAITOH さんによる以下のパッチがありました。
是非このパッチの方をお使いください。

Index: lib/plugins/rfpdf/lib/tcpdf.rb
===================================================================
--- lib/plugins/rfpdf/lib/tcpdf.rb      (revision 11288)
+++ lib/plugins/rfpdf/lib/tcpdf.rb      (working copy)
@@ -4002,6 +4002,10 @@
                                @quote_page[@quote_count] = @page;

                                @quote_count += 1
                        when 'br'
+                               if @tdbegin
+                                       @tdtext << "\n"
+                                       return
+                               end
                                Ln();

                                if (@li_spacer.length > 0)
---

Michihiro Suzuki

unread,
Feb 3, 2013, 9:04:26 PM2/3/13
to redmine-...@googlegroups.com
豊福様

いつも有難うございます。
こちらも試させて頂きます。

nobu_toyofuku

unread,
Feb 18, 2013, 5:05:56 AM2/18/13
to redmine-...@googlegroups.com
  豊福です。

2013年1月31日木曜日 16時30分23秒 UTC+9 nobu_toyofuku:
「PDF export mix cells」
http://www.redmine.org/issues/11987#change-45153
に Jun NAITOH さんによる以下のパッチがありました。

先週リリースされた redmine-2.2.3 でこのパッチが取り込まれたそうです。
「2.2.3の変更点一覧」
Reply all
Reply to author
Forward
0 new messages