Java Android PDF (Bitmap) не отображается в полном размере

Я пытаюсь показать файл PDF в своем приложении, но когда я показываю файл, он не отображается в полном размере, он занимает только около 1/4 экрана.

Вот мой код:

public void render() {
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {

        final ImageView pdfView = (ImageView) getActivity().findViewById(R.id.pdfView);
        pdfView.post(new Runnable() {
            @Override
            public void run() {
                try {
                    int width = pdfView.getWidth();
                    int height = pdfView.getHeight();

                    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_4444);
                    System.out.printf("Filename: " + pdfFile.getName());
                    PdfRenderer renderer = new PdfRenderer(ParcelFileDescriptor.open(pdfFile, ParcelFileDescriptor.MODE_READ_ONLY));

                    if (currentPage < 0) {
                        currentPage = 0;
                    } else if (currentPage > renderer.getPageCount()) {
                        currentPage = renderer.getPageCount() - 1;
                    }

                    Matrix m = pdfView.getImageMatrix();
                    Rect rect = new Rect(0, 0, width, height);
                    renderer.openPage(currentPage).render(bitmap, rect, m, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
                    pdfView.setImageMatrix(m);
                    pdfView.setImageBitmap(bitmap);
                    pdfView.invalidate();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

Когда я регистрирую ширину и высоту, я получаю результаты: 1440/1944

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
158
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте установить его как ширину и высоту страницы. Используйте приведенный ниже код и проверьте

 PdfRenderer renderer = new PdfRenderer(ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY));
                PdfRenderer.Page page = renderer.openPage(0);
                int pageWidth = page.getWidth();
                int pageHeight = page.getHeight();
                float scale = Math.min((float) REQ_WIDTH / pageWidth, (float) REQ_HEIGHT / pageHeight);
                Bitmap bitmap = Bitmap.createBitmap((int) (pageWidth * scale), (int) (pageHeight * scale), Bitmap.Config.ARGB_8888);
                page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
                imageView.setImageBitmap(bitmap);

Спасибо, теперь файл отображается правильно.

user10200035 10.12.2018 14:53

Другие вопросы по теме