在PDF中使用Paragraph进行文本段落的处理

上一篇文章中我们使用itxtpdf库中的方法,绘制了一个固定表格与一个动态表格。如果你想在PDF中加入文字该怎么办呢。可以使用本文推荐的Paragraph这个类去实现,效果如下:

我在PDF中插入了一个工作流的审批流程。具体实现呢还是使用itextpdf库中的方法。

Paragraph settleCycle = new Paragraph();直接新创建一个文本,后面我们将在这个号文本中进行文字的编辑。
for (BpmTaskRespVO process : taskProcess) {
                    //创建一个可以编辑文字的块区域
                    Chunk chunk = new Chunk("   任务"+i+": " + process.getName(), processTitle);
                    i--;
                    //进行换行
                    Chunk chunkRow1 = new Chunk("\n\n", content);
                    Chunk chunk1 = new Chunk("      审批人:  " + process.getAssigneeUser().getNickname(), content);
                    //给这一行加上北京颜色
                    chunk1.setBackground(new BaseColor(242,242,242),-5f,25f,400f,10f);
                    Chunk chunkSpace1 = new Chunk("         ", content);
                    Chunk chunk2 = new Chunk("   操作:  " + getDitcValue("bpm_process_instance_result", String.valueOf(process.getResult())), content);
                    Chunk chunkSpace2 = new Chunk("         ", content);
                    Chunk chunk3 = new Chunk("   审批时间:  " + process.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), content);
                    Chunk chunkRow2 = new Chunk("\n", content);
                    Chunk chunk4 = new Chunk(StringUtils.isNotBlank(process.getReason()) ? "     " + process.getReason() : "        处理中", restFont);
                    if (process.getResult().equals(AUDIT_SUCCESS_STATE)) {
                        chunk4 = new Chunk("        通过", passFont);
                    }
                    if (process.getResult().equals(AUDIT_FAIL_STATE)) {
                        chunk4 = new Chunk("        不通过", failFont);
                    }
                    //为审批状态单独设置颜色
                    chunk4.setBackground(new BaseColor(240,249,235),-5f,0f,10f,2f);
                    Chunk chunkRow3 = new Chunk("\n\n\n", content);
                    //依次将上面所创建的文本内容块添加到编辑区内
                    settleCycle.add(chunk);
                    settleCycle.add(chunkRow1);
                    settleCycle.add(chunk1);
                    settleCycle.add(chunkSpace1);
                    settleCycle.add(chunk2);
                    settleCycle.add(chunkSpace2);
                    settleCycle.add(chunk3);
                    settleCycle.add(chunkRow2);
                    settleCycle.add(chunk4);
                    settleCycle.add(chunkRow3);
                }

 主要就是使用Chunk这个类进行内容的拼接操作,如果不换行,所有块内容都会在一行,这个根据自己实际业务调整布局,我在每个汉字前都加入了空格,为了就是让这一行不要太靠左边,当然这个方法没有去采用正规的实现,但是这样实现起来很方便。这一块需要耐心调整。

接下来就将刚刚编辑好的内容在添加到文档document中即可:

settleCycle.setSpacingBefore(1f);
settleCycle.setSpacingAfter(2f);
settleCycle.setAlignment(Element.ALIGN_LEFT);
document.add(settleCycle);

这样就实现了在PDF中编辑文本内容了。

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

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

相关文章

0.98T优于10米高程DEM数据

我们在《全球30米100%水陆覆盖高程》一文中,为大家分享了全球100%覆盖,且包括海底高程的30米DEM数据。 该数据虽然全球无死角覆盖,但分辨率只有30米。 这里,再为大家分享一个优于10米的高程数据,但目前仅覆盖全国范围…

CSS学习笔记之中级教程(二)

CSS学习笔记之中级教程(一) 6、CSS 布局 - display: inline-block 与 display: inline 相比,主要区别在于 display: inline-block 允许在元素上设置宽度和高度。 同样,如果设置了 display: inline-block,将保留上下外…

Node.js基础:从入门到实战

初识 Node.js 与内置模块 (初识) 1、知道什么是node.js 2、知道node.js可以做什么 3、node.js 中js的组成部分 (内置模块) 4、用 fs 模块读写操作文件 5、使用 path 模块处理路径 6、使用http 模块写一个基本的web服务器 初识 N…

二.PVE创建 Ubuntu CT

二.PVE创建 Ubuntu CT 浏览器地址栏输入访问pve系统的网址,利用web端进行管理。注意进入pve系统时默认显示的有访问地址。本步骤的web访问地址为:https://192.168.1.102:8006。 出现该页面,选择继续前往。 进入管理页面后&…

图文成片剪辑软件,分享3个专业的工具!

在数字化时代,图文成片剪辑软件成为了我们创作与表达的重要工具。无论是想要制作一段引人入胜的短视频,还是打造一幅精美的图文海报,这些软件都能助你一臂之力。那么,图文成片剪辑软件的方法有哪些?又有哪些值得一试的…

衡量代理IP的因素

