« Ruby + PrawnとInkscapeで帳票ができそうです | トップページ | prawn-svg + Inkscape = 円が描画されない »

2010/05/08

prawn-svg + Inkscape = エラーで文字が表示出来ない

先日、Inkscapeで帳票を作ってprawn-svgでPDF化するという記事を投稿しましたが、Inkscapeで作成したSVGに文字列があるとエラーでPDFが生成できませんでしたので、ちょっと調べてみました。

調査の結果、文字列の読み込みに失敗しているようだったので、少しprawn-svgのソースコードを見てみると、prawn-svgではtextというエレメントの文字列を読み込んでいたのですが、InkscapeのSVGではtextの子エレメントのtspanというエレメントに文字列が入っているのでこれを読み込むように変更してみます。
変更内容は、以下の赤字の部分を追加しました。

##### prawn-svg-0.9.1.6/lib/prawn/svg/parser.rb 140行目 #####

# This is not a prawn option but we can't work out how to render it here -
# it's handled by Svg#rewrite_call_arguments
if anchor = style_attrs['text-anchor']
  opts[:text_anchor] = anchor
end

element.elements.each do |child|
  if child.name == 'tspan' then
    element.text = child.text
  end
end

calls << ['text_box', [element.text, opts], []]

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

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

ただ、おかしなところで改行されているので、これはまた後日解決したら記事にしてみます。

|

« Ruby + PrawnとInkscapeで帳票ができそうです | トップページ | prawn-svg + Inkscape = 円が描画されない »

コメント

コメントを書く



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




トラックバック

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

この記事へのトラックバック一覧です: prawn-svg + Inkscape = エラーで文字が表示出来ない:

« Ruby + PrawnとInkscapeで帳票ができそうです | トップページ | prawn-svg + Inkscape = 円が描画されない »