[英]Pdf rendered with PdfRenderer class shows very poor quality image. How to fix?
我正在尝试使用以下代码显示pdf文档
pdfRenderer = new PdfRenderer(parcelFileDescriptor);
PdfRenderer.Page page = pdfRenderer.openPage(position);
Bitmap bitmap = Bitmap.createBitmap(page.getWidth(), page.getHeight(),
Bitmap.Config.ARGB_8888);
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_PRINT);
imageView.setImageBitmap(bitmap);
问题是显示的pdf非常模糊。 下图显示与wps office应用程序显示的pdf的比较。
当我的应用程序运行缓慢时,如何提高位图的质量和性能。
尝试这个:
pdfRenderer = new PdfRenderer(parcelFileDescriptor);
PdfRenderer.Page page = pdfRenderer.openPage(position);
Bitmap bitmap = Bitmap.createBitmap(
getResources().getDisplayMetrics().densityDpi * mCurrentPage.getWidth() / 72,
getResources().getDisplayMetrics().densityDpi * mCurrentPage.getHeight() / 72,
Bitmap.Config.ARGB_8888
);
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_PRINT);
imageView.setImageBitmap(bitmap);
哪里:
因此,将#2乘以72得到的是英寸,再乘以DPI得到的是像素。 换句话说,要匹配显示器的打印设备的质量,您应该增加渲染图像的大小,因为默认的PDF分辨率为72 DPI。 还请检查此帖子 ?
@Mangaldeep的回答是正确的。 但是,他没有解决内存需求。
请关注这篇文章https://developer.android.com/topic/performance/graphics/load-bitmap
您可以将位图的大小增加一个因子,例如
x = size.x/page.getWidth().
其中size.x是您的屏幕尺寸。 宽度。 现在您可以创建新的位图,例如
Bitmap b = Bitmap.create(x*page.getWidth(), page.getHeight(),....);
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.