「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战」
PDF神器iText英文版翻译与学习
作者: 薛大郎.
英文原版:iText in Action 2nd Edition.pdf
坚持. 分享. 成长. 利他 !
一. 前言
你离韦神有多远?
我想大部分人自从毕业以后就基本脱离了数学的困扰,因为小学的数学基础就够我们柴米油盐使用了, 除非一些与数学相关的职业。 而对于我们开发来讲更多的是业务处理,功能实现,除非在面试和一些问题上会用到算法, 而算法只是数学中的一小部分。当技术群中抛出一道小学数学题,可能都能把你难住。所以更别说比韦神了,甚至都不如自己上学时候的数学老师。 当然这个话题也只是为下边铺个垫,并没有多少意义。 但是我还是希望能看到我文章的各位读者大大能够多肝肝算法,因为算法的功力决定了你多大的成就,他是Coder的基础。
二.正文.
5.1 详细讲解PdfContentByte的一些使用方便方法
首先在讲解之前我要跟大家说明白一些事情, 在使用iText的过程中大家可能会在数学运算上多下很多功夫,尤其是在排版上。 这也是没办法的事情,iText已经为我们做了很多方便的方法, 但是一些自定义的, 就需要处理复杂计算的样式调整目前除非你使用付费软件来处理, 否则就需要自行处理。
Font helvetica = new Font(FontFamily.HELVETICA, 12);
BaseFont bf_helv = helvetica.getCalculatedBaseFont(false);
// 在添加一些 文字时, 需要先使用此方法, 并且要记得使用endText来结束
canvas.beginText();
// 设置字体和字体大小
canvas.setFontAndSize(bf_helv, 12);
/*
* 显示与旋转对齐的文本右、左或中心。
* param:
* alignment - 对齐可以是 ALIGN_CENTER、ALIGN_RIGHT 或 ALIGN_LEFT
* text – 要显示的文本
* x – x 枢轴位置
* y – y 轴心位置
* rotation - 逆时针应用的旋转度数
* public void showTextAligned(final int alignment, final String text, final float x, final float y, final float rotation)
*/
canvas.showTextAligned(Element.ALIGN_LEFT, foobar, 400, 788, 0);
canvas.showTextAligned(Element.ALIGN_RIGHT, foobar, 400, 752, 0);
canvas.showTextAligned(Element.ALIGN_CENTER, foobar, 400, 716, 0);
canvas.showTextAligned(Element.ALIGN_CENTER, foobar, 400, 680, 30);
// 显示向右、向左或居中紧缩并与旋转对齐的文本 与showTextAligned()相似
canvas.showTextAlignedKerned(Element.ALIGN_LEFT, foobar, 400, 644, 0);
canvas.endText();
上一篇讲到的ColumnText内容这节补充一下。
Phrase phrase = new Phrase("Damon Xue", FONT);
/**
* 显示一行文本。 只写第一行。
*
* @param canvas 文本将被写入的位置
* @param alignment 对齐,不受运行方向影响
* @param phrase 带有文本的Phrase
* @param x x 参考位置
* @param y y 参考位置
* @param rotation 逆时针应用的旋转度数
* @param runDirection 运行方向
* @param arabicOptions 阿拉伯语整形的选项
*/
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase, 200, 572, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase, 200, 536, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, phrase, 200, 500, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, phrase, 200, 464, 30);
ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, phrase, 200, 428, -30);
这一章其实内容并不多,因为主要的是处理的上下两层的东西, 用的也并不多,但是用到了一定要知道。主要的是下一篇文章的PdfTemplate实体,比较常用。