spring-boot中怎么实现一个PDF打印功能
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章将为大家详细讲解有关spring-boot中怎么实现一个PDF打印功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.导入jar(一定要注意
千家信息网最后更新 2025年12月02日spring-boot中怎么实现一个PDF打印功能
这篇文章将为大家详细讲解有关spring-boot中怎么实现一个PDF打印功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
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工具类) **/@Log4j2public 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(Map tittle, List 关于spring-boot中怎么实现一个PDF打印功能就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
大小
字体
内容
数据
标题
功能
三个
工具
文件
文章
更多
知识
篇文章
部件
问题
不错
成功
一行
信息
单元
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
鸟数据库
数据库修改后天密码
安卓软件开发学了什么软件
修理安卓服务器
网络安全产品运营简历
福州市第二医院数据库招标
路由器服务器拒绝连接怎么办
帆软自带数据库连接
校园网网络安全保障体系
网络安全训练营配置示意图
网络技术应用试题粤教版
网络安全法错误的是
使命召唤18玩哪个服务器
宁波人工智能软件开发
图片的数据库类型有哪些
sql数据库书籍资料下载
行业人才数据库的重要性
中国引文数据库提供多种
网络安全国际合作研讨会
方舟怎样进多人服务器
网络技术对个人通讯的影响
java连接数据库编码
目前没有的产品或服务器
宽带服务器
软件开发师的入行资质
软件开发工程师可以自学吗
网络安全威胁事件查处
亚马逊服务器管理
济南软件开发编程公司
方舟怎样进多人服务器