LoginSignup
1
2
お題は不問!Qiita Engineer Festa 2023で記事投稿!

PDFSharpにて日本語フォントを使用するための設定

Posted at

はじめに

C#でPDF生成を行う際に、日本語フォントで正常に表示することが出来なかったので、
PDFSharpを使用して日本語フォントを正しく表示するための設定方法について説明します。

実行環境

実行環境は以下となります。

  • .NET Framework 4.7.2
  • PDFSharp 1.50.5147

PDFSharpでの日本語フォントの設定

PDFSharpでは、以下の手順を実行することで日本語フォントの正しい表示を実現できます。

  1. 日本語フォントをプロジェクトに追加します。フォントファイル(例: ipaexm.ttf)を用意してください。
  2. FontResolverクラスを作成します。以下に修正後のコードを示します。
using System.IO;
using PdfSharp.Fonts;

public class FontResolver : IFontResolver
{
    private readonly string _fontPath;

    public FontResolver()
    {
        _fontPath = Path.Combine(Directory.GetCurrentDirectory(), "Fonts", "ipaexm.ttf");
    }

    public byte[] GetFont(string faceName)
    {
        using (var fontStream = File.OpenRead(_fontPath))
        {
            var fontData = new byte[fontStream.Length];
            fontStream.Read(fontData, 0, fontData.Length);
            return fontData;
        }
    }

    public FontResolverInfo ResolveTypeface(string familyName, bool isBold, bool isItalic)
    {
        return new FontResolverInfo(familyName);
    }
}

修正後のコードでは、FontResolverクラスが使用されます。このクラスは、IFontResolverインターフェースを実装し、日本語フォントのパスを指定して読み込む役割を果たします。

  1. PDF生成のコードで、FontResolverクラスを使用して日本語フォントを設定します。以下に例を示します。
// PDF生成のコード
var fontResolver = new FontResolver();  // FontResolverのインスタンスを作成
GlobalFontSettings.FontResolver = fontResolver;  // PDFSharpのフォント解決にFontResolverを設定

// ここからは通常のPDF生成処理
var document = new PdfDocument();
var page = document.AddPage();
var gfx = XGraphics.FromPdfPage(page);

XFont font = new XFont("IPAex明朝", 12, XFontStyle.Regular); 

 // 使用する日本語フォントを指定

gfx.DrawString("テキストの表示例", font, XBrushes.Black, new XRect(50, 50, page.Width - 100, page.Height - 100), XStringFormats.Center);  // テキストを表示

document.Save("output.pdf");

上記のコードでは、XFontクラスを使用して日本語フォントを指定し、gfx.DrawStringメソッドで日本語テキストを表示しています。フォント名とサイズ、スタイルを適宜変更してください。

以上の手順を実行することで、PDFSharpで日本語フォントを正しく表示し、テキストを表示することができます。

まとめ

C#でのPDF生成において日本語フォントを正常に表示するにはそれ用の設定が必要でした。
上記コードを使用することにより、PDF生成において正常に日本語フォントが利用され、
正常に日本語テキストが表示することが出来ました。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2