资源简介

Itext利用模板生成PDF实例demo,导入即可使用,唯一缺点就是表格数据循环次数不确定时,有可能造成分页,建议使用后台代码生成的PDF,可以带页码;见本人其他分享资源。

资源截图

代码片段和文件信息

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  利用模板生成pdf\3_pdf_note.txt

     文件     120669  2011-04-05 22:52  利用模板生成pdf\3_to_pdf.pdf

     文件     115612  2011-04-05 22:52  利用模板生成pdf\3_to_pdf_export.pdf

     文件    1613319  2011-03-22 16:07  利用模板生成pdf\iText-5.0.6.jar

     文件     332334  2011-03-22 19:37  利用模板生成pdf\iTextAsian.jar

     文件    2869266  2011-03-30 20:52  利用模板生成pdf\iText_API.rar

     文件       7284  2011-04-05 22:53  利用模板生成pdf\TestPdf.java

     目录          0  2018-03-29 13:38  利用模板生成pdf

----------- ---------  ---------- -----  ----

              5066764                    8


评论

共有 条评论