iText操作pdf

最近有个任务是动态的创建pdf根据获取到的内容,百度到的知识点都比较零散,官方文档想必大家也不容易看懂。下文是我做出的汇总``

public class CreatePdfUtils {public static void create(){//准备File file = new File("C:\\code\\base-project-backend\\pdf\\"+"1.pdf");Document document = new Document();PdfWriter.getInstance(document,new FileOutputStream(file));document.open();document.setPageSize(PageSize.A4);        //这是第一页的尺寸大小document.add(new Paragraph("hello"));        //这是第一页的内容Rectangle rectangle = new Rectangle(1111, 1111); //这是第二页的尺寸大小rectangle.setBackgroundColor(new BaseColor(11,11,11));//这是第二页的背景颜色document.setPageSize(rectangle); //在这里设置第二页document.newPage();    //这里是真正创建第二页document.add(new Paragraph("wordld"));//第二页增加内容//结束document.close();}
}

接下来还会继续完善

 public static void createPdf(){File file = new File("C:\\code\\base-project-backend\\shiting-module-system\\shiting-module-system-biz\\src\\main\\java\\com\\shiting\\basic\\module\\system\\controller\\admin\\pdf1.pdf");Document document = new Document(PageSize.B4.rotate());try {//引入中文字体,一般从c:\\windows\\Fonts下找到BaseFont bfChinese = BaseFont.createFont("shiting-module-system/shiting-module-system-biz/src/main/java/com/shiting/basic/module/system/util/simfang.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);Font fontH1 = new Font(bfChinese, 25, Font.BOLD);//字体1Font fontH2 = new Font(bfChinese, 12, Font.NORMAL);//字体2PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));document.open();Paragraph p3 = new Paragraph("黄河流域历史遗留矿山调查送检样品交接表单",fontH1);p3.setAlignment(Element.ALIGN_CENTER);p3.setSpacingAfter(25);document.add(p3);PdfPTable pdfPTable = new PdfPTable(4);pdfPTable.setHorizontalAlignment(Element.ALIGN_CENTER);pdfPTable.setWidthPercentage(100);pdfPTable.setTotalWidth(new float[]{200,200,240,240});pdfPTable.setLockedWidth(true);//开始填充表格PdfPCell pdfPCell1 = new PdfPCell(new Phrase("批次编号:" + "20231019172338", fontH2));pdfPCell1.setBorderColor(new BaseColor(255,255,255));pdfPTable.addCell(pdfPCell1);PdfPCell pdfPCell2 = new PdfPCell(new Phrase("样品总数:" + "12", fontH2));pdfPCell2.setBorderColor(new BaseColor(255,255,255));pdfPTable.addCell(pdfPCell2 );PdfPCell pdfPCell3 = new PdfPCell(new Phrase("开始采样开始时间:" + "2023-10-10 13:31:12", fontH2));pdfPCell3.setBorderColor(new BaseColor(255,255,255));pdfPTable.addCell( pdfPCell3);PdfPCell pdfPCell4 = new PdfPCell(new Phrase("收样完成时间:" + "2024-10-10 13:31:12", fontH2));pdfPCell4.setBorderColor(new BaseColor(255,255,255));pdfPTable.addCell( pdfPCell4);PdfPCell pdfPCell5 = new PdfPCell(new Phrase("固体废物样品总数:" + "10", fontH2));pdfPCell5.setBorderColor(new BaseColor(255,255,255));pdfPTable.addCell( pdfPCell5);PdfPCell pdfPCell6 = new PdfPCell(new Phrase("酸性废水样品总数:" + "1", fontH2));pdfPCell6.setBorderColor(new BaseColor(255,255,255));pdfPTable.addCell( pdfPCell6);PdfPCell pdfPCell7 = new PdfPCell(new Phrase("灌溉水总样:" + "0", fontH2));pdfPCell7.setBorderColor(new BaseColor(255,255,255));pdfPTable.addCell(pdfPCell7);PdfPCell pdfPCell8 = new PdfPCell(new Phrase("底泥样总数:" + "0", fontH2));pdfPCell8.setBorderColor(new BaseColor(255,255,255));pdfPTable.addCell(pdfPCell8);PdfPCell pdfPCell9 = new PdfPCell(new Phrase("土壤样总数:" + "0", fontH2));pdfPCell9.setBorderColor(new BaseColor(255,255,255));pdfPTable.addCell( pdfPCell9);PdfPCell pdfPCell10 = new PdfPCell(new Phrase("收样退回重新采样数量:" + "0", fontH2));pdfPCell10.setBorderColor(new BaseColor(255,255,255));pdfPTable.addCell( pdfPCell10);PdfPCell pdfPCell11 = new PdfPCell(new Phrase("承运单位:" + "", fontH2));pdfPCell11.setBorderColor(new BaseColor(255,255,255));pdfPTable.addCell(pdfPCell11);PdfPCell pdfPCell12 = new PdfPCell(new Phrase("运输方式:" + "汽车运输", fontH2));pdfPCell12.setBorderColor(new BaseColor(255,255,255));pdfPTable.addCell(pdfPCell12);pdfPTable.setSpacingAfter(10);document.add(pdfPTable);PdfPTable pdfPTable2 = new PdfPTable(10);pdfPTable2.setHorizontalAlignment(Element.ALIGN_CENTER);pdfPTable2.setWidthPercentage(100);pdfPTable2.setTotalWidth(new float[]{20,120,70,40,95,95,95,95,50,200});pdfPTable2.setLockedWidth(true);PdfPCell pCell1 = new PdfPCell(new Phrase("序号", fontH2));pCell1.setVerticalAlignment(Element.ALIGN_CENTER);pCell1.setHorizontalAlignment(Element.ALIGN_CENTER);pdfPTable2.addCell(pCell1 );PdfPCell pCell2 = new PdfPCell(new Phrase("字样编号", fontH2));pCell2.setVerticalAlignment(Element.ALIGN_CENTER);pCell2.setHorizontalAlignment(Element.ALIGN_CENTER);pdfPTable2.addCell(pCell2 );PdfPCell pCell3 = new PdfPCell(new Phrase("样品类型", fontH2));pCell3.setVerticalAlignment(Element.ALIGN_CENTER);pCell3.setHorizontalAlignment(Element.ALIGN_CENTER);pdfPTable2.addCell( pCell3);PdfPCell pCell4 = new PdfPCell(new Phrase("容器与保护剂", fontH2));pCell4.setHorizontalAlignment(Element.ALIGN_CENTER);pCell4.setVerticalAlignment(Element.ALIGN_CENTER);pdfPTable2.addCell(pCell4 );PdfPCell pCell5 = new PdfPCell(new Phrase("测试项目分类", fontH2));pCell5.setVerticalAlignment(Element.ALIGN_CENTER);pCell5.setHorizontalAlignment(Element.ALIGN_CENTER);pdfPTable2.addCell( pCell5);PdfPCell pCell6 = new PdfPCell(new Phrase("取样时间", fontH2));pCell6.setVerticalAlignment(Element.ALIGN_CENTER);pCell6.setHorizontalAlignment(Element.ALIGN_CENTER);pdfPTable2.addCell( pCell6);PdfPCell pCell7 = new PdfPCell(new Phrase("收样时间", fontH2));pCell7.setHorizontalAlignment(Element.ALIGN_CENTER);pCell7.setVerticalAlignment(Element.ALIGN_CENTER);pdfPTable2.addCell(pCell7);PdfPCell pCell8 = new PdfPCell(new Phrase("有效保存时间", fontH2));pCell8.setVerticalAlignment(Element.ALIGN_CENTER);pCell8.setHorizontalAlignment(Element.ALIGN_CENTER);pdfPTable2.addCell( pCell8);PdfPCell pCell9 = new PdfPCell(new Phrase("是否合格样品", fontH2));pCell9.setHorizontalAlignment(Element.ALIGN_CENTER);pCell9.setVerticalAlignment(Element.ALIGN_CENTER);pdfPTable2.addCell( pCell9);PdfPCell pCell10 = new PdfPCell(new Phrase("不合格情况说明", fontH2));pCell10.setVerticalAlignment(Element.ALIGN_CENTER);pCell10.setHorizontalAlignment(Element.ALIGN_CENTER);pdfPTable2.addCell( pCell10);ArrayList<jiaojiebiao> jiaojiebiaos = new ArrayList<>();for (int i = 0; i <12 ; i++) {jiaojiebiao jiaojiebiao = new jiaojiebiao();jiaojiebiao.setId(String.valueOf(i));jiaojiebiao.setChildNum("522023z4G2j8Zjx"+i);jiaojiebiao.setType("酸性废水");jiaojiebiao.setCategory("酸性废水pH和重金属八项"+i);jiaojiebiao.setDate1("2023-10-10 14:12:48");jiaojiebiao.setDate2("2023-11-10 14:12:48");jiaojiebiao.setDate3("2023-12-10 14:12:48");jiaojiebiao.setPass("是");if(i==6){jiaojiebiao.setPass("否");jiaojiebiao.setDetail("这个不合格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");}jiaojiebiaos.add(jiaojiebiao);}for (jiaojiebiao jiaojiebiao : jiaojiebiaos) {PdfPCell cell1 = new PdfPCell(new Phrase(jiaojiebiao.getId(), fontH2));cell1.setHorizontalAlignment(Element.ALIGN_CENTER);cell1.setVerticalAlignment(Element.ALIGN_CENTER);pdfPTable2.addCell(cell1);PdfPCell cell2 = new PdfPCell(new Phrase(jiaojiebiao.getChildNum(), fontH2));cell2.setHorizontalAlignment(Element.ALIGN_CENTER);cell2.setVerticalAlignment(Element.ALIGN_CENTER);pdfPTable2.addCell(cell2);PdfPCell cell3 = new PdfPCell(new Phrase(jiaojiebiao.getType(), fontH2));cell3.setHorizontalAlignment(Element.ALIGN_CENTER);pdfPTable2.addCell(cell3);pdfPTable2.addCell(new Phrase(jiaojiebiao.getContainer(),fontH2));pdfPTable2.addCell(new Phrase(jiaojiebiao.getCategory(),fontH2));PdfPCell cell6 = new PdfPCell(new Phrase(String.valueOf(jiaojiebiao.getDate1()), fontH2));cell6.setHorizontalAlignment(Element.ALIGN_CENTER);cell6.setVerticalAlignment(Element.ALIGN_CENTER);pdfPTable2.addCell(cell6);PdfPCell cell7 = new PdfPCell(new Phrase(String.valueOf(jiaojiebiao.getDate2()), fontH2));cell7.setHorizontalAlignment(Element.ALIGN_CENTER);cell7.setVerticalAlignment(Element.ALIGN_CENTER);pdfPTable2.addCell(cell7);PdfPCell cell8 = new PdfPCell(new Phrase(String.valueOf(jiaojiebiao.getDate3()), fontH2));cell8.setHorizontalAlignment(Element.ALIGN_CENTER);cell8.setVerticalAlignment(Element.ALIGN_CENTER);pdfPTable2.addCell(cell8);PdfPCell cell9= new PdfPCell(new Phrase(jiaojiebiao.getPass(), fontH2));cell9.setVerticalAlignment(Element.ALIGN_CENTER);cell9.setHorizontalAlignment(Element.ALIGN_CENTER);pdfPTable2.addCell(cell9);pdfPTable2.addCell(new Phrase(jiaojiebiao.getDetail(),fontH2));}pdfPTable2.setSpacingAfter(10);document.add(pdfPTable2);PdfPTable pdfPTable3 = new PdfPTable(4);pdfPTable3.setHorizontalAlignment(Element.ALIGN_CENTER);pdfPTable3.setWidthPercentage(100);pdfPTable3.setTotalWidth(new float[]{70,470,200,140});pdfPTable3.setLockedWidth(true);PdfPCell bCell1 = new PdfPCell(new Phrase("收样单位:",fontH2));bCell1.setBorderColor(new BaseColor(255,255,255));pdfPTable3.addCell(bCell1);PdfPCell bCell2 = new PdfPCell(new Phrase("贵州绿环科技检测有限公司",fontH2));bCell2.setBorderColor(new BaseColor(255,255,255));pdfPTable3.addCell(bCell2);PdfPCell bCell3 = new PdfPCell(new Phrase("收样人(签字):",fontH2));bCell3.setBorderColor(new BaseColor(255,255,255));pdfPTable3.addCell(bCell3);PdfPCell bCell4 = new PdfPCell(new Phrase(""));bCell4.setBorderColor(new BaseColor(255,255,255));pdfPTable3.addCell(bCell4);PdfPCell bCell5 = new PdfPCell(new Phrase("送样单位:",fontH2));bCell5.setBorderColor(new BaseColor(255,255,255));pdfPTable3.addCell(bCell5);PdfPCell bCell6 = new PdfPCell(new Phrase("贵州黔大生态环境与健康研究院有限公司",fontH2));bCell6.setBorderColor(new BaseColor(255,255,255));pdfPTable3.addCell(bCell6);PdfPCell bCell7 = new PdfPCell(new Phrase("送样人(签字):",fontH2));bCell7.setBorderColor(new BaseColor(255,255,255));pdfPTable3.addCell(bCell7);PdfPCell bCell8= new PdfPCell(new Phrase(""));bCell8.setBorderColor(new BaseColor(255,255,255));pdfPTable3.addCell(bCell8);document.add(pdfPTable3);document.close();} catch (DocumentException e) {throw new RuntimeException(e);} catch (FileNotFoundException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);}}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/248014.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux学习20 使用FRP进行内网穿透实现远程访问

Linux学习20 使用FRP进行内网穿透实现远程访问 一、FRP简介1. 简介2. 准备环境3. toml文件4. toml文件语法&#xff08;1&#xff09;表&#xff08;Table&#xff09;&#xff08;2&#xff09;键值对&#xff08;3&#xff09;数组&#xff08;4&#xff09;布尔值&#xff0…

高等数学:无穷小/大、极限运算/存在法则、连续性/间断点

参考课程&#xff1a;【建议收藏】同济七版《高等数学》精讲视频 | 期末考试 | 考研零基础 | 高数小白_哔哩哔哩_bilibili 仅供本人学习之用 无穷小 无穷小不是指趋近于负无穷&#xff0c;而是趋近于0 比如 这里x-2就叫做x趋近于2时的无穷小&#xff1b;1/x就叫做x趋近于无穷时…

代码随想录Day35 | 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球

代码随想录Day35 | 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球 860.柠檬水找零406.根据身高重建队列vector与list 452.用最少数量的箭引爆气球 860.柠檬水找零 文档讲解&#xff1a;代码随想录 视频讲解&#xff1a; 贪心算法&#xff0c;看上去复杂&am…

20240130在ubuntu20.04.6下给GTX1080安装最新的驱动和CUDA

20240130在ubuntu20.04.6下给GTX1080安装最新的驱动和CUDA 2024/1/30 12:27 缘起&#xff0c;为了在ubuntu20.4.6下使用whisper&#xff0c;以前用的是GTX1080M&#xff0c;装了535的驱动。 现在在PDD拼多多上了入手了一张二手的GTX1080&#xff0c;需要将安装最新的545的驱动程…

怎么控制Element的数据树形表格展开所有行;递归操作,打造万能数据表格折叠。

HTML <el-button type"success" size"small" click"expandStatusFun"> <span v-show"expandStatusfalse"><i class"el-icon-folder-opened"></i>展开全部</span><span v-show"expan…

为什么需要 SSL 证书?

网站需要 SSL 证书来确保用户数据的安全&#xff0c;验证网站的所有权&#xff0c;防止攻击者创建虚假网站版本&#xff0c;以及将信任传达给用户。 如果网站要求用户登录、输入个人详细信息&#xff08;例如其信用卡号&#xff09;或查看机密信息&#xff08;例如&#xff0c…

C++入门(一)— 使用VScode开发简介

文章目录 C 介绍C 擅长领域C 程序是如何开发编译器、链接器和库编译预处理编译阶段汇编阶段链接阶段 安装集成开发环境 &#xff08;IDE&#xff09;配置编译器&#xff1a;构建配置配置编译器&#xff1a;编译器扩展配置编译器&#xff1a;警告和错误级别配置编译器&#xff1…

Ubuntu 20.04 Server 使用命令行设置 IP 地址

1、编辑 /etc/netplan/ 目录下的配置文件00-installer-config.yaml (修改之前&#xff0c;把原来的文件备份) 按照对应的配置进行修改IP地址和网关 2、运行命令使其生效 sudo netplan apply 修改完成后&#xff0c;永久有效。重启后配置不会丢失

关于bypassuac的探究——基础知识

用户帐户控制(User Account Control)是Windows Vista&#xff08;及更高版本操作系统&#xff09;中一组新的基础结构技术&#xff0c;可以帮助阻止恶意程序&#xff08;有时也称为“恶意软件”&#xff09;损坏系统&#xff0c;同时也可以帮助组织部署更易于管理的平台。 使用…

【网站项目】基于SSM的204面向工程教育专业认证的毕业生跟踪调查反馈系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

PyTorch的nn.Module类的详细介绍

在PyTorch中&#xff0c;nn.Module 类是构建神经网络模型的基础类&#xff0c;所有自定义的层、模块或整个神经网络架构都需要继承自这个类。nn.Module 类提供了一系列属性和方法用于管理网络的结构和训练过程中的计算。 1. PyTorch中nn.Module基类的定义 在PyTorch中&#xff…

谷达冠楠:抖音开店卖什么退货率低

在抖音开设电商店铺&#xff0c;选择合适的商品对于降低退货率至关重要。商品的质量和满足消费者需求是保证低退货率的关键因素。例如&#xff0c;日常必需品如个人护理用品、家居清洁工具等因其使用频率高和需求稳定&#xff0c;通常拥有较低的退货率。另外&#xff0c;独特性…

HiveSQL题——窗口函数(lag/lead)

目录 一、窗口函数的知识点 1.1 窗户函数的定义 1.2 窗户函数的语法 1.3 窗口函数分类 1.4 前后函数:lag/lead 二、实际案例 2.1 股票的波峰波谷 0 问题描述 1 数据准备 2 数据分析 3 小结 2.2 前后列转换&#xff08;面试题&#xff09; 0 问题描述 1 数据准备 …

JavaWeb中的Filter(过滤器)和 Listener(监听器)

提示&#xff1a;这两个东西听起来似乎很难&#xff0c;实际上是非常简单的&#xff0c;按照要求写就行了&#xff0c;一定不要被新名词给吓到了。 JavaWeb中的Filter&#xff08;过滤器&#xff09; 一、Filter&#xff08;过滤器&#xff09;1.如何编写 Filter2.Filter 中的细…

1002. HarmonyOS 开发问题:鸿蒙 OS 技术特性是什么?

1002. HarmonyOS 开发问题&#xff1a;鸿蒙 OS 技术特性是什么? 硬件互助&#xff0c;资源共享 分布式软总线 分布式软总线是多种终端设备的统一基座&#xff0c;为设备之间的互联互通提供了统一的分布式通信能力&#xff0c;能够快速发现并连接设备&#xff0c;高效地分发…

方案:将vue项目放在SpringMVC中,并用tomcat访问

需要先将项目生成一次war包才能访问项目的webapp文件夹下的资源&#xff0c;否则tomcat的webapp文件夹下面不会生成对应资源文件夹就无法访问。 问题&#xff1a;目录如下&#xff1a; 今天我测试了一下将vue打包后&#xff0c;放入webapp下面访问&#xff0c;却发现vue项目无…

关于Spring Boot和MyBatis常见的十道面试题

拦截器和过滤器有什么区别&#xff1f; 拦截器&#xff08;Interceptor&#xff09;和过滤器&#xff08;Filter&#xff09;都是用于在请求道道目标资源的之前或之后进行处理的组件。主要区别有以下几点&#xff1a; 依赖对象不同&#xff1a;过滤器是来时Servlet&#xff0…

备战蓝桥杯--数据结构及STL应用(基础)

今天轻松一点&#xff0c;讲一讲stl的基本操作吧&#xff01; 首先&#xff0c;让我们一起创建一个vector容器吧&#xff01; #include<bits/stdc.h> using namespace std; struct cocoack{ int coco,ck; } void solve(){vector<cocoack> x;for(int i0;i<5;i){…

私有化部署pdf工具箱

功能简介 用于合并/拆分/旋转/移动PDF及其页面的完全交互式GUI。 将多个 PDF 合并到一个生成的文件中。 将 PDF 拆分为多个文件&#xff0c;并按指定的页码或将所有页面提取为单个文件。 将 PDF 页面重新组织为不同的顺序。 以 90 度为增量旋转 PDF。 删除页面。 多页布局…

《HTML 简易速速上手小册》第7章:HTML 多媒体与嵌入内容(2024 最新版)

文章目录 7.1 在HTML中嵌入视频和音频7.1.1 基础知识7.1.2 案例 1&#xff1a;嵌入视频文件7.1.3 案例 2&#xff1a;嵌入音频文件7.1.4 案例 3&#xff1a;创建一个视频和音频混合的播放列表 7.2 使用 <iframe> 嵌入外部内容7.2.1 基础知识7.2.2 案例 1&#xff1a;嵌入…