C#使用iTextSharp操作PDF文件
概述
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到PDFiTextSharp.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);//将默认设置写入pdfvar 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);
C#使用iTextSharp操作PDF文件相关推荐
- itex将html转成pdf加水印,itext操作PDF文件添加水印
功能描述:添加图片和文字水印 /** * * [功能描述:添加图片和文字水印] [功能详细描述:功能详细描述] * @param srcFile 待加水印文件 * @param destFile 加水 ...
- 使用ITEXT操作PDF文件
2019独角兽企业重金招聘Python工程师标准>>> 使用ITEXT操作PDF文件 pom.xml <dependency><groupId>com.ite ...
- bfo java_Java操作PDF文件(BFO) | 学步园
上一次我们用iText这个工具在Java环境下操作PDF文件,现在我们换一个工具:BFO iText的确小巧,但是功能也有限制,只能简单的生成PDF文件,BFO却不同,能设置字体.版面等元素. 最新版 ...
- 第19天---python办公自动化---操作PDF文件
第19天-python办公自动化-操作PDF文件 在Python中,可以使用名为PyPDF2的三方库来读取PDF文件,可以使用下面的命令来安装它. pip install PyPDF2 读取PDF并抽 ...
- bfo java_Java操作PDF文件(BFO)
上一次我们用iText这个工具在Java环境下操作PDF文件,现在我们换一个工具:BFO iText的确小巧,但是功能也有限制,只能简单的生成PDF文件,BFO却不同,能设置字体.版面等元素. 最新版 ...
- python 操作PDF文件 之 A3页面转A4
python 操作PDF文件 A3页面转A4页面 文章目录 1. 需求概述 2. 代码实现 1. 需求概述 最近接到一份PDF资料需要打印,奈何页面是如图所示的A3格式的,奈何目前条件只支持打印A4. ...
- day10 Python操作pdf文件
目录 一.PyPDF2的使用 1. pypdf2的使用 2. pypdf2的基本应用 3. 为PDF文件页面添加水印 二.reportlab的使用 0. 导入工具 1. 创建画布 2. 添加文字 3. ...
- Python使操作PDF文件变得有趣
大家好 我是毕加锁 (锁!) 大家在平时操作PDF文件时是不是感觉很枯燥 那么今天就教大家利用Python让操作PDF文件变得有趣起来 目录 工具 从PDF中提取文本 旋转和叠加页面 加密P ...
- itextsharp操作pdf——插入图片
itextsharp 插入图片操作 asp.net 用于审核后签字或者其他需要对pdf进行插入图片的操作. 在pdf添加图片方法: protected void AddImg(string oldP, ...
最新文章
- 2.monotouch 控件的使用
- 【C++】【三】单向链表
- mybatis中传入String类型参数异常
- 1001:Hello,World!
- java二叉树的实现_二叉树的实现(Java语言描述)
- 求素数为什么到平方根就行了
- 【转】C# Stream篇(—) -- Stream基类
- lnmp编译安装mysql_LNMP一键包不安装mysql | 厘米天空
- sublime能编译PHP吗,让sublime编译php、js
- 吊打Navicat?这款神器牛逼了~~ [ 必看 ]
- 加州大学洛杉矶计算机排名,加州大学洛杉矶分校计算机科学硕士排名第14(2020年TFE Times排名)...
- ROBOTSTUDIO学习
- python爬虫爬取网页内容
- FeignClient调用 Cannot deserialize instance of `java.lang.Boolean` out of START_OBJECT token to
- 鸟哥的Linux私房菜基础篇笔记--8
- Jetpack系列之Paging2.0 分页加载
- webshell一句话木马大全
- CSS实现三角形的原理
- layui分页功能在vue写的H5中实现
- 目前可以放google adsense的所有免费博客
热门文章
- html5/css3响应式布局介绍
- css判断不同分辨率显示不同宽度布局实现自适应宽度
- hdu3072 Intelligence System (最小树形图?)
- DateTimeToUnix/UnixToDateTime 对接时间转换
- Koa -- 基于 Node.js 平台的下一代 web 开发框架
- 关于Webapp的注意事项
- 转载 一篇UI规范文件
- java两个数之间质数求法,求任意两个整数之间质数的个数的代码!!!(新手编写)...
- 如何在Windows 10上跳过回收站以删除文件
- 计算机突然蓝屏无法启动_为什么计算机无法立即启动?