1、pom文件中引入

<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian -->
<dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version>
</dependency>
<dependency><groupId>com.itextpdf.tool</groupId><artifactId>xmlworker</artifactId><version>5.5.11</version>
</dependency>

2、pdf样式类

package com.agileplat.supplychain.util;import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;public class PdfUtil {// 标准字体public static Font NORMALFONT;// 加粗字体public static Font BOLDFONT;//固定高public static float fixedHeight = 27f;//间距public static int spacing = 5;static {try {BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);NORMALFONT = new Font(bfChinese, 10, Font.NORMAL);BOLDFONT = new Font(bfChinese, 14, Font.BOLD);} catch (Exception e) {e.printStackTrace();}}public static Document createDocument() {//生成pdfDocument document = new Document();// 页面大小Rectangle rectangle = new Rectangle(PageSize.A4);// 页面背景颜色rectangle.setBackgroundColor(BaseColor.WHITE);document.setPageSize(rectangle);// 页边距 左,右,上,下document.setMargins(20, 20, 20, 20);return document;}/*** @param text 段落内容* @return*/public static Paragraph createParagraph(String text, Font font,int space) {Paragraph elements = new Paragraph(text, font);elements.setSpacingBefore(space);elements.setSpacingAfter(space);
//        elements.setSpacingAfter(spacing);return elements;}public static Font createFont(int fontNumber, int fontSize, BaseColor fontColor) {//中文字体 ----不然中文会乱码BaseFont bf = null;try {bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);return new Font(bf, fontNumber, fontSize, fontColor);} catch (Exception e) {e.printStackTrace();}return new Font(bf, Font.DEFAULTSIZE, Font.NORMAL, BaseColor.BLACK);}/*** 隐藏表格边框线** @param cell 单元格*/public static void disableBorderSide(PdfPCell cell) {if (cell != null) {cell.disableBorderSide(1);cell.disableBorderSide(2);cell.disableBorderSide(4);cell.disableBorderSide(8);}}/*** 创建居中得单元格** @return*/public static PdfPCell createCenterPdfPCell() {PdfPCell cell = new PdfPCell();cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setFixedHeight(fixedHeight);return cell;}/*** 创建指定文字得单元格** @param text* @return*/public static PdfPCell createCenterPdfPCell(String text, int rowSpan, int colSpan, Font font) {PdfPCell cell = new PdfPCell(new Paragraph(text, font));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_LEFT);cell.setFixedHeight(fixedHeight);cell.setRowspan(rowSpan);cell.setColspan(colSpan);return cell;}/*** @param len 表格列数* @return*/public static PdfPTable createPdfPTable(int len) {PdfPTable pdfPTable = new PdfPTable(len);pdfPTable.setSpacingBefore(5);pdfPTable.setHorizontalAlignment(Element.ALIGN_CENTER);return pdfPTable;}
}

3、controller下载类

@GetMapping("/exportPDF/{id}")
public void generatePDF(HttpServletResponse response,@PathVariable Long id) throws Exception {String filename = "测试pdf生成";// 设置下载格式为pdfresponse.setContentType("application/x-download");response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8") + ".pdf");cgddBzjService.generateCgddPDF(response);
}

4、service实现类

