Home > Image_Graph | PEAR | SVG > PEAR::Image_GraphライブラリでSVG

PEAR::Image_GraphライブラリでSVG

 PEAR::Image_GraphライブラリでSVG形式のグラフを出力できないものかとライブラリのソースを調べていたら、デフォルトで対応していることがわかりました。

 それで、PEARのImage_Graphのページを確認してみたら、案の定。  ちゃんとリファレンスを読むべし!ってことですね。  

以下、覚え書き。

PEAR::Image_Graphライブラリが対応しているフォーマットは

  • GD (PNG, JPEG, GIF, WBMP)
  • PDF (using PDFLib)
  • Scalable Vector Graphics (SVG)

(※PDFLibはたしか有料。)

ちょっとテスト

 ためしに、PHP:PEAR::Image_Graph 習作のソースで、SVGを出力させてみる。  factoryメソッドで、以下のように設定。

修正前

PNG(デフォルト)でグラフを出力

$Graph =& Image_Graph::factory('graph', array($w, $h));

修正後

SVGでグラフを出力

$Graph =& Image_Graph::factory('graph', 
     array(array('width'=>$w, 'height'=>$h, 'canvas' => 'svg'))
);

結果

実際に出力されたSVGファイルはこちら(.svg)。

SVGファイルの確認には、Adobe SVG Viewer などが必要。(最近のFirefoxやOperaにはデフォルトでSVGに対応しているようです)

吐き出されたSVGファイルのソースコードはこちら(.txt)。

日本語を出力させるには?

いろいろやってみたけれど、デフォルトのままでは無理でした。

XMLを出力させてるのはPEARライブラリの

Image/Canvas/SVG.php

そこのXMLのencodingが

xml version="1.0" encoding="iso-8859-1"

になっていたので、utf-8に変えてみたりだとかしてみたのだけれど。んー。やっぱりこれだけじゃダメなのね。

 そもそもSVGってどうやってテキスト(フォント)を制御してるんだろう?勉強しなくちゃ、だ。

Comments:2

通りすがり 06-12-08 (金) 11:38

いつもは、見るだけですが今回この情報が大変参考になりましたので、日本語表示の件でコメントさせていただきます。
すでに解決されていたらすみません。

Image/Canvas/SVG.php にある2箇所の iso-8859-1 を UTF-8 にして

mb_language(”Japanese”);
mb_internal_encoding(”utf-8″);
mb_http_output(”utf-8″);

までやったら日本語表示うまくいきました。

マルタ 06-12-11 (月) 14:02

>> 通りすがりさん

コメントをありがとうございます。
教えていただいた通りやってみたら、バッチリ日本語表示できました。

また時間のあるときに、このSVGまわりの試行錯誤を
記事にできたらいいなと思います。

有益な情報をありがとうございました。

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://side-b.sto.co.jp/weblog/archives/162/trackback
Listed below are links to weblogs that reference
PEAR::Image_GraphライブラリでSVG from Side-B

Home > Image_Graph | PEAR | SVG > PEAR::Image_GraphライブラリでSVG

Search
Feeds
Meta

Return to page top