【电子签章】HTML格式合同转化成PDF文件
代码地址如下:
http://www.demodashi.com/demo/12476.html
一、主要思路
- 通过itextpdf 生成想要的pdf 文件
- 通过itextpdf 中 XMLWorkerHelper 组件将html 转化成 pdf 文件
- 针对中文字符使用itext-asian进行中文字符处理
二、程序实现
1.添加程序依赖
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.12</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency><dependency><groupId>com.itextpdf.tool</groupId><artifactId>xmlworker</artifactId><version>5.5.12</version></dependency>
2.使用itextpdf生成pdf
/*** 绘制一个PDF文件* @param target 生成地址*/public static void draw(String target) throws IOException, DocumentException {Document document = new Document(PageSize.B5,20,20,30,20);PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(target));document.open();// 设置文档属性document.addAuthor("Geek");document.addCreationDate();document.addCreator("http://www.demodashi.com/");document.addTitle("Geek Pdf Demo");document.addSubject("PDF生成的Demo");// 设置中文字体和字体样式BaseFont chineseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);Font font = new Font(chineseFont, 10, Font.NORMAL);Font font1 = new Font(chineseFont, 8, Font.NORMAL);// 设置编号Paragraph paragraph = new Paragraph("编号:A08485743-1", font1);paragraph.setAlignment(Element.ALIGN_RIGHT);document.add(paragraph);// 创建表格PdfPTable pdfTable = new PdfPTable(2);float[] widths = {0.06f, 0.06f};pdfTable.setWidths(widths);//设置表格占PDF文档100%宽度pdfTable.setWidthPercentage(100);//水平方向表格控件居中pdfTable.setHorizontalAlignment(PdfPTable.ALIGN_CENTER);PdfPCell Cell = new PdfPCell();Cell.setColspan(2);Cell.setPhrase(new Paragraph("支付宝还款电子回单", font));Cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);Cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);pdfTable.addCell(Cell);PdfPCell Cell1 = new PdfPCell();Cell1.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);Cell1.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);Cell1.setPhrase(new Paragraph("支付宝还款电子回单", font));pdfTable.addCell(Cell1);Cell1.setPhrase(new Paragraph("11", font));pdfTable.addCell(Cell1);document.add(pdfTable);document.close();writer.close();}
这里只是一个简单的小例子,复杂的结构,还需要了解下itextpdf的组件.
顺便提一句,在这种情况下也可以尝试pdfbox组件试一下
效果图如下:
3.将html文件模板转化成pdf
在实际应用中,大部分的合同同时html格式的,但是在一些系统中,需要对合同的法律效力进行认证。这时就会用到电子签章,目前国内的签章系统大多是对PDF文件进行签章。所以很多公司就会使用HTML转PDF的格式。转换的工具很多,但是的确不怎么好用。
现在给大家推荐这种方式,也是我们线上使用的方式,效果很不错。
public static void draw(String src,String target)throws IOException, DocumentException{Document document = new Document(PageSize.B5,20,20,30,20);PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(target));document.open();XMLWorkerHelper.getInstance().parseXHtml(writer, document, new FileInputStream(src), null, Charset.forName("UTF-8"),new ChineseFontProvider(6));document.close();}
itextpdf是老外们做的插件,所以对中文不是特别友好,好在推出了中文包,但是需要稍作修改
/*** @Description: 中文处理* @File: ChineseFontProvider* @author: Geek* @date 2018/1/25 上午11:25*/
public class ChineseFontProvider extends XMLWorkerFontProvider {private int fontSize;public ChineseFontProvider(){this.fontSize = 0;}public ChineseFontProvider(int fontSize){this.fontSize = fontSize;}@Overridepublic Font getFont(final String fontname, final String encoding,final boolean embedded, final float size, final int style,final BaseColor color) {BaseFont bf = null;try {bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);} catch (DocumentException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}Font font = null;if (fontSize != 0){font = new Font(bf, fontSize, style, color);} else {font = new Font(bf, size, style, color);}font.setColor(color);return font;}public int getFontSize() {return fontSize;}public void setFontSize(int fontSize) {this.fontSize = fontSize;}
}
效果图如下:
三、程序目录结构
【电子签章】HTML格式合同转化成PDF文件
代码地址如下:
http://www.demodashi.com/demo/12476.html
注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权
【电子签章】HTML格式合同转化成PDF文件相关推荐
- 【电子签章】HTML格式合同转化成PDF文件 已下载
代码下载地址: http://www.demodashi.com/demo/12476.html 一.主要思路 通过itextpdf 生成想要的pdf 文件 通过itextpdf 中 XMLWorke ...
- 使用PDF24Tools工具怎么将Word文档转化成PDF文件?
Word和PDF格式的文件在日常办公中都是比较常用的文件格式,两者都可以用来记录文字内容,但是有些工作场景下可能需要特殊格式的文件才能使用,这时候我们就需要进行文档格式的转换. Word文档和PDF格 ...
- java itextpdf签章 根据关键字定位在pdf文件中的坐标
最近接到个需求,根据所传关键字,定位关键字所在pdf文件中的坐标,然后盖章,其中所传参数还有关键字所在页数,和获取第几次出现的关键字,会传多个印章和关键字,每个印章对应一个关键字.自己先写了个简单de ...
- 在嵌入在html中的pdf电子签章,一种网页PDF中电子签章定位方法与流程
本发明属于一种电子签章技术领域,具体涉及一种网页PDF中电子签章定位方法. 背景技术: 国密电子签章中的套章方法操作复杂,无法对电子文档中一次性加盖多个印章的,大大降低了盖章效率,尤其是无法在所有需要 ...
- 在基于ABP框架的前端项目VueElement项目中采用电子签章处理文件和打印处理
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...
- 汽车行业十大电子签章应用场景|文件线上签,业务化繁就简
由于汽车行业的整个产业链环节众多: (汽车行业产业链体系) 每辆汽车要经过上游零部件的采购到整车生产制造,流经经销商(4S店),最终才能触及终端消费者. 从生产到销售,一辆汽车平均要签署"配 ...
- android读取带公章的pdf文件,APP中如何显示带电子签名的PDF文件
之前碰到一个需求,需要在手机 APP 中显示 pdf 文件.经过调研发现,在电脑上的浏览器如 chrome.safari等,可以直接显示 pdf 文件.由此联想到,在 APP 中能否通过浏览器来加载显 ...
- PDF文件签名与盖章
文章目录 前言 一.数字签名是什么? 二.数字签名的原理 三.PDF的签章 1.引入Nuget包 iTextSharp 2.核心代码 3.客户端调用 4.文档准备 效果 前言 最近看到互联网上越来越多 ...
- 不只是CAD电子签名,设计院电子签章还要有这些!
如果说,建筑是面向未来的建设,勘察设计就是站在未来思考现在.当人工智能.物联网.大数据等前沿科技应用在逐渐落地,未来建筑也正在走近我们的生活,更丰富复杂的建筑信息和建设信息.更紧密的设备关联和更智能的 ...
- linux ubuntu下怎样将pdf格式文件转换为doc格式文件,Ubuntu环境下把word文档转成pdf,把pdf文件转成jpg...
环境搭建 使用语言 python3 安装imagemagick(pdf转jpg是内部需要调用到此工具) apt-get install imagemagick 安装libreoffice(此工具用于将 ...
最新文章
- 网站性能优化的常用方法
- 开始做事了...............
- 技术实践 | Android 设备音视频兼容性适配
- matlab都有什么接口,介绍MATLAB与C++的几种接口方式
- Knative Eventing 中 Channel 如何注入默认 Provisioner
- python求平行四边形面积_python 已知平行四边形三个点,求第四个点的案例
- 转:EL表达式的11个内置对象
- 从源代码中加载res / values / dimension.xml中的维度值
- DDK nmake : error 解决方法
- 使用MyBatis后,DAO层的方法还能重载吗?
- tm影像辐射定标_Landsat5TM数据辐射定标.pdf
- qq浏览器 广告拦截插件abp_【浏览器插件推荐】如何让QQ浏览器变得更加的高效...
- windows-API劫持(API-HOOK)
- 服务器提权常见方法介绍
- 学习springboot整合mybatis并编写测试类
- 聊天室之-----界面的问题用到的curses
- android 9 8 对比,米9安卓对比荣耀Flyme 8,这几点不同拉开了差距!
- 笑出腹肌!程序员从不撒谎,但注释却会!
- web开发学习,HTML标签语义化
- canvas制作旋转的太极图
热门文章
- ODOO12 自定义销售报价单样式
- Android第一行代码源码分享
- [网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密
- 极限编程和极限编程方法采用的有效的开发实践
- Feem(局域网文件传输工具)v4.3.0官方版
- SAP MM采购仓储入门视频教程——适合新手入门学习
- 嵌入式Linux--使用libpng库解码png图片
- matlab中饱和函数怎么写,matlab中饱和函数如何表示呢
- excel数据处理一:巧妙使用openpyxl提取、筛选数据
- JAVA实现大华摄像头WEB方式实时显示视频,H5界面展示方式思路