« prawn-svg + Inkscape = フォントを指定する | トップページ | WMVファイルをiPhoneで...それはHandBrakeの仕事でしょう »

2010/05/27

prawn-svg + Inkscape = サイズ調整

InkscapeでA4サイズの帳票を作り、prawnで作成したA4サイズのPDFに読み込んでみると、確かに読み込めるのですが、どうもしっくりこない。


しっくりこないと思ったら、Inkscapeとprawn-svgでは少し座標系が異なっているのが原因のようでした。

prawn-svgでは幅の指定ができ、その指定によってサイズの調整をするようなので、そこにA4サイズの横幅210[mm]を指定します。

次に用紙の左下が座標[0, 0]になるので、描画位置を左上に指定します。
これには高さを取得する必要があり、A4サイズの場合では297[mm]になるようです。

以上のことから、SVGを描画するコードは下記となります。

f = open("sample.svg")
svg_data = f.read
f.close

@pdf = Prawn::Document.new()
@pdf.svg(svg_data, :at => [0, 297.mm], :width => 210.mm)

ところが、これでもまだきちんと描画されません。297[mm]は、用紙の一番上になるはずですが、少し上に描画されてしまいます。

調べてみると、どうやらPrawnでは用紙に余白が標準で設定されており、これが位置のずれに関係しているようでした。

なので、これを0mmに初期化してあげます。
Prawnの初期化で用紙の余白を0[mm]に設定することとし、以下のコードに書き換えます。

@pdf = Prawn::Document.new(
  :page_size => "A4",
  :left_margin => 0.mm,
  :top_margin => 0.mm,
  :bottom_margin => 0.mm
)

これで一件落着。
Inkscapeで描画した通りにPDFが生成されるようになりました。

良かった、良かった。

|

« prawn-svg + Inkscape = フォントを指定する | トップページ | WMVファイルをiPhoneで...それはHandBrakeの仕事でしょう »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/79953/48459712

この記事へのトラックバック一覧です: prawn-svg + Inkscape = サイズ調整:

« prawn-svg + Inkscape = フォントを指定する | トップページ | WMVファイルをiPhoneで...それはHandBrakeの仕事でしょう »