資源簡介
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
評論
共有 條評論