Symfoware

Symfowareについての考察blog

SkiaSharp + C#で文字をPDFファイルに表示する

SkiaSharp + .NET Core 2でPDFファイルの出力を試しています。
SkiaSharp + .NET Core 2でPDFファイルの出力
SkiaSharp + C#でPDFファイルの出力(線、矩形、円の描画)
SkiaSharp + C#で画像をPDFファイルに埋め込む

今回は文字をPDFファイルに出力してみます。

DrawText



こちらを参考にサンプルを記載してみます。
https://gist.github.com/xoofx/a9d08a37c43f692e65df80a1888c488b


  1. using System;
  2. using SkiaSharp;
  3. namespace myApp
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             
  10.             // PDF ファイル作成
  11.             using (var stream = new SKFileWStream("document.pdf"))
  12.             using (var document = SKDocument.CreatePdf(stream)) {
  13.                 // 1ページ目
  14.                 using (var canvas = document.BeginPage(200f, 300f)) {
  15.                     var font = SKTypeface.FromFamilyName("serif");
  16.                     var brush = new SKPaint
  17.                     {
  18.                         Typeface = font,
  19.                         TextSize = 24.0f,
  20.                         IsAntialias = true,
  21.                         Color = SKColors.Black
  22.                     };
  23.                     // 出力する文字、x座標、y座標、フォントの情報
  24.                     canvas.DrawText("Hello, World!", 10, 30, brush);
  25.                     // ページ終了
  26.                     document.EndPage();
  27.                 }
  28.                 // PDFドキュメント終了
  29.                 document.Close();
  30.             }
  31.         }
  32.     }
  33. }



ちゃんとFontを指定しないと文字が表示できませんでした。

882_01.png



ボールド



おまけで、ボールドの表示も試してみます。
FakeBoldText = true
と指定すれば良いようです。


  1. using System;
  2. using SkiaSharp;
  3. namespace myApp
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             
  10.             // PDF ファイル作成
  11.             using (var stream = new SKFileWStream("document.pdf"))
  12.             using (var document = SKDocument.CreatePdf(stream)) {
  13.                 // 1ページ目
  14.                 using (var canvas = document.BeginPage(200f, 300f)) {
  15.                     var font = SKTypeface.FromFamilyName("serif");
  16.                     var brush = new SKPaint
  17.                     {
  18.                         Typeface = font,
  19.                         TextSize = 24.0f,
  20.                         IsAntialias = true,
  21.                         FakeBoldText = true,
  22.                         Color = SKColors.Black
  23.                     };
  24.                     // 出力する文字、x座標、y座標、フォントの情報
  25.                     canvas.DrawText("Hello, World!", 10, 30, brush);
  26.                     // ページ終了
  27.                     document.EndPage();
  28.                 }
  29.                 // PDFドキュメント終了
  30.                 document.Close();
  31.             }
  32.         }
  33.     }
  34. }



882_02.png



日本語の表示



ダメ元で日本語を出力してみると、

882_03.png

うまく表示されました。

関連記事

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

  1. 2018/05/13(日) 18:03:54|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<SkiaSharp + C# フォントファイルを指定して文字をPDFファイルに表示する | ホーム | SkiaSharp + C#で画像をPDFファイルに埋め込む>>

コメント

コメントの投稿


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

トラックバック

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