android - 将字节数组转换为pdf文件然后保存

标签 android arrays pdf kotlin pdf-generation

我正在使用 Kotlin Android 应用程序访问 API 端点。在这个 API 调用中,我返回一个字节数组。我希望看到的是一种将字节数组转换为pdf文件并保存在手机下载文件夹中的方法。

    private suspend fun getIDCard(sessionID: String?, carriermemid: String?): ByteArray? {
        var results: String = ""

        val postData = "{\"sessionid\": \" $sessionID\"}"
        val outputStreamWriter: OutputStreamWriter

        var byteArray: ByteArray? = null
        val url: URL = URL(idURL + carriermemid)
        val conn: HttpURLConnection = url.openConnection() as HttpURLConnection

        try {
            conn.setRequestProperty(apiConfig.typeKey, apiConfig.typeValueJSON)
            conn.setRequestProperty("Accept", "application/json")
            conn.setRequestProperty("sessionid", sessionID)
            conn.requestMethod = apiConfig.methodGet


            val responseCode: Int = conn.responseCode
            println("Response Code :: $responseCode")
            //returning 404
            return if (responseCode == HttpURLConnection.HTTP_OK) {// connection ok
                var out: ByteArrayOutputStream? = ByteArrayOutputStream()
                val `in`: InputStream = conn.inputStream
                var bytesRead: Int
                val buffer = ByteArray(1024)
                while (`in`.read(buffer).also { bytesRead = it } > 0) {
                    out!!.write(buffer, 0, bytesRead)
                }
                out!!.close()
                byteArray = out.toByteArray()
                return byteArray

            } else {
                return byteArray
            }

        } catch (ex: Exception) {
            ex.printStackTrace()
        } finally {
            conn.disconnect()
        }
        return byteArray
    }

最佳答案

这将获取Android下载目录并将字节数组写入PDF文件(假设字节数组包含PDF)。将 File.createTempFile 更改为您喜欢的任何文件(您不需要创建临时文件):

fun writeBytesAsPdf(bytes : ByteArray) {
   val path = requireContext().getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)
    var file = File.createTempFile("my_file",".pdf", path)
    var os = FileOutputStream(file);
    os.write(bytes);
    os.close();
}

您还必须将 android.permission.WRITE_EXTERNAL_STORAGE 添加到 list 中。

关于android - 将字节数组转换为pdf文件然后保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61880335/

相关文章:

java - 从 Java 中的 PDF 文件解析字体大小

c++ - 在 PDF 中,如果 Encoding 和 ToUnicode 都存在于 PDF 中,如何映射文本提取?

android - NetworkUsage Android 代码示例在启动时崩溃?

android - 如何在android studio中设置编译库。 Lombok

php - mongodb查询子数组

arrays - 在一个非常大的数组中计算较小或相等元素的更快方法?

java - 从转换工具中删除裁剪

java - 如何在android中使用另一个应用程序时停止一个应用程序的服务

c++ - 将数组排序从降序切换为升序

Java 屏幕截图应用程序 - 如何?