C#代码实现HTML转PDF-----wkhtmltopdf.exe神器

本文介绍了如何在C#中利用wkhtmltopdf.exe工具将HTML转换为PDF,包括插件下载地址和执行语句示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.插件下载地址:http://wkhtmltopdf.org/downloads.html,如果要在代码中使用的话需要下载免安装的版本。

2.执行语句:wkhtmltopdf.exe 需要转换的文件路径(获取URL) 保存的文件路径

事例代码:

1.构造HTML代码,待$号的为待替换的内容

string strHtml = "<html>" +
                 "   <head>" +
                 "      <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />" +
                 "      <title></title>" +
                 "   </head>" +
                 "   <body>" +
                 "      <div style='padding: 20px 40px;border: 0px;'>" +
                 "         <h3 style='display: block;font-family: inherit;font-weight: 600;font-size: 32px;line-height:67px;text-align: center;border-bottom: 1px solid;margin-bottom: 25px;margin-top:0px;'>拒付理由书</h3>" +
                 "         <p><label style='text-decoration: underline;font-size: 22px;'>$UnitName</label>:</p>" +
                 "         <p style='text-indent:2em;font-size: 22px;line-height:35px;'>贵司$START_DATE至$END_DATE<label style='text-decoration: underline;'>$SYS_KIND</label>账单金额合计<label style='text-decoration: underline;'> $INVOICE_SUM </label>$CURRENCY_NAME,$REFUSE_INFO共拒付<label style='text-decoration: underline;'> $INVOICE_PROTEST_SUM </label>$CURRENCY_NAME,实际应付金额合计<label style='text-decoration: underline;'> $INVOICE_DUE_SUM </label>$CURRENCY_NAME,具体拒付明细已邮件发送贵公司,并已回复确认。请备存。</p>" +
                 "         <p> </p>" +
                 "         <p style='text-align:right;font-size: 22px;'>$USER_INFO  </p>" +
                 "         <p style='text-align:right;font-size: 22px;'>$SYS_TIME  </p>" +
                 "      </div>" +
                 "    </body>" +
                 "</html>";
2.替换HTML中的内容

var strNewHtml = strHtml.Replace("$UnitName", SumData.UNIT_NAME).Replace("$START_DATE", SumData.START_INVOICE_DATE)
                    .Replace("$END_DATE", SumData.END_INVOICE_DATE).Replace("$SYS_KIND", SumData.INVOICE_KIND_NAME + sysName)
                    .Replace("$INVOICE_SUM", Convert.ToDouble(SumData.INVOICE_SUM).ToString("N")).Replace("$CURRENCY_NAME", SumData.CURRENCY_NAME)
                    .Replace("$REFUSE_INFO", SumData.REFUSE_INFO).Replace("$INVOICE_PROTEST_SUM", Convert.ToDouble(SumData.INVOICE_PROTEST_SUM).ToString("N"))
                    .Replace("$INVOICE_DUE_SUM", Convert.ToDouble(SumData.INVOICE_DUE_SUM).ToString("N"))
                    .Replace("$USER_INFO", _UserInfo.CorpName + _UserInfo.DeptName).Replace("$SYS_TIME", DateTime.Now.ToString("yyyy年MM月dd日"));

3.将HTML保存成文件或者的一个新页面(这里的做法是保存成文件)

 string fileName = AppDomain.CurrentDomain.BaseDirectory + @"PDF/OUTPUTPDF/ProtestPrint.html";
 FileStream _file = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite);                
 using (StreamWriter sw = new StreamWriter(_file))
 {
    sw.WriteLine(strNewHtml);
    sw.Flush();
    sw.Close();
    _file.Close();
 }
4.将文件转成PDF

string WkHtmlToPdf_URL = AppDomain.CurrentDomain.BaseDirectory + @"wkhtmltopdf/bin/wkhtmltopdf.exe";
string savePath = AppDomain.CurrentDomain.BaseDirectory + @"PDF/OUTPUTPDF/" + ProtestInstructions.PROTEST_INSTRUCTIONS_NO + ".pdf";
//执行wkhtmltopdf.exe 
Process p = System.Diagnostics.Process.Start(WkHtmlToPdf_URL, fileName + " " + savePath);
//若不加这一行,程序就会马上执行下一句而抓不到文件发生意外:System.IO.FileNotFoundException: 找不到文件 ''。 
p.WaitForExit();
//把文件读进文件流
System.IO.FileStream fs = new System.IO.FileStream(savePath, System.IO.FileMode.Open);
byte[] file = new byte[fs.Length];
fs.Read(file, 0, file.Length);
fs.Close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值