java使⽤IText将数据导出为pdf⽂件(数据为excel表格样式)1.pom.xml导⼊使⽤的jar包<dependency><groupId>com.itextpdf</groupId><artifactId>itext-pdfa</artifactId><version>5.5.0</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency>2.直接上代码(数据导出为pdf⽂件,数据呈现样式为⾃定义excel表格样式,⽀持多页展⽰)public class DataToPdf {public static final String DEST = "pdf/tables.pdf";public static void main(String[] args) throws IOException, DocumentException {File file = new File(DEST);file.getParentFile().mkdirs();new DataToPdf().dataToPdf(DEST);}/*** 数据转pdf* @param dest* @throws IOException* @throws DocumentException*/public void dataToPdf(String dest) throws IOException, DocumentException {Document document = new Document();PdfWriter.getInstance(document, new FileOutputStream(dest));document.open();// 使⽤语⾔包字体BaseFont abf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);//字体Font font = new Font(abf, 8);//段落Paragraph p = new Paragraph("测试结算单", new Font(abf, 12, Font.BOLD));p.setAlignment(Paragraph.ALIGN_CENTER);document.add(p);//表格PdfPTable table = new PdfPTable(8);//numcolumns:列数table.setSpacingBefore(16f);//表格与上⾯段落的空隙//表格列创建并赋值PdfPCell cell = new PdfPCell(new Phrase("单位名称:测试有限公司", font));cell.setHorizontalAlignment(Element.ALIGN_LEFT);//居中cell.disableBorderSide(13);//去除左右上边框,保留下边框cell.setColspan(4);//合并列数table.addCell(cell);cell = new PdfPCell(new Phrase("⽇期:2020-06-05", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.disableBorderSide(13);cell.setColspan(3);table.addCell(cell);cell = new PdfPCell(new Phrase("单位(元)", font));cell.setHorizontalAlignment(Element.ALIGN_LEFT);cell.disableBorderSide(13);cell.setColspan(1);table.addCell(cell);//⾸⾏cell = new PdfPCell(new Phrase("期间", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setColspan(2);table.addCell(cell);cell = new PdfPCell(new Phrase("⽉份", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("分类", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("年利率", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("⽇利率", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("基数", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("利息", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("起始⽇:2020-03-26\n" +"结束⽇:2020-04-25", font));cell.setPadding(16f);cell.setVerticalAlignment(Element.ALIGN_CENTER);cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setRowspan(3);cell.setColspan(2);table.addCell(cell);cell = new PdfPCell(new Phrase("4", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("10598164.91", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("325.01", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("4", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("资⾦", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("1.10%", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("0.000031", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("-", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("-", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("4", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("资⾦", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("1.10%", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("0.000031", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("-", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("-", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("合计", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setColspan(7);table.addCell(cell);cell = new PdfPCell(new Phrase("325.01", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("会计制单:", font));cell.setHorizontalAlignment(Element.ALIGN_LEFT);cell.disableBorderSide(14);cell.setColspan(4);table.addCell(cell);cell = new PdfPCell(new Phrase("复核:", font));cell.setHorizontalAlignment(Element.ALIGN_LEFT);cell.disableBorderSide(14);cell.setColspan(4);table.addCell(cell);table.setSpacingBefore(16f);document.add(table);//下⼀页document.newPage();//段落Paragraph p1 = new Paragraph("下⼀页测试结算单", new Font(abf, 12, Font.BOLD)); p1.setAlignment(Paragraph.ALIGN_CENTER);document.add(p1);//表格table = new PdfPTable(8);//numcolumns:列数table.setSpacingBefore(16f);//表格与上⾯段落的空隙//表格列创建并赋值cell = new PdfPCell(new Phrase("单位名称:测试有限公司", font));cell.setHorizontalAlignment(Element.ALIGN_LEFT);//居中cell.disableBorderSide(13);//去除左右上边框,保留下边框cell.setColspan(4);//合并列数table.addCell(cell);cell = new PdfPCell(new Phrase("⽇期:2020-06-05", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.disableBorderSide(13);cell.setColspan(3);table.addCell(cell);cell = new PdfPCell(new Phrase("单位(元)", font));cell.setHorizontalAlignment(Element.ALIGN_LEFT);cell.disableBorderSide(13);cell.setColspan(1);table.addCell(cell);//⾸⾏cell = new PdfPCell(new Phrase("期间", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setColspan(2);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("⽇利率", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("基数", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("利息", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("起始⽇:2020-04-26\n" +"结束⽇:2020-05-25", font));cell.setPadding(16f);cell.setVerticalAlignment(Element.ALIGN_CENTER);cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setColspan(2);table.addCell(cell);cell = new PdfPCell(new Phrase("4", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("资⾦", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("1.10%", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("0.000031", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("10598164.91", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("325.01", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("合计", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setColspan(7);table.addCell(cell);cell = new PdfPCell(new Phrase("325.01", font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Phrase("会计制单:", font));cell.setHorizontalAlignment(Element.ALIGN_LEFT);cell.disableBorderSide(14);cell.setColspan(4);table.addCell(cell);cell = new PdfPCell(new Phrase("复核:", font));cell.setHorizontalAlignment(Element.ALIGN_LEFT);cell.disableBorderSide(14);cell.setColspan(4);table.addCell(cell);table.setSpacingBefore(16f);document.add(table);document.close();}}3.上述代码中对于IText字体设置可改:使⽤iText中的字体例:BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);使⽤Windows系统⾃带的字体例:BaseFont.createFont("C:/WINDOWS/Fonts/SIMYOU.TTF", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED); 使⽤外部引⼊的资源字体(例:BaseFont.createFont("/SIMYOU.TTF", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);4.上述代码⽣成的表格边框隐藏⽅式:1:代表上边框2:代表下边框4:代表左边框8:代表右边框//需要隐藏那些边框就把对应的值加起来,得到的和就是要设置的值//⽐如要隐藏左右边框就是 4+8=12cell.disableBorderSide(12);//左右没了具体例⼦://隐藏上边框cell.disableBorderSide(1);//隐藏下边框cell.disableBorderSide(2);//隐藏左、上边框cell.disableBorderSide(5);//隐藏左、下边框cell.disableBorderSide(6);//隐藏左、上、下边框cell.disableBorderSide(7);//隐藏右边框cell.disableBorderSide(8);//隐藏右、上边框cell.disableBorderSide(9);//隐藏右、下边框cell.disableBorderSide(10);//隐藏右、上、下边框cell.disableBorderSide(11);//隐藏左、右边框cell.disableBorderSide(12);//左右没了 //隐藏上、左、右边框cell.disableBorderSide(13);//只剩下 //隐藏下、左、右边框cell.disableBorderSide(14);//只剩上//隐藏全部cell.disableBorderSide(15);//全没了5.运⾏展⽰效果例:。