怎么在ASP.NET项目中生成一个PDF文档

本篇文章给大家分享的是有关怎么在ASP.NET项目中生成一个PDF文档,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

安装 DinkToPdf

要想安装 DinkToPdf,可以通过 Nuget 可视化界面或者通过 NuGet Package Manager Console 命令行工具输入以下命令:

Install-Package DinkToPdf

安装完毕之后可以验证下 DinkToPdf.dll 是否已成功引用到项目中。

怎么在ASP.NET项目中生成一个PDF文档

既然是封装了 C++ 的 wkhtmltopdf,肯定要拿到原生的 wkhtmltopdf 工具包, 官方下载地址:https://wkhtmltopdf.org/downloads.html ,也可以在 DinkToPdf 的官方Github:https://github.com/rdvojmoc/DinkToPdf/tree/master/v0.12.4 上下载,然后根据你的需要选择 32bit 还是 64bit 。

怎么在ASP.NET项目中生成一个PDF文档

注册 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项目中生成一个PDF文档,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注恰卡编程网行业资讯频道。

发布于 2021-03-21 22:38:00
收藏
分享
海报
0 条评论
163
上一篇:怎么在python中使用PIL剪切图片 下一篇:怎么在CSS3中使用line-clamp属性控制文本行数
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码