「这是我参与2022首次更文挑战的第6天,活动详情查看:2022首次更文挑战」
PDF神器iText英文版翻译与学习
作者: 薛大郎.
英文原版:iText in Action 2nd Edition.pdf
坚持. 分享. 成长. 利他 !
一. 前言
减肥和戒烟是我们最容易喊出的口号
本人不抽烟, 所以很难体会戒烟有多难, 而且抽烟也觉得没有太有意思. 但是减肥和我是有关系的, 虽不吃pig肉但是不瘦, 在冬日里减肥我想最简单健康的莫过于走路
, 冷空气也会消耗卡路里
(总想叫查克拉
), 所以近期在走路上班, 目标虽然是减肥, 但是真正的目标我想还是想健康而已. 对于搬砖人最缺的就是没有时间运动, 所以相对来说都显老, 在这里希望大家有时间要让自己吃吃苦头
.
二.正文.
4.1 Chunk(块):一个字符串,一个字体,或者一些属性
chunk是添加到文档中的最小有效文本块, 它的用法像极了StringBuffer的使用, 可以设置他的字体、字号、字体样式、字体颜色、背景、上下标、下划线、划线等属性, 而且使用也相当简单只需要调用它的Setter方法就可以改变这些属性.
可以从Chunk的构造方法中窥见一斑, 可以直接设置字体, 也可以接受一个Image来添加一个图片. 当然最常用的还是添加一段自定义字体的文字.
接下来再看下Chunk的setter方法:
都比较见名知意, 只拿出来一些特殊的也很常用的来说一下, 比如setTextRise()
可以将你要展示的字符串向上升起, 最常用的比如²
或者右上角的角标等.
我们把重点放在字体上边, 可能不把英语作为第二母语
的XDM在第一篇的HelloWorld案例中, 替换成中文后, 在生成的Pdf中并没有任何内容,其实不用慌, 这也是所有开始使用iText来生成Pdf的Chinese来说最常犯的一个问题, 其实就是字体问题, iText内置了很多的字体,但是主要还是英语的.其实这并不妨碍我们, 因为iText也很人性化的为我们打开了一扇大门, 我们可以很轻松的使用我们自己的字体.
这是最常用的一种创建一个字体或者叫做引入一个自定义的字体的静态方法.
/*
* @param name 字体名称或其在文件中的位置
* @param encoding 应用于此字体的编码
* @param embedded 如果字体要嵌入到 PDF 中,则为 true
* @return 返回一个新字体。 此字体可能来自缓存
* @throws DocumentException the font is invalid
* @throws IOException 字体文件可能无法读取.
*/
public static BaseFont createFont(String name, String encoding, boolean embedded) throws DocumentException, IOException {
return createFont(name, encoding, embedded, true, null, null, false);
}
例如:
BaseFont.createFont("/yourPath/font/yourFont.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
// 字体样式
enum FontStyle {
// Created to get rid of dependency of HtmlTags
NORMAL("normal"), BOLD("bold"), ITALIC("italic"), OBLIQUE("oblique"), UNDERLINE("underline"), LINETHROUGH("line-through");
字体的API比较简单这里就不深入介绍了.
我们也可以使用Phrase(当然paragraph作为Phrase)也可以添加多个Chunk块来形成一个段落, 大家可以动手搞起来, 这就不列了.
今天我们就讲到这里, 这样我们就可以使用iText写一段
很花
的情书. 愿各位佳人陪伴, 风吹秀发, 过个好年.