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);//字体1
            Font fontH2 = new Font(bfChinese, 12, Font.NORMAL);//字体2
            PdfWriter 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);
        }
    }
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pytorch学习笔记(十二)

以下代码是以CIFAR10这个10分类的图片数据集训练过程的完整的代码。 训练部分 train.py主要包含以下几个部件&#xff1a; 准备训练、测试数据集用DateLoader加载两个数据集&#xff0c;要设置好batchsize创建网络模型&#xff08;具体模型在model.py中&#xff09;设置损失函…

【大数据】Flink SQL 语法篇(三):窗口聚合(TUMBLE、HOP、SESSION、CUMULATE)

Flink SQL 语法篇&#xff08;三&#xff09;&#xff1a;窗口聚合 1.滚动窗口&#xff08;TUMBLE&#xff09;1.1 Group Window Aggregation 方案&#xff08;支持 Batch / Streaming 任务&#xff09;1.2 Windowing TVF 方案&#xff08;1.13 只支持 Streaming 任务&#xff…

自己实现的小功能

小功能实现 2024/1/31 问题一&#xff1a; 将文本模式的csv文件作为表编辑之后&#xff0c;先要再变回来。找了5分钟都没找到&#xff0c;去网上搜也没搜到 解决方案 复制一份&#xff0c;对没错。 不是把表遍历一遍&#xff0c;重新将数据写入。 3.5给的答案就是重新写入…

网络防御基础介绍和基本的策略集

1.什么是防火墙 防火墙的主要职责在于&#xff1a;控制和防护 --- 安全策略 --- 防火墙可以根据安全策略来抓取流量之后做出对应的动作。 2.防火墙的分类 防火墙吞吐量 --- 防火墙同一时间处理的数据量 3.防火墙的历史 4.防火墙的分类 1.基于数据包的防火墙-包过滤防火墙 缺…

深度学习(9)--pydot库和graphviz库安装流程详解

目录 一.pydot库安装 二.graphviz库安装 一.pydot库安装 pydot的安装可直接在编译器安装相关包&#xff0c;以PyCharm举例&#xff1a; 如果搜索可用软件包显示为空&#xff0c;记得在此处把使用Conda软件包管理器”点亮 二.graphviz库安装 点击链接下载安装包graphviz-2.38…

网络协议与攻击模拟_11DHCP欺骗防护

开启DHCP 监听 ip dhcp snooping 指定监听vlan ip dhcp snooping vlan 1 由于开启监听后&#xff0c;交换机上的接口就全部变成非信任端口&#xff0c; 非信任端口会拒绝DHCP报文&#xff0c;会造成正常的DHCP请求和响应都无法完成。 现在是请求不到IP地址的&#xff0c;…

字符串匹配算法(BF、KMP)

一 字符串匹配算法—BF算法 BF算法简称暴力破解算法&#xff0c;时间复杂度很容易计算为O&#xff08;m*n&#xff09;(当n>>m时候) 本身字符串S&#xff0c;长度为m 模式字符串T,长度为n 最差情况&#xff0c;需要匹配(n-m)mm才可以成功&#xff0c;所以时间复杂度就是…

tarojs View多行文本无法换行问题解决

问题&#xff1a;未换行 code&#xff1a; 解决&#xff1a; 加上换行属性的css就好了 white-space: break-spaces;

银行ATM监控对讲系统分机可视对讲分机|ATM音视频终端IP网络可视对讲终端IP对讲终端对讲分机IP网络对讲系统

SV-6301T可视对讲终端 &#xff08;单键&#xff09; 产品简介 产品简介&#xff1a; 一键报警可视对讲终端是用于平安城市、银行、医院&#xff0c;智慧养老&#xff0c;景区&#xff0c;智慧路灯&#xff0c;平安校园&#xff0c;智慧电梯&#xff0c;无人超市等方案中的一…

哈希表算法模版

