這篇文章將為大家詳細(xì)講解有關(guān)spring-boot中怎么實(shí)現(xiàn)一個(gè)PDF打印功能,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
10年的禹王臺網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整禹王臺建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“禹王臺網(wǎng)站設(shè)計(jì)”,“禹王臺網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
1.導(dǎo)入jar(一定要注意版本,踩過很多坑)
com.itextpdf itextpdf 5.5.1 com.itextpdf itext-asian 5.2.0
2.工具類
package com.sungrow.sgframe.api.isolarapi.machineconfigservice.util; import com.itextpdf.text.*; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; import lombok.extern.log4j.Log4j2; import org.sg.tools.config.SungwsConfig; import org.sg.tools.util.UUIDUtil; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; /** * @author shihaifeng * @date 2019-09-29 11:03 * @desc (PDF工具類) **/ @Log4j2 public class PDFUtil { private static Document document = null;// 建立一個(gè)Document對象 private static int maxWidth = 520; private static Font headfont;// 設(shè)置字體大小 private static Font keyfont;// 設(shè)置字體大小 private static Font textfont;// 設(shè)置字體大小 static { BaseFont bfChinese; try { bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); headfont = new Font(bfChinese, 10, Font.BOLD);// 設(shè)置字體大小 keyfont = new Font(bfChinese, 8, Font.BOLD);// 設(shè)置字體大小 textfont = new Font(bfChinese, 8, Font.NORMAL);// 設(shè)置字體大小 } catch (Exception e) { e.printStackTrace(); log.error(e.getMessage(), e); } } /** * 初始化文檔 */ private static void initDocument(File file) { document = new Document();//每一次初始化一個(gè)document 不然會有問題 open()方法有問題 document.setPageSize(PageSize.A4);// 設(shè)置頁面大小 try { FileOutputStream fileOutputStream = new FileOutputStream(file); PdfWriter.getInstance(document, fileOutputStream) .setViewerPreferences(PdfWriter.PageModeUseThumbs); document.open(); } catch (Exception e) { e.printStackTrace(); log.error(e.getMessage(), e); } } /** * 創(chuàng)建table * * @param colNumber * @return */ private static PdfPTable createTable(int colNumber) { PdfPTable table = new PdfPTable(colNumber); try { table.setTotalWidth(maxWidth); table.setLockedWidth(true); table.setHorizontalAlignment(Element.ALIGN_CENTER); table.getDefaultCell().setBorder(1); } catch (Exception e) { e.printStackTrace(); log.error(e.getMessage(), e); } return table; } /** * 創(chuàng)建table * * @param widths * @return */ private PdfPTable createTable(float[] widths) { PdfPTable table = new PdfPTable(widths); try { table.setTotalWidth(maxWidth); table.setLockedWidth(true); table.setHorizontalAlignment(Element.ALIGN_CENTER); table.getDefaultCell().setBorder(1); } catch (Exception e) { e.printStackTrace(); log.error(e.getMessage(), e); } return table; } /** * 創(chuàng)建 空table * * @return */ private static PdfPCell createBlankTable() { PdfPCell cell = new PdfPCell(); cell.setVerticalAlignment(Element.ALIGN_MIDDLE); cell.setHorizontalAlignment(Element.ALIGN_CENTER); Paragraph paragraph = new Paragraph("", getPdfChineseFont()); cell.setPhrase(paragraph); return cell; } /** * 創(chuàng)建列 * * @param value * @param font * @param align * @return */ private PdfPCell createCell(String value, Font font, int align) { PdfPCell cell = new PdfPCell(); cell.setVerticalAlignment(Element.ALIGN_MIDDLE); cell.setHorizontalAlignment(align); Paragraph paragraph = new Paragraph(String.valueOf(value), getPdfChineseFont()); cell.setPhrase(paragraph); return cell; } /** * 創(chuàng)建列 * * @param value * @param font * @return */ private static PdfPCell createHeadCell(String value, Font font) { PdfPCell cell = new PdfPCell(); cell.setVerticalAlignment(Element.ALIGN_MIDDLE); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setBackgroundColor(new BaseColor(22022022)); cell.setFixedHeight(25.0f); Font headFont = getPdfChineseFont(); headFont.setColor(new BaseColor(0xff0000)); headFont.setSize(14); headFont.setStyle("bold"); Paragraph paragraph = new Paragraph(String.valueOf(value), headFont); cell.setPhrase(paragraph); return cell; } /** * 創(chuàng)建列 * * @param value * @param font * @param rowSpan 占多列 * @param colspan 占多行 * @return */ private static PdfPCell createCell(String value, Font font, int rowSpan, int colspan) { PdfPCell cell = new PdfPCell(); cell.setVerticalAlignment(Element.ALIGN_MIDDLE); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setRowspan(rowSpan); cell.setColspan(colspan); Paragraph paragraph = new Paragraph(String.valueOf(value), getPdfChineseFont()); cell.setPhrase(paragraph); return cell; } /** * 創(chuàng)建列 * * @param value * @param font * @param align * @param colspan * @param boderFlag * @return */ private static PdfPCell createCell(String value, Font font, int align, int colspan, boolean boderFlag) { PdfPCell cell = new PdfPCell(); cell.setVerticalAlignment(Element.ALIGN_MIDDLE); cell.setHorizontalAlignment(align); cell.setColspan(colspan); Paragraph paragraph = new Paragraph(String.valueOf(value), getPdfChineseFont()); cell.setPhrase(paragraph); cell.setPadding(3.0f); if (!boderFlag) { cell.setBorder(0); cell.setPaddingTop(15.0f); cell.setPaddingBottom(8.0f); } return cell; } /** * 增加中文顯示 * * @return */ private static Font getPdfChineseFont() { BaseFont bfChinese = null; try { bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); } catch (DocumentException e) { e.printStackTrace(); log.error(e.getMessage(), e); } catch (IOException e) { e.printStackTrace(); log.error(e.getMessage(), e); } Font fontChinese = new Font(bfChinese, 12, Font.NORMAL); return fontChinese; } /** * 創(chuàng)建pdf */ public static String createPDF(Maptittle, List
關(guān)于spring-boot中怎么實(shí)現(xiàn)一個(gè)PDF打印功能就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。