電動ひやむぎ

2013-12-10

CL-PDFでお絵かき

このエントリーをはてなブックマークに追加

この記事は Lisp Advent Calendar 2013 - 10日目です。

去年に続き、今年も shen について書こうと思っていましたが、20日の内容と被りそうなので 別の内容として Common Lispで PDFを書くためのライブラリ、CL-PDFをご紹介します。

CL-PDFとは

Common Lispで PDFを作成するためのライブラリです。ライセンスは BSD style license。

ベジェ曲線も書けるし、文字も書けるし(日本語なんかはちょっとアレかも)、ある程度バージョンの低いPDF仕様の範囲であれば大抵のことは出来るような気がします。

with-document, with-page などのマクロでドキュメントやページのスコープが作成できるので「ページの閉じ忘れ」みたいなのがないところが Lispっぽくて結構好きです。

絵を描いてみる

みんな大好き、Lisp Alienを PDFに書いてみたいと思います。但し、グラデーションとかやり方が分からなかったので線のみで。

こんなコード

出来た PDFはこんな感じ。

20131210153925

見ていただくと分かりますが、逆さです。これは Lisp Alienのサイトで公開されている svgファイルから座標を取り出して、そのまま使ったからです。svgファイルは左上が原点(0, 0)ですが、PDFは左下が原点(0, 0)になるため、y座標を直してやる必要があります。昼休みにやるにはちょっと面倒すぎた...

色は無いし、線が重なりまくっていますが Lisp Alienさんの可愛さは既に滲み出ていますね。PDFなので好きなだけ拡大しても大丈夫です。

最後に

ごめんね、適当な感じでごめんね。