Я пытаюсь показать файл 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




Попробуйте установить его как ширину и высоту страницы. Используйте приведенный ниже код и проверьте
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);
Спасибо, теперь файл отображается правильно.