« prawn-svg + Inkscape = エラーで文字が表示出来ない | トップページ | prawn-svg + Inkscape = 帳票作成 »

2010/05/09

prawn-svg + Inkscape = 円が描画されない

昨日に引き続き、Inkscapeで帳票を作る方法を模索中です。

今度は、タイトルにもあるとおり円が描画されない事について調査してみました。

prawn-svgでは、'circle'または'ellipse'というエレメントに対し、円を描画する処理を施すようになっています。しかし、InkscapeのSVGでは'path'のエレメントに'sodipodi:type'という属性を使って円を描画しているようでした。

'sodipodi'とは、Inkscapeの派生元のソフトウェアとのことです(Wikipedia参照)。

ということで、'path'というエレメントの処理中に円を処理するプログラムを割り込ませてみます。

##### prawn-svg-0.9.1.6/lib/prawn/svg/parser.rb 190行目付近 #####

when 'path'

  if attrs['sodipodi:type'] == "arc" then
    calls << ["ellipse_at",
      [[x(attrs['sodipodi:cx'] || "0"), y(attrs['sodipodi:cy'] || "0")],
      distance(attrs['sodipodi:rx']), distance(attrs['sodipodi:ry'])],
      []]
  else

  ## 略(元のコードそのまま) ##

  end

##### ここまで #####

ということで、変更後に再度実行してみるとエラーなくPDFが生成されました。
良かった、良かった。

ただ、楕円になるとおかしな形になっているので、これはまた後日解決したら記事にしてみます。

|

« prawn-svg + Inkscape = エラーで文字が表示出来ない | トップページ | prawn-svg + Inkscape = 帳票作成 »

コメント

コメントを書く



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




トラックバック

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

この記事へのトラックバック一覧です: prawn-svg + Inkscape = 円が描画されない:

« prawn-svg + Inkscape = エラーで文字が表示出来ない | トップページ | prawn-svg + Inkscape = 帳票作成 »