文章18 | 阅读 10894 | 点赞0
之前也是有人问过我如何使用itext7在pdf的绝对位置中插入文本呢?这几天我也是查阅了相关资料,把相关应用场景和解决方法给大家说一说。
其实在pdf中的绝对位置中插入文本的应用场景还是很多的,最典型的应用场景如下:
这就是典型的应用场景,其实还有很多地方要用到这操作,让我们来怎么实现这操作。
大家是否还记得我们在itext7第二章里面提及过,最原始的坐标的原点在PDF的左下位置。
最简单的方法,就是使用Paragraph
对象的setFixedPosition
方法啦,该方法是继承自com.itextpdf.layout.ElementPropertyContainer
的方法,方法原型如下:
函数原型:
public T setFixedPosition(int pageNumber, float left,
float bottom,
UnitValue width)
参数:
代码实例:
Text text = new Text(String.format("Page %d", pdf.getNumberOfPages() - 1));
text.setBackgroundColor(Color.WHITE);
//前面这个text主要是设置背景色为白色,如果text的位置上面有内容就会覆盖掉内容
document.add(new Paragraph(text).setFixedPosition(
pdf.getNumberOfPages(), 549, 742, 100)); //这里面width取决于留空的宽度,这里我们尽量取大一点
运行结果:
width参数的选取
在这里我们要注意到width这个参数的选取,如果你的width选取的过小,那你的文字会以多行的形式展示,如下图是width=10的时候,效果下图:
当width=20的时候,效果如下图:
这种方法主要是利用了Rectangle
和Canvas
相结合来在特定位置添加文本,我们直接来看如下代码:
PdfPage page = pdf.addNewPage();
PdfCanvas pdfCanvas = new PdfCanvas(page);
Rectangle[] columns = {new Rectangle(6, 650, 100, 30),
new Rectangle(50, 500, 100, 100),}; //几个Rectangle对应几个位置
pdfCanvas.rectangle(columns[0]);
pdfCanvas.stroke();
Canvas canvas = new Canvas(pdfCanvas, pdf, columns[0]);
Paragraph p=new Paragraph("hssssas").setFont(f3).setBold().setFontSize(10); //Bold为设置粗体
canvas.add(p);
步骤如下:
Rectangle
pdfCanvas
画布的位置,表明要在这个矩形里面添加内容stroke()
函数,显示这个矩形,当然,你可以不掉用这个函数,那就不会显示这个矩形。pdfCanvas
来创建Canvas
实例Paragraph
对象,加粗,设置字体样式,设置字体大小。Canvas
中添加这个Paragraph
结果如下图所示:
PS:往矩形里面添加内容还会遇到其他情况,例如添加的内容超出了矩形的大小,那么添加的内容会怎么样呢,是否有解决方法呢?大家可以先行自己试一试,我会在其他章节里面提到这个问题
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/u012397189/article/details/78953637
内容来源于网络,如有侵权,请联系作者删除!