PDF, отображаемый с помощью класса PdfRenderer, показывает изображение очень низкого качества.Как исправить? - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь отобразить 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-файл очень размытый.Я показываю сравнение с pdf, показанным офисным приложением wps на следующем изображении.

enter image description here

Как улучшить качество и производительность растрового изображения, поскольку мое приложение работает достаточномедленно.

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Ответ @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(),....);

Надеюсь, это поможет.

0 голосов
/ 01 декабря 2018

Попробуйте:

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);

где:

  1. getResources (). GetDisplayMetrics (). DensityDpi - это целевое разрешение DPI
  2. mCurrentPage.getWidth () возвращает ширину в точках Postscript, где каждая точка равна 1/72 дюйма.
  3. 72 (DPI) - это разрешение PDF по умолчанию.

Следовательно, если мы погрузимся на №2 на 72, получимдюймов и умножая на DPI мы получаем пиксели.Другими словами, чтобы соответствовать качеству печатающего устройства дисплея, вы должны увеличить размер отображаемого изображения, поскольку разрешение PDF по умолчанию составляет 72 DPI.Пожалуйста, проверьте также этот пост ?

Кредиты: https://stackoverflow.com/a/32327174/10471480

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...