AspNetCore生成Pdf


參考:.Net Core 導出Html到PDF - 雲+社區 - 騰訊雲 (tencent.com)

將頁面生成pdf文件可以在后端將數據和Html拼接成頁面再利用插件生成pdf:

一、安裝包

 

 注意:該插件在Linux下不可用,僅限於windows

二、使用方式

 string htmlString = @"<!DOCTYPE html>
<html>
<head></head>
<body>
    </body></html>";
                HtmlToPdf Renderer = new HtmlToPdf();
                //設置Pdf參數
                Renderer.Options.PdfPageOrientation = PdfPageOrientation.Landscape;//設置頁面方式-橫向  PdfPageOrientation.Portrait  豎向
                Renderer.Options.PdfPageSize = PdfPageSize.A4;
                Renderer.Options.MarginRight = 15;
                Renderer.Options.MarginLeft = 35;
                Renderer.Options.MarginTop = 25;
                //設置更多額參數可以去HtmlToPdfOptions里面選擇設置
                var docHtml = Renderer.ConvertHtmlString(htmlString);//根據html內容導出PDF
                //保存到指定路勁中
                //string webRootPath = @"D:\HtmlToPdf\";  //獲取項目運行絕對路徑
                //var path = $"/ExportPDF/{DateTime.Now.ToString("yyyyMMdd")}/";//文件相對路徑
                //var savepathHtml = $"{webRootPath}{path}{Guid.NewGuid().ToString()}-Html.pdf";//保存絕對路徑
                //if (!Directory.Exists(Path.GetDirectoryName(webRootPath + path)))
                //{
                //    Directory.CreateDirectory(Path.GetDirectoryName(webRootPath + path));
                //}
                //docHtml.Save(savepathHtml);
                //文件流形式
                using MemoryStream ms = new MemoryStream();
                docHtml.Save(ms);    

三、接口中返回格式

要么是保存在服務器返回文件地址,要么以文件流形式發送到前端:

1:返回文件流

 
[HttpGet]
public async Task<IActionResult> GetPdf() {       //上面生成的docHtml       using MemoryStream ms = new MemoryStream();       docHtml.Save(ms); return File(ms.ToArray(), "application/octet-stream", $"{title}_{DateTime.Now.ToString("yyyy-MM-dd")}.pdf");//title為pdf文件名  }

 2:返回byte[]

[HttpGet]
public async Task<IActionResult> GetPdf()
 {
     byte[] buffer;    
   //上面生成的docHtml
   using MemoryStream ms = new MemoryStream();
   docHtml.Save(ms);
     buffer = ms.GetBuffer(); 
     return OK(buffer);
 }    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM