見出し画像

PdfSharp で PDF ファイルを作成

#VisualStudio #VisualStudio2019 #プログラミング

目的

Window10 上で Visual Studio 2019 を用いて、実際に動くデスクトップ・アプリケーションを作成します。具体的には、PDF ファイルを作成し、そのなかに日本語のゴシック体、および明朝体の文章を書き込みます。PDF ファイルを作成するために、NuGet の PDFSharp というライブラリを使用するので、設定の仕方などをメモします。

まず起動

いちおう、起動するところからメモします。

画像1

以前の選択が残っています。

画像2

画像3

起動したら、NuGetでパッケージを追加します。

NuGet パッケージの追加

プロジェクト > NuGet パッケージの管理

画像4

参照をクリック。

画像5

検索窓に PdfSharp と入力し、一番上に出てきたものをクリック

画像6

インストールをクリック

画像7

OKをクリック

画像8

「×」をふたつ押します。

画像9

下のような状態になったら、[F7]を押して、コードを表示させます。

画像10

[F7] を押すと、最初はこういう状態。

画像11

ここで、次のようなコードを最初に追加します。

using PdfSharp;
using PdfSharp.Drawing;
using PdfSharp.Pdf;

画像12

この状態で、「開始」をクリックしてみて、ちゃんと実行できるのであれば、NuGet パッケージは正常に追加されています。

画像13

空白の PDF ファイルを出力

ほぼ空白のPDFファイルを作ってみます。

まず、メインの関数は現在は次のようになっています。

画像14

namespace test20200830
{
   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
       }
   }
}

これを次のように変えます。

画像15

namespace test20200830
{
   public partial class Form1 : Form
   {
       public static PdfDocument pdfdoc;
       
       public Form1()
       {
           InitializeComponent();

           string filename = "MyTest.pdf";
           pdfdoc = new PdfDocument();
           PdfPage page = pdfdoc.AddPage();
           pdfdoc.Save(filename);
       }
   }
}

public static PdfDocument pdfdoc; と定義して「pdfdoc」という変数でPDFファイルを作っています。ファイルの名称は「MyTest.pdf」です。実際に、new PdfDocument() で PDF ファイルを作成し、pdfdoc.AddPage(); で、このファイルに空白のページを追加し、そしてフアイル名をつけて保存します。

これで、「実行」してみます。

画像16

実行しても、空白のウインドウが表示されるだけで、何も起こりません。しかし、フォルダを見てみると、

画像17

たしかに、MyTest.pdf が作られています。これを開いてみると、

画像18

中身の何もない PDF ファイルであることがわかります。

文字を書いてみる

さきほどのプログラムを次のように書き換えてみます。

画像22

namespace test20200830
{
   public partial class Form1 : Form
   {
       public static PdfDocument pdfdoc;
       public Form1()
       {
           InitializeComponent();

           string filename = "MyTest.pdf";
           pdfdoc = new PdfDocument();
           PdfPage page = pdfdoc.AddPage();

           XGraphics gfx = XGraphics.FromPdfPage(page);

           XFont font1 = new XFont("Arial Unicode MS", 20, XFontStyle.Regular);
           gfx.DrawString("文章を書いてみました", font1, XBrushes.Black, 50, 100);
           gfx.DrawString("文章を書いてみました", font1, XBrushes.Red, 50, 150);

           XFont font2 = new XFont("游明朝", 20, XFontStyle.Regular);
           gfx.DrawString("文章を書いてみました", font2, XBrushes.Black, 50, 200);
           gfx.DrawString("文章を書いてみました", font2, XBrushes.Red, 50, 250);

           pdfdoc.Save(filename);
       }
   }
}

PDF で文字を書くときには、基本的に「図として文字を書く」ことになるので、最初に XGraphics で図形を書く準備をします。次に、どのようなフォントを使うのかを決めます。そして、そのフォントで実際に文章を書きますが、どの位置に書くのかを、50,100 とか 50, 150 という座標で決めます。

できあがりは次のようになります。

画像22

拡大すると次のようになります。


画像22

このように、いちおう、ゴシック体と明朝体をカバーすることができました。ただし、マシンにインストールしてあるフォントを自由に指定することは、現時点ではできませんでした。




いいなと思ったら応援しよう!