PdfFromDB.java 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import java.io.FileOutputStream;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.ResultSetMetaData;
  7. import com.itextpdf.text.BaseColor;
  8. import com.itextpdf.text.Document;
  9. import com.itextpdf.text.Element;
  10. import com.itextpdf.text.Font;
  11. import com.itextpdf.text.PageSize;
  12. import com.itextpdf.text.Paragraph;
  13. import com.itextpdf.text.pdf.BaseFont;
  14. import com.itextpdf.text.pdf.PdfPTable;
  15. import com.itextpdf.text.pdf.PdfWriter;
  16. public class PdfFromDB {
  17. //数据表的字段数
  18. private static final int colNum = 7;
  19. //设置表格的属性
  20. private static final int spacing = 1;
  21. private static final int padding = 2;
  22. public static void main(String[] args) throws Exception {
  23. //支持中文
  24. BaseFont baseFontChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
  25. Font fontChinese =new Font(baseFontChinese,12,Font.NORMAL);
  26. //定义一个文档对象
  27. Document document = new Document(PageSize.A4.rotate(),10,10,10,10);
  28. //连接数据库
  29. Connection conn = null;
  30. DBConnection db = new DBConnection();
  31. conn = db.getDB();
  32. try {
  33. //在文档中创建一个PDF文件
  34. PdfWriter.getInstance(document, new FileOutputStream("C:\\Users\\ASUS\\Desktop\\student.pdf"));
  35. document.open();
  36. //设置有几列
  37. PdfPTable table = new PdfPTable(colNum);
  38. //设置字段单元格的相对大小
  39. int[] cellsWidth = {6,5,5,2,3,8,2};
  40. table.setWidths(cellsWidth);
  41. //设置表格占文档的大小比例
  42. table.setWidthPercentage(90);
  43. table.getDefaultCell().setPadding(padding);
  44. table.getDefaultCell().setBorderWidth(spacing);
  45. //设置单元格文本居中
  46. table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
  47. //查询语句
  48. String sql = "select * from student";
  49. //执行查询语句
  50. PreparedStatement ps = conn.prepareStatement(sql);
  51. //获取结果集
  52. ResultSet rs = ps.executeQuery();
  53. //获取表格的字段描述信息
  54. ResultSetMetaData metaData = rs.getMetaData();
  55. //添加字段
  56. for(int i=0;i<colNum;i++){
  57. //获取字段名
  58. table.addCell(new Paragraph(metaData.getColumnLabel(i+1),fontChinese));
  59. }
  60. table.setHeaderRows(1); //表头设置结束,表示第一行属于表头
  61. table.getDefaultCell().setBorderWidth(1);
  62. //将查询到的每一条数据作为单独的一行添加到pdf文件中
  63. while(rs.next()){
  64. for(int i=1;i<=colNum;i++){
  65. table.addCell(new Paragraph(rs.getString(i),fontChinese));
  66. }
  67. }
  68. //将表格添加到文档中
  69. document.add(table);
  70. } catch (Exception e) {
  71. e.printStackTrace();
  72. } finally {
  73. conn.close();
  74. document.close();
  75. System.out.println("数据输出成功");
  76. }
  77. }
  78. }