扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这篇文章将为大家详细讲解有关spring-boot中怎么实现一个PDF打印功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
10年的禹王台网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整禹王台建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“禹王台网站设计”,“禹王台网站推广”以来,每个客户项目都认真落实执行。
1.导入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;// 建立一个Document对象 private static int maxWidth = 520; private static Font headfont;// 设置字体大小 private static Font keyfont;// 设置字体大小 private static Font textfont;// 设置字体大小 static { BaseFont bfChinese; try { bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); headfont = new Font(bfChinese, 10, Font.BOLD);// 设置字体大小 keyfont = new Font(bfChinese, 8, Font.BOLD);// 设置字体大小 textfont = new Font(bfChinese, 8, Font.NORMAL);// 设置字体大小 } catch (Exception e) { e.printStackTrace(); log.error(e.getMessage(), e); } } /** * 初始化文档 */ private static void initDocument(File file) { document = new Document();//每一次初始化一个document 不然会有问题 open()方法有问题 document.setPageSize(PageSize.A4);// 设置页面大小 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); } } /** * 创建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; } /** * 创建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; } /** * 创建 空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; } /** * 创建列 * * @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; } /** * 创建列 * * @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; } /** * 创建列 * * @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; } /** * 创建列 * * @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; } /** * 创建pdf */ public static String createPDF(Maptittle, List
关于spring-boot中怎么实现一个PDF打印功能就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流