在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中编辑文本内容了。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值