怎么在ASP.NET项目中生成一个PDF文档
本篇文章给大家分享的是有关怎么在ASP.NET项目中生成一个PDF文档,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
安装 DinkToPdf
要想安装 DinkToPdf,可以通过 Nuget 可视化界面或者通过 NuGet Package Manager Console 命令行工具输入以下命令:
Install-Package DinkToPdf
安装完毕之后可以验证下 DinkToPdf.dll 是否已成功引用到项目中。
既然是封装了 C++ 的 wkhtmltopdf,肯定要拿到原生的 wkhtmltopdf 工具包, 官方下载地址:https://wkhtmltopdf.org/downloads.html ,也可以在 DinkToPdf 的官方Github:https://github.com/rdvojmoc/DinkToPdf/tree/master/v0.12.4 上下载,然后根据你的需要选择 32bit 还是 64bit 。
注册 DinkToPdf
要想在 ASP.NET Core 中使用,需要在 ConfigureServices() 方法下将 DinkToPdf 注入到 IOC 容器中,下面的代码展示了如何去实现。
publicvoidConfigureServices(IServiceCollectionservices) { services.AddSingleton(typeof(IConverter),newSynchronizedConverter(newPdfTools())); services.AddControllers(); }
创建 ReportService
基础配置做好之后,接下来我们来写生成 PDF 的业务逻辑,创建一个 IReportService 和 ReportService 实现类,代码如下:
publicinterfaceIReportService { publicbyte[]GeneratePdfReport(); } publicclassReportService:IReportService { privatereadonlyIConverter_converter; publicReportService(IConverterconverter) { _converter=converter; } publicbyte[]GeneratePdfReport() { thrownewNotImplementedException(); } }
从上面的代码可以看出,IConverter 实例是通过 构造函数 注入的,接下来可以在 GeneratePdfReport() 方法中构建生成 pdf 的具体业务逻辑。
publicbyte[]GeneratePdfReport() { varhtml=$@"<!DOCTYPEhtml> <htmllang=""en""> <head> Thisistheheaderofthisdocument. </head> <body> <h2>Thisistheheadingfordemonstrationpurposesonly.</h2> <p>Thisisalineoftextfordemonstrationpurposesonly.</p> </body> </html>"; GlobalSettingsglobalSettings=newGlobalSettings(); globalSettings.ColorMode=ColorMode.Color; globalSettings.Orientation=Orientation.Portrait; globalSettings.PaperSize=PaperKind.A4; globalSettings.Margins=newMarginSettings{Top=25,Bottom=25}; ObjectSettingsobjectSettings=newObjectSettings(); objectSettings.PagesCount=true; objectSettings.HtmlContent=html; WebSettingswebSettings=newWebSettings(); webSettings.DefaultEncoding="utf-8"; HeaderSettingsheaderSettings=newHeaderSettings(); headerSettings.FontSize=15; headerSettings.FontName="Ariel"; headerSettings.Right="Page[page]of[toPage]"; headerSettings.Line=true; FooterSettingsfooterSettings=newFooterSettings(); footerSettings.FontSize=12; footerSettings.FontName="Ariel"; footerSettings.Center="Thisisfordemonstrationpurposesonly."; footerSettings.Line=true; objectSettings.HeaderSettings=headerSettings; objectSettings.FooterSettings=footerSettings; objectSettings.WebSettings=webSettings; HtmlToPdfDocumenthtmlToPdfDocument=newHtmlToPdfDocument() { GlobalSettings=globalSettings, Objects={objectSettings}, }; return_converter.Convert(htmlToPdfDocument); }
然后再将 IReportService 和 ReportService 注入到 IOC 容器中,如下代码所示:
services.AddSingleton<IReportService,ReportService>();
创建 ReportController
GeneratePdfReport() 方法的业务逻辑构建好之后,现在可以将 IReportService 实例注入到 ReportController 中来最终渲染 pdf,下面的代码展示了如何去实现。
[Route("api/[controller]")] [ApiController] publicclassReportController:ControllerBase { privatereadonlyIReportService_reportService; publicReportController(IReportServicereportService) { _reportService=reportService; } [HttpGet] publicIActionResultGet() { varpdfFile=_reportService.GeneratePdfReport(); returnFile(pdfFile,"application/octet-stream","SimplePdf.pdf"); } }
以上就是怎么在ASP.NET项目中生成一个PDF文档,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注恰卡编程网行业资讯频道。
推荐阅读
-
ASP.NET怎么实现登出系统并清除Cookie
-
CentOS下怎么实现Mono和Asp.net
CentOS下怎么实现Mono和Asp.net这篇文章主要介绍“C...
-
ASP.NET的Core AD域登录过程怎么实现
ASP.NET的Core AD域登录过程怎么实现本文小编为大家详细...
-
ASP.NET MVC中两个配置文件的作用是什么
-
ASP.NET MVC过滤器执行顺序是什么
-
ASP.NET Core Zero模块系统的示例分析
ASP.NET Core Zero模块系统的示例分析这篇文章主要为...
-
asp.net多级分类统计列表怎么实现
asp.net多级分类统计列表怎么实现本篇内容介绍了“asp.ne...
-
C#怎么用ASP.NET Core开发学生管理系统
-
ASP.net中aspx与cs函数怎么实现互调
ASP.net中aspx与cs函数怎么实现互调,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇...
-
ASP.NET中怎么优化站点构建托管资源
这篇文章将为大家详细讲解有关ASP.NET中怎么优化站点构建托管资源,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完...