LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#使用iTextSharp操作PDF文件

admin
2024年11月2日 22:2 本文热度 345

概述

html文件怎么转成PDF文件?有的招聘网上的简历导成DOC文件,不能直接使用,这样造成很大的困扰,那么它还有一个格式,那就是html格式。将文件导出成html格式,然后再转成PDF文件,这样便可以直接使用了。平常在项目中也是很多这样的需求,需要把内容转成pdf文件。

下面我们来看下使用  iTextSharp实现HTML转PDF的方法。

代码实现

1、nuget 安装iTextSharp。

using iTextSharp.text;using iTextSharp.text.pdf;

2、将Html文档转换为pdf。

  /// <summary>        /// 将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);


该文章在 2024/11/4 10:45:14 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved