首页 > 解决方案 > 从画廊添加图像并在 android studio 中保存为 pdf

问题描述

我在 android studio (Java) 中制作了一个应用程序,可以在文本框中填写一些简短的数据。该应用程序还有两个按钮,一个用于从图库加载图像,一个用于将完整数据保存为 pdf。我可以成功保存所有文本数据,但加载图像有问题。图像已成功加载到应用程序,但我不知道如何将其保存为 pdf。图像作为 ImageView 对象加载。只是提到pdf部分我使用itext。

请帮助提供将 ImageVIew 对象保存到 pdf 文件的提示或代码。

标签: androidpdfimageviewitext

解决方案


我有同样的问题,但我可以解决。首先我改变了我用来选择图像的方式,并用这段代码替换了它:

    Intent getImage = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(getImage, GALLERY_REQUEST_CODE);

然后,在 onActivityResult 类中,我使用以下方法将 uri 转换为位图:

     if(requestCode==GALLERY_REQUEST_CODE && resultCode== RESULT_OK && data!=null){
        Uri imageData = data.getData();
        String[] filePath = {MediaStore.Images.Media.DATA};
        Cursor cursor = getContentResolver().query(imageData,filePath,null,null,null);
        cursor.moveToFirst();

        int columnIndex = cursor.getColumnIndex(filePath[0]);
        String myPath = cursor.getString(columnIndex);
        cursor.close();

        Bitmap bitmap = BitmapFactory.decodeFile(myPath);

然后将位图传递给pdf

    pdf.addFoto(bitmap);

最后,在 pdf 模板中,我使用它来将图像放入表格中:

    public void addFoto (Bitmap u) {
    try{
        PdfPTable tabla = new PdfPTable(1);
        tabla.setWidthPercentage(60);
        tabla.setSpacingBefore(10);
        tabla.setSpacingAfter(10);

        Bitmap bmp = u;
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
        Image image = Image.getInstance(stream.toByteArray());

        PdfPCell imageCell = new PdfPCell();
        imageCell.addElement(image);
        tabla.addCell(imageCell);
        document.add(tabla);

推荐阅读