Android 15下如何用PDFRenderer显示带批注的PDF?
Android 15 PdfRenderer 批注文本不显示问题
我原本的代码可以正常显示无批注的PDF,现在想基于Android 15开发者预览版的发布说明,增强代码以支持带批注的PDF,但批注文本始终无法显示。
尝试的核心代码片段
val params = RenderParams.Builder(RENDER_MODE_FOR_DISPLAY) .setRenderFlags(FLAG_RENDER_HIGHLIGHT_ANNOTATIONS).build() page.render(bitmap, null, null, params) Image(bitmap = bitmap.asImageBitmap(), contentDescription = null)
完整Composable代码
@RequiresApi(35) @Composable fun PdfViewer(uri: Uri, context: Context) { val pdfRenderer = remember { mutableStateOf<PdfRenderer?>(null) } val currentPage = remember { mutableStateOf<PdfRenderer.Page?>(null) } LaunchedEffect(uri) { currentPage.value?.close() pdfRenderer.value?.close() context.contentResolver.openFileDescriptor(uri, "r")?.let { pdfRenderer.value = PdfRenderer(it) currentPage.value = pdfRenderer.value?.openPage(0) } } currentPage.value?.let { page -> val bitmap = Bitmap.createBitmap(page.width*3, page.height*3, Bitmap.Config.ARGB_8888) val canvas = Canvas(bitmap) canvas.drawColor(Color.WHITE) canvas.drawBitmap(bitmap, 0f, 0f, null) val params = RenderParams.Builder(RENDER_MODE_FOR_DISPLAY) .setRenderFlags(FLAG_RENDER_TEXT_ANNOTATIONS).build() page.render(bitmap, null, null, params) Image(bitmap = bitmap.asImageBitmap(), contentDescription = null) } DisposableEffect(Unit) { onDispose { currentPage.value?.close() pdfRenderer.value?.close() } } }
问题说明
- 目标:在Android 15上使用
PdfRenderer渲染包含文本批注的PDF - 现象:仅能正常渲染无批注内容,批注文本无法显示
- 已尝试:分别使用
FLAG_RENDER_HIGHLIGHT_ANNOTATIONS和FLAG_RENDER_TEXT_ANNOTATIONS渲染标志,均未解决问题
内容的提问来源于stack exchange,提问作者MoeJoe
相关产品推荐
相关产品推荐

