【java】 iText使用PDF模板生成输出PDF 这个比较清晰
2017-11-28 15:20
609 查看
转载自:http://blog.csdn.net/leeyefang/article/details/46805617
本文所要用到的工具或jar主要有:
Adobe Acrobat 这个主要用来制作PDF模板、eclipse、 itext.jar、 解决中文的输出问题,需要多下载一个名为iTextAsian.jar的JAR包。这个包里面定义了与中文输出相关的一些文件。
pdf模板效果如下:
JAVA代码:
[java] view
plain copy
package com.yfli.iText;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.AcroFields;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;
public class Test {
public static void main(String[] args) throws Exception {
test();
System.out.println("success");
}
public static void test() throws IOException, DocumentException {
String fileName = "F:/zxing/zs/zsTemp.pdf"; // pdf模板
PdfReader reader = new PdfReader(fileName);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
/* 将要生成的目标PDF文件名称 */
PdfStamper ps = new PdfStamper(reader, bos);
PdfContentByte under = ps.getUnderContent(1);
/* 使用中文字体 */
BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
ArrayList<BaseFont> fontList = new ArrayList<BaseFont>();
fontList.add(bf);
/* 取出报表模板中的所有字段 */
AcroFields fields = ps.getAcroFields();
fields.setSubstitutionFonts(fontList);
fillData(fields, data());
/* 必须要调用这个,否则文档不会生成的 */
ps.setFormFlattening(true);
ps.close();
OutputStream fos = new FileOutputStream("F:/zxing/zs/zsResult.pdf");
fos.write(bos.toByteArray());
fos.flush();
fos.close();
bos.close();
}
public static void fillData(AcroFields fields, Map<String, String> data)
throws IOException, DocumentException {
for (String key : data.keySet()) {
String value = data.get(key);
fields.setField(key, value); // 为字段赋值,注意字段名称是区分大小写的
}
}
public static Map<String, String> data() {
Map<String, String> data = new HashMap<String, String>();
data.put("name", "test:");
data.put("bianhao", "xx第10000001号");
data.put("amount", "1000");
data.put("date","2015年7月7日");
return data;
}
}
本文所要用到的工具或jar主要有:
Adobe Acrobat 这个主要用来制作PDF模板、eclipse、 itext.jar、 解决中文的输出问题,需要多下载一个名为iTextAsian.jar的JAR包。这个包里面定义了与中文输出相关的一些文件。
pdf模板效果如下:
JAVA代码:
[java] view
plain copy
package com.yfli.iText;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.AcroFields;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;
public class Test {
public static void main(String[] args) throws Exception {
test();
System.out.println("success");
}
public static void test() throws IOException, DocumentException {
String fileName = "F:/zxing/zs/zsTemp.pdf"; // pdf模板
PdfReader reader = new PdfReader(fileName);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
/* 将要生成的目标PDF文件名称 */
PdfStamper ps = new PdfStamper(reader, bos);
PdfContentByte under = ps.getUnderContent(1);
/* 使用中文字体 */
BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
ArrayList<BaseFont> fontList = new ArrayList<BaseFont>();
fontList.add(bf);
/* 取出报表模板中的所有字段 */
AcroFields fields = ps.getAcroFields();
fields.setSubstitutionFonts(fontList);
fillData(fields, data());
/* 必须要调用这个,否则文档不会生成的 */
ps.setFormFlattening(true);
ps.close();
OutputStream fos = new FileOutputStream("F:/zxing/zs/zsResult.pdf");
fos.write(bos.toByteArray());
fos.flush();
fos.close();
bos.close();
}
public static void fillData(AcroFields fields, Map<String, String> data)
throws IOException, DocumentException {
for (String key : data.keySet()) {
String value = data.get(key);
fields.setField(key, value); // 为字段赋值,注意字段名称是区分大小写的
}
}
public static Map<String, String> data() {
Map<String, String> data = new HashMap<String, String>();
data.put("name", "test:");
data.put("bianhao", "xx第10000001号");
data.put("amount", "1000");
data.put("date","2015年7月7日");
return data;
}
}
相关文章推荐
- 【java】 iText使用PDF模板生成输出PDF
- Java IText使用PDF模板 生成 输出PDF
- Java IText使用PDF模板 生成 输出PDF
- 【java】 iText使用PDF模板生成输出PDF
- java 使用itextpdf.jar和itext-asian.jar根据pdf模板填写数据后生成一个新的pdf文件
- Java iText使用PDF模板生成PDF文档
- java-pdf-itext7、itextpdf 生成pdf 文档,使用pdf模板生成(支持中文字体)
- 在Java代码中使用iTextPDF生成PDF
- itext使用模板生成pdf文件
- 使用ITEXT与JAVA生成PDF报表
- java使用iText生成pdf文档的对齐方式
- 使用Java组件itext生成pdf介绍
- 【Java】使用iText生成PDF文件
- itext使用模板生成pdf文件
- 用Java生成PDF,iText使用.
- 滴水穿石--Java 生成PDF文件--iText使用之入门
- 使用Java组件itext 生成pdf介绍
- java使用iText生成pdf:解决中文
- java使用iText生成pdf表格
- 滴水穿石--Java 生成PDF文件--iText使用之插入图片和中文乱码