それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

PDF を自由に操る ruby Prawn の使い方

ruby でPDFを自由自在に扱えるようになろう。

pdf を扱えると、きっと便利なんだよ。

HTML の印刷がちょっと絶望的すぎて。。。

print.css にしても、スケーラビリティや背景画像の問題だとか、画面についてはかなり難しい

プロジェクター用に出力しようとしても全画面表示は色々とアレだったし。いくら、レスポンシブ・デザインだとか、フレックスだとかリキッドだと言っても、印刷やプロジェクションは結構面倒なことが多い。ちょっしたことを印刷するならPDFで事足りる気がする。

自動でPDF作りたいから、Prawnを使う。

Wordのテンプレート処理やExcelのテンプレート処理、CSV出力とかもう面倒だし、かと言ってWebkitを使ってPDFとしてHTMLを保存するのにも限界がある。

PDF出力するライブラリには色々とあるけど、Prawnは大変使いやすい!

Prawn 超使いやすい⇛PDF使える!

Prawnはマニュアルにほとんどの使い方が書かれている。また、マニュアルPDFで書かれていて、まさにPDFライブラリッて感じ

Prawnの書き方は凄くシンプルで、テーブル作って、表組み作ってという処理があっという間に終わるし、文字列の折り返しも結構楽。線を引いたり、色を塗ったり相当楽でした。

01 prawn のインストール

rubyPrawnを使うには、gem や bundle でインストールすればオッケー

gem install prawn
gem install prawn-table

02 白紙ページを作る

とりあえず、真っ白な白紙ページつくろう

02の実行結果

download-pdf

03 座標を引く。初心者には必要

PDFファイルに座標を弾いて、トンボを飛ばす。これで、何処になにが配置されるかがわかりやすくなる。

03 実行結果

download-pdf

04 箱を作る。

とりあえず、ボックスで領域を確保してみる。また、ボックス領域に境界線を引いておく

04の実行結果

download-pdf

05 文字を書く

文字を簡単に入れることが出来ます。Textは(0,0)で書かれるルールがあって、ボックス中に書いたら相対座標でボックスの左上から書かれます。

05の実行結果

download-pdf

06 線を引きます(LINE)

線を引きます。線を引くやり方はいくつかあります。

06の実行結果

download-pdf

07 自由自在に線を引く

水平線、垂直線を引く以外に、自由自在に線を引けます。こっちは慣れると便利そうです。

07 実行結果

download-pdf

08日本語を書く

UTF-8で文字を書いて、フォントを指定すれば、日本語で文字を書くことが出来ます。

08の実行結果

download-pdf

09 表を書く

table を使って簡単に表を書くことが出来る。

09の実行結果

download-pdf

10 表の幅・セルの色・セルを塗り分ける

セルの書き方には、いくつかって、それぞれ、用途に合わせて使えるのが便利。

とくに、行・列をまとめて指定できるのは便利だと思う。

10の実行結果

download-pdf

11 用紙の向きやサイズを変える

Prawn::Document を作成するときにオプションを入れると、用紙のサイズ、向き、幅、それに余白サイズを選ぶことが出来る。

11の実行結果(横向きスクロール出るかも)

download-pdf

用紙サイズに依っての数字座標について。。

ピクセル数?っていうのだろうか英語で言えばGeometryっていう便利な言葉で片付くみたいなんだけど。

用紙サイズに依ってどこまでのX,Y座標が許されるかというサイズ感。

このへんのサイズ感を頭に入れつつ、余白サイズを考慮すれば自由自在に紙を操れる。

用紙サイズ X Y 座標最大値
4A0 4767.87 x 6740.79
2A0 3370.39 x 4767.87
A0 2383.94 x 3370.39
A1 1683.78 x 2383.94
A2 1190.55 x 1683.78
A3 841.89 x 1190.55
A4 595.28 x 841.89
A5 419.53 x 595.28
A6 297.64 x 419.53
A7 209.76 x 297.64
A8 147.40 x 209.76
A9 104.88 x 147.40
A10 73.70 x 104.88
B0 2834.65 x 4008.19
B1 2004.09 x 2834.65
B2 1417.32 x 2004.09
B3 1000.63 x 1417.32
B4 708.66 x 1000.63
B5 498.90 x 708.66
B6 354.33 x 498.90
B7 249.45 x 354.33
B8 175.75 x 249.45
B9 124.72 x 175.75
B10 87.87 x 124.72
C0 2599.37 x 3676.54
C1 1836.85 x 2599.37
C2 1298.27 x 1836.85
C3 918.43 x 1298.27
C4 649.13 x 918.43
C5 459.21 x 649.13
C6 323.15 x 459.21
C7 229.61 x 323.15
C8 161.57 x 229.61
C9 113.39 x 161.57
C10 79.37 x 113.39
RA0 2437.80 x 3458.27
RA1 1729.13 x 2437.80
RA2 1218.90 x 1729.13
RA3 864.57 x 1218.90
RA4 609.45 x 864.57
SRA0 2551.18 x 3628.35
SRA1 1814.17 x 2551.18
SRA2 1275.59 x 1814.17
SRA3 907.09 x 1275.59
SRA4 637.80 x 907.09
EXECUTIVE 521.86 x 756.00
FOLIO 612.00 x 936.00
LEGAL 612.00 x 1008.00
LETTER 612.00 x 792.00
TABLOID 792.00 x 1224.00

Module: Prawn::Document::PageGeometry

参考資料

本家マニュアル 本家マニュアル(表組み)