当你随便点开百度搜索IP代理,然后你就会看到,五花八门的IP代理商出现在视线中。再点进去链接,我们会发现,大多数IP代理商提供的基础IP服务都大差不差,东家这样说,西家又那样说,尽管我们看的头昏…

三步在 vite 中配置 tailwindcss

前言 tailwindcss 是一个原子化的 css 工具,可以让你免于写 css,只写 html 即可原理:利用你写的 html 的 class 名称来生成 css 样式,理解为一个 postcss 插件或 loader 第一步:安装 tailwindcss npm i -D tailwind…

JVM运行时内存:本地方法接口与本地方法栈

文章目录 1. 什么是本地方法?2. 为什么要使用Native Method?3. 本地方法现状 运行时内存整体结构如下图所示: 1. 什么是本地方法? 简单地讲,一个Native Method就是一个Java调用非 Java 代码的接口。一个Native Method是这样一个 …

GBDT调参--贝叶斯调参

随机抽特征和随机抽样本 n_estimators 是控制森林中树木的数量,即基评估器的数量。这个参数对随机森林模型的精确性影响是单调的,n_estimators越 大,模型的效果往往越好。但是相应的,任何模型都有决策边 n_estimators达到一定的程…

【资源汇总】GIS/RS相关软件包+数据分享(直接获取附链接)

01软件类 ArcGIS 10.2 链接:https://pan.baidu.com/s/1euHa3eTiaTjiOu-zxsi9eA?pwdnjov ArcGIS Pro 2.8.6 链接:https://pan.baidu.com/s/1Y3AQshCGL7tA1zdUc7s9PQ?pwdlkic ENVI 5.3 链接:https://pan.baidu.com/s/14k4IVlYIheNOr2to…

520告白好物有哪些?收下这份清单不迷茫!

在这个充满爱意的日子里,你是否正在为如何向心仪的人表达深情而犯愁?别担心,我们为你精心准备了一份520告白好物清单都是一些实用的礼品,为你提供多样化的选择,助你轻松传达爱意,让告白不再迷茫。快来看看吧…

网页设计web

效果图代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>* …

opencv4.8.0 GPU版本各平台编译

一、opencv4.8.0 ubuntu22.04上编译&#xff1a; 用cmake进行编译,需要配置三次。选中world选项&#xff0c;输入opencv_contrib_module路径。 ubuntu22.04上编译&#xff1a; cmake \ -D CMAKE_BUILD_TYPERELEASE \ -D CMAKE_INSTALL_PREFIX/usr/local \ -D BUILD_opencv_p…

HR人才测评:督导能力与岗位胜任力测评

督导能力指的是什么&#xff1f; 督导能力指的是为了实现某一种目标&#xff0c;不管是客户的利益还是组织的利益&#xff0c;在必要的时候引导他人的行为。对于企业而言&#xff0c;有督导能力的人可以指引企业更好的前进&#xff0c;他们代表的是标准&#xff0c;代表的是榜样…

策略模式详解

策略模式 1 概述 先看下面的图片&#xff0c;我们去旅游选择出行模式有很多种&#xff0c;可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。 作为一个程序猿&#xff0c;开发需要选择一款开发工具&#xff0c;当然可以进行代码开发的工具有很多&#xff0c;可以选择Idea进…

sqlserver正确配置

一、启动sql server 服务&#xff0c;右键–>启动 二、设置网络协议 三、启动sa用户 1.使用windows用户验证登录Studio工具 2.选择安全性–>登录名–>sa, 右键选择属性 3.设置服务器身份验证模式 4.导入数据库文件

在面对各种问题时,我们应该如何进行数据分析

python数据分析汇总 前言一、对比分析概念特征类型案例Matplotlib的颜色字母对照表解决遇到未知函数 二、相关性分析概念类型案例一案例二 三、时间序列分析概念类型案例 四、回归分析概念类型案例一案例二案例三 五、决策树概念计算过程案例 六、主成分分析概念计算过程案例 七…

【会议征稿,ACM出版】第四届人工智能,大数据与算法国际学术会议 (CAIBDA 2024, 7/5-7)

由河南省科学院、河南大学主办&#xff0c;河南省科学院智慧创制研究所、河南大学学术发展部、河南大学人工智能学院承办的第四届人工智能&#xff0c;大数据与算法国际学术会议 (CAIBDA 2024)将于2024年7月5-7日于中国郑州隆重举行。CAIBDA 2024致力于为人工智能&#xff0c;大…

数据库设计大题详解

大题一&#xff1a;画E-R图&#xff08;概念结构设计&#xff09; 实体就是具体的物品&#xff0c;关系就是实体之间的关系&#xff0c;属性就是特征&#xff0c;内涵的意思 简单的小栗子&#xff1a; 1对1&#xff0c;1对n&#xff0c;n对m&#xff0c;自己考虑两者存在这个关…

ubuntu虚拟机的 网卡不见了?

通过 ifconfig 命令查找不到自己的虚拟机上网网卡了,虚拟机的上网网卡名字是ens33 发现只有一个本地回环地址 执行如下两条指令可恢复网卡 sudo dhclient ens33#获取ip sudo ifconfig ens33#查看ip 再次通过ifconfig查看网卡信息