Java使用freemarker生成word文档并转pdf文档

Java使用freemarker生成word文档后转pdf

    • 先来看看效果图
    • 进入正题

项目需求: 为订单后生成对应的pdf文档,文档内包含图片。
方案一:使用freemarker和itext把html转pdf,存在中文乱码,宋体不识别,需下载simsun.ttc字体,空白占位符不识别等等问题,对前端依赖性较大,不推荐;
方案二:freemarker生成word文档后通过微软提供的openoffice工具转pdf文档;
方案三: freemarker生成word文档后通过aspose.words转pdf文档,该方式不需要安装插件,只需导入对应jar包就好,但生成pdf存在水印,需要进行破解;(aspose.words需要付费的哦,用于商业请授权购买正版)
方案四:python用pdfkit生成pdf,各位有时间自己研究吧;

先来看看效果图

Java使用freemarker生成word文档并转pdf文档_第1张图片

进入正题

1.生成pdf文档流程
1):准备一个word表格,然后另存为xml格式的文件;
2):为了便于观看文档结构和编辑代码,对xml文件进行格式化(在线格式化网址);
3):把xml文件的后缀名改为ftl,使用freemarker表达式进行数据的动态添加(模板中图片是以base64编码展示的,替换成自己的图片编码);
4):导入相关jar包;
5):通过freemarker模板引擎技术把ftl模板文件转为word文档;
6):通过aspose.words把word文档转为pdf文档,至此完成;

2.相关jar包准备

    
    
      org.freemarker
      freemarker
      2.3.22
    
    
    
    
      com.google.zxing
      javase
      3.0.0
    
	
	
	    com.aspose
	    aspose-words
	    14.7.0
	

因为我们用的破解版,所以请点击此处下载我给各位准备的aspose-words.jar和ftl模板( 提取码: jrs5)

2.开始我们的代码

文档生成工具类Xml2Word2Pdf.java

import com.aspose.words.Document;
import com.aspose.words.SaveFormat;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;
import freemarker.template.Configuration;
import freemarker.template.Template;
import org.springframework.util.StringUtils;
import sun.misc.BASE64Encoder;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;

/**
 * @Author: zzr-zhangs
 * @Date: 2020-01-14 13:12
 * 

你可能感兴趣的:(java,freemarker)