写一个根据word模板动态填充参数生成pdf的Java程序
时间: 2023-02-11 15:48:56 浏览: 297
JAVA动态生成word和pdf.pdf
下面是一个根据 word 模板动态填充参数并生成 pdf 的 Java 程序示例:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Map;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
public class WordToPdf {
public static void main(String[] args) throws Exception {
// 定义参数
Map<String, String> params = new HashMap<>();
params.put("param1", "参数1");
params.put("param2", "参数2");
// 读取 word 文档
XWPFDocument doc = new XWPFDocument(new FileInputStream("template.docx"));
// 替换文本
for (XWPFParagraph p : doc.getParagraphs()) {
for (XWPFRun r : p.getRuns()) {
String text = r.getText(0);
for (Map.Entry<String, String> entry : params.entrySet()) {
text = text.replace("${" + entry.getKey() + "}", entry.getValue());
}
r.setText(text, 0);
}
}
// 保存文档
FileOutputStream fos = new FileOutputStream("output.docx");
doc.write(fos);
fos.close();
// 将文档转换成 pdf
Document pdfDoc = new Document();
PdfWriter pdfWriter = PdfWriter.getInstance(pdfDoc, new FileOutputStream("output.pdf"));
pdfDoc.open();
PdfReader pdfReader = new PdfReader(new FileInputStream("output.docx"));
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream("output.pdf"));
pdfDoc.close();
pdfStamper.close();
}
}
```
这段程序首先使用 Apache POI 库读取 word 文档,然后使用 HashMap 定义参数,替换文本中的参数占位符。接着将
阅读全文