项目中需求:将合同(word文件)生成pdf文档,并替换其中参数
目前实现:将word转换为html文件,然后以html文件为模板生成pdf文档
存在问题:转换为html后许多标签无法识别,需要检查标签是否匹配、闭合等。找问题耗时耗力。
解决方案:直接将word转换为pdf类型的模板。
需要引入如下jar包com.itextpdf.itext-asian.5.2.0和com.itextpdf.itextpdf.5.5.10
如果项目中使用Mavin,配置文件这样引入即可:
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.10</version>
</dependency>
代码如下:
package demo;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.AcroFields.Item;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfSmartCopy;
import com.itextpdf.text.pdf.PdfStamper;
public class PDFCreateDemo {
Map<String,String> paramMap = new HashMap<String, String>();
public PDFCreateDemo() {
paramMap.put("channelName", "测试中");
paramMap.put("rate", "0.008");
paramMap.put("custName", "张三");
paramMap.put("IdNo", "150402198412060311");
paramMap.put("amtCN", "壹仟元整");
paramMap.put("amt", "1000.00");
paramMap.put("monthRate", "0.0016%");
paramMap.put("istallMonth", "12");
paramMap.put("installDays", "1");
paramMap.put("firstYear", "2016");
paramMap.put("firstMonth", "12");
paramMap.put("firstDay", "01");
paramMap.put("yifang3", "2016年12月1日");
}
public void fillTemplate() {// 利用模板生成pdf
// 模板路径
String templatePath = "d:/heb/test/包银消费借款合同1.pdf";
// 生成的新文件路径
String newPDFPath = "d:/heb/test/newPdf.pdf";
PdfReader reader;
FileOutputStream out;
ByteArrayOutputStream bos;
PdfStamper stamper;
try {
out = new FileOutputStream(newPDFPath);// 输出流
reader = new PdfReader(templatePath);// 读取pdf模板
bos = new ByteArrayOutputStream();
stamper = new PdfStamper(reader, bos);
AcroFields form = stamper.getAcroFields();
BaseFont bf = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H",
false);
// form.setFieldProperty("Text1", "textsize", 10.0f, null);
for (String key : paramMap.keySet()) {
form.setFieldProperty(key, "textfont", bf, null);
form.setField(key, paramMap.get(key));
System.out.println(key + ":" + form.getField(key));
}
// 如果为false那么生成的PDF文件还能编辑,一定要设为true
stamper.setFormFlattening(true);
stamper.close();
Document doc = new Document();
PdfCopy copy = new PdfSmartCopy(doc, out);
int n = reader.getNumberOfPages();
doc.open();
for (int i = 1; i <= n; i++) {
doc.newPage();
PdfImportedPage imported = copy.getImportedPage(new PdfReader(bos.toByteArray()), i);
copy.addPage(imported);
}
doc.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println(1);
} catch (DocumentException e) {
e.printStackTrace();
System.out.println(2);
}
}
public static void main(String[] args) {
PDFCreateDemo pdfCreateDemo = new PDFCreateDemo();
pdfCreateDemo.fillTemplate();
}
}
分享到:
相关推荐
Java 生成 PDF 文件,解决中文乱码问题 Java 生成 PDF 文件,解决中文乱码问题是 Java 编程中常见的问题。解决这个问题的关键是正确地设置中文字体,以避免乱码问题。本文将通过一个完整的示例代码,详细讲解如何...
Java生成PDF文件是一种常见的需求,特别是在企业级应用中,用于生成报告、发票、合同等文档。iText是一个广泛使用的开源库,专为Java和.NET设计,用于创建和修改PDF文档。在Java中生成PDF文件,iText库是首选工具之...
在Java编程环境中,生成PDF...总的来说,Java生成PDF文件涉及到多个层次的技术,包括文档结构、内容呈现、I/O操作以及安全性等。通过学习和熟练掌握iText库,开发者可以构建功能强大的PDF生成工具,满足各种业务需求。
总的来说,Java 生成 PDF 文件主要涉及创建 `Document`,实例化 `PdfWriter`,打开和关闭文档,以及向文档中添加内容和元数据。`iText` 库提供了丰富的功能,包括表格、列表、图片、链接等,使得创建复杂的 PDF 文档...
在Java开发中,生成PDF文件是一项常见的需求,特别是在报表、文档和证书的生成场景中。Itext库是一个广泛使用的开源库,它允许开发者通过简单的API来创建和编辑PDF文档。本篇文章将深入探讨如何利用Itext库在Java中...
总的来说,Java生成PDF文档涉及的知识点包括:选择合适的库(如iText或PDFBox),理解PDF文档结构,使用库提供的API创建、添加内容,以及处理文字和图片的插入。通过熟练掌握这些技能,你可以在Java项目中灵活地生成...
首先,我们关注的是"JAVA生成PDF文件"。Java中常用的PDF库有iText、Apache PDFBox、 Flying Saucer等。这里提到了iText,它是一个强大的开源库,可以方便地创建、修改和操作PDF文档。使用iText,你可以添加文本、...
以上就是使用Java生成PDF文件并加盖公章图片,以及上传阿里云的基本步骤和涉及的关键技术点。实际开发中可能还需要根据具体需求进行调整,例如,公章的透明度、旋转角度等,都需要通过代码进行精确控制。
总结起来,生成包含表格的PDF文件在Java中涉及的关键技术点包括使用iText库,理解PDF文档的结构,掌握表格的创建和填充方法。如果你按照上述步骤并结合提供的代码资源,应该能够顺利地在Java项目中实现这一功能。...
一、Java生成PDF的基本原理 PDF文件的生成基于特定的规范,如ISO 32000-1。Java中生成PDF文件通常依赖于第三方库,这些库提供了API来创建、编辑和操作PDF文档。它们将PDF文档的结构化数据转化为符合PDF标准的二进制...
在Java编程环境中,生成PDF文件是一项常见的需求,特别是在需要创建报告、发票或任何类型的文档时。iText是一个流行的开源库,专门用于处理PDF文档。在这个主题中,我们将深入探讨如何使用iText在Java中生成PDF文件...
在Java编程环境中生成PDF文件是一项常见的任务,尤其在企业级应用中,如报表生成、文档输出等场景。PDF(Portable Document Format)是一种跨平台的文件格式,能够保持文档的原始排版和样式,使得文件在不同设备间...
用途:根据PDF模板生成PDF文件,将数据库查询的数据插入到模板指定未知,然后生成新的PDF文件 原理: 代码说明:exprotPDF_Main 为主文件。...支持各种java调用数据库数据,生成PDF文件。多个版本供参考。
前段时间由于项目需要,使用java生成PDF文件,然后将文件压缩成ZIP格式,同时对压缩文件进行加密,先将代码及jar包上传供大家参考,并希望大家...java生成PDF,java加密压缩文件并,java生成PDF后压缩ZIP文件并加密。
在Java编程环境中,生成PDF文件是一项常见的需求,特别是在报表、文档或者发票的自动化处理中。本Demo主要展示了如何通过生成HTML然后将其转换为PDF的方式来实现这一功能。下面将详细讲解这个过程涉及的关键知识点。...
java 开发中生成pdf格式文件需要的jar包,有了这些jar包,能生成自己想要的pdf文件。
在IT行业中,生成PDF文档是常见的需求,尤其是在Java Web应用中。这个压缩包"JAVA根据PDF模板生成PDF文件.rar"提供了实现这一功能的资源。主要包含一个Java类`PdfUtilsPic.java`,一个PDF模板文件`M8.pdf`,以及一个...