「这是我参与2022首次更文挑战的第13天,活动详情查看:2022首次更文挑战」
PDF神器iText英文版翻译与学习
作者: 薛大郎.
英文原版:iText in Action 2nd Edition.pdf
坚持. 分享. 成长. 利他 !
一. 前言
过年啦, 过年啦
辞旧迎新 过年啦! 今天还是来了, 大年初一的今天!
不管我们怎么留恋时间, 留恋自己喜欢的年华, 我们还是长大一岁, 而且你也已经深切体会到过年其实越来越没有年味了. 其实就如抖音中流行的说法, 有年味的也只是我们小时候, 也只是现在还小的我们的下一代. 所以我们只是 年味的搬运工
, 已不再是年味的主角. 但是等他们长大的时候, 他们所怀念的将是我们所塑造的 年味.
接下来我们还是不忘初心, 梦想在心, 我们的征途是星辰大海
.
二.正文.
6.1 继续详解PdfPTable和PdfPCell
首先注意一点: 当我们将一个PdfPTable添加到document中时, iText只会给我们展示已经完整的行, 而如果最后一行不完整, 则不展示, 所以需要我们上一篇的
PdfPTable.complateRow()
来填充默认的cell来展示所有的行. 其次iText会替我们来计算行, 所以我们只需要关注我们该添加多少个Cell就行了. 不用关注row的使用.
首先我们看下这个cell都可以是什么. 直接看PdfPTable的方法可以看到addCell有很多重载, 也就代表着有很多元素可以添加到table中. 有 String(文字), 有 PdfPTable(表格中的表格), 有Image(图片), 有Phrase(有段落也就是Paragragh的父类, 所以所有可以添加到Paragraph中的也都可以加到Cell中. ) 当然也可以添加PdfPCell, 我们再来看下PdfPCell的一些方法:
其实跟PdfPTable的addCell方法能够添加的一样. 所以这也是iText设计完美之处, 也是各司其职, 符合设计模式的6大原则. 大师之作
.
其实PdfPCell的对于文本的实现主要是 委托给 ColumnText来实现的, 之前我们看过ColumnText的一些作用, 这里我们再补充一下:
ColumnText 以列形式格式化文本。 文本由一系列行在左侧和右侧绑定。 这允许柱子具有任何形状,而不仅仅是矩形。 也可以设置几个参数,例如第一段行缩进和段落之间的额外空间。 调用go方法将输出这些文本, 结束这个列, 或者结束此次文本. 如果此列结束,则可以使用方法setColumns加载新的列定义,并且可以再次调用方法go 。 如果文本结束,可以使用addText加载更多文本,并且可以再次调用go方法。 唯一的限制是每次都必须加载一个或多个完整的段落。 支持完全双向重新排序。
如果感兴趣的同学可以看下, PdfPCell也有很多样式相关的setter方法, 由于之前介绍Phrase的方法一样都可以来调整这些样式儿.
那自然而然PdfPTable的原理大家也就清楚了, 就是这些PdfPCell堆叠出来的, 对于上一篇中的上边的表格,其实就是矩形的方法, 还有Phrase的方法以及ColumnText的能力来实现的.
就不一一列举了. 我们下一篇来介绍一些特殊的用法.