Railsで使えるGem RubyOnRailsで帳票印刷

Rails3.2でOpenDocumentText(.odt)を作成~serenity

投稿日:

 

これも途中経過デス

 

odtはOpenOffice.orgのwriterなんかの保存形式

serenityはerbライクなodtテンプレートから変数を利用して文書を作成してくれる

github.com/kremso/serenity

Gemfile

gem の名前がここだけ-odtがつくので注意

それで、例えば、付属のshowcase.odtをapp/templateというディレクトリを作成してコピーしておく

手っ取り早くコントローラーかなにかでサンプルのとおりに試してみる

で、viewにgenerate_showcaseへのリンクをつくってroutes.rbを設定すれば

app/template/にhello_output.odtができてる!

なかみもうまくできてる

 

うまくいったのはここまで

Libre Office 3.6をダウンロードしてテンプレートを作成してみた

またエラーorz

今回はうまくいったテンプレートと自分で作ったテンプレートを比較してみた

↓使ったソフト

www.forest.impress.co.jp/docs/review/20120123_506326.html

フォント名とかが日本語になってる

試しに元のテンプレートに日本語を足してみる

すると、無事(!?)エラーがでた

gemのソースをよく読んでマジックコメントを足していかないとだめぽい

fixtureにあるテンプレートをみるとギリシャ語とかは通ってるっぽいのになぁ

*specファイルを参考に日本語テンプレートを用意してやってみました

とおりやがった

試しにさっき失敗したファイルも

通ってしまうorz

rails上で試した時だけencodingのエラーが出るんだよなぁ

これはdocxのときと同じ うーん

エラーの場所はdocxと同じでやはりfile をwriteしているところ…(template.rbの22行目)

enviroment.rbにEncodingをかいたりしてみたけどダメだ.

*思い余ってStackOverflowに質問してみました.ニッチすぎるかな…

stackoverflow.com/questions/13080178/encodingundefinedconversionerror-xe9-from-ascii-8bit-to-utf-8-when-using

*思いついてsinatraで試してみたがダメ

ただし、railsでもserenityでも変数の値が日本語の場合は通ることがわかった.

テンプレート内に日本語がある場合、フォントに日本語名がついてる場合(MS ゴシックとか)はエラー.

いっそのこと全部変数にしてやろうか…

 

*変数を日本語にしてやってみました

テンプレートはこんな感じ

で、こんなかんじでメソッドを書いてみると

こんな感じのができる.おおっ!それっぽい

 

*こんなイシューをみつけましたが(まだ反映されてないので自分でソースを修正)、うまくいきませんでした.日本語入りのテンプレートは動きません.

-Railsで使えるGem, RubyOnRailsで帳票印刷
-,

執筆者:

関連記事

no image

Rails3.2からBackbone.jsとD3.jsを使う一例

目次1 Backbone.jsからD3.jsを使う2 RailsのネストしたURLでBackboneを使う Backbone.jsからD3.jsを使う d3.jsで力指向グラフを使って遊ぶ2のクラス構 …

backbone-relationalをJasmineでテストしてみた

Rails3.2からMongoDBを使ってアプリをつくってみる~mongoid

MongoDBはとても素直で扱いやすいということがわかってきたので、以前作成した郵便番号・住所の相互検索アプリをまたつくってみた 参照 MongoDBのチュートリアルをこなす KEN_ALL.CSVを …

no image

Rails3.2でテーブルの並び替えをリファクタリング~ヘルパー

環境 Rails3.2.8でテーブル並び替えのテストを作る~cucumberと正規表現 テストができたのでHelper化 目次1 現状2 helper3 index.html.erb 現状 共通部分が …

ActionCableのサンプルをみてみた

By: Samantha Brough – CC BY 2.0 目次1 ActionCableとは2 rails4での利用3 redisサーバーの準備4 cableサーバーの準備5 チャッ …