Symfoware

Symfowareについての考察blog

SkiaSharp + C#で画像をPDFファイルに埋め込む

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

今回はPDFに画像を埋め込んでみます。


DrawImage



こちらを参考に、SKBitmap.Decodeで画像ファイルを読み込み、SKImage.FromBitmapで
SKImageオブジェクトを作成します。
https://github.com/mono/SkiaSharp/issues/236

サンプルの画像はこちらからお借りしました。
【90枚】コードギアス C.C.の壁紙ギャラリー


  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 bitmap = SKBitmap.Decode("cc2.jpg");
  16.                     var image = SKImage.FromBitmap(bitmap);
  17.                     canvas.DrawImage(image, 10, 10);
  18.                     // ページ終了
  19.                     document.EndPage();
  20.                 }
  21.                 // PDFドキュメント終了
  22.                 document.Close();
  23.             }
  24.         }
  25.     }
  26. }



原寸で埋め込まれます。

881_01.png


適当にリサイズして埋め込むようにしてみます。


  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 bitmap = SKBitmap.Decode("cc2.jpg");
  16.                     // 横幅180にリサイズ
  17.                     int newWidth = 180 * bitmap.Height / bitmap.Width;
  18.                     var scaled = bitmap.Resize(new SKImageInfo(180, newWidth), SKBitmapResizeMethod.Lanczos3);
  19.                     var image = SKImage.FromBitmap(scaled);
  20.                     canvas.DrawImage(image, 10, 10);
  21.                     // ページ終了
  22.                     document.EndPage();
  23.                 }
  24.                 // PDFドキュメント終了
  25.                 document.Close();
  26.             }
  27.         }
  28.     }
  29. }



881_02.png

関連記事

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

  1. 2018/05/13(日) 17:39:39|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<SkiaSharp + C#で文字をPDFファイルに表示する | ホーム | SkiaSharp + C#でPDFファイルの出力(線、矩形、円の描画)>>

コメント

コメントの投稿


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

トラックバック

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