簡體   English   中英

如何在下載文件夾中存儲 pdf 文件

[英]How to store a pdf file in downloads folder

我制作了一個應用程序,它通過相機捕獲圖像並將它們轉換為 pdf 文件。 現在的問題是,根據 android 11 中的最新存儲更新,pdf 正在存儲在我的應用數據中,我們無法在應用數據之外創建新文件夾。 所以現在我想將我的 pdf 文件存儲到共享存儲下的下載文件夾中,這樣如果我卸載應用程序就不會刪除它。 這是我將 pdf 文件存儲在應用程序數據中的代碼:

private fun CreatePdf(list: ArrayList<Bitmap>){

    val file: File?=getOutputFile()
    if (file != null) {
        try {
            val fileOutputStream = FileOutputStream(file)
            val document = PDDocument()
            for(i in 0 until list.size) {
                val page = PDPage(A4)
                document.addPage(page)
                val contentStream = PDPageContentStream(document, page)

                val ximage = JPEGFactory.createFromImage(document, list[i], 1f)

                contentStream.drawImage(ximage, 0f, 0f)

                contentStream.close()
            }
            document.save(fileOutputStream)
            document.close()

        } catch (e: IOException) {
            e.printStackTrace()
        }
    }

}


private fun getOutputFile(): File?{
    val root: File = File(getExternalFilesDir(null),"my file")

    var isFolderCreated = true

    if (!root.exists()) {
        isFolderCreated = root.mkdir()
    }

    return if (isFolderCreated) {
        val timeStamp: String = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(Date())
        val imageFileName = "PDF_$timeStamp"
        File(root, "$imageFileName.pdf")
    } else {
        Toast.makeText(this, "Folder is not created", Toast.LENGTH_SHORT).show()
        null
    }
}

嘗試這個

var relativePath = Environment.DIRECTORY_DOWNLOADS
if (hasSubFolder) {
    relativePath += File.separator + yourSubFolderName
}
val fileName: String = yourFileName
val values = ContentValues()
values.put(MediaStore.MediaColumns.DISPLAY_NAME, fileName)
values.put(MediaStore.MediaColumns.RELATIVE_PATH, relativePath)
val cr = context.contentResolver
val uri = cr.insert(MediaStore.Downloads.EXTERNAL_CONTENT_URI, values)
uri?.let {
    val outputStream = cr.openOutputStream(uri)
    document.save(outputStream)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM