FC2ブログ

徒然さめざめ

思ったことを思ったときに思ったように

Redmine Hack! - pdfの文字化け fix編 -

結局なにが悪いかって言うと SJIS化 と 0x5C問題だ。

(config/)locales/ja.yml の
general_pdf_encoding: UTF-8 を
general_pdf_encoding: SJIS or CP932 にするのは以前と同じ(とおもう。


問題は
lib/redmine/export/pdf.rb
Cell 内の# 0x5c char handlingだとおもわれ。
つまるところ、Cellに渡す文字列をSJISに変えて、
iconvでエラーが出る文字列の5c対策をしてやればいいわけだ。


Index: lib/redmine/export/pdf.rb
===================================================================
--- lib/redmine/export/pdf.rb (リビジョン 2548)
+++ lib/redmine/export/pdf.rb (作業コピー)
@@ -91,7 +91,7 @@
txtar << '' if txt[-1] == ?\\
txtar.collect {|x| @ic.iconv(x)}.join('\\').gsub(/\\/, "\\\\\\\\")
rescue
- txt
+ txt.gsub(/\\/, "\\\\\\\\")
end || ''
super w,h,txt,border,ln,align,fill,link
end
@@ -147,7 +147,7 @@
pdf.Cell(30, row_height, issue.priority.name, 0, 0, 'L', 1)
pdf.Cell(40, row_height, issue.assigned_to ? issue.assigned_to.to_s : '', 0, 0, 'L', 1)
pdf.Cell(25, row_height, format_date(issue.updated_on), 0, 0, 'L', 1)
- pdf.MultiCell(0, row_height, (project == issue.project ? issue.subject : "#{issue.project} - #{issue.subject}"))
+ pdf.MultiCell(0, row_height, (project == issue.project ? issue.subject.tosjis : "#{issue.project.tosjis} - #{issue.subject.tosjis}"))
pdf.Line(10, pdf.GetY, 287, pdf.GetY)
pdf.SetY(pdf.GetY() + 1)
end
@@ -212,7 +212,7 @@
pdf.SetFontStyle('B',9)
pdf.Cell(35,5, custom_value.custom_field.name + ":","L")
pdf.SetFontStyle('',9)
- pdf.MultiCell(155,5, (show_value custom_value),"R")
+ pdf.MultiCell(155,5, (show_value custom_value).tosjis, "R")
end

pdf.SetFontStyle('B',9)
@@ -224,7 +224,7 @@
pdf.SetFontStyle('B',9)
pdf.Cell(35,5, l(:field_description) + ":")
pdf.SetFontStyle('',9)
- pdf.MultiCell(155,5, @issue.description,"BR")
+ pdf.MultiCell(155,5, @issue.description.tosjis,"BR")

pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY)
pdf.Line(pdf.GetX, pdf.GetY, 170, pdf.GetY)
@@ -240,7 +240,7 @@
pdf.Ln
unless changeset.comments.blank?
pdf.SetFontStyle('',8)
- pdf.MultiCell(190,5, changeset.comments)
+ pdf.MultiCell(190,5, changeset.comments.tosjis)
end
pdf.Ln
end
@@ -260,7 +260,7 @@
end
if journal.notes?
pdf.SetFontStyle('',8)
- pdf.MultiCell(190,5, journal.notes)
+ pdf.MultiCell(190,5, journal.notes.tosjis)
end
pdf.Ln
end


チケット画面をpdf化する際、題名が長すぎると途中で切れちゃう問題があるけど、
もういいよね?
スポンサーサイト



テーマ:プログラミング - ジャンル:コンピュータ

コメント

正直tosjis化はいらないかもしれないが現状で満足してるので特に問題がで無い限りスルーしておく。

  • 2009/03/19(木) 16:29:02 |
  • URL |
  • まこp #-
  • [ 編集 ]

さらに言うなら、Cellメソッドの最初に

txt = txt.tosjis

とかすればいいんじゃね?
と思ったが、考えないことにしよう...

  • 2009/03/19(木) 16:41:56 |
  • URL |
  • まこp #-
  • [ 編集 ]

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

  • 2009/09/14(月) 17:51:59 |
  • |
  • #
  • [ 編集 ]

誘導
http://fmkt.blog65.fc2.com/blog-entry-148.html

  • 2010/07/01(木) 16:29:02 |
  • URL |
  • まこp #-
  • [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://fmkt.blog65.fc2.com/tb.php/68-e72af5c2
この記事にトラックバックする(FC2ブログユーザー)

RedmineのPDF文字化け(0.8-stable)

RedmineでPDF出力時に文字化けするのでgoogle先生に尋ねてみたところ、 Redmine Users (japanese) -PDFで文字化けについて 徒然さめざめ-Redmine Hack! - pdfの文字化け fix編 - この辺に、パッチがあったん...

  • 2009/07/23(木) 19:31:02 |
  • signifié|signifiant

Redmine カスタマイズ その1

とりあえず動いたので、社内で限定公開です。 ダミーのプロジェクトを作成して、チケットを作成、編集、移動、削除したりと動きを確認し、 ...

  • 2009/08/06(木) 23:24:51 |
  • Breezyday