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 のインストール
ruby の Prawnを使うには、gem や bundle でインストールすればオッケー
gem install prawn gem install prawn-table
02 白紙ページを作る
とりあえず、真っ白な白紙ページつくろう
02の実行結果
03 座標を引く。初心者には必要
PDFファイルに座標を弾いて、トンボを飛ばす。これで、何処になにが配置されるかがわかりやすくなる。
03 実行結果
04 箱を作る。
とりあえず、ボックスで領域を確保してみる。また、ボックス領域に境界線を引いておく
04の実行結果
05 文字を書く
文字を簡単に入れることが出来ます。Textは(0,0)で書かれるルールがあって、ボックス中に書いたら相対座標でボックスの左上から書かれます。
05の実行結果
06 線を引きます(LINE)
線を引きます。線を引くやり方はいくつかあります。
06の実行結果
07 自由自在に線を引く
水平線、垂直線を引く以外に、自由自在に線を引けます。こっちは慣れると便利そうです。
07 実行結果
08日本語を書く
UTF-8で文字を書いて、フォントを指定すれば、日本語で文字を書くことが出来ます。
08の実行結果
09 表を書く
table を使って簡単に表を書くことが出来る。
09の実行結果
10 表の幅・セルの色・セルを塗り分ける
セルの書き方には、いくつかって、それぞれ、用途に合わせて使えるのが便利。
とくに、行・列をまとめて指定できるのは便利だと思う。
10の実行結果
11 用紙の向きやサイズを変える
Prawn::Document を作成するときにオプションを入れると、用紙のサイズ、向き、幅、それに余白サイズを選ぶことが出来る。
11の実行結果(横向きスクロール出るかも)
用紙サイズに依っての数字座標について。。
ピクセル数?っていうのだろうか英語で言えば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