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で帳票印刷
-,

執筆者:

関連記事

Rails5でコントローラーの記述を省略~inherited_resources

By: Simon Matzinger – CC BY 2.0 目次1 inherited_resources2 Gemfile3 使い方 inherited_resources inhe …

no image

Rubyでffmpegのラッパーを使う~streamio-ffmpeg

  github.com/streamio/streamio-ffmpeg rubyでffmpegが扱える高機能ラッパー 導入 [crayon-5953b7b51f1c8812821840/ …

no image

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

  アプリにユーザー機能を追加するためにdeviseというgemを使った deviseを使えば高機能なユーザー管理機能を簡単につけることができる 参考 Rails3.2+Mongoidでログ …

Rails3.2でコードのお作法を指摘してもらう~Rails Best Practices

コードのお作法を自動でチェックしてくれるrails_best_practiceを導入した

あとは、Railsのルートで[crayon- …

no image

Rails3.2でBackbone.jsとPrivate_pubでToDoアプリをリアルタイム化(できた!)

参考 Rails3.2でリアルタイムメッセージング~Private_pub、Faye Rails3.2とBackbone.jsでToDoアプリを作ってみた~backbone-on-rails &nbs …