💬
PdfSharpCore の紹介
.NETのPDF生成ライブラリ PDFSharp の紹介
PDFSharp について
PDFSharpCore は、PdfSharp というオープンソースのPDF生成エンジン(C#)があります。
それ自体は更新が止まっています。
- .NET Framework にしか対応していない。
- GDI+ を使っているため、サーバーでのPDF生成には不向き
という問題がありました。
PDFSharpCore
PDFSharpCore では、
- .NET 対応
- GDI+ 除去
を行っています。
また、NuGet パッケージも公開しています。
PDF出力サンプル
Program.cs
using PdfSharpCore.Drawing;
using PdfSharpCore.Pdf;
// Create a new PDF document
var document = new PdfDocument();
document.Info.Title = "Created with PdfSharpCore";
// Create an empty page
PdfPage page = document.AddPage();
// Get an XGraphics object for drawing
XGraphics gfx = XGraphics.FromPdfPage(page);
// Create a font
var font = new XFont("Verdana", 20, XFontStyle.BoldItalic);
// Draw the text
gfx.DrawString(
"Hello, World!", font, XBrushes.Black,
new XRect(0, 0, page.Width, page.Height),
XStringFormats.Center);
// Save the document...
const string filename = "HelloWorld.pdf";
document.Save(filename);
出力結果
日本語出力
C#で日本語をPDFに出力する(PDFSharpを利用) を参考に日本語出力を行った。
PDFSharpCore でも JapaneseFontResolver
を実装することで日本語出力可能である。
using PdfSharpCore;
using PdfSharpCore.Drawing;
using PdfSharpCore.Fonts;
using PdfSharpCore.Pdf;
using System.Reflection;
internal class Program
{
private static void Main(string[] args)
{
// フォントリゾルバーのグローバル登録
GlobalFontSettings.FontResolver = new JapaneseFontResolver();
// 新規ドキュメントを作成
PdfDocument document = new PdfDocument();
document.Info.Title = "Created with PDFsharp";
// 白紙をつくる(A4縦)
PdfPage page = document.AddPage();
page.Size = PageSize.A4;
page.Orientation = PageOrientation.Portrait;
// XGraphicsオブジェクトを取得
XGraphics gfx = XGraphics.FromPdfPage(page);
// フォント
XFont font = new XFont("Gen Shin Gothic", 20, XFontStyle.Regular);
// 文字列描画
gfx.DrawString(
"こんにちは、世界!",
font,
XBrushes.Black,
new XRect(0, 0, page.Width, page.Height),
XStringFormats.Center // 真ん中に描画
);
// PDF保存(カレントディレクトリ)
const string filename = "HelloWorld.pdf";
document.Save(filename);
}
}
PDFSharp との違い
- ライブラリの違いによる
GlobalFontSettings.FontResolver
のパスの違い -
IFontResolver
でDefaultFontName
の実装が必要である。
フォント
デフォルトのフォントリゾルバーは次のパスを検索する。
Windows
%SystemRoot%\Fonts
%LOCALAPPDATA%\Microsoft\Windows\Fonts
Linux
/usr/share/fonts
/usr/local/share/fonts
~/.fonts
iOS
/Library/Fonts/
TrueType Fonts (拡張子 .ttf
) を読み込む。Font Collections (拡張子 .ttc
) には対応していない。
こちらの方法での日本語出力はできていない。
MigraDocCore
PDFSharp を元にしたドキュメント作成ツール MigraDoc の .NET 対応を行ったツールである。
英文でのパラグラフやテーブルなどを作成できる。
次にサンプルコードが記載されているが、PDFSharp のコードが残っており動かないコードも記載されている。
Discussion