docx文件转pdf,支持数据源(文字和图片)替换。 字体链接在最下方!!!
poi 3.15版本。
替换word文件内容后直接通过fr.opensagres.xdocreport转成pdf。
org.apache.poi
ooxml-schemas
1.3
org.apache.poi
poi-ooxml
3.15
fr.opensagres.xdocreport
org.apache.poi.xwpf.converter.pdf
1.0.6
org.apache.poi
poi-ooxml
org.apache.poi
poi-ooxml-schemas
org.apache.poi
ooxml-schemas
package com.dz.demo.utils;
import org.apache.poi.POIXMLDocument;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.usermodel.*;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlToken;
import org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D;
import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
/**
* Created by dzwang on 2018/12/11.
*/
public class WordUtil {
private static Pattern pattern = Pattern.compile("\\$\\{[a-zA-Z_0-9:.#]+\\}");
/**
* 根据指定的参数值、模板,生成 word 文档
*
* @param param 需要替换的变量
* @param template 模板
*/
public static XWPFDocument generateWord(Map param, String template) {
XWPFDocument doc = null;
try {
OPCPackage pack = POIXMLDocument.openPackage(template);
doc = new XWPFDocument(pack);
if (param != null && param.size() > 0) {
//处理段落
List paragraphList = doc.getParagraphs();
processParagraphs(paragraphList, param, doc);
//处理表格
Iterator it = doc.getTablesIterator();
while (it.