« 2009年 寒稽古 | トップページ | Ruby FPDFでA4横のPDFを作る »

2009/01/17

再びRuby FPDF

以前、と言ってもずいぶん前ですがRuby FPDFについて少し試行して、そのままにしていましたが、今日、Matsue.rbに参加してRuby FPDFを再び触ってみる事にしました。

まず、前回の記事で紹介したサンプルは手違いで消してしまっていたようなので、それを再び作成。

そして、それから色々な文字列を表示して試しているとちょっとおかしい。
「表示」という文字を書いても、「侮ヲ」なる文字に置き換わってしまいます。

表示できないサンプル

で、このMatsue.rbを企画した高尾さんに声をかけてみると、UTF-8からShift JISに変換する場合に起こる有名な現象との事...

有名な現象なら誰か何かしているはず...と調べてみたらこんなページがありました。

文字化けについて

特定の文字の後ろに「¥」を入れれば良いみたい...ということで、このページを参考に次のようなスクリプトを作成。

def utf_sjis(str)
ss = "―ソЫⅨ噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭偆砡".split(//u)
tmp = str
ss.each {|c|
tmp = tmp.gsub(c, c + "¥")
}
return tmp
end
で、このスクリプトを通したら、こんな感じになりました。

表示できたサンプル

良かった、良かった。
ちなみに、文字コードの変換にはIconvを使用します。なぜかはわかりませんが、他の方法では文字化けしてしまいました。

下のテキストボックスに適当な文字列入力して「送信」してみて下さい。入力した文字列がPDFに表示されます。

下記は表示に使っているソースコードです。興味のある方がおられましたらご参照下さい。

「example1c.rb.txt」をダウンロード

|

« 2009年 寒稽古 | トップページ | Ruby FPDFでA4横のPDFを作る »

コメント

高尾宏治です。
Ruby FPDF側でなんとかしてくれるとうれしいです。
また、Ruby FPDF側で対応していないということは、使う人はみんななんとか対応しているんですかね。
なにわともあれ、Matsue.rbにて、有益な情報がひとつ発信できましたね。

投稿: 高尾宏治 | 2009/01/17 16:49

高尾さん、コメントありがとうございます。
お世話になりました。

ちょっと調べてみたら、文字コードの変換にて「kconv」と「nkf」を使った場合は上記のスクリプトを通しても正常に表示されませんでした。
「iconv」を使った場合のみうまく表示されるようです。
これも合わせて調べてみると良い勉強になりそうな気がします。

投稿: きむらしのぶ | 2009/01/17 17:04

Ruby FPDFとは関係ないのですが,昔rubyで書いたCGIで「表記」が「赴L」に化けて,なんだろなー,と思いつつ放置していました。思いがけず原因が分かってちょっとすっきりです。
ありがとうございました。

投稿: ソウヘイ | 2009/01/17 23:20

ソウヘイさん、コメントありがとうございます。
お役に立てて嬉しく思います。
そのCGIはもう使われていないのでしょうか?もし使われていたら、上記の方法できちんと表示されるかもしれないですね。

投稿: きむらしのぶ | 2009/01/18 07:25

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/79953/43766695

この記事へのトラックバック一覧です: 再びRuby FPDF:

« 2009年 寒稽古 | トップページ | Ruby FPDFでA4横のPDFを作る »