public void generateCgddPDF(HttpServletResponse response) throws IOException, DocumentException {OutputStream os = new BufferedOutputStream(response.getOutputStream());// 1. Document document = new Document();Document document = PdfUtil.createDocument();// 2. 获取writerPdfWriter.getInstance(document, os);// 3. open()document.open();//设置字体Font largeFont = PdfUtil.createFont(20, Font.NORMAL, BaseColor.BLACK);Font bigFont = PdfUtil.createFont(14, Font.NORMAL, BaseColor.BLACK);Font littleFont = PdfUtil.createFont(8, Font.NORMAL, BaseColor.BLACK);Font littleFontUnserline = PdfUtil.createFont(8, Font.UNDERLINE, BaseColor.BLACK);Paragraph title = PdfUtil.createParagraph("表头", largeFont,2);title.setAlignment(Element.ALIGN_CENTER);//定义数据的字体BaseFont baseFont = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);Font textFont = new Font(baseFont, 6, Font.NORMAL);//定义表格PdfPTable sjtable = new PdfPTable(new float[] { 10,20,30,50,20,20,30,30,40,40});sjtable.setTotalWidth(555);sjtable.setLockedWidth(true);sjtable.setHorizontalAlignment(Element.ALIGN_CENTER);//居左PdfPCell heardCell = new PdfPCell();heardCell.setVerticalAlignment(Element.ALIGN_MIDDLE);heardCell.setHorizontalAlignment(Element.ALIGN_CENTER);heardCell.setPhrase(new Phrase("序号", textFont));sjtable.addCell(heardCell);heardCell.setPhrase(new Phrase("品牌", textFont));sjtable.addCell(heardCell);heardCell.setPhrase(new Phrase("品名", textFont));sjtable.addCell(heardCell);heardCell.setPhrase(new Phrase("规格", textFont));sjtable.addCell(heardCell);heardCell.setPhrase(new Phrase("单位", textFont));sjtable.addCell(heardCell);heardCell.setPhrase(new Phrase("数量", textFont));sjtable.addCell(heardCell);heardCell.setPhrase(new Phrase("单价", textFont));sjtable.addCell(heardCell);heardCell.setPhrase(new Phrase("金额", textFont));sjtable.addCell(heardCell);heardCell.setPhrase(new Phrase("工号", textFont));sjtable.addCell(heardCell);heardCell.setPhrase(new Phrase("货期", textFont));sjtable.addCell(heardCell);PdfPCell endvalue = new PdfPCell();endvalue.setFixedHeight(20f);endvalue.setColspan(2);endvalue.setPhrase(new Phrase("备注:", textFont));PdfPCell endvalue2 = new PdfPCell();endvalue2.setColspan(3);endvalue2.setPhrase(new Phrase("", textFont));PdfPCell endvalue3 = new PdfPCell();endvalue3.setColspan(2);endvalue3.setPhrase(new Phrase("合计(元):", textFont));PdfPCell endvalue4 = new PdfPCell();endvalue4.setPhrase(new Phrase("", textFont));PdfPCell endvalue5 = new PdfPCell();endvalue5.setPhrase(new Phrase("", textFont));sjtable.addCell(endvalue);sjtable.addCell(endvalue2);sjtable.addCell(endvalue3);sjtable.addCell(endvalue4);sjtable.addCell(endvalue5);sjtable.addCell(endvalue5);// 4. 添加段落内容document.add(title);document.add(sjtable);// 5. close()document.close();os.close();
}

