Itext实现导出PDF常用方法说明
生活随笔
收集整理的這篇文章主要介紹了
Itext实现导出PDF常用方法说明
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
場景
SpringBoot加itext實(shí)現(xiàn)PDF導(dǎo)出下載
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89475877
實(shí)現(xiàn)
1.設(shè)置響應(yīng)格式
?response.setContentType("application/pdf");response.setHeader("Expires", "0");response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");response.setHeader("Pragma", "public");2.設(shè)置紙張規(guī)格并創(chuàng)建文檔實(shí)例
//設(shè)置紙張規(guī)格為A4紙 Rectangle rect = new Rectangle(PageSize.A4); //創(chuàng)建文檔實(shí)例 Document doc=new Document(rect);3.添加中文字體
BaseFont bfChinese=BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);4.設(shè)置字體樣式
Font textFont = new Font(bfChinese,11, Font.NORMAL); //正常 //Font redTextFont = new Font(bfChinese,11,Font.NORMAL,Color.RED); //正常,紅色 Font boldFont = new Font(bfChinese,11,Font.BOLD); //加粗 //Font redBoldFont = new Font(bfChinese,11,Font.BOLD,Color.RED); //加粗,紅色 Font firsetTitleFont = new Font(bfChinese,22,Font.BOLD); //一級標(biāo)題 Font secondTitleFont = new Font(bfChinese,15,Font.BOLD, CMYKColor.BLUE); //二級標(biāo)題 Font underlineFont = new Font(bfChinese,11,Font.UNDERLINE); //下劃線斜體5.設(shè)置字體
com.itextpdf.text.Font FontChinese24 = new com.itextpdf.text.Font(bfChinese, 24, com.itextpdf.text.Font.BOLD);com.itextpdf.text.Font FontChinese18 = new com.itextpdf.text.Font(bfChinese, 18, com.itextpdf.text.Font.BOLD);com.itextpdf.text.Font FontChinese16 = new com.itextpdf.text.Font(bfChinese, 16, com.itextpdf.text.Font.BOLD);com.itextpdf.text.Font FontChinese12 = new com.itextpdf.text.Font(bfChinese, 12, com.itextpdf.text.Font.NORMAL);com.itextpdf.text.Font FontChinese11Bold = new com.itextpdf.text.Font(bfChinese, 11, com.itextpdf.text.Font.BOLD);com.itextpdf.text.Font FontChinese11 = new com.itextpdf.text.Font(bfChinese, 11, com.itextpdf.text.Font.ITALIC);com.itextpdf.text.Font FontChinese11Normal = new com.itextpdf.text.Font(bfChinese, 11, com.itextpdf.text.Font.NORMAL);6.設(shè)置要到處PDF響應(yīng)并設(shè)置導(dǎo)出PDF標(biāo)題
?
String title = "霸道流氓氣質(zhì)";response.setHeader("Content-disposition","attachment; filename=".concat(String.valueOf(URLEncoder.encode(title + ".pdf", "UTF-8"))));7.輸出流轉(zhuǎn)換
OutputStream out = response.getOutputStream(); PdfWriter.getInstance(doc,out); doc.open(); doc.newPage();8.新建段落
Paragraph?? p1 = new Paragraph("二級標(biāo)題", secondTitleFont);9.設(shè)置段落行高
?p1.setLeading(0);10.設(shè)置段落文本居中
?p1.setAlignment(Element.ALIGN_CENTER);11.將段落添加到文檔上
?doc.add(p1);12.設(shè)置空行
Paragraph blankRow1 = new Paragraph(18f, " ", FontChinese11); doc.add(blankRow1);13.新建表格列數(shù)為2
?PdfPTable table1 = new PdfPTable(2);14.給表格設(shè)置寬度
int width1[] = {80,60}; table1.setWidths(width1);15.新建單元格并賦值加設(shè)置字體
PdfPCell cell11 = new PdfPCell(new Paragraph("姓名:? "+name,boldFont));16.設(shè)置單元格邊框
cell11.setBorder(0);17.表格中添加單元格
table1.addCell(cell11);18.關(guān)閉文檔
doc.close();?
完整示例代碼
public void exportPdf(Long orderId, HttpServletRequest request, HttpServletResponse response) throws Exception {//設(shè)置響應(yīng)格式等response.setContentType("application/pdf");response.setHeader("Expires", "0");response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");response.setHeader("Pragma", "public");Map<String,Object> map = new HashMap<>();//設(shè)置紙張規(guī)格為A4紙Rectangle rect = new Rectangle(PageSize.A4);//創(chuàng)建文檔實(shí)例Document doc=new Document(rect);//添加中文字體BaseFont bfChinese=BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);//設(shè)置字體樣式Font textFont = new Font(bfChinese,11, Font.NORMAL); //正常//Font redTextFont = new Font(bfChinese,11,Font.NORMAL,Color.RED); //正常,紅色Font boldFont = new Font(bfChinese,11,Font.BOLD); //加粗//Font redBoldFont = new Font(bfChinese,11,Font.BOLD,Color.RED); //加粗,紅色Font firsetTitleFont = new Font(bfChinese,22,Font.BOLD); //一級標(biāo)題Font secondTitleFont = new Font(bfChinese,15,Font.BOLD, CMYKColor.BLUE); //二級標(biāo)題Font underlineFont = new Font(bfChinese,11,Font.UNDERLINE); //下劃線斜體//設(shè)置字體com.itextpdf.text.Font FontChinese24 = new com.itextpdf.text.Font(bfChinese, 24, com.itextpdf.text.Font.BOLD);com.itextpdf.text.Font FontChinese18 = new com.itextpdf.text.Font(bfChinese, 18, com.itextpdf.text.Font.BOLD);com.itextpdf.text.Font FontChinese16 = new com.itextpdf.text.Font(bfChinese, 16, com.itextpdf.text.Font.BOLD);com.itextpdf.text.Font FontChinese12 = new com.itextpdf.text.Font(bfChinese, 12, com.itextpdf.text.Font.NORMAL);com.itextpdf.text.Font FontChinese11Bold = new com.itextpdf.text.Font(bfChinese, 11, com.itextpdf.text.Font.BOLD);com.itextpdf.text.Font FontChinese11 = new com.itextpdf.text.Font(bfChinese, 11, com.itextpdf.text.Font.ITALIC);com.itextpdf.text.Font FontChinese11Normal = new com.itextpdf.text.Font(bfChinese, 11, com.itextpdf.text.Font.NORMAL);//設(shè)置要導(dǎo)出的pdf的標(biāo)題String title = "霸道流氓氣質(zhì)";response.setHeader("Content-disposition","attachment; filename=".concat(String.valueOf(URLEncoder.encode(title + ".pdf", "UTF-8"))));OutputStream out = response.getOutputStream();PdfWriter.getInstance(doc,out);doc.open();doc.newPage();//新建段落//使用二級標(biāo)題 顏色為藍(lán)色Paragraph?? p1 = new Paragraph("二級標(biāo)題", secondTitleFont);//設(shè)置行高p1.setLeading(0);//設(shè)置標(biāo)題居中p1.setAlignment(Element.ALIGN_CENTER);//將段落添加到文檔上doc.add(p1);//設(shè)置一個空的段落,行高為18? 什么內(nèi)容都不顯示Paragraph blankRow1 = new Paragraph(18f, " ", FontChinese11);doc.add(blankRow1);//新建表格 列數(shù)為2PdfPTable table1 = new PdfPTable(2);//給表格設(shè)置寬度int width1[] = {80,60};table1.setWidths(width1);//新建單元格String name="霸道";String gender="男";//給單元格賦值 每個單元格為一個段落,每個段落的字體為加粗PdfPCell cell11 = new PdfPCell(new Paragraph("姓名:? "+name,boldFont));PdfPCell cell12 = new PdfPCell(new Paragraph("性別:? "+gender,boldFont));//設(shè)置單元格邊框?yàn)?cell11.setBorder(0);cell12.setBorder(0);table1.addCell(cell11);table1.addCell(cell12);doc.add(table1);PdfPTable table3 = new PdfPTable(2);table3.setWidths(width1);PdfPCell cell15 = new PdfPCell(new Paragraph("博客主頁: https://me.csdn.net/BADAO_LIUMANG_QIZHI? ",boldFont));PdfPCell cell16 = new PdfPCell(new Paragraph("當(dāng)前時間:? "+DateConvert.formatDateToString(new Date(),DateStyle.YYYY_MM_DD),boldFont));cell15.setBorder(0);cell16.setBorder(0);table3.addCell(cell15);table3.addCell(cell16);doc.add(table3);doc.close();}?
效果
總結(jié)
以上是生活随笔為你收集整理的Itext实现导出PDF常用方法说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot加itext实现PD
- 下一篇: MybatisPlus条件构造器说明以及