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); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?