代码地址如下:
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组件试一下

效果图如下:
jHdn64hWt1BeAmUSbrL.jpg

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;}
}

效果图如下:

FFieSU7hB3yEO5Qeaso.jpg

三、程序目录结构

qGvvdMR0ts56R1yeePd.jpg
【电子签章】HTML格式合同转化成PDF文件

代码地址如下:
http://www.demodashi.com/demo/12476.html

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

【电子签章】HTML格式合同转化成PDF文件相关推荐

  1. 【电子签章】HTML格式合同转化成PDF文件 已下载

    代码下载地址: http://www.demodashi.com/demo/12476.html 一.主要思路 通过itextpdf 生成想要的pdf 文件 通过itextpdf 中 XMLWorke ...

  2. 使用PDF24Tools工具怎么将Word文档转化成PDF文件?

    Word和PDF格式的文件在日常办公中都是比较常用的文件格式,两者都可以用来记录文字内容,但是有些工作场景下可能需要特殊格式的文件才能使用,这时候我们就需要进行文档格式的转换. Word文档和PDF格 ...

  3. java itextpdf签章 根据关键字定位在pdf文件中的坐标

    最近接到个需求,根据所传关键字,定位关键字所在pdf文件中的坐标,然后盖章,其中所传参数还有关键字所在页数,和获取第几次出现的关键字,会传多个印章和关键字,每个印章对应一个关键字.自己先写了个简单de ...

  4. 在嵌入在html中的pdf电子签章,一种网页PDF中电子签章定位方法与流程

    本发明属于一种电子签章技术领域,具体涉及一种网页PDF中电子签章定位方法. 背景技术: 国密电子签章中的套章方法操作复杂,无法对电子文档中一次性加盖多个印章的,大大降低了盖章效率,尤其是无法在所有需要 ...

  5. 在基于ABP框架的前端项目VueElement项目中采用电子签章处理文件和打印处理

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  6. 汽车行业十大电子签章应用场景|文件线上签,业务化繁就简

    由于汽车行业的整个产业链环节众多: (汽车行业产业链体系) 每辆汽车要经过上游零部件的采购到整车生产制造,流经经销商(4S店),最终才能触及终端消费者. 从生产到销售,一辆汽车平均要签署"配 ...

  7. android读取带公章的pdf文件,APP中如何显示带电子签名的PDF文件

    之前碰到一个需求,需要在手机 APP 中显示 pdf 文件.经过调研发现,在电脑上的浏览器如 chrome.safari等,可以直接显示 pdf 文件.由此联想到,在 APP 中能否通过浏览器来加载显 ...

  8. PDF文件签名与盖章

    文章目录 前言 一.数字签名是什么? 二.数字签名的原理 三.PDF的签章 1.引入Nuget包 iTextSharp 2.核心代码 3.客户端调用 4.文档准备 效果 前言 最近看到互联网上越来越多 ...

  9. 不只是CAD电子签名,设计院电子签章还要有这些!

    如果说,建筑是面向未来的建设,勘察设计就是站在未来思考现在.当人工智能.物联网.大数据等前沿科技应用在逐渐落地,未来建筑也正在走近我们的生活,更丰富复杂的建筑信息和建设信息.更紧密的设备关联和更智能的 ...

  10. linux ubuntu下怎样将pdf格式文件转换为doc格式文件,Ubuntu环境下把word文档转成pdf,把pdf文件转成jpg...

    环境搭建 使用语言 python3 安装imagemagick(pdf转jpg是内部需要调用到此工具) apt-get install imagemagick 安装libreoffice(此工具用于将 ...

最新文章

  1. 网站性能优化的常用方法
  2. 开始做事了...............
  3. 技术实践 | Android 设备音视频兼容性适配
  4. matlab都有什么接口,介绍MATLAB与C++的几种接口方式
  5. Knative Eventing 中 Channel 如何注入默认 Provisioner
  6. python求平行四边形面积_python 已知平行四边形三个点,求第四个点的案例
  7. 转:EL表达式的11个内置对象
  8. 从源代码中加载res / values / dimension.xml中的维度值
  9. DDK nmake : error 解决方法
  10. 使用MyBatis后,DAO层的方法还能重载吗?
  11. tm影像辐射定标_Landsat5TM数据辐射定标.pdf
  12. qq浏览器 广告拦截插件abp_【浏览器插件推荐】如何让QQ浏览器变得更加的高效...
  13. windows-API劫持(API-HOOK)
  14. 服务器提权常见方法介绍
  15. 学习springboot整合mybatis并编写测试类
  16. 聊天室之-----界面的问题用到的curses
  17. android 9 8 对比,米9安卓对比荣耀Flyme 8,这几点不同拉开了差距!
  18. 笑出腹肌!程序员从不撒谎,但注释却会!
  19. web开发学习,HTML标签语义化
  20. canvas制作旋转的太极图

热门文章

  1. ODOO12 自定义销售报价单样式
  2. Android第一行代码源码分享
  3. [网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密
  4. 极限编程和极限编程方法采用的有效的开发实践
  5. Feem(局域网文件传输工具)v4.3.0官方版
  6. SAP MM采购仓储入门视频教程——适合新手入门学习
  7. 嵌入式Linux--使用libpng库解码png图片
  8. matlab中饱和函数怎么写,matlab中饱和函数如何表示呢
  9. excel数据处理一:巧妙使用openpyxl提取、筛选数据
  10. JAVA实现大华摄像头WEB方式实时显示视频,H5界面展示方式思路