大家好我已经写了一个ac #web服务,它以字节流的形式返回一个pdf作为response.Ance我从我的Android应用程序调用web服务我会将响应存储在一个数组字节中,直到这里我将能够做到但是之后我需要将该字节数组转换为pdf并且应该能够显示它。我有一个菜单页面,其中一旦按下按钮,就会调用带有文件名的Web服务并且点击按钮我应该能够打开pdf。这可能吗?或者还有一些其他更好的解决方案。我在网上查看了更好的理解,但我找不到一个可以帮助我更好地理解。我需要帮助请指导我们。如果你发表一个例子或链接会有所帮助。谢谢
感谢你的建议,但事情是我手头没有pdf我只有从web服务获得的数组字节所以我现在需要从这个数组字节重新生成pdf并显示它但我不是如何做到这一点
答案 0 :(得分:0)
尝试按照以下步骤操作
val inputStream = ByteArrayInputStream(byteArray)
suspend fun saveInputStreamAsPdfFile(inputStream: InputStream, applicationContext: Context): File? {
var outputFile: File? = null
withContext(Dispatchers.IO) {
try {
val directory = ContextCompat.getExternalFilesDirs(applicationContext, "documents").first()
val outputDir = File(directory, "outputPath")
outputFile = File(outputDir, UUID.randomUUID().toString() + ".pdf")
if (!outputDir.exists()) {
outputDir.mkdirs()
}
val outputStream = FileOutputStream(outputFile, false)
inputStream.use { fileOut -> fileOut.copyTo(outputStream) }
outputStream.close()
} catch (e: Exception) {
// Something went wrong
}
}
return outputFile
}
PdfRenderer
显示 PDFvar totalPdfPages: Int
fun showPdf(pdfFile: File) {
val input = ParcelFileDescriptor.open(pdfFile, MODE_READ_ONLY)
val renderer = PdfRenderer(input)
val wrapper = PdfRendererWrapper(renderer)
totalPdfPages = wrapper.getTotalPages()
showPdfPage(0)
}
fun showPdfPage(currentPageIndex: Int) {
val pageBitmap = wrapper.getBitmap(currentPageIndex)
imageView.setImageBitmap(pageBitmap) // Show current page
}