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.8でテーブル並び替えのテストを作る~cucumberと正規表現

前提 Railsのテーブル並び替えを実装する Rails3.2.8で自動テスト環境を整える〜cucumber+spork+guard 目次1 作戦(ストラテジー)2 have_contentの正規表現 …

Rails3.2のアプリにユーザー機能を追加する~Devise

By: Ethan Lofton – CC BY 2.0 目次1 はじめに2 インストール3 次にやること4 メッセージを日本語化する5 デバイスモデルにカラムを追加6 サインアップできな …

Railsでjavascriptやcoffeescriptをつかうとき便利かもしれないGem

By: Stan Dalone & Miran Rijavec – CC BY 2.0 目次1 oj2 gon3 js-routes4 rails-dev-tweaks oj gi …

Rails3.2でJasmineをつかってBackbone.jsのModelをテストしてみる

  By: Glory Cycles   Developing Backbone.js Applications addyosmani.github.com/backbone-fu

Railsでhtmlファイルやリンク先のスクリーンショットを撮影~IMGKit&wkhtmltoimage

  github.com/csquared/IMGKit 目次1 環境2 wkhtmltoimageのインストール3 imgkitのインストール4 試す5 日本語フォント 環境 ubuntu …