画像を作って日本語文字列を表示

画像を操作する関数としてGD関数群が用意されている。で、それらの関数を使うと、拡大とか縮小とかトリミングとかいろいろできる。さらに画像の中に文字を書き込むこともできる。でもって、さらに、マルチバイトな文字も書き込むことができる。それがimagettftext関数だ。

imagettftext ( resource image, float size, float angle, int x, int y, int color, string fontfile, string text )

ただし、一手間かけないといけない。7つ目の引数「フォントファイル」の指定だ。たいていの場合、レンタルサーバにはそんなものは用意されていないので、自前で準備する必要がある。で、使えるフォントはこちらのがいいようです。

M+とIPAフォントの合成フォント

請求書フォームとかPDF出力したりするのにもつかえそう。

simplexmlを使ってみて

2009/03/03 | XML

とあるお仕事でXMLを扱うことになって、simplexmlを使っているのだが、使っていて思ったことをいくつか。

クライアントからいただいたファイルをみてちょっと唖然。XML自体は構造もしっかりしているのだが、タグは全て日本語。これはすごく萎えた。日本人だから・・・しょうがないんだよね。でも、これっていろんなソフトで加工するときに障害にならないのか不安に思えた。そして萎えたことがもう一つ。文字コードシフトJISじゃんかー。これも、まぁ、日本人だから・・・しょうがないんだよね。

ということでシフトJISでマルチバイトなタグで構成されたXMLファイルがsimplexmlで扱えるのか試してみた。結果からいうと「すごい!」「使える!」。まず普通にsimplexml_load_fileとかして、var_dumpしてみた。ちゃんと全部オブジェクトに格納されている!。と、ひとまず感動した。

そして文字コードはというと、UTF-8に変換されて格納されている!。扱いやすい!。XMLファイルの先頭に文字コードの宣言(もちろんShift_JISと指定)がされているのだが、ここを判断して(もしくは文字コード自動判別で)、変換されているんだろう。「自動」というのはいささか怖い気もするが、それでもまぁ満足がいく。

さて、各タグにアクセスできるかどうか、だがこれもOK。以下のように記述して、アクセスすることができた。

$xmlObj->{‘日本語のタグ名’}

正直ほっとした。シフトJISでマルチバイトなタグのXMLを見たときはどうなることかと思ったが何とかなりそうだ。

1点気づいたことがあった。いったんsimplexml_load_fileして、再度asXML()でXMLを吐き出すときにXML宣言がなくなっちゃってしまったことだ。これはそういう仕様なんだろうか。そもそもXML宣言部分は、XML本体とは別物という扱いなんだろうか。ここを再現することはできないんだろうか。

まぁ、かっこいいプログラムである必要はない。要求どおりに動いてくれさえすればいいので、XML宣言は後付することにする。何はともあれいろいろ発見できた一日だった。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net