• 大小: 20KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-24
  • 语言: Java
  • 标签: iText  PDF  导出  

资源简介

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


评论

共有 条评论