如何为 PdfRenderer 启用深色模式



我正在使用PdfRenderer在Android应用程序中打开PDF文件。如果启用了深色主题,则文本为黑色,背景也是黑色,因此看起来像空白的黑屏。我可以在PdfRendere.Page中渲染文本时更改文本的颜色吗?

private void showPage(int index) {
if (pdfRenderer.getPageCount() <= index) {
return;
}
if (null != currentPage) {
currentPage.close();
}
currentPage = pdfRenderer.openPage(index);
Bitmap bitmap = Bitmap.createBitmap(currentPage.getWidth(), currentPage.getHeight(),
Bitmap.Config.ARGB_8888);
currentPage.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
imageViewPdf.setImageBitmap(bitmap);
}

好吧 不确定是否是正确的答案,但我在摄影中将位图转换为否定,不确定是否足够有效,但它对我有用:

首先,您必须使用 pageRenderer 渲染位图:

var currentPage: PdfRenderer.Page = pdfRenderer.openPage(position)
currentPage?.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_PRINT)
val nightModeFlags = parent.context.resources?.configuration?.uiMode?.and(Configuration.UI_MODE_NIGHT_MASK)
darkThemeEnabled = Configuration.UI_MODE_NIGHT_YES == nightModeFlags
if (darkThemeEnabled) {
bitmap = invert(bitmap)
}

这是使位图负数的代码

private fun invert(original: Bitmap): Bitmap? {
val inversion = original.copy(Bitmap.Config.ARGB_8888, true)
val width = inversion.width
val height = inversion.height
val pixels = width * height
val pixel = IntArray(pixels)
inversion.getPixels(pixel, 0, width, 0, 0, width, height)
for (i in 0 until pixels) pixel[i] = pixel[i] xor RGB_MASK
inversion.setPixels(pixel, 0, width, 0, 0, width, height)
return inversion
}

希望对您有所帮助。 我必须澄清一下,这仅适用于文本,如果您在 pdf 中有图像,它将以负数显示。

相关内容

  • 没有找到相关文章

最新更新