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

RubyでDocxを分解してみた~Nokogiri::XML::SAX

投稿日:

 

 

参照

Rubyでdocxをいろいろ分析してみた

今度はsaxのアプローチでdocxのword/document.xmlを分解してみた

使い方は、Nokogiri::XML::SAX::Documentを継承したクラスを作る.
そして、parseメソッドでxmlドキュメントを指定してやれば、タグの始まりやタグの終わり、タグとタグの間を認識するので、そのイベントごとに処理を書けばいい.

例えばタグの始まりでは、start_elementが呼ばれて、タグの終わりではend_elementが呼ばれる.
タグとタグの間では、charactersが呼ばれる.

出力例はこんな感じ

 

たぶんxmlからhtmlに変えるとかいうときには使えると思う

例えば、

w:pが始まったら<p>を出力
w:pが終わったら</p>を出力
w:tblが始まったら<table>を出力

って感じでやっていけば、htmlが出力される.

 

*docxのテーブルだけど次のような構造っぽい

任意の列のテーブルを実現するには、こんなDSLで

##START_ROW @products.each do |product| ##
## product.name product.price ##
##END_ROW##

こんな処理をする必要があるのだろう

  1. 任意の列の始まり(START_ROW)を認識する
  2. その列(START_ROW)は削除する
  3. 変数でeach
  4. その次の列に代入する
  5. 終わり(END_ROW)を認識するまで代入する
  6. 繰り返し
  7. 終わりの列(END_ROW)は削除する

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

執筆者:

関連記事

Rails3.2でajaxなフォルダツリーを導入する~dynatree-rails

  jQuery UIのプラグインdynatreeをRailsで使ってみた github.com/glebtv/dynatree-rails wwwendt.de/tech/dynatree …

Refinery CMS3.0にBootstrap3.1を適用する

目次1 Gemfile2 Sprocketを設定3 application.htmlをoverrideする4 Grid Layout5 Navbar6 Panel7 Well8 できた Gemfile …

no image

Rails3.2でユーザー権限を細かく設定~Devise + cancan

      参考 cancan でモテカワ♥愛され権限管理 How To: Integrate with CanCan for roles management &nbs …

Rails3.2でフォームの順番をjQuery UI sortableで並べ替えてSubmit~acts_as_list

no image

Rails3.2でユーザー管理機能を追加2~Devise+AjaxDataTables

  前回 Rails3.2でユーザー管理機能を追加~Devise 参照 Railsでajaxなテーブルを使う~datatables   いままでAjaxでのデータ更新ができなかった …