適当に哲学書とやらを読んでみる

天の孔雀的、英語の本かなり意訳読み

Rails3

[ リスト | 詳細 ]

記事検索
検索

全2ページ

[1] [2]

[ 次のページ ]

RubyでPDF出力-その4

ソースその2です。

その1はこちら。  

053:
  ##############################
054:
  #合計金額
055:
  ##############################
056:
  move_down 10
057:
  font_size = 12
058:
  text "下記の通りご請求申し上げますよろしくお願い致します"
059:
  move_down 2
060:
  #表形式のデータは配列で指定する
061:
  table(
062:
    [
063:
      ["ご請求金額", '\1,200-']
064:
    ],
065:
  #各カラムの幅をハッシュで指定する
066:
    :column_width => {0 => bounds.width * 0.4, 1 => bounds.width * 0.6},
067:
  #各カラムの横寄せをハッシュで指定する
068:
    :align => {0 => :left, 1 => :right},
069:
  #指定しないと幅がおかしくなる
070:
    :width => bounds.width                      
071:
  )
072:
 
073:
  ##############################
074:
  #内訳
075:
  ##############################
076:
  move_down 10
077:
  text "内訳"
078:
  table(
079:
    [
080:
      ["マタタビ", "3", '\100', '\300'],
081:
      ["猫砂", "1", '\900', '\900']
082:
    ],
083:
  #すべての行と列に線を引く
084:
    :border_style => :grid,
085:
  #一括してフォントサイズ指定
086:
    :font_size => 10,                           
087:
  #ヘッダーを指定
088:
    :headers => ["内容", "数量", "単価", "金額"],
089:
  #各カラムの幅を指定
090:
    :column_width => {
091:
      0 => bounds.width * 0.6,
092:
      1 => bounds.width * 0.1,
093:
      2 => bounds.width * 0.15,
094:
      3 => bounds.width * 0.15
095:
    },
096:
  #ヘッダーの横寄せをハッシュで指定
097:
    :align_headers => {                         
098:
      0 => :center,
099:
      1 => :center,
100:
      2 => :center,
101:
      3 => :center
102:
    },
103:
  #コンテンツの横寄せをハッシュで指定
104:
    :align => {                                 
105:
      0 => :left,
106:
      1 => :right,
107:
      2 => :right,
108:
      3 => :right
109:
    },
110:
    :width => bounds.width
111:
  )
112:
end

RubyでPDF出力-その3

ソースその1です。

その2はこちら。
 
001:
# -*- coding:utf-8 -*-
002:
require 'rubygems'
003:
require 'prawn'
004:
require 'prawn/layout'
005:
006:
FONT_FILE = 'ipam.ttf'
007:
008:
Prawn::Document.generate("03_ruby_pdf_test.pdf", :page_size => 'A4') do
009:
  font FONT_FILE
010:
  text_options.update(:wrap => :character)
011:
 
012:
  ##############################
013:
  #日付
014:
  ##############################
015: 
  #本日の日付
016:
  time = Time.now.strftime("%Y%m%d")
017: 
  #フォントサイズ指定
018:
  font_size = 12
019: 
  #右寄せでテキスト描画
020:
  text time, :align => :right
021:
 
022:
  ##############################
023:
  #タイトル
024:
  ##############################
025:
  title = "請求書"
026:
  font_size = 20
027:
  #センタリングしてテキスト描画
028:
  text title, :align => :center
029:
 
030:
  ##############################
031:
  #宛先
032:
  ##############################
033:
  #描画位置を30pt下げる
034:
  move_down 30
035:
  font_size = 13
036:
  #テキストを直接描画
037:
  text "mike_neck様 御中"
038:
  move_down 2
039:
  #左端から中央より30pt左まで水平線を描く
040:
  stroke_horizontal_line bounds.left, bounds.width / 2 - 30
041:
 
042:
  ##############################
043:
  #差出人
044:
  ##############################
045:
  move_down 10
046:
  #text_sizetextメソッド中で指定できる
047:
  text "株式会社****************", :align => :right, :size => 16
048:
  text "100-0001", :align=> :right, :size => 12
