2009年11月14日土曜日

Gemsスポットライト: Prown

今回は、About.com:rubyより、「Spotlight on Gems: Prown」という記事を取り上げたいと思います。

Prownは、Rubyで記述されたPDF作成のライブラリです。割と簡単にPDF文書が作成できるようです。日本語の取り扱いについてなどどうかがとても興味あります。




Gemsスポットライト: Prown
About.com:ruby

PrawnはPDFファイルを生成するためのRubyのみで記述されたライブラリです。Rubyコードから、色々な内容や大きさのPDFファイルを作成することができます。レポートを生成するだけでなく、文書を生成したり、プログラムの出力をポータブルな形式で提供したりするのに適しています。PrawnはRubyのみで記述されており、コンパイルしたり、制限のある他のライブラリに依存しません。

Prawnのインストール

PrawnはRubyのみで構成されており、少しの依存性があります。Prawnは実際にはいくつかのgemで構成されていますが、prawnのgemをインストールすることで全てインストールされます。

$ gem install prawn

Prawnの使い方

Prawnのインターフェースは簡単です。はじめにPrawn::Document.generateを呼び出して、ファイル名とブロックを渡します。それから、PDF文書を作成する際、テキストを配置するtextや画像を描画するimageといったメソッドを使います。ブロック内の実行が終了する時にPDF文書が描画されてディスクに書き出されます。

以下の例は「Hello world」的なプログラムです。それは、"Hello world."というテキストだけを含むPDF文書を生成します。

#!/usr/bin/env ruby
require 'rubygems'
require 'prawn'

Prawn::Document.generate("prawn2.pdf") do
  text "Hello world!"
end

このインターフェースは簡潔で強力ですが、全ての要求を満たすものでないでしょう。1つの欠点として、全てのPDFの描画が、Prawn::Document.generateに提供するブロック内で実行されなければならないことです。generateメソッドはただのユーザー自身が実行することのでできるラッパーメソッドです。以下のコードは同じ動作をします。最初の例にはないrenderメソッドへの1つ多くの呼び出しがあることに留意して下さい。これは今まではgenerateメソッドが呼び出していました。このrenderメソッドを呼び出さないと何もディスクに書き出されません。

#!/usr/bin/env ruby
require 'rubygems'
require 'prawn'

pdf = Prawn::Document.new
pdf.text "Hello world!"
pdf.render_file "prawn1.pdf"

PDF生成オブジェクトが変数に格納されているため、PDFコマンドを分割することができます。他の利点はいつPDFが描画されるかを制御することができます。PDF文書を描画するのはとても負荷が高いことがあるので、(例えば、サーバーへの負荷が低い時など)もっと都合がいい時まで待つことできます。

タイプセットやレイアウトについて制御したい場合、いろいろな長さの単位があることに気づくことでしょう。emやen、センチメーター、ポイントといった長さの単位があります。Prownにはこれらを取り扱うライブラリがあります。慣れている単位で制御を簡単に行うことができます。例えば、3.cmや30.mmのように表すことができます。背後では、長さの全ての単位がPDFのネイティブの長さの単位、ポイントに変換されます。これはNumericクラスを拡張した機能です。別のrequireが必要なため、いつも便利というわけではありません。

#!/usr/bin/env ruby
require 'rubygems'
require 'prawn'
require 'prawn/measurement_extensions'

puts "10 mm is #{10.mm} points"
puts "3 cm is #{3.cm} points"
puts "1 inch is #{1.in} points"

(終わり)


訳文について、間違いや読みにくい点があればコメントで指摘して頂ければと思います。

0 件のコメント: