iText操作pdf

news2024/11/16 7:37:52

最近有个任务是动态的创建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);
        }
    }
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32矩形(矩阵)按键(键盘)输入控制LED灯 ——4*4矩阵按键源码解析

本文基于标准函数库的工程实现stm32F103C8T6使用4*4的矩阵按键控制LED灯的亮灭及闪烁等功能。 程序源码&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1_MPhvMduKCTP0MPG-Gtw3A?pwd2syk 提取码&#xff1a;2syk 文章目录 一、矩形键盘介绍 1、硬件电路基本原理 …

Sketch 英文转中文:轻松搞定

Sketch版本的转换一直是每个人的关键问题。现在UI设计领域有很多UI设计软件&#xff0c;但大部分都是英文版。对于国内英语基础差的设计师来说&#xff0c;使用这样的软件无形中增加了工作量&#xff0c;往往需要在设计编辑的同时查阅翻译。中文Sketch版本替代即时设计详细介绍…

动手学RAG:汽车知识问答

原文&#xff1a;动手学RAG&#xff1a;汽车知识问答 - 知乎 Part1 内容介绍 在自然语言处理领域&#xff0c;大型语言模型&#xff08;LLM&#xff09;如GPT-3、BERT等已经取得了显著的进展&#xff0c;它们能够生成连贯、自然的文本&#xff0c;回答问题&#xff0c;并执行…

常用网址备份

阿里git下载镜像 (npmmirror.com 主页有其他资源)https://registry.npmmirror.com/binary.html?pathgit-for-windows/

【Java】Spring的APO及事务

今日目标 能够理解AOP的作用 能够完成AOP的入门案例 能够理解AOP的工作流程 能够说出AOP的五种通知类型 能够完成"测量业务层接口万次执行效率"案例 能够掌握Spring事务配置 一、AOP 1 AOP简介 问题导入 问题1&#xff1a;AOP的作用是什么&#xff1f; 问题2&am…

Phoncent博客,探索Rie Kudan的GPT创作之举

近日&#xff0c;大家都在谈论日本作家Rie Kudan&#xff0c;她凭借其小说《东京共鸣塔》&#xff08;"Tokyo-to Dojo-to"&#xff09;荣获了日本极具声望的芥川奖。这本小说引起了广泛的讨论和思考&#xff0c;因为令人惊讶的是&#xff0c;Kudan在其中直接引用了人…

Python(19)Excel表格操作Ⅰ

目录 导包 读取EXCEL文件 1、获取worksheet名称 2、设定当前工作表 3、输出目标单元格数据 4、工作表.rows&#xff08;行&#xff09; 5、工作表.columns&#xff08;列&#xff09; 小结 导包 要想使用 python 操作 Excel 文件&#xff0c;应当导入 openpyxl 包。在…

Java 面试题之 IO(二)

字符流 文章目录 字符流Reader&#xff08;字符输入流&#xff09;Writer&#xff08;字符输出流&#xff09; 文章来自Java Guide 用于学习如有侵权&#xff0c;立即删除 不管是文件读写还是网络发送接收&#xff0c;信息的最小存储单元都是字节。 那为什么 I/O 流操作要分为字…

Jupyter notebook文件默认存储路径以及更改方法

目录 1、文件默认存储路径怎么查&#xff1f;2、文件默认存储路径怎么改&#xff1f; 转自&#xff1a;https://blog.csdn.net/fengyeer20120/article/details/109483362 初次使用Jupyter Notebook&#xff0c;确实好用啊&#xff01;但安装Anaconda后&#xff0c;打开Jupyter …

WebSocket 整合 记录用法

WebSocket 介绍 WebSocket 是基于tcp的一种新的网络协议,可以让浏览器 和 服务器进行通信,然后区别于http需要三次握手,websocket只用一次握手,就可以创建持久性的连接,并进行双向数据传输 Http和WebSocket的区别 Http是短连接,WebSocket’是长连接Http通信是单向的,基于请求…

个人建站前端篇(一)项目准备初始化以及远程仓库连接

云风的知识库 云风网前端重构&#xff0c;采用vue3.0vite antd框架&#xff0c;实现前后端分离&#xff0c;实现网站的SEO优化&#xff0c;实现网站的性能优化 vite创建vue项目以及前期准备 Vite 需要 Node.js 版本 18&#xff0c;20。然而&#xff0c;有些模板需要依赖更高…

su模型库免费下载哪家好?

选择SU模型库免费下载的网站&#xff0c;需要根据个人的需求和偏好进行评估。以下是一些热门的SU模型库免费下载网站&#xff0c;供您参考&#xff1a; ①建e网&#xff1a;这是一个专业的室内设计资源平台&#xff0c;包括各种类型的SU模型&#xff0c;如家装、公装、商业空间…

linux监控工具

官方吹的牛逼 LATEST BLOG POST: On the same workload, Netdata uses 35% less CPU, 49% less RAM, 12% less bandwidth, 98% less disk I/O, and is 75% more disk space efficient on high resolution metrics storage, while providing more than a year of overall reten…

vue3-深入组件-透传属性

透传属性 &#xff08;透传 attribute&#xff09; 什么是透传属性&#xff08;透传 attribute&#xff09;? 传递给一个组件&#xff0c;却没有被该组件声明为 props 或 emits 的 attribute 或者是事件监听器&#xff0c;例如 class style id 等。 属性继承 当一个组件以单…

面试:问js的forEach和map的区别

前言 为什么要写这么一篇文章&#xff0c;原因是今天下午水群的时候&#xff0c;有个小伙伴分享自己的面试题&#xff0c;其中一个是foreach和map的区别&#xff0c;其实是蛮简单&#xff0c;蛮基础的一道题&#xff0c;但是他是这么回答的 一个会改变原数组&#xff0c;一个不…

GitCode|部分项目开源代码

1.EasyKeyboard 基于MFC的简单软键盘&#xff0c;使用vs2017开发 PangCoder / EasyKeyboard GitCode基于Windows平台的软键盘&#xff0c;使用VS2017开发&#xff0c;使用MFC框架https://gitcode.net/qq_36251561/easykeyboard 2.EncoderSimulator 基于WPF应用的编码器模拟工…

什么是客户关系管理?流程是什么样的?

客户关系管理的目的是什么? 客户关系管理(CRM)使企业能够降低成本并增加利润。CRM系统用于组织、自动化和跟踪业务流程&#xff0c;例如潜在客户生成、营销、预测、销售、投资回报率测量和客户服务。因此&#xff0c;CRM系统的目的是促进这些领域的整合&#xff0c;并衡量和跟…

Xds (eXtensible Discovery Service)理解

Xds &#xff08;eXtensible Discovery Service&#xff09;理解 概念介绍 XDS&#xff1a;全称是 eXtensible Discovery Service&#xff0c;中文译为”可扩展的服务发现“。是一个扩展性的协议&#xff0c;可以用于配置和控制 Envoy 代理的各个方面&#xff0c;包括路由规则…

异步任务的一些思考

前言 XXL-Job部署教程 项目中&#xff0c;必然少不了数据的导入导出&#xff0c;针对数据的导入导出简单复盘一下。 为了不占用资源消耗时间&#xff0c;影响用户体验&#xff0c;大量数据的导入导出一般都是异步执行 导入的时候&#xff0c;如果数据量很大&#xff0c;一次…