作成日: 2023/07/12 最終更新日: 2023/07/12
文書種別
使用方法
詳細
FontResolverクラスを使用してレポートの描画に用いるフォントを登録できます。
アプリケーションと共にフォントファイルを実行環境に配置し、それを使用してレポートを描画することも可能です。
◆実装例
using GrapeCity.Documents.Text; namespace WebAPI_FontResolver { public sealed class FontResolver : GrapeCity.ActiveReports.IFontResolver { static readonly FontCollection _fonts = new FontCollection(); static FontResolver() { // アプリケーションルートのFontsフォルダ内のフォントを登録 _fonts.RegisterDirectory(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Fonts"));
// 該当するフォントが見つからない場合のデフォルトフォントを指定 _fonts.DefaultFont = _fonts.FindFamilyName("IPAゴシック"); } FontCollection GrapeCity.ActiveReports.IFontResolver.GetFonts(string familyName, bool isBold, bool isItalic) { var fonts = new FontCollection(); var font = _fonts.FindFamilyName(familyName, isBold, isItalic); if (font != null) fonts.Add(font); fonts.Add(_fonts.DefaultFont); return fonts; } } }
PageReportやSectionReportのFontResolverプロパティに上記のインスタンスを設定します。
var fi = new System.IO.FileInfo("sample.rdlx");
var pageReport = new GrapeCity.ActiveReports.PageReport(fi);
pageReport.FontResolver = new FontResolver();
var sectionReport = new SectionReport1();
sectionReport.FontResolver = new FontResolver();
※セクションレポートの場合、CrossPlatformでのみFontResolverを使用できます。
また、JSビューワやBlazorビューワを使用する場合は、初期化処理(Startup.cs/Program.cs)で実行しているUseReportingの内部でFontResolverを設定できます。
app.UseReporting(settings => { settings.UseEmbeddedTemplates(EmbeddedReportsPrefix, Assembly.GetAssembly(GetType())); settings.UseCompression = true; settings.FontResolver = new FontResolver(); });
ただし、JSビューワやBlazorビューワはレポートをHTML形式で描画するため、ブラウザ上のプレビュー表示にはFontResolverで登録したフォントが反映されない可能性があります。クライアント環境に該当するフォントが存在する必要があります。
この方法はプレビュー表示せずに印刷やPDF出力のみを実行する場合に有効な方法です。
※注意事項
FontResolverを使用する場合、実行環境にフォントを再配布することになります。
再配布や商用利用の可否については、フォントの提供元にご確認ください。