在对接某第三方XX平台时需要对表格传入PDF文件类型。于是自造了一个。

Maven使用版本如下:

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

支持中文的一个jar包

<dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency>

最终效果:

以下是全部的代码实现以及说明:

package com.qingzu.applet.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 org.springframework.stereotype.Component;
import java.io.FileOutputStream;
public class CreatePDFUtils1 {/***新建以下两个方法,创建表格内的字体和样式的方法* @param str 内容* @param font 字体对象* @param high 表格高度* @Param alignCenter 是否水平居中* @Param alignMidde  是否垂直居中* @return*/private static PdfPCell  mircoSoftFont(String str,Font font,int high,boolean alignCenter,boolean alignMidde){PdfPCell pdfPCell  = new PdfPCell(new Phrase(str,font));pdfPCell.setMinimumHeight(high);pdfPCell.setUseAscender(true); // 设置可以居中if (alignCenter){pdfPCell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); // 设置水平居中}if (alignMidde){pdfPCell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); // 设置垂直居中}return pdfPCell;}/**** @param str 字符串* @param font 字体* @param high 表格高度* @Param alignCenter 是否水平居中* @Param alignMidde  是否垂直居中* @Param haveColor 是否有背景色(灰色)* @return*/private static PdfPCell  mircoSoftFont(String str,Font font,int high,boolean alignCenter,boolean alignMidde,boolean haveColor){PdfPCell pdfPCell  = new PdfPCell(new Phrase(str,font));pdfPCell.setMinimumHeight(high);pdfPCell.setUseAscender(true); // 设置可以居中if (alignCenter){pdfPCell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); // 设置水平居中}if (alignMidde){pdfPCell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); // 设置垂直居中}if (haveColor){//颜色代码 RGBpdfPCell.setBackgroundColor(new BaseColor(217,217,217));}return pdfPCell;}public static void createHardwarePDF( String outputPath)throws Exception{//新建文档对象,页大小为A4纸,然后设置4个边距Document document = new Document(PageSize.A4,20,20,30,30);PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream(outputPath));document.open();//创建字体BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);//字体对象Font size14font = new Font(baseFont,14,Font.NORMAL);  //大小为14的正常字体Font size10font = new Font(baseFont,10,Font.BOLD); //大小为10的粗体//添加标题PdfPTable tableName = new PdfPTable(1);tableName.setWidthPercentage(90);  //设置标题长度占纸张比例tableName.addCell(mircoSoftFont("个人信息",size14font,50,true,true));document.add(tableName);//添加第二行的数据PdfPTable secondRowTable = new PdfPTable(3); //三列的意思secondRowTable.setWidthPercentage(90);//这里的数组长度是上面创建的列数,数组的总和为1,就是按比例划分的意思secondRowTable.setTotalWidth(new float[]{0.18f,0.32f,0.5f});secondRowTable.addCell(mircoSoftFont(" 姓名: ",size10font,50,false,true));secondRowTable.addCell(mircoSoftFont("李晓明",size10font,50,false,true));secondRowTable.addCell(mircoSoftFont(" 出生日期: 1994年3月14日",size10font,50,false,true));document.add(secondRowTable);//第三行数据PdfPTable thirdRowTable = new PdfPTable(3);thirdRowTable.setWidthPercentage(90);thirdRowTable.setTotalWidth(new float[]{0.18f,0.32f,0.5f});thirdRowTable.addCell(mircoSoftFont(" 名族:",size10font,50,false,true));thirdRowTable.addCell(mircoSoftFont("汉族",size10font,50,false,true));thirdRowTable.addCell(mircoSoftFont(" 联系电话: 13888880000",size10font,50,false,true));document.add(thirdRowTable);//第四行数据PdfPTable fourthRowTable = new PdfPTable(2);fourthRowTable.setWidthPercentage(90);fourthRowTable.setTotalWidth(new float[]{0.66f,0.34f});fourthRowTable.addCell(mircoSoftFont(" 个人描述 :",size10font,175,false,false));fourthRowTable.addCell(mircoSoftFont("个人特长 :",size10font,175,false,false));document.add(fourthRowTable);//第五行PdfPTable fifthDetailName = new PdfPTable(1);fifthDetailName.setWidthPercentage(90);fifthDetailName.addCell(mircoSoftFont("获奖记录 :",size14font,50,true,true));document.add(fifthDetailName);//第六行PdfPTable sisthRowTalbe= new PdfPTable(1);sisthRowTalbe.setWidthPercentage(90);sisthRowTalbe.addCell(mircoSoftFont(" 联系地址: "+"广东省广州市天河区XXXXXXXXXXXXXXXXXX",size10font,50,false,true));document.add(sisthRowTalbe);PdfPTable seventhRowTalbe = new PdfPTable(1);seventhRowTalbe.setWidthPercentage(90);seventhRowTalbe.addCell(mircoSoftFont(" 毕业院校 ",size14font,60,true,true));document.add(seventhRowTalbe);//第八行PdfPTable eiththRowTalbe = new PdfPTable(3);eiththRowTalbe.setWidthPercentage(90);eiththRowTalbe.setTotalWidth(new float[]{0.3f,0.5f,0.2f});eiththRowTalbe.addCell(mircoSoftFont(" 毕业学校",size10font,50,true,true,true));eiththRowTalbe.addCell(mircoSoftFont(" 就读日期",size10font,50,true,true,true));eiththRowTalbe.addCell(mircoSoftFont(" 联系人",size10font,50,true,true,true));document.add(eiththRowTalbe);//接下来加ListString school = "XXX学校";String time = "201909  -  2022-06";String name = "陈某";for (int i = 0 ;i<4 ;i++){PdfPTable tempTable = new PdfPTable(3);tempTable.setWidthPercentage(90);tempTable.setTotalWidth(new float[]{0.3f,0.5f,0.2f});tempTable.addCell(mircoSoftFont(school,size10font,50,true,true));tempTable.addCell(mircoSoftFont(time,size10font,50,true,true));tempTable.addCell(mircoSoftFont(name,size10font,50,true,true));document.add(tempTable);}document.close();writer.close();}//使用例子public static void main(String[] args)throws Exception{createHardwarePDF("test.pdf");}}

完成。

JAVA使用itext来生成PDF表格实例和使用说明相关推荐

