【发布时间】:2021-10-01 07:13:00
【问题描述】:
我正在尝试构建一个生成简单 PDF 文档的 Android 应用程序。
我写了这个函数:
@RequiresApi(Build.VERSION_CODES.KITKAT)
fun createDocument(text: String) {
val pdf = PdfDocument()
val page = pdf.startPage(PdfDocument.PageInfo.Builder(
100, 100, 1).create())
val canvas = page.canvas
val paint = Paint()
try {
canvas.drawText(text,20F,30F,paint)
pdf.finishPage(page)
val fileName = "doc${System.currentTimeMillis()}.pdf"
val file = File(getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS), fileName)
pdf.writeTo(file.outputStream())
pdf.close()
Toast.makeText(applicationContext, "$fileName has been created", Toast.LENGTH_SHORT).show()
}
catch (e: Exception) {
Toast.makeText(applicationContext, "Error: ${e.toString()}", Toast.LENGTH_SHORT).show()
}
}
当我运行此代码时,我看到了 toast 消息,但没有创建文件,我做错了什么?
【问题讨论】:
-
“但没有创建文件” -- 您在哪里以及如何查找它?
-
@CommonsWare 我正在查看系统的“文档”目录。我正在使用 Android Studio 模拟器。
-
您已保存到不同的存储位置。更好地查看 getExternalFilesDir()。
-
“我正在查看系统的“文档”目录”——这不是您编写文件的位置。你在哪里写它等于
Android/data/.../files/,其中...是你的应用程序ID。虽然这有点尴尬,但如果您想要一个用户可以直接访问的文件并且您也可以直接访问文件系统,那么它在很多方面都是您的最佳选择。 -
@CommonsWare 如何在模拟器中到达这个位置?
标签: android kotlin pdf-generation