林使用下面的代码来呈现pdf。这是一个try / catch,效果很好,显示了pdf。
问题是pdf文件对于屏幕太大。有人知道如何将其缩小以适应吗?
谢谢你。
imageView = (ImageView) findViewById(R.id.imagePDF);
int REQ_WIDTH = imageView.getWidth();
int REQ_HEIGHT = imageView.getHeight();
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width12 = size.x;
int height12 = size.y;
Bitmap bitmap = Bitmap.createBitmap(width12, height12, Bitmap.Config.ARGB_4444);
File file = new File("/sdcard/Download/sample.pdf");
PdfRenderer renderer = new PdfRenderer(ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY));
if (currentPage < 0) {
currentPage = 0;
} else if (currentPage > renderer.getPageCount()) {
currentPage = renderer.getPageCount();
}
int pages;
pages = renderer.getPageCount();
Matrix m = imageView.getImageMatrix();
Rect rect = new Rect(0, 0, width12, height12);
renderer.openPage(currentPage).render(bitmap, rect, m, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
imageView.setImageMatrix(m);
imageView.setImageBitmap(bitmap);
imageView.invalidate();
您需要创建一个与页面的长宽比匹配的位图。最好也匹配ImageView的尺寸:
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);
编辑:
为了避免ImageView的width和height为0,一种解决方案是发布包含代码的Runnable:
imageView.post(new Runnable() {
public void run() {
// The above code goes here
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句