  1. java利用iText工具包生成PDF

    iText是一个非常著名的能够快速产生PDF文件的Java类库.支持文本,表格,图形的操作,可以方便的跟 Servlet 进行结合 iText的更新变化很大,早期版本在PDF样式上可能会有瑕疵,所有我 ...

  2. JAVA 使用Itext模板生成pdf,解决图片插入,文本域超出字体缩放,半自动换行

    1.前言 前一段时间遇到一个制作Pdf的业务,自己下来摸索了一下,基本上解决.将其中遇到的几个问题及解决方法做以记录,仅供大家参考. 首先在这里对于刚接触该类型业务的同学说明下,ItexPdf支持使用 ...

  3. Java—将数据生成pdf表格

    由于时间问题,所以粗略的封装了一个生成pdf表格的工具包(不喜欢讲废话,直接上代码!!!) package com.sgcc.dlsc.jibei.commons.utils;import com.i ...

  4. HTML生成PDF模板(Java iText+FreeMarker生成PDF(HTML转PDF))

    Java iText+FreeMarker生成PDF(HTML转PDF) 1.背景 在某些业务场景中,需要提供相关的电子凭证,比如网银/支付宝中转账的电子回单,签约的电子合同等.方便用户查看,下载,打 ...

  5. java在linux生成pdf文件,从 Java 应用程序动态生成 PDF 文件

    简介: 如果您的应用程序需要动态生成 PDF 文档,那么您需要 iText 库.开源的 iText 库使得 PDF 的创建变得轻松易行.本文介绍了 iText 并提供了一个使用它从 Java 技术应用 ...

  6. iText+freemarker 生成PDF 使用ftl模板

    iText+freemarker 生成PDF 生成样式图片 模板地址 maven PDF生成工具类 PDF生成辅助类 base64编码工具类 service方法调用 总结 生成样式图片 模板地址 ma ...

  7. java xsl转换pdf_Java 生成PDF文档-阿里云开发者社区

    最近项目需要实现PDF下载的功能,由于没有这方面的经验,从网上花了很长时间才找到相关的资料.整理之后,发现有如下几个框架可以实现这个功能. 1. 开源框架支持 iText,生成PDF文档,还支持将XM ...

  8. Itext 7 生成pdf带有背景图

    Itext 7 生成pdf带有背景图并下载PDF到本地 引入jar包 <dependency><groupId>com.itextpdf</groupId>< ...

  9. java生成pdf表格_java在pdf中生成表格的方法

    1.目标 在pdf中生成一个可变表头的表格,并向其中填充数据.通过泛型动态的生成表头,通过反射动态获取实体类(我这里是User)的get方法动态获得数据,从而达到动态生成表格. 每天生成一个文件夹存储 ...

最新文章

  1. ckeditor5加字数_CKEditor5基本使用
  2. 机器学习中防止过拟合方法
  3. 怎么看事务有没有开启成功_雅思复议又贵又难?看这位复议口语与写作都成功的学生怎么说...
  4. LeetCode 862. 和至少为 K 的最短子数组(前缀和+deque单调栈)
  5. Spring Boot笔记-目前对Web后端开发的认识
  6. 微信开源项目讲解使用公开课
  7. filepermission java,Java FilePermission getActions()方法与示例
  8. 201771010101 白玛次仁《面向对象程序设计(Java)》第十一周学习总结
  9. c语言程序设计辅导资料pdf,第一章 C语言程序设计辅导资料(修订版).pdf
  10. AutoCAD Civil 3D 中缓和曲线的定义
  11. 今天是元旦节,可是我失恋了
  12. android 自定义吐司,[Android开发]Android 自定义Toast
  13. python中pd是什么意思_python pd
  14. c# datetime._C#| DateTime.TimeOfDay属性(带示例)
  15. 目前最好的折叠屏手机也“翻车”了
  16. 华为麒麟9000性能提升幅度大,但恐难成安卓一哥
  17. Win7系统服务优化攻略
  18. 谷歌pay 手续费_您可以使用Google Pay进行的所有操作
  19. 百度网盘 网页版、pc版 都登陆不进去的解决方法
  20. 安卓通过SQLite实现登录注册功能(小白式教程)

热门文章

  1. HTML(二)——常用浏览器
  2. 如何利用九条命令在一分钟内检查Linux服务器性能?
  3. npm或cnpm安装某个指定的版本
  4. 叫板Amazon Go!这家公司成为无人零售新星?
  5. 想毁灭公司,从增长黑客模式开始!
  6. 王坚清华夜话:未来不是阿里和谷歌的竞争 而是清华和斯坦福的竞争
  7. 2019-2020学年上学期《算法设计与分析》期中小测
  8. 如何使用LearnDash创建像Udemy一样的在线课程市场
  9. 三维视觉精度关键参数及测量方法
  10. 陕西师范大学计算机学院课表,陕西师范大学数学与信息科学学院课程表一.DOC...