繁体   English   中英

在页脚中添加文本和图像

[英]Adding text and image to footer

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();
}

我正在尝试向页面添加文本和页脚,但是没有添加。 当我尝试以下内容时,将显示文本,但如何使用image添加文本

ColumnText.showTextAligned(writer.getDirectContent(),
            Element.ALIGN_CENTER, new Phrase("Some Text"), (rect.getLeft() + rect.getRight()) / 2, rect.getBottom() - 18, 0);

首先是这样:我很惊讶文本显示在页面上,因为假设rect是CropBox或MediaBox,则在rect.getBottom() - 18位置添加内容意味着您要在页面的可视区域之外添加内容。 (当然:也许我认为rect是可见区域的假设可能是错误的。)

关于您的问题:如果使用document.add() ,则将Image包装在Chunk是可以的,但是document.add()不应在页面事件中使用,因此最好采用其他方法:

image.setAbsolutePosition((rect.getLeft() + rect.getRight()) / 2, rect.getBottom() + 18);
PdfContentByte canvas = writer.getDirectContent();
canvas.addImage(image);

另外:您可以检查stream.toByteArray()提供的字节是否表示正确的PNG文件? 为什么要以100%的质量压缩PNG? PNG是无损的(意味着质量参数将被忽略),并且您正在将一个PNG压缩为另一个PNG(而且我不明白为什么要这么做)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM