Java实现HTML转换为PDF的常见方法
最近在自己的项目中需要动态生成融资单合同,这里需要把对应的html转换为对应的pdf融资合同。因此需要通过Java实现将HTML转PDF。自己之前没有接触过这一块的东西,所以上网查了一下,网上有很多的工具可以处理这个问题~但是,总是感觉有点杂乱无章。在处理的过程中,也遇到了很多坑~今天刚好有时间,简单总结一下~算是一个纪念吧~
先简单说一下我生成合同基本思路:
我们这里使用的是velocity引擎,进行数据的填充
1、业务方提供Word合同文档
2、将word文档转为html文件
此处需要注意,在转换的过程中,一定要注意标签格式要对应上。有开始标签,一定要结束标签。否者的话,在使用解析工具会解析失败的
如果本人不确定如何转换的话,可以登录这个网址在线转换,本人亲测没问题~
word抓换为html网址:http://www.docpe.com/word/word-to-html.aspx
3、将html文档转换为以.vm结尾的freemark模板
此处操作其实相对来说比较简单,其实只修改一下文件的后缀即可~
如原来的文件名"合同.html" 你直接修改"合同.vm"即可
4、在vm文件中填充对应的占位符,用于后期动态生成合同数据
在对应的合同的VM界面中,对于需要填充数据的地方,使用freemarker占位符处理一下
这样的话,在后期就可以动态填充数据了。
5、上传vm形式的合同模板到云存储上面
将对应的合同模板上传到京东云上面,这样每次需要生成对应的合同的时候,直接从云上面下载下来即可,考虑到性能的问题,你可以在首次下载
完成后,将对应的模板添加到缓存里面,用来提高性能。
6、获取到需要需要生成合同的数据,使用velocity(或freemarker)的填充占位符功能
生成合并后的html数据
7、使用转换工具,将html文件抓换为pdf合同
将html文件数据转换为pdf合同
8、上传合同数据到云上,并保存合同连接~
上传合同pdf到京东云上面,并且保存对应的合同连接~
下面我们重点介绍HTML生成PDF的几种常见方法:
方法一:
Java实现HTML转换为PDF的常见方法的更多相关文章
- Java反射机制涉及的类常见方法使用总结
import java.lang.reflect.Constructor; import java.lang.reflect.*; /*Class:代表一个字节码文件的对象,每当有类被加载进内存,JV ...
- 01.在Java中如何创建PDF文件
1.简介 在这篇快速文章中,我们将重点介绍基于流行的iText和PdfBox库从头开始创建 PDF 文档. 2. Maven 依赖 <dependency> <groupId> ...
- Java用OpenOffice将word转换为PDF
一. 软件安装以及jar包下载 官网的下载地址如下(英文): OpenOffice 下载地址http://www.openoffice.org/ JodConverter 下载地址http: ...
- java 调用OpenOffice将word格式文件转换为pdf格式
一:环境搭建 OpenOffice 下载地址http://www.openoffice.org/ JodConverter 下载地址http://sourceforge.net/projects/jo ...
- Java实现Html转PDF的方法
写在前面 以下路径问题根据项目结构自己修改,以下是我使用spring boot打成jar包的写法. 一.需求背景 在前端编辑器中输入任意的文本,包括css样式变化,保存为html文本.通过Java后台 ...
- Java使用Openoffice将word、ppt转换为PDF
最近项目中要实现WORD的文件预览功能,我们可以通过将WORD转换成PDF或者HTML,然后通过浏览器预览. OpenOffice OpenOffice.org 是一套跨平台的办公室软件套件,能在 W ...
- C#实现office文档转换为PDF或xps的一些方法( 转)
源博客http://blog.csdn.net/kable999/article/details/4786654 代码支持任意office格式 需要安装office 2007 还有一个office20 ...
- JAVA 长整型转换为IP地址的方法
JAVA 长整型转换为IP地址的方法 代码例如以下: /** * 整型解析为IP地址 * @param num * @return */ public static String int2iP(Lon ...
- Java中字符串的一些常见方法
1.Java中字符串的一些常见方法 /** * */ package com.you.model; /** * @author Administrator * @date 2014-02-24 */ ...
随机推荐
- 20165202 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:贾海粟 学号:20165202 指导教师:娄嘉鹏 实验日期:2018年4月16日 实验时间:15:3 ...
- 构建Uber端到端技术栈的十条经验(转载)
好文章就得分享: 一.SOA 系统设计包括若干个层面.先说顶层的系统设计原则,如 REST.SOA.由于 Uber 之前一直算一个创业公司,所以开发速度至关重要,由于微服务能够极大地促进不同组件的平行 ...
- PostgreSQL CPU满(100%)性能分析及优化(转)
PostgreSQL CPU满(100%)性能分析及优化 转自:https://help.aliyun.com/knowledge_detail/43562.html 在数据库运维当中,一个DB ...
- Jsoup教程,jsoup开发指南,jsoup中文使用手册,jsoup中文文档
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据. jsou ...
- 产生num个不重复的随机数组
createDiffRandom : function (from,to,num) { // 产生num个不重复的随机数组 var arr=[],json={}; // 随机数数组 , 标记json对 ...
- Shell 关闭指定进程
例如要关闭jupyter-notebook这个进程: - | 说明:管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入. “ps -ef” 查看所有进程 “grep -v g ...
- js之数码时钟加随机变色
HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- 【剑指offer】翻转单词顺序,C++实现
原创博文,转载请注明出处! 本题牛客网地址 本题代码的github地址 本系列文章的索引地址 # 题目 # 思路 两次翻转,第一次翻转整个句子,第二次翻转每个单词(单词之间用逗号隔开) # ...
- Encode Adjacent Letters
Encode a string by counting the consecutive letter. (i.e., "aaaabbxxxyyz" might become &qu ...
- Unity Obstacle分析
NavMeshObstacle Normal 通过设置半径和高度来设定障碍物,配合NavMesh使用. 优点: 简单易用,效率高 动态生成 缺点: 可能会被主角穿过,但目前没发现 形状固定为圆柱 Na ...