itextpdf代码生成pdf直接下载
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直接下载相关推荐
- spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
文章目录 前言 一.java 导出PDF 的几个工具 1. PDF Box 2. JasperReports/jFreeReport导出 报表 PDF 3. itextpdf 导出PDF(敲重点) 二 ...
- java pdf插件下载_java使用itextpdf插件生成pdf
可以去mvn repository下载itext的jar包,需要的组件有两个,itextpdf-5.5.13和itext-asian-5.2.0(中文编译) maven库地址:https://mvnr ...
- 【Java中级篇】使用itextpdf生成PDF
我们可以发现很多求职网站都会将我们录入的信息来生成一个PDF简历文件.所以我这里提供了用itextpdf生成的PDF的代码. 一.步骤 1.1.使用Adobe Acrobat Pro工具编辑PDF模板 ...
- java使用itextpdf生成PDF批量打印荣誉证书(指定位置输出文字)
最近公司项目有个需求,批量打印荣誉证书,一开始尝试过传统的网络打印,控件打印,JS调用浏览器打印方法,遇到各种问题,比如定位不准,分页问题,缩放问题等.然后就自己研究,整理了一套打印方案,项目已测 ...
- java pdf工具类_Java PDF工具类(一)| 使用 itextpdf 根据PDF模板生成PDF(文字和图片)...
Java PDF工具类(一)| 使用 itextpdf 根据设置好的PDF模板填充PDF(文字和图片) 相关文章: Java PDF工具类(二)| 使用 wkhtmltox 实现 HTML转PDF(文 ...
- Java——EasyPoi导出word文档,itextpdf转换pdf
EasyPoi导出word文档,itextpdf转换pdf 文章目录 EasyPoi导出word文档,itextpdf转换pdf 前言 一.依赖 二.工具类 1.WordUtil 2.PDF工具类 3 ...
- 使用itextpdf在pdf模板中插入对应数据
大家好今儿给大家带来的是使用itextpdf在pdf模板中插入对应数据 目录 大家好今儿给大家带来的是使用itextpdf在pdf模板中插入对应数据 1.需求描述 2.操作Adobe Acrobat ...
- java使用itextpdf生成pdf并填充自定义数据
项目中有个需求,对于已有的数据生成对应的发票pdf或者合同pdf,这些pdf具有一些特性,就是pdf有固定的格式,类似于表格,我们只要往表格里面填充数据即可.当然,也会涉及到签章,二维码等需求. 总体 ...
- itextpdf通过pdf模板生成pdf文件
itextpdf通过pdf模板生成pdf文件,设置粗体字体 1.创建pdf模板 2.使用模板生成pdf 3.itext自带的字体列表 4.遇到的坑 1.创建pdf模板 可以使用PDFFescape网站 ...
最新文章
- php经典操作,php数组的经典操作(遍历数组、基本操作)实例
- 2018-2019-1 20165212 20165313 2016522 实验一 开发环境的熟悉
- C# 计时函数精度测试
- idea test包_6.Flinkx如何在idea中运行?
- 【线上分享】云原生时代,华为云音视频质量监控与优化实践
- 计算机网络学习笔记-1.1.4-时延、 时延带宽积、RTT和利用率
- 太阳跟踪装置系统设计与制作
- HDU 6191 2017广西邀请赛Query on A Tree:可持久化01字典树(区间抑或最大值查询)
- 浏览器打开就是360导航(浏览器被360劫持)
- java与模式孙悟空_设计模式之原型模式 - chenxkang的个人空间 - OSCHINA - 中文开源技术交流社区...
- 阿姆斯特朗数——————还记得大明湖畔的水仙花么(笑)
- ue4人物动作_ue4人物动作资源Resource Gathering Animation418
- typora导出word指定样式_Word长文档排版以写论文为例
- 多款开源免费网络相册/相册系统源码推荐
- 计算机课听课心得体会,计算机心得体会(精选8篇).doc
- linuxprobe
- windows系统bat批处理 微信多开,软件多开
- 浅谈曲线的几何连续性
- 开发SNS游戏时关于用户头像跨域
- Unity城市虚拟搭建的时候,【房子】或【桥廊】跟随鼠标在【地面】或者【水面】移动
热门文章
- SCPI 可编程仪器标准命令
- 题目0074-时间格式化
- 双一流博士整理的计算机视觉学习路线(深度学习+传统图像处理)
- Vim配色方案和字体设置
- 如何让U盘同时兼容Windows和Mac OS X系统
- 强化学习在智能交通灯中的应用
- 【ElasticSearch】(四)—— RestClient操作ES
- Java毕设项目自行车在线租赁管理系统2021(java+VUE+Mybatis+Maven+Mysql)
- 注册登录系统python_注的解释|注的意思|汉典“注”字的基本解释
- FAQ-NE40E BGP邻居状态中的no neg代表什么含义