読者です 読者をやめる 読者になる 読者になる

自分でビルドしたPoppler 0.22.5 + .NETバインディングがうまく動かなかった

.NET Poppler

ここ数日、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を見切って他の物を調べることにした。