Java 错误:打开失败:enoint(没有这样的文件或目录)在文档pdf中添加库图像

Java 错误:打开失败:enoint(没有这样的文件或目录)在文档pdf中添加库图像,java,android,image,pdf,kotlin,Java,Android,Image,Pdf,Kotlin,我很难在我正在创建的pdf文档中添加来自移动图库的图像。传递映像路径将返回以下错误:错误:无法打开:enoint(此文件或目录不存在)。 我创建了一个类,用户可以从gallery中选择照片,也可以通过相机拍摄新图像。我将这些图像的路径存储在arraylist中。所以我需要将这些路径传递给创建pdf文档的函数 private val pathImage: ArrayList<String> = arrayListOf() private fun openCam() { ima

我很难在我正在创建的pdf文档中添加来自移动图库的图像。传递映像路径将返回以下错误:错误:无法打开:enoint(此文件或目录不存在)。 我创建了一个类,用户可以从gallery中选择照片,也可以通过相机拍摄新图像。我将这些图像的路径存储在arraylist中。所以我需要将这些路径传递给创建pdf文档的函数

private val pathImage: ArrayList<String> = arrayListOf()

private fun openCam() {
    imageCapture.setOnClickListener(object : View.OnClickListener {
        override fun onClick(v: View?) {
            if (checkPermission()) {
                val diretorio: File =
                    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
                val imagem =
                    File(diretorio.path + "/" + System.currentTimeMillis().toString() + ".jpg")
                uri = Uri.fromFile(imagem)
                val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
                startActivityForResult(intent, CAM)
            } else {
                requestPermission()
            }
        }
    })

   private fun openGatelry() {
    imageGallery.setOnClickListener(object : View.OnClickListener {
        override fun onClick(v: View?) {
            val intent = Intent()
            intent.type = "image/*"
            intent.action = Intent.ACTION_GET_CONTENT
            intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
            startActivityForResult(Intent.createChooser(intent, R.string.select_picture.toString()), GALLERY)
        }
    })
}

 override fun onActivityResult(
    requestCode: Int,
    resultCode: Int,
    data: Intent?
) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == CAM && resultCode == Activity.RESULT_OK && data != null) {
        val novaIntent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri)
        sendBroadcast(novaIntent)
        val imageCam = uri.getPath()
        if (imageCam != null) {
            Log.i("TAG", "Camera: "+imageCam)
            pathImage.add(imageCam)
        }
    } else if (requestCode == GALLERY && resultCode == Activity.RESULT_OK && data != null) {
        val clipData = data.clipData
        if (clipData != null) {
            for (i in 0 until clipData.itemCount) {
                val uri: Uri = clipData.getItemAt(i).uri
                pathImage.add(uri.path.toString())
                showImages()
            }
        } else {
            val uri = data.data
            if (uri != null) {
                pathImage.add(uri.path.toString())
                showImages()
            }
        }
    }
}


// Do something when user press the positive button
                val mDoc = Document()
                //pdf file name
                val mFileName = SimpleDateFormat(
                    "ddMMyyyy_HHmmss",
                    Locale.getDefault()
                ).format(System.currentTimeMillis())
                //pdf file path
                val mFilePath =
                    Environment.getExternalStorageDirectory().toString() + "/" + mFileName + ".pdf"
                try {
                    //create instance of PdfWriter class
                    PdfWriter.getInstance(mDoc, FileOutputStream(mFilePath))
                    //open the document for writing
                    mDoc.open()
                    val image = Image.getInstance("/storage/emulated/0/Pictures/1573066971461.jpg")
                    mDoc.add(image)
                    //close document
                    mDoc.close()
private val pathmimage:ArrayList=arrayListOf()
私人娱乐openCam(){
imageCapture.setOnClickListener(对象:View.OnClickListener{
覆盖有趣的onClick(v:视图?){
if(checkPermission()){
瓦尔·迪雷托里奥:文件=
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY\u图片)
瓦尔影像=
文件(diretorio.path+“/”+System.currentTimeMillis().toString()+“.jpg”)
uri=uri.fromFile(imagem)
val intent=intent(MediaStore.ACTION\u IMAGE\u捕获)
startActivityForResult(意图,CAM)
}否则{
请求权限()
}
}
})
私人娱乐openGatelry(){
imageGallery.setOnClickListener(对象:View.OnClickListener{
覆盖有趣的onClick(v:视图?){
val intent=intent()
intent.type=“image/*”
intent.action=intent.action\u获取内容
intent.putExtra(intent.EXTRA_允许_倍数,true)
startActivityForResult(Intent.createChooser(Intent,R.string.select_picture.toString()),GALLERY)
}
})
}
在ActivityResult上覆盖乐趣(
请求代码:Int,
结果代码:Int,
数据:意图?
) {
super.onActivityResult(请求代码、结果代码、数据)
if(requestCode==CAM&&resultCode==Activity.RESULT\u OK&&data!=null){
val novaIntent=Intent(Intent.ACTION\u MEDIA\u SCANNER\u SCAN\u文件,uri)
发送广播(novaIntent)
val imageCam=uri.getPath()
如果(imageCam!=null){
Log.i(“标签”,“摄像头:”+imageCam)
pathImage.add(imageCam)
}
}else if(requestCode==GALLERY&&resultCode==Activity.RESULT\u OK&&data!=null){
val clipData=data.clipData
if(clipData!=null){
for(在clipData.itemCount之前0中的i){
valuri:uri=clipData.getItemAt(i).uri
add(uri.path.toString())
showImages()
}
}否则{
val uri=data.data
if(uri!=null){
add(uri.path.toString())
showImages()
}
}
}
}
//当用户按下肯定按钮时,请执行某些操作
val mDoc=文档()
//pdf文件名
val mFileName=SimpleDataFormat(
“ddmmyyy_HHmmss”,
Locale.getDefault()
).format(System.currentTimeMillis())
//pdf文件路径
val mFilePath=
Environment.getExternalStorageDirectory().toString()+“/”+mFileName+“.pdf”
试一试{
//创建PdfWriter类的实例
getInstance(mDoc、FileOutputStream(mFilePath))
//打开文档进行写作
mDoc.open()
val image=image.getInstance(“/storage/emulated/0/Pictures/157306671461.jpg”)
mDoc.add(图像)
//关闭文档
mDoc.close()

在使用该文件之前,请确保该文件存在

// Make sure the directory exists.
File(mFilePath).mkdirs()
在访问图像文件之前,还要检查它是否存在

File imageFile = new File("/storage/emulated/0/Pictures/1573066971461.jpg");
if(imageFile.exists())
此外,不要忘记从用户那里获取权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />


但拍摄手机内部存储器图像的方法是正确的?您是使用图像选择器还是硬编码的方法获取路径?我使用了:
val image=File(diretorio.path+“/”+System.currentTimeMillis().toString()+“.jpg”)
I not used picker此选项无效。谁在此路径中创建图像?您应该使用图像选择器或类似的工具
File path=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY\u PICTURES);File File File=new File(path,“DemoPicture.jpg”)理解。我将编辑这个问题。在另一个类中,我获得图像(画廊/照相机)。唉,我如何发送到生成pdf类并在文档中使用这些选定的图像。您将获得
内容
Uri
,因此
Uri.path.toString()
没有意义。请保存一个
Uri
值列表,而不是“路径”列表。