生成的iText PDF文档中心对齐图像

时间:2017-12-28 03:43:56

标签: android itext

我正在使用库“com.itextpdf:itextg”来生成PDF文件。我的要求是以A4格式将图像添加到PDF文件,每页一张图像。

ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
Image image = Image.getInstance(stream.toByteArray());
image.scaleToFit(PageSize.A4);
document.add(image);

默认情况下,图片会添加为顶部对齐,并且PDF文档页面底部会留下一些空白。

我想对齐图像,使所有边都留有相等的空间,图像放在中心。

我知道我们有一个方法setAbsolutePosition,但它需要absoluteX和absoluteY。我需要一些像CENTRE_HORIZONTAL和CENTRE_VERTICAL这样的亲戚。有人可以帮助生成中心对齐(垂直和水平)图像的PDF吗?

3 个答案:

答案 0 :(得分:6)

如果您确实需要A4页面,则需要计算缩放图像的X,Y位置,使其水平和垂直居中。

image.scaleToFit(PageSize.A4.getWidth(), PageSize.A4.getHeight());
float x = (PageSize.A4.getWidth() - image.getScaledWidth()) / 2;
float y = (PageSize.A4.getHeight() - image.getScaledHeight()) / 2;
image.setAbsolutePosition(x, y);
document.add(image);

这会将图像居中放在A4页面上。

但是,如果我是你,我不会尝试将图像居中放在A4页面上。相反,我会将页面大小调整为图像的大小。

答案 1 :(得分:2)

图像的水平中心对齐可以通过以下代码实现

        Image signature = Image.getInstance(stream.toByteArray());
        signature.scaleAbsolute(70f, 70f);
        signature.setAlignment(Element.ALIGN_CENTER);

答案 2 :(得分:-1)

使用setAlignment()进行居中图像。

Image image = Image.getInstance(stream.toByteArray());
image .setAlignment(Image.MIDDLE);

了解更多信息Read this