当前位置: 首页 > news >正文

C# PuppeteerSharp html转pdf

using PuppeteerSharp.Media;
using PuppeteerSharp;namespace Html2pdf
{class Program{static async Task Main(string[] args){try{Console.WriteLine("HTML转PDF演示程序");Console.WriteLine("=================");//@page {//size: A5 landscape; /* A5横向 *///margin: 5mm;//}// 1. 准备HTML内容(模拟您的打印模板)string htmlContent1 = @"
<!DOCTYPE html>
<html>
<head><meta charset='UTF-8'><title>中药饮片库存明细表</title><style>@page {size: 241mm 105mm landscape; /* Com10横向 */margin: 3mm;}body { font-family: 'Microsoft YaHei', SimSun, sans-serif; margin: 20px; font-size: 14px;}.header { text-align: center; margin-bottom: 30px;}.title {font-size: 18px;font-weight: bold;margin-bottom: 10px;}table {width: 100%;border-collapse: collapse;margin-top: 20px;}th, td {border: 1px solid #000;padding: 8px;text-align: center;}th {background-color: #f2f2f2;font-weight: bold;}.footer {margin-top: 30px;text-align: center;font-size: 12px;}.signature-area {margin-top: 40px;display: flex;justify-content: space-between;}.signature {width: 18%;text-align: center;}</style>
</head>
<body><div class='header'><div class='title'>在库中药饮片明细</div><div>单据编号: ZY-20230001</div><div>打印日期: 2023-11-16 14:30:25</div></div><div><div>仓库信息: 中药仓库-001</div><div>温控要求: 常温10-30摄氏度  相对湿度:35%-75%</div><div>仓库地址: 四川省成都市某某某某某公司</div></div><table><thead><tr><th>序号</th><th>品名</th><th>规格</th><th>生产厂家</th><th>批号</th><th>数量</th><th>单价</th><th>金额</th></tr></thead><tbody><tr><td>1</td><td>当归片(酒炙)</td><td>10g/袋</td><td>安徽某某某某某某某公司</td><td>DG-202309</td><td>120袋</td><td>¥15.80</td><td>¥1896.00</td></tr><tr><td>2</td><td>黄芪</td><td>500g/包</td><td>甘肃某某某某某某某基地</td><td>HQ-202308</td><td>30包</td><td>¥86.50</td><td>¥2595.00</td></tr><tr><td>3</td><td>金银花</td><td>250g/罐</td><td>山东某某某某某合作社</td><td>JYH-202307</td><td>45罐</td><td>¥58.20</td><td>¥2619.00</td></tr></tbody></table><div style='margin-top: 20px;'><div>合计金额(大写): 贰万捌仟叁佰捌拾壹元陆角整</div><div>合计金额(小写): ¥28381.60</div></div><div class='signature-area'><div class='signature'>开票人: 刘开票</div><div class='signature'>备货人: 李备货</div><div class='signature'>复核人: 王复核</div><div class='signature'>发货人: 张发货</div><div class='signature'>收货人: __________</div></div><div class='footer'><div>客服电话: 888-888-8888</div><div>© 2023 中药管理系统</div></div>
</body>
</html>";// 1. 定义文件路径string filePath = @"D:\test3.html";// 2. 检查文件是否存在if (!File.Exists(filePath)){Console.WriteLine("错误: 文件不存在!");return;}// 3. 读取文件内容string htmlContent = File.ReadAllText(filePath);// 4. 输出内容长度验证Console.WriteLine($"成功读取文件,内容长度: {htmlContent.Length}字符");// 5. 这里可以继续处理htmlContent,比如传递给PuppeteerSharp生成PDF// GeneratePdf(htmlContent);// 2. 获取输出PDF路径//Console.Write("请输入输出PDF路径(默认: output.pdf): ");string pdfOutputPath = "D:\\output1.pdf";if (string.IsNullOrWhiteSpace(pdfOutputPath)){pdfOutputPath = "output.pdf";}Console.WriteLine("正在转换HTML为PDF...");// 3. 初始化浏览器实例var browser = await InitializeBrowser();// 4. 生成PDFvar pdfBytes = await GeneratePdf(browser, htmlContent);// 5. 保存PDF文件await File.WriteAllBytesAsync(pdfOutputPath, pdfBytes);Console.WriteLine($"转换完成! PDF已保存到: {Path.GetFullPath(pdfOutputPath)}");}catch (Exception ex){Console.WriteLine($"发生错误: {ex.Message}");}Console.WriteLine("按任意键退出...");Console.ReadKey();}static async Task<IBrowser> InitializeBrowser(){Console.WriteLine("您可以手动下载Chromium并指定路径");//Console.Write("请输入本地Chrome/Chromium路径: ");var path = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe";return await Puppeteer.LaunchAsync(new LaunchOptions{ExecutablePath = path,Headless = true});}static async Task<byte[]> GeneratePdf(IBrowser browser, string htmlContent){using var page = await browser.NewPageAsync();// 设置HTML内容await page.SetContentAsync(htmlContent, new NavigationOptions{WaitUntil = new[] { WaitUntilNavigation.Networkidle0 },Timeout = 30000});// 生成PDF选项var pdfOptions = new PdfOptions{Format = PaperFormat.A4,PrintBackground = true,MarginOptions = new MarginOptions{Top = "20mm",Right = "20mm",Bottom = "20mm",Left = "20mm"},Scale = 0.7m};//var pdfOptions = new PdfOptions//{//    Width = "148mm",  // A5宽度//    Height = "210mm", // A5高度//    Landscape = true, // 设置为横向//    PrintBackground = true,//    MarginOptions = new MarginOptions//    {//        Top = "10mm",//        Right = "10mm",//        Bottom = "10mm",//        Left = "10mm"//    }//};//var pdfOptions = new PdfOptions//{//    // 设置A5横向尺寸(148mm × 210mm)//    Width = "210mm",  // 横向时宽度为210mm//    Height = "148mm", // 横向时高度为148mm//    Landscape = true, // 横向模式//    PrintBackground = true,//    MarginOptions = new MarginOptions//    {//        Top = "5mm",//        Right = "5mm",//        Bottom = "5mm",//        Left = "5mm"//    },//    Scale = 0.8m, // 确保不缩放//    PreferCSSPageSize = true // 使用CSS中定义的页面尺寸//};//var pdfOptions = new PdfOptions//{//    // 设置Com10横向尺寸(241mm × 105mm)//    Width = "241mm",  // 横向时宽度为241mm//    Height = "105mm", // 横向时高度为105mm//    Landscape = false, // 横向模式//    PrintBackground = true,//    MarginOptions = new MarginOptions//    {//        Top = "3mm",//        Right = "3mm",//        Bottom = "3mm",//        Left = "3mm"//    },//    Scale = 0.7m, // 建议保持1.0不缩放//    PreferCSSPageSize = false // 使用代码中定义的尺寸//};return await page.PdfDataAsync(pdfOptions);}}
}

 

http://www.jsqmd.com/news/40018/

相关文章:

  • 大气环流模式
  • 2025年隔音净化板制造厂权威推荐榜单:电子厂净化板/保温净化板/抗静电净化板源头厂家精选
  • 2025年阻燃泡沫批发厂家权威推荐榜单:防水泡沫/密封海绵/阻燃棉源头厂家精选
  • 2025年青年旅舍太空舱源头厂家综合推荐:太空舱民宿/旅游太空舱民宿/景观移动太空舱酒店设备精选指南
  • 动态主机配置协议(DHCP)中的中继机制及其配置方法
  • 使用神经网络处理逻辑异或门问题
  • MATLAB实现光谱特征波长提取
  • 支持服务器的文件同步软件提升数据管理效率
  • 2025年重庆吊装搬运公司权威推荐榜单:起重设备/专业吊装/起重机源头公司精选
  • 2025年快装集成墙板厂家权威推荐榜单:集成墙板整装/碳晶板整装/A级防火板整装源头厂家精选
  • JAVA根据对象属性名和对象实体获取对象中该属性名的某个注解
  • 2025年11月权威信息公布:轴连/水泵/转向/圆锥滚子/汽车水泵轴承源头厂家综合排名:徐州优力同创科技股份有限公司
  • 谱模式(Spectral model)
  • 2025年11月冷再生机/水泥板破碎机生产厂家推荐榜单:环硕建设领跑行业
  • 数据跨境传输如何提升速度的有效策略与实践
  • 2025年11月储能/新能源汽车/机器人/低空飞行器/工业线束生产厂家排行榜:技术实力与品质保障的全面解析
  • 知名内外网文件交换系统是什么?主要有哪几个特点?
  • dspy
  • MySQL DATETIME类型存储空间详解:从8字节到5字节的演变
  • 2025年11月水泥板破碎机和冷再生机供货源头厂家推荐排行榜前十名:行业权威解析江苏环硕建设有限公司
  • Spring Boot Security 实现后台权限管理系统(三)
  • ubuntu开机强制挂载windows分区
  • 2025年比较好的酒类纸箱包装厂家推荐及选购指南
  • IC系统测试实战
  • 2025年土陶泡菜坛直销厂家权威推荐榜单:陶瓷酒瓶/土陶酒坛/储酒坛源头厂家精选
  • TOMCAT Docker 容器化部署指南
  • Excel - lookup(), vlookup(), xlookup()
  • 信创浪潮下,国产DevOps平台如何乘风破浪?
  • 接口参照
  • RustFS 重要变更,让容器化部署更安全