自分でビルドしたPoppler 0.22.5 + .NETバインディングがうまく動かなかった
ここ数日、Popplerを自分でビルドしたりして.NETから叩いてみてたんだけど、どうも動作が不安定。
こんな感じのコードが動いたり、AccessViolationException(メモリ破壊)が起こったり、動作が安定しない。
var document = Poppler.Document.NewFromFile("file:///path/to/src.pdf", String.Empty); var page = document.GetPage(0); var surface = new Cairo.ImageSurface(Cairo.Format.Argb32, 300, 300); var cairo = new Cairo.Context(surface); page.Render(cairo); surface.WriteToPng("out.png"); // ここで死ぬ surface.Dispose(); page.Dispose(); document.Dispose();
原因がはっきりしないのだけど、どうもCairoがうまく動いてないみたい。調査をするのも大変だし、ビルドしなおすのも大変(依存ライブラリが多すぎる)ので、とりあえずPopplerを見切って他の物を調べることにした。