サーバー側のBlazorでpdfを生成しようとしています。HTML文字列をpdfに変換するための外部ライブラリとしてDinkToPdfを使用しています。しかし、blazor コンポーネントを HTML 文字列に変換するのに問題があります。
Razor ViewEngine を使用して、Razor テンプレートを文字列にレンダリングする方法があります。このウェブからhttp://fizzylogic.nl/2017/08/03/how-to-generate-pdf-documents-in-asp-net-core/
[HttpGet]
public async Task<IActionResult> CreatePDF()
{
var globalSettings = new GlobalSettings
{
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
Margins = new MarginSettings { Top = 10 },
DocumentTitle = "PDF Report",
};
var objectSettings = new ObjectSettings
{
PagesCount = true,
HtmlContent = "<h>Hello World</h>",
WebSettings = { DefaultEncoding = "utf-8"},
HeaderSettings = { FontName = "Arial", FontSize = 9, Right = "Page [page] of [toPage]", Line = true },
FooterSettings = { FontName = "Arial", FontSize = 9, Line = true, Center = "Report Footer" }
};
var pdf = new HtmlToPdfDocument()
{
GlobalSettings = globalSettings,
Objects = { objectSettings }
};
var file = _converter.Convert(pdf);
return File(file,"application/pdf");
}
ObjectSettings.HtmlContent を変更して、blazor コンポーネントの html 文字列にする必要があります。