引用完成后,在代码页面加入如下命名空间
using iTextSharp.text; using iTextSharp.text.pdf;
/// <summary> /// 堆代码 duidaima.com /// 将Html文档转换为pdf /// </summary> /// <param name="htmlText"></param> /// <returns></returns> public byte[] ConvertHtmlTextToPDF(string htmlText) { if (string.IsNullOrEmpty(htmlText)) return null; //避免当htmlText无任何html tag标签的纯文字时,转PDF时会挂掉,所以一律加上<p>标签 htmlText = "<p>" + htmlText + "</p>"; using (var outputStream = new MemoryStream()) { byte[] data = Encoding.UTF8.GetBytes(htmlText); var msInput = new MemoryStream(data); var doc = new Document();//pdf文档,默认A4格式。 var writer = PdfWriter.GetInstance(doc, outputStream); doc.Open(); //使用XMLWorkerHelper把Html parse到PDF iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, msInput, null, Encoding.UTF8, new UnicodeFontFactory()); //指定默认缩放比例为100% var pdfDest = new PdfDestination(PdfDestination.XYZ, 0, doc.PageSize.Height, 1f); //将默认设置写入pdf var action = PdfAction.GotoLocalPage(1, pdfDest, writer); writer.SetOpenAction(action); doc.Close(); msInput.Close(); outputStream.Close(); return outputStream.ToArray(); } }3、Unicode 字体支持
/// <summary> /// Unicode 字体支持 /// </summary> public class UnicodeFontFactory : FontFactoryImp { public override Font GetFont(string fontname, string encoding, bool embedded, float size, int style, BaseColor color, bool cached) { //使用微软雅黑字体解决中文乱码的问题,因为雅黑字体为字体集合所以需要使用,0来指定具体的字体。 //var chineseFontPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "msyh.ttc,0"); //宋体 //BaseFont baseFont = BaseFont.CreateFont(@"c:\Windows\Fonts\simsun.ttc,0", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //黑体 BaseFont baseFont = BaseFont.CreateFont(@"c:\Windows\Fonts\SIMHEI.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //var baseFont = BaseFont.CreateFont(chineseFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); return new Font(baseFont, size, style, color); } }4、调用生成
string content = temp.Content; foreach (var dict in dicts) { content = content.Replace("{{" + dict.Key + "}}", dict.Value); } var path = _esignInfo.Value.ContractPath; //if (entity.ContractType == ContractType.First) //{ // path += "/" + appId + "/Agreements"; //} entity.OriginalFileUrl = _pdfHelper.WritePdfFile(content, contractNo, path, "PDF"); bool isSucc = !String.IsNullOrEmpty(entity.OriginalFileUrl);
总结:
以上就是.NET使用iTextSharp插件实现html转PDF的代码,iTextSharp是一款非常强大的,大家可以去官方的github项目地址查看一下其它详细的用法。
GitHub地址:https://github.com/itext/itextsharp