12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- 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("数据输出成功");
- }
- }
- }
|