中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在ASP.NET項目中生成一個PDF文檔

發布時間:2021-03-20 15:01:39 來源:億速云 閱讀:410 作者:Leah 欄目:開發技術

本篇文章給大家分享的是有關怎么在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 容器中,下面的代碼展示了如何去實現。

 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>
 <h2>This is the heading for demonstration purposes only.</h2>
 <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項目中生成一個PDF文檔

以上就是怎么在ASP.NET項目中生成一個PDF文檔,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盱眙县| 白朗县| 名山县| 钟祥市| 正安县| 新营市| 大田县| 青冈县| 台江县| 芦山县| 延津县| 饶阳县| 淳化县| 宁都县| 辛集市| 兴业县| 平阳县| 辽源市| 宾阳县| 壶关县| 开封市| 古浪县| 溧水县| 眉山市| 恭城| 鄂托克旗| 平昌县| 六枝特区| 马公市| 花莲县| 屏东市| 饶阳县| 隆尧县| 贺兰县| 荥经县| 汝南县| 葫芦岛市| 隆林| 蕲春县| 观塘区| 开封县|