Android 向页脚添加文本和图像
我试图添加文本和页脚的页面,但它没有得到添加。当我尝试下面的方法时,会显示文本,但是如何添加带有图像的文本Android 向页脚添加文本和图像,android,pdf,itext,drawable,Android,Pdf,Itext,Drawable,我试图添加文本和页脚的页面,但它没有得到添加。当我尝试下面的方法时,会显示文本,但是如何添加带有图像的文本 try { java.io.InputStream ims = context1.getAssets().open("logo.png"); Bitmap bmp = BitmapFactory.decodeStream(ims); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bmp
try {
java.io.InputStream ims = context1.getAssets().open("logo.png");
Bitmap bmp = BitmapFactory.decodeStream(ims);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
Image image = Image.getInstance(stream.toByteArray());
ColumnText.showTextAligned(writer.getDirectContent(),
Element.ALIGN_CENTER, new Phrase(new Chunk(image, 0, 0)), (rect.getLeft() + rect.getRight()) / 2, rect.getBottom() - 18, 0);
} catch (IOException ex) {
return;
} catch (BadElementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
首先:我很惊讶页面上会显示文本,因为假设
rect
是CropBox或MediaBox,在rect.getBottom()-18
位置添加内容意味着在页面可视区域之外添加内容。(当然:我认为rect
是可见区域的假设可能是错误的。)
至于您的问题:如果您使用document.add()
,那么将图像
包装在块
中是可以的,但是document.add()
不应该用于页面事件,因此您最好使用不同的方法:
ColumnText.showTextAligned(writer.getDirectContent(),
Element.ALIGN_CENTER, new Phrase("Some Text"), (rect.getLeft() + rect.getRight()) / 2, rect.getBottom() - 18, 0);
另外:能否检查
stream.toByteArray()
提供的字节是否代表正确的PNG文件?为什么要以100%的质量压缩PNG?PNG是无损的(意味着质量参数将被忽略),您正在将一个PNG压缩为另一个PNG(我不明白您为什么要这样做)。谢谢它的工作,但图像的大小实际上更大。。。如何为图像指定大小。有不同的方法可以做到这一点:scalePercent()
,scaleAbsolute()
,等等。。。请参阅以获取概述。
image.setAbsolutePosition((rect.getLeft() + rect.getRight()) / 2, rect.getBottom() + 18);
PdfContentByte canvas = writer.getDirectContent();
canvas.addImage(image);