android 中的 PDF 文件中未显示图库中的图片

image from gallery is not displaying on pdf file in android

我正在尝试从我的 Android 应用程序中的图像创建 pdf。 我成功获取了图像并成功创建了 pdf 文件。但是当我打开我的 pdf 文件时,没有显示图像。我在互联网上尝试了很多解决方案,但都是徒劳的。 我正在粘贴我的代码。请指导我。

首先我要粘贴从画廊获取图像的代码

       Intent myIntent = new Intent(Intent.ACTION_PICK, 
        MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
             
              startActivityForResult(myIntent,120);

现在我正在粘贴 OnActivityResult 方法的代码,其中我正在获取图像并创建一个 pdf 文件。

 try {
    Document doc = new Document();
    if (resultCode == RESULT_OK) {
        if (requestCode == 120) {
            if (data.getData() != null) {
               Uri uri   = data.getData();


               Image image = Image.getInstance(uri.toString());
               FileOutputStream fileOutputStream =openFileOutput("mypdf.pdf", Context.MODE_PRIVATE);
                   PdfWriter.getInstance(doc, fileOutputStream);
                   doc.open();
                   doc.add(image);

                   doc.close();


            }
        }
    }
    } catch (IOException | DocumentException e) {
        e.printStackTrace();
    }

由于您使用的是 iText,因此您需要创建 BitMap 格式的图像,然后需要添加到 pdf 中。

ByteArrayOutputStream stream = new ByteArrayOutputStream();
Bitmap bitmap = MediaStore.Images.Media.getBitmap(contentResolver, <pass the uri of image>);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100 , stream);
Image myImg = Image.getInstance(stream.toByteArray());
myImg.setAbsolutePosition(470f,755f);
myImg.scaleToFit(100f,100f);
document.add(myImg);

我已经解决了,解决方案是使用输入流如下:

 Uri uri = data.getData();
        InputStream ims = getContentResolver().openInputStream(uri);
        Bitmap bitmap = BitmapFactory.decodeStream(ims);
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
        byte[] byteArray = stream.toByteArray();
        Image image = Image.getInstance(byteArray);
        doc.add(image);
        doc.close();