[更文挑战]iText番盘-PDF神器-10

284 阅读3分钟

「这是我参与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实体,比较常用。