概要
项目中,管理员需要编辑合同模板,客户根据模板填写信息后,系统生成pdf文件上传到远程端。我们的合同模板在项目中用的是富文本编辑,存储到数据库中是带有html标签的字符串。
html可以直接转为pdf,网上有很多工具/框架。也有人分析了各种工具的优劣。可自行搜索。这里使用的是iText框架
坑点
1.富文本编辑器编辑的文本是带有样式的,一定切记切记要前端把编辑器的样式文件给你!!!否则转换后的pdf没有样式
2.远程服务器(非win系统)中文显示不出来的问题,就是字体的问题。网上搜有三种方式,我这的处理是将1)win10系统的字体文件拷贝出来,放到项目的资源文件夹中,2)代码引入字体,3)在html的body标签加上字体<body style="font-family: SimSun;">
(字体可以换成其他的)
3.本地生成的pdf打开没问题,但上传到远程服务器后打不开。我怀疑是因为生成pdf后该文件被占用,没有及时释放该File 对象,导致上传的pdf被破坏。我的解决方式是将上传文件步骤与生成pdf分别写到两个方法,暂时这么处理(哪位大佬知道原因的可以告诉下嘛?)
4.itext转换pdf,对标签的要求比较高。html文件的标签一定要有头有尾,像<br>
要转换成<br/>
5.报没有document的错误时(具体错误信息忘了),首先考虑字体名称是不是写错了。
1 数据准备
富文本编辑页面:
保存到数据库是这样的:
<p class="ql-align-center"><strong>内容测试</strong></p><p><strong>甲方(出租方) :</strong></p><p><strong>乙方(承租方) :</strong></p><p>甲乙双方就乙方租赁甲方电梯轿厢设置看板媒体(以下简称“看板”)、刊发广告一</p><p>事进行友好协商,达成以下条款,双方共同执行:</p><p class="ql-align-center"><strong>第一条租赁地点</strong></p><p>甲方同意将市区花园(大厦/小区)共部电梯租赁给乙方设置看板,刊发广告。</p><p class="ql-align-center"><strong>第二条设置方式和范围</strong></p><p>1、看板设置于电梯轿厢壁上(超薄型,厚度不超过2cm、长度:、宽度: ;),用</p</