1. <i id="s6b2k"><small id="s6b2k"></small></i>
    <b id="s6b2k"><bdo id="s6b2k"></bdo></b>
  2. <wbr id="s6b2k"></wbr>

    ASP.NET Core 5中如何生成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 工具包, 官方下載地址: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 容器中,下面的代碼展示了如何去實現。

     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:https://github.com/rdvojmoc/DinkToPdf

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

    總結

    到此這篇關于ASP.NET Core 5中如何生成PDF文檔的文章就介紹到這了,更多相關ASP.NET Core5生成PDF內容請搜索真格學網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持真格學網!

    您可能感興趣的文章:如何使用Rotativa在ASP.NET Core MVC中創建PDF詳解ASP.NET Core中快速構建PDF文檔的步驟分享asp.net 按指定模板導出word,pdf實例代碼

  3. 本文相關:
  4. asp.net 用繼承方法實現頁面判斷session
  5. asp.net gridview行綁定事件新體會
  6. .net core使用mongodb的詳細教程
  7. 一步步打造簡單的mvc電商網站booksstore(4)
  8. viewstate和datatable動態錄入數據示例
  9. .net原型模式講解
  10. 如何使用swagger上傳文件
  11. asp.net類庫中發送電子郵件的代碼
  12. asp.net mvc用存儲過程批量添加修改數據操作
  13. asp.net頁面進行gzip壓縮優化的幾款壓縮模塊的使用簡介及應用測試
  14. asp如何生成pdf格式的文件
  15. 如何用ASP自動生成PDF文檔.
  16. .net如何將頁面生成pdf
  17. 如何把asp文件格式轉換成pdf文件格式?
  18. ASP如何實現將WORD等文檔生成成PDF文檔
  19. 在ASP.NET中怎么把網頁形式轉換為pdf格式
  20. 急~急~~急~~~ ASP.NET 怎么講圖片生成PDF文件,求代碼
  21. asp如何編寫PDF文檔的在線瀏覽
  22. asp.net中,把word文檔轉為PDF格式文件的問題。
  23. asp.net中如何將pdf文件顯示到頁面
  24. 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全基礎應用實用技巧自學過程首頁asp.net如何使用rotativa在asp.net core mvc中創建pdf詳解asp.net core中快速構建pdf文檔的步驟分享asp.net 按指定模板導出word,pdf實例代碼asp.net 用繼承方法實現頁面判斷sessionasp.net gridview行綁定事件新體會.net core使用mongodb的詳細教程一步步打造簡單的mvc電商網站booksstore(4)viewstate和datatable動態錄入數據示例.net原型模式講解asp.net類庫中發送電子郵件的代碼asp.net mvc用存儲過程批量添加修改數據操作asp.net頁面進行gzip壓縮優化的幾款壓縮模塊的使用簡介及應用測試未將對象引用設置到對象的實例 (java正則表達式 pattern和matcheasp.net(c#)網頁跳轉七種方法小結未能加載文件或程序集“xxx”或它asp.net“服務器應用程序不可用”asp.net中的幾種彈出框提示基本實asp.net gridview 72般絕技asp.net生成excel并導出下載五種asp.net對路徑"xxxxx"asp.net漢字轉拼音和獲取漢字首字visual studio 2017正式版離線安裝教程微信公眾平臺開發之地理位置.net代碼解析微信公眾平臺開發之發送文本消息.net代碼asp.net實現的群發郵件功能詳解asp.net調試的一些問題小結asp.net在頁面間傳遞大量數據(數據表)建議asp.net中json的序列化和反序列化使用說明關于c#連接ftp進行上傳下載實現原理及代碼.net微信公眾號 用戶分組管理
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.yu113.com All Rights Reserved
    战天txt全集下载