如何使用ASP.NET Core 5快速生成PDF文件?

2026-04-01 09:491阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1190个文字,预计阅读时间需要5分钟。

如何使用ASP.NET Core 5快速生成PDF文件?

前言:在家使用ASP.NET Core进行项目开发时,经常会遇到生成PDF的需求。那么,如何生成PDF呢?本文将探讨如何通过DinkToPdf来生成PDF文档,DinkToPdf封装了C++的wktopdf工具包。

DinkToPdf介绍:DinkToPdf是一个.NET库,它封装了C++的wktopdf工具,用于将HTML内容转换为PDF格式。它简单易用,功能强大,支持多种转换选项。

生成PDF步骤:

1.安装DinkToPdf库:在NuGet包管理器中搜索DinkToPdf,然后安装到你的项目中。

2.引入DinkToPdf命名空间:在你的代码中引入DinkToPdf的命名空间。

3.创建DinkToPdfConverter实例:使用DinkToPdfConverter类创建一个实例。

4.设置转换参数:配置转换参数,如输出路径、页面大小等。

5.转换HTML为PDF:调用Converter.ToPdf方法,传入HTML内容和转换参数,生成PDF文件。

示例代码:

csharpusing DinkToPdf;using DinkToPdf.Contracts;

public void GeneratePdf(string Content, string outputPath){ var converter=new SynchronizedConverter(new Options { // 设置转换参数 Margin=new Margin { Top=10, Bottom=10, Left=10, Right=10 }, PageOrientation=Orientation.Landscape, PageSize=PageSize.A4, // ... 其他参数 });

var pdf=converter.ToPdf(Content); File.WriteAllBytes(outputPath, pdf);}

总结:通过DinkToPdf,我们可以轻松地将HTML内容转换为PDF格式。只需简单几步,即可实现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 是否已成功引用到项目中。

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

注册 DinkToPdf

要想在 ASP.NET Core 中使用,需要在 ConfigureServices() 方法下将 DinkToPdf 注入到 IOC 容器中,下面的代码展示了如何去实现。

如何使用ASP.NET Core 5快速生成PDF文件?

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(); 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; 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 中并没有内置对 pdf 的支持,所以有这方面的需求只能借助于第三方框架,而 DinkToPdf 就是这么一款非常优秀的工具包,DinkToPdf 是一款用 .NET 语言编写的用于包装 C++ 的 wkhtmltopdf 的工具包,它可以非常方便的将 Html 转成 PDF ,关于更多 DinkToPdf 可参考 Github:github.com/rdvojmoc/DinkToPdf

译文链接:www.infoworld.com/article/3605276/how-to-create-pdf-documents-in-aspnet-core-5.html

总结

到此这篇关于ASP.NET Core 5中如何生成PDF文档的文章就介绍到这了,更多相关ASP.NET Core5生成PDF内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

本文共计1190个文字,预计阅读时间需要5分钟。

如何使用ASP.NET Core 5快速生成PDF文件?

前言:在家使用ASP.NET Core进行项目开发时,经常会遇到生成PDF的需求。那么,如何生成PDF呢?本文将探讨如何通过DinkToPdf来生成PDF文档,DinkToPdf封装了C++的wktopdf工具包。

DinkToPdf介绍:DinkToPdf是一个.NET库,它封装了C++的wktopdf工具,用于将HTML内容转换为PDF格式。它简单易用,功能强大,支持多种转换选项。

生成PDF步骤:

1.安装DinkToPdf库:在NuGet包管理器中搜索DinkToPdf,然后安装到你的项目中。

2.引入DinkToPdf命名空间:在你的代码中引入DinkToPdf的命名空间。

3.创建DinkToPdfConverter实例:使用DinkToPdfConverter类创建一个实例。

4.设置转换参数:配置转换参数,如输出路径、页面大小等。

5.转换HTML为PDF:调用Converter.ToPdf方法,传入HTML内容和转换参数,生成PDF文件。

示例代码:

csharpusing DinkToPdf;using DinkToPdf.Contracts;

public void GeneratePdf(string Content, string outputPath){ var converter=new SynchronizedConverter(new Options { // 设置转换参数 Margin=new Margin { Top=10, Bottom=10, Left=10, Right=10 }, PageOrientation=Orientation.Landscape, PageSize=PageSize.A4, // ... 其他参数 });

var pdf=converter.ToPdf(Content); File.WriteAllBytes(outputPath, pdf);}

总结:通过DinkToPdf,我们可以轻松地将HTML内容转换为PDF格式。只需简单几步,即可实现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 是否已成功引用到项目中。

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

注册 DinkToPdf

要想在 ASP.NET Core 中使用,需要在 ConfigureServices() 方法下将 DinkToPdf 注入到 IOC 容器中,下面的代码展示了如何去实现。

如何使用ASP.NET Core 5快速生成PDF文件?

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(); 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; 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 中并没有内置对 pdf 的支持,所以有这方面的需求只能借助于第三方框架,而 DinkToPdf 就是这么一款非常优秀的工具包,DinkToPdf 是一款用 .NET 语言编写的用于包装 C++ 的 wkhtmltopdf 的工具包,它可以非常方便的将 Html 转成 PDF ,关于更多 DinkToPdf 可参考 Github:github.com/rdvojmoc/DinkToPdf

译文链接:www.infoworld.com/article/3605276/how-to-create-pdf-documents-in-aspnet-core-5.html

总结

到此这篇关于ASP.NET Core 5中如何生成PDF文档的文章就介绍到这了,更多相关ASP.NET Core5生成PDF内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!