資源簡介
java iText 實現從數據庫中導出數據到已有的PDF模板

代碼片段和文件信息
import?java.io.ByteArrayOutputStream;
import?java.io.FileNotFoundException;
import?java.io.FileOutputStream;
import?java.sql.Connection;
import?java.sql.DriverManager;
import?java.sql.ResultSet;
import?java.sql.Statement;
import?java.util.Iterator;
import?com.itextpdf.text.Font;
import?com.itextpdf.text.pdf.AcroFields;
import?com.itextpdf.text.pdf.baseFont;
import?com.itextpdf.text.pdf.PdfReader;
import?com.itextpdf.text.pdf.PdfStamper;
public?class?TestPdf?{
public?static?void?main(String[]?args)?{
fromPDFTempletToPdfWithValue();
}
/**
?*?根據pdf模板填充相應的值:
?*/
static?String[]?field?=?new?String[1000];
static?String[]?values?=?new?String[1000];
static?int?maxCount?=?0;
static?int?account?=?0;
String?a[]?=?{?“Name?Row?“?“Age?Row?“?“Sex?Row?“?“Add?Row?“?};
public?static?void?fromPDFTempletToPdfWithValue()?{
// 已有的PDF模板路徑
String?fileName?=?“C:/linloveTT.pdf“;?
Connection?con?=?null;
Statement?stm?=?null;
ResultSet?rs?=?null;
ResultSet?rs1?=?null;
int?rows?=?0;
try?{
Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver“);
con?=?DriverManager.getConnection(
“jdbc:sqlserver://localhost:1433;databaseName=test“?“sa“
“123“);
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);
baseFont?bf?=?baseFont.createFont(
“c://windows//fonts//simsun.ttc1“?baseFont.IDENTITY_H
baseFont.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());
stm?=?con.createStatement();
rs1?=?stm.executeQuery(“select?count(*)?from?student“);
if?(rs1.next())?{
// 獲取數據庫中表的總行數
rows?=?rs1.getInt(1);
System.out.println(“rows“?+?rows);
}
rs1.close();
rs?=?stm.executeQuery(“select?*?from?student“);
// 獲取列名總數
account?=?rs.getmetaData().getColumnCount();
int?i?=?1;
//????????????PDF模板中文本域的名稱集合
String?a[]?=?{?“Name?Row?“?“Age?Row?“?“Sex?Row?“?“Add?Row?“?};
for?(Iterator?it?=?s.getFields().keySet().iterator();?it.hasNext();?i++)?{
for?(int?k?=?1;?k?<=?account;?k++)?{
field[k]?=?rs.getmetaData().getColumnName(k);
//?s.setField(“Name?Row?“?+?k?field[k]);
}
while?(rs.next())?{
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????601??2011-09-30?15:24??TestPdf\.classpath
?????文件????????383??2011-09-30?11:41??TestPdf\.project
?????文件????????629??2011-09-30?11:41??TestPdf\.settings\org.eclipse.jdt.core.prefs
?????文件???????5591??2011-09-30?17:37??TestPdf\bin\TestPdf.class
?????文件??????15613??2011-09-30?17:20??TestPdf\linlelee.pdf
?????文件??????19776??2011-09-30?15:00??TestPdf\linlovett.pdf
?????文件???????4880??2011-09-30?17:37??TestPdf\src\TestPdf.java
?????文件??????24064??2011-09-30?17:43??TestPdf\注意事項.doc
?????目錄??????????0??2011-09-30?11:41??TestPdf\.settings
?????目錄??????????0??2011-09-30?15:24??TestPdf\bin
?????目錄??????????0??2011-09-30?11:42??TestPdf\src
?????目錄??????????0??2011-09-30?17:43??TestPdf
-----------?---------??----------?-----??----
????????????????71537????????????????????12
- 上一篇:CtoJavaConverter.rar
- 下一篇:生命游戲-java實現
評論
共有 條評論