Itext利用模板生成PDFdemo,导入即可使用,供前台,打印,预览等


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  利用模板生成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


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)