模拟散列哈希表 活动 - AcWing 拉链法 思路&#xff1a; 代码如下&#xff1a; #include <cstring> #include <iostream>using namespace std;const int N 1e5 3; // 取大于1e5的第一个质数&#xff0c;取质数冲突的概率最小 可以百度//* 开一个槽 h int h[…

jmeters响应结果反写csv文件及参数化

1.http响应结果反写csv文件 1.1各参数设置级别 线程组&#xff08;一级&#xff09;---->请求默认值、请求头、http请求、察看结果树&#xff08;二级&#xff09;----->正则表达式、BeanShell 后置处理程序&#xff08;三级&#xff09;。 1.2.正则表达式提取反写参数…

Backtrader 文档学习-Cheat-On-Open

Backtrader 文档学习-Cheat-On-Open 1.概述 V1.9.44.116增加了Cheat On Open的支持。对于全押的人来说&#xff0c;这似乎是一个必需的功能&#xff0c;用bar的收盘价后进行计算&#xff0c;希望与开盘价相匹配。 当开盘价差距&#xff08;上涨或下跌&#xff0c;取决于买入或…

SpringClound项目相关

nacos本机模式非虚拟机启动也可正常连接 nacos中的配置中心相当于在application.yml中的相关配置&#xff0c;转移位置&#xff0c;内容同application.yml完全一样均可。 黑马项目导入后&#xff0c;依赖缺失&#xff1a; 首先尝试maven重新加载&#xff0c;控制台提示传递依…

聊一聊GPT、文心、通义、混元

我使用同一个Prompt提示词“请以记叙文的文体来写”&#xff0c;分别发送给GPT-3.5&#xff08;调用API&#xff09;、文心、通义、混元&#xff0c;下面是它们各自生成的文本内容&#xff0c;大家一看便知了。 GPT-3.5&#xff1a; 在我个人使用GPT模型的过程中&#xff0c;我…

ESP32-C3 vscode USB-Serial-JTAG 调试

硬件 接线 查看驱动 vs code配置 debugging via builtin USB-JTAG 配置调试UART 配置下载类型 创建调试配置 调试 参考 esp32c3内置USB-Serial-JTAG的使用 链接: link 看了之后&#xff0c;还是不会ESP32-C3的调试及下载&#xff0c;你过来打我&#xff01;&#xff01;&…

KAFKA高可用架构涉及常用功能整理

KAFKA高可用架构涉及常用功能整理 1. kafka的高可用系统架构和相关组件2. kafka的核心参数2.1 常规配置2.2 特殊优化配置 3. kafka常用命令3.1 常用基础命令3.1.1 创建topic3.1.2 获取集群的topic列表3.1.3 获取集群的topic详情3.1.4 删除集群的topic3.1.5 获取集群的消费组列表…

微信小程序之下拉刷新事件、上拉触底事件和案例

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

【方法】RAR分卷压缩文件如何打开?

当RAR压缩文件比较大&#xff0c;不利于传输时&#xff0c;我们可以把文件压缩成分卷文件&#xff0c;那压缩后的分卷文件如何打开呢&#xff1f;今天就来说说RAR分卷压缩文件的两种打开方法。 方法一&#xff1a; 和普通压缩包一样&#xff0c;打开分卷压缩包也需要用到解压…

Web3与个人隐私:打破数据壁垒的新时代

随着科技的不断发展&#xff0c;Web3技术的兴起为我们带来了一个全新的数字时代&#xff0c;重新定义了个人隐私的概念与实践。在这个时代&#xff0c;我们不再被动地成为数据经济的被动参与者&#xff0c;而是迎来了一个更加安全、透明和个人主导的网络生态。 1. 去中心化的数…

比FTP更好用的企业远程传输大文件工具居然是这个!

在数字化浪潮的推动下&#xff0c;企业对于数据传输的速度和安全性有了更高的要求。传统的FTP协议&#xff0c;尽管历史悠久&#xff0c;但在当前的企业应用场景中&#xff0c;其局限性逐渐暴露。企业现在寻求的是能够提供快速、安全、便捷且经济高效的文件传输解决方案。本文旨…