ASP.NETCore5中如何生成PDF文档

ASP.NETCore5中如何⽣成PDF⽂档
高中英语写作教学前⾔
⼤家⽤ ASP.NET Core 进⾏项⽬开发时,常会有⽣成 PDF 的需求,那如何⽣成呢?这篇⽂章我们就来讨论如何通过DinkToPdf 来⽣成 PDF ⽂档,DinkToPdf 封装了 C++ 的 wkhtmltopdf ⼯具包,前者通过 P/Invoke 的⽅式来调⽤后者,⽽底层的 wkhtmltopdf 利⽤ Qt WebKit 渲染引擎将 html 转成 pdf。
安装 DinkToPdf
要想安装 DinkToPdf,可以通过 Nuget 可视化界⾯或者通过 NuGet Package Manager Console 命令⾏⼯具输⼊以下命令:
Install-Package DinkToPdf
安装完毕之后可以验证下 DinkToPdf.dll 是否已成功引⽤到项⽬中。
注册 DinkToPdf
要想在 ASP.NET Core 中使⽤,需要在 ConfigureServices() ⽅法下将 DinkToPdf 注⼊到 IOC 容器中,下⾯的代码展⽰了如何去实现。
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton(typeof(IConverter),new SynchronizedConverter(new PdfTools()));
services.AddControllers();
}
创建 ReportService
采果器
基础配置做好之后,接下来我们来写⽣成 PDF 的业务逻辑,创建⼀个 IReportService 和 ReportService 实现类,代码如下:
public interface IReportService
{
public byte[] GeneratePdfReport();
}
public class ReportService : IReportService
{
private readonly IConverter _converter;
public ReportService(IConverter converter)
{
_converter = converter;
}
public byte[] GeneratePdfReport()
{
throw new NotImplementedException();
}
}
从上⾯的代码可以看出,IConverter 实例是通过构造函数注⼊的,接下来可以在 GeneratePdfReport() ⽅法中构建⽣成 pdf 的具体业务逻辑。
public byte[] GeneratePdfReport()
{
var html = $@"<!DOCTYPE html>
<html lang=""en"">
<head>
This is the header of this document.
</head>
<body>
<h1>This is the heading for demonstration purposes only.</h1>
<p>This is a line of text for demonstration purposes only.</p>
</body>
</html>";
GlobalSettings globalSettings = new GlobalSettings();
globalSettings.ColorMode = ColorMode.Color;
globalSettings.Orientation = Orientation.Portrait;
globalSettings.PaperSize = PaperKind.A4;
globalSettings.Margins = new MarginSettings { Top = 25, Bottom = 25 };
ObjectSettings objectSettings = new ObjectSettings();
objectSettings.PagesCount = true;
objectSettings.HtmlContent = html;
WebSettings webSettings = new WebSettings();
webSettings.DefaultEncoding = "utf-8";
HeaderSettings headerSettings = new HeaderSettings();
jis标准
headerSettings.FontSize = 15;
headerSettings.FontName = "Ariel";
headerSettings.Right = "Page [page ] of [toPage]";
headerSettings.Line = true;
FooterSettings footerSettings = new FooterSettings();
footerSettings.FontSize = 12;
footerSettings.FontName = "Ariel";
footerSettings.Center = "This is for demonstration purposes only.";
footerSettings.Line = true;
objectSettings.HeaderSettings = headerSettings;
dna探针
objectSettings.FooterSettings = footerSettings;
objectSettings.WebSettings = webSettings;
HtmlToPdfDocument htmlToPdfDocument = new HtmlToPdfDocument()
{
中国海洋网
GlobalSettings = globalSettings,
Objects = { objectSettings },
};
return _converter.Convert(htmlToPdfDocument);
}
然后再将 IReportService 和 ReportService 注⼊到 IOC 容器中,如下代码所⽰:
services.AddSingleton<IReportService, ReportService>();
创建 ReportController
GeneratePdfReport() ⽅法的业务逻辑构建好之后,现在可以将 IReportService 实例注⼊到 ReportController 中来最终渲染pdf,下⾯的代码展⽰了如何去实现。
[Route("api/[controller]")]苍蝇一分钟的生命
[ApiController]
public class ReportController : ControllerBase
{
private readonly IReportService _reportService;
public ReportController(IReportService reportService)
{
_reportService = reportService;
}
[HttpGet]
public IActionResult Get()
{
var pdfFile = _reportService.GeneratePdfReport();
return File(pdfFile,"application/octet-stream", "SimplePdf.pdf");
}
}
总结
到此这篇关于ASP.NET Core 5中如何⽣成PDF⽂档的⽂章就介绍到这了,更多相关ASP.NET Core5⽣成PDF内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

本文发布于:2024-09-22 05:22:04,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/292726.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:代码   后者   逻辑   业务   相关   浏览   看出   验证
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议