2013年3月27日水曜日

さくらVPS CentOS6.2にraccをインストール ruby-2.0.0-p0

  1. raccのインストール
  2. Racc でおてがる構文解析を見て、raccを使ってみたくなった。

    ヘルプを表示する。

  3. 【補足】「--no-ri --no-rdoc」オプションをつけなかった場合。
  4. でインストールした場合に、

    っと、以下の警告が出ていた。

    ひとまずgemのインストール場所を探す。

    16進数の制御コードでgrepしてみる。

    16進数の制御コードでgrepしても見つからない。。


    こういうときは、「--no-ri --no-rdocオプションをつけて、ドキュメントをインストールしない対処でいいんだろうか。
    「/usr/local/lib/ruby/gems/2.0.0/gems/racc-1.4.9/lib/racc」ディレクトリ配下に格納されているファイルで「cparse.so」だけバイナリファイルで、「*.rb」じゃないのが原因な気もする。

2013年3月20日水曜日

さくらVPS CentOS6.2でインターネット公報SGMLをOpenjadeを使ってHTML変換

  1. インターネット意匠公報のダウンロード
  2. 電子署名検証(TARP7→TAR形式)
  3. インターネット利用による公報発行サイトにも書いておいたが、Windowsのクライアント上で、あらかじめ、


    電子署名検証方法について(「特許庁公報電子署名検証プログラム」のダウンロード)


    に従って、プログラム本体のダウンロードと電子署名検証を一度は試しておき、取得した以下のファイルをインターネット意匠公報(TARP7形式)と同一ディレクトリに格納する。


    ・電子署名検証して取得したルート証明書(例:JPT_2013006_01-01_root.der)
    ・p7verify.jar


    TARを解凍する。


  4. OpenJadeのインストール


  5. CATALOGのファイルの用意
  6. 「./JPD_2013006/SOFTWARE/CATALOG_BASE.FIL」(Shift-JIS)を元に、ファイル名を小文字にしておく。


    Linux(CentOS6.2)でデフォルトがutf-8エンコーディングのため、以下の加工をしておく。

    ・「*1*:\」、「*2*」の文言を削除しておく。
    ・ファイル名を小文字にしておく。
    でvimの文字コードを「Shift-JIS」に変更して編集できる。

  7. SGMLDECLファイルの用意
  8. 「./JPD_2011048/GAZETTE.SGM」を元に、ファイル名を小文字にしておく。



  9. DTDファイルの用意
  10. 「./JPD_2011048/DES.DTD」を元に、ファイル名を小文字にしておく。



  11. ENTITYファイルの用意
  12. 「./JPD_2011048/SOFTWARE/*.ENT」を元に、ファイル名を小文字にしておく。



  13. 公報(SGML 文書)を閲覧するための編集形式について
  14. 「公報仕様 意匠、商標、公開・国際商標、審決 第8版について」-「第3編 公報文書の詳細」-「1.意匠公報」-「1.5. 公報編集形式」に以下の記載がある。

    SGML文書より、表示例のごとく表示するための編集形式を以降に示す。
    公報(SGML 文書)を閲覧するための閲覧ソフトウェアは以降の編集形式にしたがって、公報データを表示すること。


    公報ビューアでの編集形式が記載されている「./JPD_2011048/SOFTWARE/DES.CSV」(euc-jp)が参考になる。

  15. DSSSLスタイルシートの用意
  16. DSSSLスタイルシートを「euc-jp」で作成する。

    でvimの文字コードを「euc-jp」に変更して編集できる。



  17. SGMLの準備
  18. 何かいいサンプルが無いかとGoogleで探したら、意匠登録第1429489号が任天堂の「Wii U」の意匠らしいので、それをサンプルに使ってみる。


  19. マルチTIFFの解凍
  20. ImageMagickのconvertコマンドを使用する。
    詳細はさくらVPS CentOS6.2でインターネット公報SGMLのマルチTIFFを分割で解説済みのため、割愛する。


    convertコマンドで分割する。
    IMGファイル(マルチTIFF形式)に格納されている順序が以下のため、convertコマンドで抽出順序順に連番を付与すると、残念ながらファイル名がずれてしまう。

    ということで、RMagickを使ったRubyスクリプトを作成した。

    IMAGEタグのORIGINAL-FILE-NAMEに設定されているファイル名で書き込みをしているため、マルチTIFFに格納されているイメージがJPEG/TIFFかどうかを判定する必要もない。

    スクリプトを実行する。



  21. HTMLへ変換
  22. openjadeでHTML変換し、iconvで文字コードを「utf-8」に変換する。


  23. HTMLをブラウザで表示
  24. 「Internet Explorer 9(以下IE9)」から、デフォルトでTIFF表示できる。TIFFプラグインを考えたくないなら、IE9でOK。








  25. 公報ビューアで元SGML表示
  26. 公報ビューアで表示した場合と比較しても、特に問題ないように見えるので、ひとまずは満足した。







  27. SGML/DSSSL/JADEの参考資料
  28. SGML/DSSSL/JADEについては、以下を参考にした。

    「SGML」

    The SGML/XML Page

    「DSSSL」

    DSSSL入門
    DSSSLへの手引き
    The DSSSL Cookbook

    「2013/04/09追記」
    文書スタイル意味指定言語 (DSSSL)

    「JADE」

    フォーマッターJADE
    OpenJade

    DSSSLは、Lisp Schemeを手本にしているので、細かい表現はSchemeが参考になる。

    「Scheme」

    もうひとつの Scheme 入門
    逆引きScheme
    scheme Programming
    Gauche ユーザリファレンス
    「2013/04/09追記」
    Scheme演習


2013年3月7日木曜日

RubyでOffice2007/2010のExcel/Word/PowerPoint/VisioファイルをPDF変換する際の注意点

  1. PDF/XPSドキュメントの作成について
  2. Office2010から標準でPDF/XPS ドキュメントを作成する機能が組み込まれている。
    ※Office2007では、2007 Microsoft Office プログラム用 Microsoft PDF/XPS 保存アドインをインストール必要がある。


    基本的には、指定した形式のファイルにエクスポート(ExportAsFixedFormatメソッド)を使用すればいい。


  3. ExportAsFixedFormatメソッドのパラメータについて
  4. Document.ExportAsFixedFormat Method (Word)
    Workbook.ExportAsFixedFormat メソッド (Excel)
    Presentation.ExportAsFixedFormat Method (PowerPoint)
    Document.ExportAsFixedFormat Method (Visio)


    出力先のパスを指定するキーワード名レベルで、各Officeドキュメントで指定方法が変わるので注意が必要。微妙な相違で落ちるため、コピペ対応をしようとして少しはまった。。
    例:Word…「OutputFileName」、Excel…「Filename」、PowerPoint…「Path」、Visio…「OutputFileName」

    個人的には、必須/任意オプションをオンラインドキュメントで確認しつつ、vbaの「マクロの記録」や「オブジェクトブラウザー」でコード値を調査し、試行錯誤していくのがやりやすかった。
    Office2010だと、開発タブが無いため、Office 2010 のリボンに「開発」を表示させたいを参考にして、「マクロ」や「Visual Basic」エディタから「オブジェクトブラウザー」を使用する。


  5. rubyスクリプトでPDFに変換する方法について
  6. 以下の記事が参考になった。
    Word,Excel,PowerPointをPDFに一括変換
    WordファイルやExcelファイルを一括でPDFに変換するRubyスクリプト


    プリンタドライバへの印刷と違い、ファイル名を指定して保存とほぼ同等な処理のため、PDF変換速度が速いのにびびった。
    なお、PowerPointだと、「ExportAsFixedFormat」が落ちるため、「SaveAs」メソッドで回避する必要がある。これではまった。。