马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
pom
- <!--生成pdf-->
- <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";
- }
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |