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からMongoDBを使ってアプリをつくってみる~mongoid

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

ThoughtBotの『Backbone.js on Rails』の目次と見出しをななめ読み

By: John – CC BY 2.0 learn.thoughtbot.com/products/1-backbone-js-on-rails 買いました 電子書籍で137ページに$4 …

no image

Rails3.2でajaxなフォルダツリーを導入する4~dynatree-rails & Drag’n’Drop

wwwendt.de/tech/dynatree/doc/dynatree-doc.html wwwendt.de/tech/dynatree/doc/samples.html 今日はドラッグアンドド …

no image

Carrierwaveでpdfのサムネイルを作成する

Rails3でECサイト構築8 都道府県の登録~spree

  都道府県の登録を忘れていた seedを追っていくとわかるのだけど、rake db:load_file[tablename.yml, dir]で登録できる サンプルは、spree_core …