前言

使用iText的JAR包如下

<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.1</version>
</dependency>
<!-- 输出中文所需-->
<dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version>
</dependency>

实现代码

public static void main(String[] args) {String[] headers = {"列一", "列二", "列三", "列四", "列五", "列六"};String list = "[{\"balance\":\"42402\",\"changeDate\":\"20211026111641\",\"dgst\":\"SSTR\",\"outMoney\":\"0\",\"bankSeqNo\":\"00000000000641199893\",\"inMoney\":\"11539\"},{\"balance\":\"30863\",\"changeDate\":\"20211005133736\",\"dgst\":\"SALE\",\"outMoney\":\"7500\",\"bankSeqNo\":\"00000000000635138192\",\"inMoney\":\"0\"},{\"balance\":\"38363\",\"changeDate\":\"20210926113940\",\"dgst\":\"SSTR\",\"outMoney\":\"0\",\"bankSeqNo\":\"00000000000632420138\",\"inMoney\":\"11539\"},{\"balance\":\"26824\",\"changeDate\":\"20210925111144\",\"dgst\":\"SALE\",\"outMoney\":\"11150\",\"bankSeqNo\":\"00000000000632752221\",\"inMoney\":\"0\"},{\"balance\":\"37974\",\"changeDate\":\"20210922083109\",\"dgst\":\"SALE\",\"outMoney\":\"4860\",\"bankSeqNo\":\"00000000000631851353\",\"inMoney\":\"0\"},{\"balance\":\"42834\",\"changeDate\":\"20210919153251\",\"dgst\":\"SALE\",\"outMoney\":\"7910\",\"bankSeqNo\":\"00000000000631503750\",\"inMoney\":\"0\"},{\"balance\":\"50744\",\"changeDate\":\"20210917080014\",\"dgst\":\"SALE\",\"outMoney\":\"5870\",\"bankSeqNo\":\"00000000000630377865\",\"inMoney\":\"0\"},{\"balance\":\"56614\",\"changeDate\":\"20210915153430\",\"dgst\":\"SALE\",\"outMoney\":\"8560\",\"bankSeqNo\":\"00000000000630120441\",\"inMoney\":\"0\"},{\"balance\":\"65174\",\"changeDate\":\"20210830103432\",\"dgst\":\"SALE\",\"outMoney\":\"6200\",\"bankSeqNo\":\"00000000000625635279\",\"inMoney\":\"0\"},{\"balance\":\"71374\",\"changeDate\":\"20210825124135\",\"dgst\":\"SSTR\",\"outMoney\":\"0\",\"bankSeqNo\":\"00000000000624479550\",\"inMoney\":\"11539\"}]";ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();BASE64Encoder base64 = new BASE64Encoder();Document document = null;PdfWriter writer = null;try {List<Map<String, Object>> mapList = (List) JSON.parseArray(StringEscapeUtils.unescapeHtml4(list));//创建纵向文件document = PdfUtils.createPortraitDocument();//建立一个书写器(内存流方式)writer = PdfWriter.getInstance(document, byteArrayOutputStream);//打开文件document.open();//添加字体样式Font bigFont = PdfUtils.createFont(14, Font.NORMAL, BaseColor.BLACK);Font blueFont = PdfUtils.createFont(10, Font.NORMAL, BaseColor.BLACK);//段落内容Paragraph title = PdfUtils.createParagraph("测试pdf", bigFont);//文字居中显示title.setAlignment(Element.ALIGN_CENTER);//添加段落内容document.add(title);//创建表格列数PdfPTable table = PdfUtils.createPdfPTable(headers.length);//创建表头PdfUtils.createHeader(document, table, headers, bigFont);//填充数据PdfUtils.dataProcessing(document, table, mapList, blueFont);} catch (DocumentException e) {} finally {if (document != null) {//关闭文档document.close();}if (writer != null) {//关闭书写器writer.close();}}System.out.println(base64.encode(byteArrayOutputStream.toByteArray()));}

实现效果

工具类

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;import java.util.Iterator;
import java.util.List;
import java.util.Map;/*** @version V1.0* @Description:生成PDF文件* @Author: Mr.LJie* @Date: 2021/11/30 14:17*/
public class PdfUtils {/*** 固定高*/public static float fixedHeight = 27f;/*** 跨行*/public static int rowSpan = 0;/*** 跨列*/public static int colSpan = 0;/*** 左边距*/public static float marginLeft = 20;/*** 右边距*/public static float marginRight = 20;/*** 上边距*/public static float marginTop = 20;/*** 下边距*/public static float marginBottom = 20;/**** @Description :创建A4纵向文件* @param* @return com.itextpdf.text.Document* @Author Mr.Jie* @Date 2021/11/30 14:25*/public static Document createPortraitDocument() {//生成pdfDocument document = new Document();// 页面大小Rectangle rectangle = new Rectangle(PageSize.A4);// 页面背景颜色rectangle.setBackgroundColor(BaseColor.WHITE);document.setPageSize(rectangle);// 页边距 左,右,上,下document.setMargins(marginLeft, marginRight, marginTop, marginBottom);return document;}/**** @Description :创建A4横向文件* @param* @return com.itextpdf.text.Document* @Author Mr.Jie* @Date 2021/11/30 15:42*/public static Document createTransverseDocument() {//生成pdfDocument document = new Document();// 页面大小Rectangle rectangle = new Rectangle(new RectangleReadOnly(842F, 595F));// 页面背景颜色rectangle.setBackgroundColor(BaseColor.WHITE);document.setPageSize(rectangle);// 页边距 左,右,上,下document.setMargins(marginLeft, marginRight, marginTop, marginBottom);return document;}/*** @param text 段落内容* @param font 字体设置* @return com.itextpdf.text.Paragraph* @Description :创建段落内容* @Author Mr.Jie* @Date 2021/11/30 14:59*/public static Paragraph createParagraph(String text, Font font) {Paragraph elements = new Paragraph(text, font);elements.setSpacingBefore(5);elements.setSpacingAfter(5);return elements;}/**** @Description :创建字体样式* @param fontNumber    字号* @param fontSize      字体大小* @param fontColor     字体颜色* @return com.itextpdf.text.Font* @Author Mr.Jie* @Date 2021/11/30 14:57*/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);}/**** @Description :隐藏表格边框线* @param cell  单元格* @return void* @Author Mr.Jie* @Date 2021/11/30 14:57*/public static void disableBorderSide(PdfPCell cell) {if (cell != null) {cell.disableBorderSide(1);cell.disableBorderSide(2);cell.disableBorderSide(4);cell.disableBorderSide(8);}}/**** @Description :创建居中得单元格* @param* @return com.itextpdf.text.pdf.PdfPCell* @Author Mr.Jie* @Date 2021/11/30 14:57*/public static PdfPCell createCenterPdfPCell() {PdfPCell cell = new PdfPCell();cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setFixedHeight(fixedHeight);return cell;}/**** @Description :创建指定文字得单元格* @param text      文字内容* @param rowSpan   跨行合并单元格* @param colSpan   跨列合并单元格* @param font      字体* @return com.itextpdf.text.pdf.PdfPCell* @Author Mr.Jie* @Date 2021/11/30 14:50*/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;}/**** @Description :表格列数* @param len* @return com.itextpdf.text.pdf.PdfPTable* @Author Mr.Jie* @Date 2021/11/30 14:52*/public static PdfPTable createPdfPTable(int len) {PdfPTable pdfPTable = new PdfPTable(len);//宽度100%填充pdfPTable.setWidthPercentage(100);return pdfPTable;}/**** @Description :创建表头* @param document* @param headers* @param font* @return void* @Author Mr.Jie* @Date 2021/11/30 15:27*/public static void createHeader(Document document, PdfPTable table, String[] headers, Font font) throws DocumentException {for (int i = 0; i < headers.length; i++) {//默认不跨行、跨列PdfPCell cell = PdfUtils.createCenterPdfPCell(headers[i], rowSpan, rowSpan, font);//居中显示cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setVerticalAlignment(Element.ALIGN_MIDDLE);table.addCell(cell);}document.add(table);}/**** @Description :数据处理* @param document* @param table* @param list* @param font* @return void* @Author Mr.Jie* @Date 2021/11/30 15:32*/public static void dataProcessing(Document document, PdfPTable table, List<Map<String, Object>> list, Font font) throws DocumentException {Iterator<Map<String, Object>> iterator = list.iterator();while (iterator.hasNext()) {//获取对象Map<String, Object> map = iterator.next();//Map 获取key & valuefor (Map.Entry<String, Object> entry : map.entrySet()) {Object value = entry.getValue();//默认不跨行、跨列PdfPCell cell = PdfUtils.createCenterPdfPCell(value.toString(), rowSpan, rowSpan, font);table.addCell(cell);}document.add(table);}}
}

使用iText生成PDF文件中创建表格相关推荐

  1. ajax从mysql提取数据在html中_Python骚操作,提取pdf文件中的表格数据!

    在实际研究中,我们经常需要获取大量数据,而这些数据很大一部分以pdf表格的形式呈现,如公司年报.发行上市公告等.面对如此多的数据表格,采用手工复制黏贴的方式显然并不可取.那么如何才能高效提取出pdf文 ...

  2. Python提取PDF文件中的表格文本保存为Excel文件

    "Python小屋"编程比赛正式开始 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大学出版社,2020 ...

  3. python提取pdf表格数据_Python骚操作,提取pdf文件中的表格数据!

    在实际研究中,我们经常需要获取大量数据,而这些数据很大一部分以pdf表格的形式呈现,如公司年报.发行上市公告等.面对如此多的数据表格,采用手工复制黏贴的方式显然并不可取.那么如何才能高效提取出pdf文 ...

  4. java 取pdf 文本域_java – 使用iText从pdf文件中提取文本列

    我需要使用iText从pdf文件中提取文本. 问题是:一些pdf文件包含2列,当我提取文本时,我得到一个文本文件,其中列被合并为结果(即同一行中两列的文本) 这是代码: public class pd ...

  5. python 提取pdf表格_用Python提取pdf文件中的表格数据

    本文作者:杨慧琳 本文编辑:周聪聪 技术总编:张学人有问题,不要怕!访问 http://www.wuhanstring.com/uploads/5_aboutus/爬虫俱乐部-用户问题登记表.docx ...

  6. java 生成字体文件,java使用itext生成pdf文件-设置字体,itextpdf,import com.l

    java使用itext生成pdf文件-设置字体,itextpdf,import com.limport com.lowagie.text.Document;import com.lowagie.tex ...

  7. 使用IText生成PDF文件,并记录一些遇到的问题

    文章目录 写在前面: 生成PDF的流程 1.字体问题 一.使用系统环境下的字体 在window环境下查找字体 自定义字体 二.引入字体集jar 三.创建字体,并携带其他字体属性 字体样式 小结 关于字 ...

  8. java生成pdf加密_java使用iText 生成PDF全攻略(表格,加密)

    java使用iText 生成PDF全攻略,包括创建文档,设置字体,添加表格(PdfPTable),创建新页(newPage),设置布局,加密 主要使用的jar包: itextpdf-5.4.2.jar ...

  9. Itext生成pdf文件,itext+Freemarker生成pdf,(中文空白解决)

    来源:https://my.oschina.net/lujianing/blog/894365 1.背景 在某些业务场景中,需要提供相关的电子凭证,比如网银/支付宝中转账的电子回单,签约的电子合同等. ...

最新文章

  1. GSM —— 商业蜂窝通信系统
  2. android使用okthtp
  3. hdu 2222:Keywords Search
  4. php怎么删除表数据,php怎样删除数据表中的数据_后端开发
  5. ORBSLAM2在Ubuntu14.04上详细配置流程
  6. mac设置首页访问php,mac系统下php项目除了首页全访问不了
  7. python numpy逆_numpy.linalg.inv返回奇异矩阵的逆函数 - python
  8. Tensorflow代码转pytorch代码 函数的转换
  9. 各种OS的TCP Init RTO
  10. matlab qam信号仿真,基于Matlab/Simulink的QAM通信系统的仿真
  11. android系统壁纸下载,提前用上Android 12系统 官方高清壁纸下载
  12. OWASP Top 10 2022介绍
  13. 某知乎x-zse-96参数解析2022/08/09首发
  14. html5 打气球小游戏,javascript开发打气球小游戏
  15. 网络协议实验四 ARP 协议分析实验
  16. 如何搞定笔记本检测不到wifi,图标,Netkeeper链接不上
  17. Java课后题第十三章:13.4(显示日历)
  18. Web前端面试指导 四十 CSS3有哪些新特性
  19. 多路脉冲发生器设计(脉冲个数,脉冲宽度可控)
  20. 项目乱弹琴 之 用户就是上帝

热门文章

  1. 一文带你深入了解函数栈帧的创建和销毁
  2. python初级 奶茶店自助结算系统的基本代码
  3. 用python画雪花飘落_python-turtle-画雪花-2种方法及效果的详解
  4. 谁给介绍个客户资料管理和生日提醒的软件?
  5. 原装苹果手机_二手原装正品苹果手机及平板批发报价单359
  6. 关于《后浪》的B站弹幕分析总结(一)——爬取B站视频的上万条弹幕的方法
  7. 视频教程-区块链项目:基于以太坊开发拍卖系统DApp教程(含资料)-区块链
  8. strncat越界,踩内存
  9. wordpress5.3发布文章出现“发布失败,错误信息:此响应不是合法的JSON响应”的解决办法
  10. 达梦数据库的闪回技术