xxxxxxxxxx
class PDFScreenViewModel: ViewModel() {
val imageList = mutableStateListOf<ImageBitmap?>(null)
private val storageRef = FirebaseStorage.getInstance().reference
private val pathReference = storageRef.child("obras/${autorId}/${obraId}.pdf")
private val localFile = File.createTempFile("obra", "pdf")
init {
load()
}
fun load() {
pathReference.getFile(localFile).addOnSuccessListener {
imageList.clear()
if (it.task.isSuccessful) {
val input = ParcelFileDescriptor.open(localFile, ParcelFileDescriptor.MODE_READ_ONLY)
val renderer = PdfRenderer(input)
for (i in 0 until renderer.pageCount) {
val page = renderer.openPage(i)
val bitmap =
Bitmap.createBitmap(Constants.width, Constants.height, Bitmap.Config.ARGB_8888)
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY)
imageList.add(bitmap.asImageBitmap())
page.close()
}
renderer.close()
}
}
}
}
@Composable
fun PDFScreen(obraId: ObraId, autorId: AuthorId) {
val viewModel: PDFScreenViewModel = viewModel()
LazyColumn(modifier = Modifier.fillMaxSize()) {
items(items = viewModel.imageList) { imagen ->
if (imagen != null) {
Image(
modifier = Modifier
.fillMaxSize(), bitmap = imagen, contentDescription = "Prueba"
)
}
}
}
}
xxxxxxxxxx
@Composable
fun PDFScreen(obraId: ObraId, autorId: AuthorId) {
val storageRef = FirebaseStorage.getInstance().reference
val pathReference = storageRef.child("obras/${autorId}/${obraId}.pdf")
val localFile = File.createTempFile("obra", "pdf")
var imageList = remember { mutableStateListOf<ImageBitmap?>(null) }
pathReference.getFile(localFile).addOnSuccessListener {
imageList.clear()
if (it.task.isSuccessful) {
val input = ParcelFileDescriptor.open(localFile, ParcelFileDescriptor.MODE_READ_ONLY)
val renderer = PdfRenderer(input)
for (i in 0 until renderer.pageCount) {
val page = renderer.openPage(i)
val bitmap =
Bitmap.createBitmap(Constants.width, Constants.height, Bitmap.Config.ARGB_8888)
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY)
imageList.add(bitmap.asImageBitmap())
page.close()
}
renderer.close()
}
}
LazyColumn(modifier = Modifier.fillMaxSize()) {
items(items = imageList) { imagen ->
if (imagen != null) {
Image(
modifier = Modifier
.fillMaxSize(), bitmap = imagen, contentDescription = "Prueba"
)
}
}
}
}