049:
  text "東京都千代田区千代田1番1号", :align => :right, :size => 12
050:
  text "************************", :align => :right, :size => 12
051:
  text "TEL 000-0000-0000 / FAX 000-0000-0000", :align => :right, :size => 10
052:
 


RubyでPDF出力-その2

前の続き。

さて、いきなり言い訳ですが、
天の孔雀、Ruby結構初心者(10月中旬に始めた、かつ11月は何もやっていない、12月に再開)のうえ、
その他のコミュニティに積極的に参加中ゆえ、
なんだかもう、レシピに書いてあることしかできませんでした。残念。ゲソゲソ〜orz

とりあえず、IPAのフォントをインストールして、
サンプル通りのソースを書いておきました。

と、いいつつ、サンプルとは異なるところがあります。

tableを表示する際の横幅に関する引数です。
 

サンプル
(prawn0.5.0.1)

最新
(prawn0.8)

各カラムの横幅
:width => Hash
:column_width => Hash
表全体の幅
-
:width => (Float|Fixnum)

つまり、サンプルにあるような、
:width => {0 => 100, 1 => 120}
のような形式で指定すると、ランタイムエラーが発生します。
ここだけは注意しましょう。

出力した結果はこんな感じです。

イメージ 1


いや、Rubyは触れば触るほど面白くなりますね。

ほんとうはJSON形式のデータをPDF出力するようなライブラリをつくろうとしたのですが、
それにはあと1週間くらい必要ですね。
年内はかなり忙しいので、ちょっと無理そう…

RubyでPDF出力

なるものに参加しました。

本の紹介


ここでは、このレシピにある135「PDFを作成したい」について紹介します。
帳票ソリューションというのは、
開発者にはそのニーズというのが分かりにくいです。
しかし、国家への申請とか、SOX法対応などで、
各種の取引や記録などを容易には修正のできないけど容易にデータを再生できるフォーマットで
保存するというニーズがあることは確かです。

そのフォーマットの代表格がPDFです。

で、RubyでPDFを出力しようじゃなイカ?
というわけでございます。

天の孔雀さん(a.k.a mike_neck)の実行環境
その1

OS
Windows XP SP3
Ruby
1.8.7(Active Script Ruby)

その2

OS
ecoLinux
Ruby
1.9.2(自前でコンパイル)



RubyでPDFを出力する場合、
Prawnというgemを利用します。

これのインストール方法は次のような感じです。

実行環境その1
C:\Ruby\lib>gem install -r prawn
 
  Welcome to Prawn, the best pure-Ruby PDF solution ever!
  This is version 0.8
 
  For those coming from Prawn 0.7 or earlier, note that this release has
  some API breaking changes as well as many new features.  *** You'll want
  to know about these changes, as we will no longer be supporting
  Prawn 0.7 or any earlier version of Prawn***
Installing RDoc documentation for prawn-0.8.4...
 
C:\Ruby\lib>

実行環境その2
mike@mikeVmEcoLinux01:/usr/local/lib/ruby$ sudo gem install -r prawn
ERROR:  Loading command: list (LoadError)
    no such file to load -- zlib
ERROR:  While executing gem ... (NameError)
    uninitialized constant Gem::Commands::ListCommand
mike@mikeVmEcoLinux01:/usr/local/lib/ruby$ whereis zlib
zlib:
mike@mikeVmEcoLinux01:/usr/local/lib/ruby$

…Linuxで自前ビルドするとzlibがなくてgemがまともにきどうしないらしい。
そのあたりはこのへんを参照して修正して、いざインストール。
mike@mikeVmEcoLinux01:/usr/local/lib/ruby$ sudo gem install -r prawn
 
  Welcome to Prawn, the best pure-Ruby PDF solution ever!
  This is version 0.8
  
  For those coming from Prawn 0.7 or earlier, note that this release has
  some API breaking changes as well as many new features.  *** You'll want
  to know about these changes, as we will no longer be supporting
  Prawn 0.7 or any earlier version of Prawn***
