|
@@ -0,0 +1,82 @@
|
|
|
+import java.io.FileOutputStream;
|
|
|
+import java.sql.Connection;
|
|
|
+import java.sql.DriverManager;
|
|
|
+import java.sql.PreparedStatement;
|
|
|
+import java.sql.ResultSet;
|
|
|
+import java.sql.ResultSetMetaData;
|
|
|
+import com.itextpdf.text.BaseColor;
|
|
|
+import com.itextpdf.text.Document;
|
|
|
+import com.itextpdf.text.Element;
|
|
|
+import com.itextpdf.text.Font;
|
|
|
+import com.itextpdf.text.PageSize;
|
|
|
+import com.itextpdf.text.Paragraph;
|
|
|
+import com.itextpdf.text.pdf.BaseFont;
|
|
|
+import com.itextpdf.text.pdf.PdfPTable;
|
|
|
+import com.itextpdf.text.pdf.PdfWriter;
|
|
|
+
|
|
|
+public class PdfFromDB {
|
|
|
+ //数据表的字段数
|
|
|
+ private static final int colNum = 7;
|
|
|
+ //设置表格的属性
|
|
|
+ private static final int spacing = 1;
|
|
|
+ private static final int padding = 2;
|
|
|
+
|
|
|
+ public static void main(String[] args) throws Exception {
|
|
|
+ //支持中文
|
|
|
+ BaseFont baseFontChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
|
|
|
+ Font fontChinese =new Font(baseFontChinese,12,Font.NORMAL);
|
|
|
+ //定义一个文档对象
|
|
|
+ Document document = new Document(PageSize.A4.rotate(),10,10,10,10);
|
|
|
+ //连接数据库
|
|
|
+ Connection conn = null;
|
|
|
+ DBConnection db = new DBConnection();
|
|
|
+ conn = db.getDB();
|
|
|
+
|
|
|
+ try {
|
|
|
+ //在文档中创建一个PDF文件
|
|
|
+ PdfWriter.getInstance(document, new FileOutputStream("C:\\Users\\ASUS\\Desktop\\student.pdf"));
|
|
|
+ document.open();
|
|
|
+ //设置有几列
|
|
|
+ PdfPTable table = new PdfPTable(colNum);
|
|
|
+ //设置字段单元格的相对大小
|
|
|
+ int[] cellsWidth = {6,5,5,2,3,8,2};
|
|
|
+ table.setWidths(cellsWidth);
|
|
|
+ //设置表格占文档的大小比例
|
|
|
+ table.setWidthPercentage(90);
|
|
|
+ table.getDefaultCell().setPadding(padding);
|
|
|
+ table.getDefaultCell().setBorderWidth(spacing);
|
|
|
+ //设置单元格文本居中
|
|
|
+ table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
|
|
|
+ //查询语句
|
|
|
+ String sql = "select * from student";
|
|
|
+ //执行查询语句
|
|
|
+ PreparedStatement ps = conn.prepareStatement(sql);
|
|
|
+ //获取结果集
|
|
|
+ ResultSet rs = ps.executeQuery();
|
|
|
+ //获取表格的字段描述信息
|
|
|
+ ResultSetMetaData metaData = rs.getMetaData();
|
|
|
+ //添加字段
|
|
|
+ for(int i=0;i<colNum;i++){
|
|
|
+ //获取字段名
|
|
|
+ table.addCell(new Paragraph(metaData.getColumnLabel(i+1),fontChinese));
|
|
|
+ }
|
|
|
+ table.setHeaderRows(1); //表头设置结束,表示第一行属于表头
|
|
|
+ table.getDefaultCell().setBorderWidth(1);
|
|
|
+ //将查询到的每一条数据作为单独的一行添加到pdf文件中
|
|
|
+ while(rs.next()){
|
|
|
+ for(int i=1;i<=colNum;i++){
|
|
|
+ table.addCell(new Paragraph(rs.getString(i),fontChinese));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //将表格添加到文档中
|
|
|
+ document.add(table);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ conn.close();
|
|
|
+ document.close();
|
|
|
+ System.out.println("数据输出成功");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|