这篇文章将为大家详细讲解有关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(Map tittle, List
关于spring-boot中怎么实现一个PDF打印功能就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
本文标题:spring-boot中怎么实现一个PDF打印功能
文章转载:
http://cdxtjz.cn/article/jsdjeo.html