Successfully installed prawn-core-0.8.4
Successfully installed prawn-layout-0.8.4
Successfully installed prawn-security-0.8.4
Successfully installed prawn-0.8.4
4 gems installed
Installing ri documentation for prawn-core-0.8.4...
Installing ri documentation for prawn-layout-0.8.4...
Installing ri documentation for prawn-security-0.8.4...
Installing ri documentation for prawn-0.8.4...
Installing RDoc documentation for prawn-core-0.8.4...
Installing RDoc documentation for prawn-layout-0.8.4...
Installing RDoc documentation for prawn-security-0.8.4...
Installing RDoc documentation for prawn-0.8.4...
 
mike@mikeVmEcoLinux01:/usr/local/lib/ruby$

インストール完了。


今更ながら、Apacheの設定を行う。

…環境作るのはそれほど得意ではないので、Apacheの設定とかよくわからんのですよ。
アプリを作るのは業務ではやっているんだけど、
恥ずかしながら、サーバー作るのは業務でもやったことないです。

環境:Windows7 Professional(32bit)

というわけで、
上記のサイトからダウンロードする。

(2)おもむろに、ダウンロードしたやつをダブルクリック。

(3)インストール先を設定する。
Windows7ではProgram Filesにあると、いちいち管理者権限が云々かんぬんと言われて、アプリケーションを起動できないことも多い(※)ので、Program Filesには入れないで、Cドライブ直下にApacheフォルダーを作って、そこにインストールする。

(※)TomcatをProgram Filesにインストールしたら、通常起動できなくなります。
Tomcat.exeを右クリックして「管理者として実行」を選択しないと起動できません。
また、EclipseのTomcatプラグインでTomcatを起動する場合、Eclipseを「管理者として起動」していないと、Tomcatの操作はできません。
つーわけで、非常に面倒くさいのです。
Apacheも同じになるのはいやなので、Cドライブ直下にApacheフォルダーを作成する方式をとっています。

(4)apacheユーザーを作成する。
コンパネ→管理ツールから、「コンピューターの管理」をダブルクリック。
「コンピューターの管理」の左パネルの「ローカルユーザーとグループ」→「ユーザー」を選択。
右側のパネルで右クリックして、「apache」ユーザーを作成する。
apacheユーザーはUsersグループに所属してもらう。

これはUNIXとかLinuxをやっている人には、コンピューターを守るための常套手段らしい。
Apacheがのっとられても、コンピューター上のほかのリソースの改変を防ぐためとのこと。

(5)Apacheサービスを停止する。
コンパネ→管理ツールから、「サービス」をダブルクリック。
サービスの管理画面にて、「Apache」を選択して、サービスの停止をクリックする。

(6)apacheに権限付与。
C:\Apacheフォルダーを右クリックして、「プロパティ」を選択する。
「セキュリティ」タブを選択して、「グループ名またはユーザー名」の下にある「編集」ボタンをクリックする。
「アクセス許可」画面が表示され、「追加」ボタンをクリックする。
「ユーザーまたはグループの選択」画面が表示される。その画面の「オブジェクトの選択」に「apache」と入力して、「名前の確認」ボタンをクリックすると、先ほど作成したapacheユーザーの正式名称が補完される。
そんで、「OK」ボタンをクリック。
「アクセス許可」画面にてapacheを選択して、フルコントロールを選択して、「OK」ボタンをクリックする。
「プロパティ」画面にて「OK」ボタンをクリックする。

(7)サービス起動アカウントの設定。
コンパネ→管理ツールから、「サービス」をダブルクリック。
サービスの管理画面にて、「Apache」を選択して、右クリック→「プロパティ」を選択する。
「ログオン」タグを選択して、「ログオン」に「アカウント」を選択する。
「アカウント」の横にある「参照」ボタンをクリックして、先ほどと同様にapacheユーザーを選択する。
パスワードを入力して、「OK」ボタンをクリックする。
成功すると、なんかいい感じのダイアログが表示される。

(8)テスト
サービスの管理画面にて「Apache」を選択して、「サービスの開始」をクリックする。
これでサービスが正常に起動できればOKです。




全2ページ

[1] [2]

[ 次のページ ]


よしもとブログランキング

もっと見る

プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事