Symfoware

Symfowareについての考察blog

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

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

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2018/05/09(水) 23:59:32|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<SkiaSharp + C#でPDFファイルの出力(線、矩形、円の描画) | ホーム | Ubuntu 18.04に.NET Core 2をインストールしてC#プログラムをビルドする>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
https://symfoware.blog.fc2.com/tb.php/2179-37b90cca
この記事にトラックバックする(FC2ブログユーザー)