c#、.net 生成PDF,PDF内嵌二维码
第一步:需要引用的包 itext7.pdfhtml、QRCoder-ImageSharp、RazorEngine.NetCore
第二步:生成一个二维码的方法

1 public string RenderQrCode() 2 { 3 var qrGenerator = new QRCodeGenerator(); 4 var qrCodeData = qrGenerator.CreateQrCode("Hello world", QRCodeGenerator.ECCLevel.Q); 5 var qrCode = new QRCode(qrCodeData); 6 var qrCodeImage = qrCode.GetGraphic(20); 7 8 using var ms = new MemoryStream(); 9 // 二维码储存一个位置 10 // using var stream = new FileStream(@"D:\Email\qrcode.png", FileMode.Create); 11 qrCodeImage.Save(ms, new JpegEncoder()); 12 13 return Convert.ToBase64String(ms.ToArray()); 14 15 }
第三步:新建一个实体类,用于传入值

1 public class MyModel 2 { 3 public string Property1 { get; set; } 4 public string Property2 { get; set; } 5 }
第四步:新建一个.cshtml的PDF模板

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>My Template</title> 5 </head> 6 <body> 7 <h1>Hello @Model.Property1 and @Model.Property2!</h1> 8 </body> 9 </html>
第五步:主方法(你需要实现的地方)代码

1 //关于二维码,我们可以自定义一个参数用来接受base64的二维码图片值,也可以储存他的地址 2 //在html页面中设置<img>的值 例如<img src="data:image/png;base64,你的64位值"/> 也可以设置src的值为你的二维码地址<img src="你的图片地址"/> 3 //本文是没有设置img的接受参数的 4 5 // 创建 ViewModel 实例 6 var viewModel = new MyModel { Property1 = "wanglei", Property2 = "shinibaba" }; 7 8 // 读取 Razor 模板文件 9 var templateFilePath = "receipt.cshtml"; 10 var templateString = File.ReadAllText(templateFilePath); 11 12 // 使用 Razor 转换引擎生成 HTML 字符串 13 var htmlString = Engine.Razor.RunCompile(templateString, "templateKey", typeof(MyModel), viewModel); 14 15 string basePath = AppDomain.CurrentDomain.BaseDirectory; 16 // 设置PDF文件路径 17 string pdfFilePath = Path.Combine(basePath, "test.PDF"); 18 19 using var htmlMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(htmlString)); 20 //设置PDF大小 21 iText.Kernel.Geom.PageSize pageSize = new iText.Kernel.Geom.PageSize(300, 300); 22 // 生成PDF 23 using (var pdfDoc = new PdfDocument(new PdfWriter(pdfFilePath))) 24 { 25 pdfDoc.SetDefaultPageSize(pageSize); 26 HtmlConverter.ConvertToPdf(htmlMemoryStream, pdfDoc); 27 }
第六步:检验成果
图中的@model的值会替换为你传入的值,你可以根据Html样式去设计的你PDF很方便。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!