java生成pdf通过接口下载

作者 : admin 本文共2592个字,预计阅读时间需要7分钟 发布时间: 2024-06-10 共2人阅读

pom


<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.11</version>
</dependency>

demo

package com.example.controller;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfGState;
import com.itextpdf.text.pdf.PdfWriter;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.itextpdf.text.pdf.BaseFont;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
@RestController
@RequestMapping("pdf")
public class PdfController {
@GetMapping("/createPdfDownload")
public String createPdfToDownload(HttpServletResponse response) throws Exception {
// 生成 pdf 名称
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = simpleDateFormat.format(date);
String datetime = str.replace("-", "").replace(" ", "").replace(":","");
String filename = "pdf_"+datetime+"_content.pdf";
// 创建PDF
Document document = new Document(PageSize.A4,60,60,15,40);
try {
// 设置响应头,控制浏览器下载该文件
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
//常用的有paragraph段落、phrase语句块、chunk最小单位块
OutputStream out = response.getOutputStream();
PdfWriter writer = PdfWriter.getInstance(document, out);
// 打开文档
document.open();
BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
for(int n = 0; n<2; n++){
// 添加文字水印
PdfContentByte cb = writer.getDirectContent();
cb.beginText(); // 开始
// 设置透明度
PdfGState gs = new PdfGState();
gs.setFillOpacity(0.2f);
cb.setGState(gs);
cb.setFontAndSize(bfChinese,100);
cb.showTextAligned(Element.ALIGN_CENTER, "北京交通大学", 340, 410 , 60);
cb.endText(); // 结束
// 添加标题
//通过Font去设置字体的基本属性:大小,加粗等等
Font font  = new Font(bfChinese, 15, Font.NORMAL, BaseColor.BLACK);
// 创建段落
Paragraph title = new Paragraph("我是 title ", font);
title.setAlignment(Element.ALIGN_CENTER);
title.setSpacingBefore(40f);
document.add(title);
// 制作大文本数据
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i <= 10; i++){
stringBuilder.append("如果说荷兰是橙色的,那阿姆斯特丹就是缤纷的彩色。");
}
Font font1  = new Font(bfChinese, 10, Font.NORMAL, BaseColor.BLACK);
Paragraph context = new Paragraph(stringBuilder.toString(), font1);
context.setFirstLineIndent(20);
context.setLeading(12);
context.setSpacingBefore(10f);
document.add(context);
// 开启新的一页
document.newPage();
//显示空内容的页
writer.setPageEmpty(false);
}
// 关闭流
document.close();
writer.close();
} catch (IOException e) {
throw new RuntimeException(e);
} catch (DocumentException e) {
throw new RuntimeException(e);
}
return "ok";
}
}
本站无任何商业行为
个人在线分享 » java生成pdf通过接口下载
E-->