RailsでPDFファイルを自由自在に作る方法!3つの便利Gem紹介!

プログラミング

こんにちは、とだ (cohki0305) です。

今日は Ruby と Rails を使って PDF ファイルを作る方法を 3 つ紹介します

これだけ知っていれば、どんな形式の書類でも作成できるでしょーという範囲です!

ざっと概要を紹介すると

3 つの方法

  1. HTML を PDF に変換する
  2. 既存の PDF や画像ファイルに字を埋め込み、PDF ファイルを作成する
  3. PDF ファイルを合体する

と言った感じです。

既存の PDF や画像ファイルに字を埋め込み、PDF ファイルを作成する

Thinreports とは帳票作成ツールです。

Thinreportsでらくらく帳票作成
http://ruby-rails.hatenadiary.com/entry/20140909/1410241835

特定の形式を持つ書類(たとえば、見積書や履歴書など)を作成するのに便利なライブラリーです。

以下のような chrome のアドオンを使用することで PDF の作ります。

スクリーンショット 2017-06-28 21.22.56.png

画像をインポートできるので、作成したい形式の書類を画像化して貼り付けます。

スクリーンショット 2017-06-28 21.19.01.png

あとは書類に入力したい項目を以下のように指定して、ID を指定します。

スクリーンショット 2017-06-28 21.21.47.png

あとは、上記で作成した tlf ファイルを以下のように読み込み
指定した ID に value を定義すれば、PDF のバイナリデータが作成されます。

HTML を PDF に変換する

これはよくあるやつですね。
gem wicked_pdf が有名です。

以下のようにコントローラーを設定して、テンプレート作成することで HTML を PDF に変換してダウンロードできます。

他にも以下のように指定して、 PDF のバイナリデータを作成することもできます。
こちらのほうが何かと応用が効くかと思います。

詳しくは以下を参考にしていただければと思います。
README | wicked_pdf
Railsでwicked_pdfを使って画像入りのPDFを生成する

HTML を render するためか、thinreport よりダウンロードに時間がかかる気がします。

PDF ファイルを合体する

最後は、PDF ファイルを合体する方法です。

ストレージの PDF ファイル同士でも、上で作成した PDF データであっても合体できます。
gem Combined_pdf を使います。

以下のように load メソッドを使うと、ストレージの PDF ファイルを読み込むことができます。
以下のようにすれば、pdf ファイル同士を合体させられます。

send_data を使うことでダウンロードができますよ。

parse メソッドを使えば、PDF binary データや外部のサーバーの PDF データと合体することができます。
たとえば、wicked_pdf で作成したデータと合体させることができます。

最後に

以上、3つが PDF を自由自在に扱うための Gem でした!
今回は簡単な紹介でしたが、それぞれの Gem はもっといろいろな機能があるので興味がある方は詳しく調べてみてください。

不明点などあれば、コメントください!

コメント