itextpdf代码生成pdf直接下载相关推荐

  1. spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具

    文章目录 前言 一.java 导出PDF 的几个工具 1. PDF Box 2. JasperReports/jFreeReport导出 报表 PDF 3. itextpdf 导出PDF(敲重点) 二 ...

  2. java pdf插件下载_java使用itextpdf插件生成pdf

    可以去mvn repository下载itext的jar包,需要的组件有两个,itextpdf-5.5.13和itext-asian-5.2.0(中文编译) maven库地址:https://mvnr ...

  3. 【Java中级篇】使用itextpdf生成PDF

    我们可以发现很多求职网站都会将我们录入的信息来生成一个PDF简历文件.所以我这里提供了用itextpdf生成的PDF的代码. 一.步骤 1.1.使用Adobe Acrobat Pro工具编辑PDF模板 ...

  4. java使用itextpdf生成PDF批量打印荣誉证书(指定位置输出文字)

    最近公司项目有个需求,批量打印荣誉证书,一开始尝试过传统的网络打印,控件打印,JS调用浏览器打印方法,遇到各种问题,比如定位不准,分页问题,​​缩放问题等.然后就自己研究,整理了一套打印方案,项目已测 ...

  5. java pdf工具类_Java PDF工具类(一)| 使用 itextpdf 根据PDF模板生成PDF(文字和图片)...

    Java PDF工具类(一)| 使用 itextpdf 根据设置好的PDF模板填充PDF(文字和图片) 相关文章: Java PDF工具类(二)| 使用 wkhtmltox 实现 HTML转PDF(文 ...

  6. Java——EasyPoi导出word文档,itextpdf转换pdf

    EasyPoi导出word文档,itextpdf转换pdf 文章目录 EasyPoi导出word文档,itextpdf转换pdf 前言 一.依赖 二.工具类 1.WordUtil 2.PDF工具类 3 ...

  7. 使用itextpdf在pdf模板中插入对应数据

    大家好今儿给大家带来的是使用itextpdf在pdf模板中插入对应数据 目录 大家好今儿给大家带来的是使用itextpdf在pdf模板中插入对应数据 1.需求描述 2.操作Adobe Acrobat ...

  8. java使用itextpdf生成pdf并填充自定义数据

    项目中有个需求,对于已有的数据生成对应的发票pdf或者合同pdf,这些pdf具有一些特性,就是pdf有固定的格式,类似于表格,我们只要往表格里面填充数据即可.当然,也会涉及到签章,二维码等需求. 总体 ...

  9. itextpdf通过pdf模板生成pdf文件

    itextpdf通过pdf模板生成pdf文件,设置粗体字体 1.创建pdf模板 2.使用模板生成pdf 3.itext自带的字体列表 4.遇到的坑 1.创建pdf模板 可以使用PDFFescape网站 ...

最新文章

  1. php经典操作,php数组的经典操作(遍历数组、基本操作)实例
  2. 2018-2019-1 20165212 20165313 2016522 实验一 开发环境的熟悉
  3. C# 计时函数精度测试
  4. idea test包_6.Flinkx如何在idea中运行?
  5. 【线上分享】云原生时代,华为云音视频质量监控与优化实践
  6. 计算机网络学习笔记-1.1.4-时延、 时延带宽积、RTT和利用率
  7. 太阳跟踪装置系统设计与制作
  8. HDU 6191 2017广西邀请赛Query on A Tree:可持久化01字典树(区间抑或最大值查询)
  9. 浏览器打开就是360导航(浏览器被360劫持)
  10. java与模式孙悟空_设计模式之原型模式 - chenxkang的个人空间 - OSCHINA - 中文开源技术交流社区...
  11. 阿姆斯特朗数——————还记得大明湖畔的水仙花么(笑)
  12. ue4人物动作_ue4人物动作资源Resource Gathering Animation418
  13. typora导出word指定样式_Word长文档排版以写论文为例
  14. 多款开源免费网络相册/相册系统源码推荐
  15. 计算机课听课心得体会,计算机心得体会(精选8篇).doc
  16. linuxprobe
  17. windows系统bat批处理 微信多开,软件多开
  18. 浅谈曲线的几何连续性
  19. 开发SNS游戏时关于用户头像跨域
  20. Unity城市虚拟搭建的时候,【房子】或【桥廊】跟随鼠标在【地面】或者【水面】移动

热门文章

  1. SCPI 可编程仪器标准命令
  2. 题目0074-时间格式化
  3. 双一流博士整理的计算机视觉学习路线(深度学习+传统图像处理)
  4. Vim配色方案和字体设置
  5. 如何让U盘同时兼容Windows和Mac OS X系统
  6. 强化学习在智能交通灯中的应用
  7. 【ElasticSearch】(四)—— RestClient操作ES
  8. Java毕设项目自行车在线租赁管理系统2021(java+VUE+Mybatis+Maven+Mysql)
  9. 注册登录系统python_注的解释|注的意思|汉典“注”字的基本解释
  10. FAQ-NE40E BGP邻居状态中的no neg代表什么含义