如何使用itextpdf将图像附加到android中的现有pdf文件

时间:2017-10-06 11:49:34

标签: android itext

我正在使用文件代码以附加模式打开pdf文件。

String FILE = ROOT + "/PDF/" + "DemoLogix.pdf";
PdfWriter.getInstance(document, new FileOutputStream(FILE, true));
document.open();

但是当我使用以下代码添加图像时

            PdfPTable table5 = new PdfPTable(new float[]{1});
            Bitmap bitmap = BitmapFactory.decodeFile(path);  //path is where image is stored.
            ByteArrayOutputStream stream1 = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream1);
            Image image1 = Image.getInstance(stream1.toByteArray());
            PdfPCell cell3 = new PdfPCell(image1, false);
            cell3.setPadding(30);
            cell3.setBorderWidth(0.0f);
            image1.scaleToFit(100, 500);
            image1.setAlignment(image1.ALIGN_RIGHT);
            table5.addCell(cell3);
            document.add(table5);
            document.close();

它仍然不起作用。相反,它会覆盖以前的文本。请有人帮助我。

1 个答案:

答案 0 :(得分:1)

加载要修改的PDF

PdfReader reader = new PdfReader(srcPdf);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(destPdf));
PdfContentByte content = stamper.getOverContent(1);

然后,加载图像(imagePath是imagem文件的完整路径):

Image image = Image.getInstance(imagePath);

// scale the image to 50px height
image.scaleAbsoluteHeight(50);
image.scaleAbsoluteWidth((image.getWidth() * 50) / image.getHeight());

由于图像尺寸较大,因此在将其添加到PDF之前,它会缩放到50像素高度。

然后设置我们想要的页面坐标。请注意,Y轴的0值是页面的底部,而不是顶部:

image.setAbsolutePosition(70, 140);

您现在需要做的就是将其添加到页面参考并关闭压模:

content.addImage(image);
stamper.close();

就是这样!