Itext利用模板生成PDF实例demo,导入即可使用,唯一缺点就是表格数据循环次数不确定时,有可能造成分页,建议使用后台代码生成的PDF,可以带页码;见本人其他分享资源。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 8280 2011-04-05 23:00 利用模板生成pdf3_pdf_note.txt
文件 120669 2011-04-05 22:52 利用模板生成pdf3_to_pdf.pdf
文件 115612 2011-04-05 22:52 利用模板生成pdf3_to_pdf_export.pdf
文件 1613319 2011-03-22 16:07 利用模板生成pdfiText-5.0.6.jar
文件 332334 2011-03-22 19:37 利用模板生成pdfiTextAsian.jar
文件 2869266 2011-03-30 20:52 利用模板生成pdfiText_API.rar
文件 7284 2011-04-05 22:53 利用模板生成pdfTestPdf.java
目录 0 2018-03-29 13:38 利用模板生成pdf
----------- --------- ---------- ----- ----
5066764 8
package document.pdf;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Iterator;
import java.util.List;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.Image;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.html.simpleparser.HTMLWorker;
import com.itextpdf.text.html.simpleparser.styleSheet;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.baseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import com.itextpdf.text.pdf.PdfWriter;
public class TestPdf {
// http://prdownloads.sourceforge.net/itext/iTextAsian.jar
public static void main(String[] args) {
//createPDFWithChinese();
// createPdf();
fromPDFTempletToPdfWithValue();
//fromHtmlToPdf();
}
/**
* 根据pdf模板填充相应的值:
* 1,如果是根据excel填充的话,在用Acrobat生成PDF模板前,
* Excel单元格格式最好设置成文本,否则pdf填充值时可能中文无法显示
*/
public static void fromPDFTempletToPdfWithValue() {
String fileName = “d:/doc/3_to_pdf.pdf“; //
try {
PdfReader reader = new PdfReader(fileName);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
PdfStamper ps = new PdfStamper(reader bos);
/**
* 使用中文字体
* 如果是利用 AcroFields填充值的不需要在程序中设置字体,在模板文件中设置字体为中文字体就行了
*/
baseFont bf = baseFont.createFont(“STSong-Light““UniGB-UCS2-H“baseFont.NOT_embedDED);
Font FontChinese = new Font(bf 12 Font.NORMAL);
AcroFields s = ps.getAcroFields();
System.out.println(“s: “ + s);
System.out.println(“AcroFields: “ + s.getFields());
System.out.println(“AcroFields.class: “ + s.getFields().getClass());
System.out.println(“getSignatureNames: “ + s.getSignatureNames());
System.out.println(“getSignatureNames: “ + s.getTotalRevisions());
System.out.println(“s: “ + s.getBlankSignatureNames());
System.out.println(“s: “ + s.getFieldCache());
System.out.println(“s: “ + s.getSubstitutionFonts());
int i = 1;
for (Iterator it = s.getFields().keySet().iterator(); it.hasNext(); i++) {
String name = (String) it.next();
String value = s.getField(name);
System.out.println(“[“ + i + “- name:“ + name + “ value: “+value+“]“);
s.setField(““+name.trim() “aaa一二三“);
}
s.setField(“Text1“ “NOHI“);
s.setField(“Text2“ “2011-04-05“);//注意pdf中域的大小,这里设置的值太长,pdf中会显示不全
//设置为true/false在点击生成的pdf文档的填充域时有区别,
ps.setFormFlattening(true);
ps.close();
FileOutputStream fos = new FileOutputStream(“d:/d
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 8280 2011-04-05 23:00 利用模板生成pdf3_pdf_note.txt
文件 120669 2011-04-05 22:52 利用模板生成pdf3_to_pdf.pdf
文件 115612 2011-04-05 22:52 利用模板生成pdf3_to_pdf_export.pdf
文件 1613319 2011-03-22 16:07 利用模板生成pdfiText-5.0.6.jar
文件 332334 2011-03-22 19:37 利用模板生成pdfiTextAsian.jar
文件 2869266 2011-03-30 20:52 利用模板生成pdfiText_API.rar
文件 7284 2011-04-05 22:53 利用模板生成pdfTestPdf.java
目录 0 2018-03-29 13:38 利用模板生成pdf
----------- --------- ---------- ----- ----
5066764 8
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)