SkiaSharp + .NET Core 2でPDFファイルの出力

Ubuntu 18.04に.NET Core 2をインストールしてみました。
Ubuntu 18.04に.NET Core 2をインストールしてC#プログラムをビルドする

この環境を利用して、PDFファイルを出力するプログラムを作成してみます。


SkiaSharp



PDFといえばiText系のライブラリが有名ですが、今回はSkiaSharpを利用してみます。
https://github.com/mono/SkiaSharp
※MIT License

インストールはこちらを参考にしました。
https://www.nuget.org/packages/SkiaSharp

dotnet add packageコマンドで導入できるようです。
前回作成した「myApp」ディレクトリに移動してコマンドを実行。


$ dotnet add package SkiaSharp --version 1.60.0



これでライブラリを追加できました。



ラインの描画



こちらのヒントを参考にプログラムを記載してみます。
https://github.com/mono/SkiaSharp/releases/tag/v1.49.4-beta
https://developer.xamarin.com/api/type/SkiaSharp.SKFileWStream/


  1. using System;
  2. using SkiaSharp;
  3. namespace myApp
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             // PDF ファイル作成
  10.             using (var stream = new SKFileWStream("document.pdf"))
  11.             using (var document = SKDocument.CreatePdf(stream)) {
  12.                 // 1ページ目
  13.                 using (var canvas = document.BeginPage(300f, 500f))
  14.                 using (var paint = new SKPaint()) {
  15.                     // 線を描画
  16.                     paint.Color = new SKColor (0x42, 0x81, 0xA4);
  17.                     canvas.DrawLine(10f, 10f, 100f, 100f, paint);
  18.                     // ページ終了
  19.                     document.EndPage();
  20.                 }
  21.                 // PDFドキュメント終了
  22.                 document.Close();
  23.             }
  24.         }
  25.     }
  26. }




ビルド&実行するとエラーになりました。


$ dotnet run

Unhandled Exception: System.DllNotFoundException: Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibSkiaSharp: cannot open shared object file: No such file or directory
    at SkiaSharp.SkiaApi.sk_filewstream_new(String path)
    at SkiaSharp.SKFileWStream..ctor(String path)
    at myApp.Program.Main(String[] args) in /home/baranche/dotnet/myApp/Program.cs:line 10



ドキュメントをもう一度見てみると、
https://github.com/mono/SkiaSharp

「Linux binaries attached to the specific release」との記載が。

「libSkiaSharp.so」がリリースにありますので、こちらを使用します。
https://github.com/mono/SkiaSharp/releases

ダウンロードして/usr/libにコピー


$ wget https://github.com/mono/SkiaSharp/releases/download/v1.60.0/libSkiaSharp.so
$ sudo mv libSkiaSharp.so /usr/lib/



再度プログラムを実行。


$ dotnet run



PDFファイルが出力できました。
ここまで長かった。

879_01.png

次は文字の出力などを試していきたいと思います。
関連記事

コメント

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
https://symfo.web.fc2.com/

PR

検索フォーム

月別アーカイブ