我在how to use PDFRenderer上关注此YouTube教程,以在ImageView上显示PDF。我下载了代码(说明中的链接),我自己尝试了。它工作,它显示PDF。但是,我得到的输出相当小。它不占用整个imageView区域。
这是我的布局生活:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="0dp"
android:scaleType="fitXY"
android:layout_weight="1"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/previous"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Previous" />
<Button
android:id="@+id/next"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Next" />
</LinearLayout>
</LinearLayout >
这是我的render()
功能:
private void render() {
try{
imageView = (ImageView) findViewById(R.id.image);
int REQ_WIDTH = imageView.getWidth();
int REQ_HEIGHT = imageView.getHeight();
Log.e(TAG, "width = " + REQ_WIDTH);
Log.e(TAG, "height = " + REQ_HEIGHT);
File SDCardRoot = Environment.getExternalStorageDirectory();
String destination = SDCardRoot.toString() + "/my/fileHere.pdf";
Bitmap bitmap = Bitmap.createBitmap(REQ_WIDTH, REQ_HEIGHT, Bitmap.Config.ARGB_4444);
File file = new File(destination);
PdfRenderer renderer = new PdfRenderer(ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY));
if(currentPage < 0) {
currentPage = 0;
} else if(currentPage > renderer.getPageCount()) {
currentPage = renderer.getPageCount() - 1;
}
Matrix m = imageView.getImageMatrix();
Rect rect = new Rect(0, 0, REQ_WIDTH, REQ_HEIGHT);
renderer.openPage(currentPage).render(bitmap, rect, m, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
imageView.setImageMatrix(m);
imageView.setImageBitmap(bitmap);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.invalidate();
} catch(Exception e) {
e.printStackTrace();
Log.e(TAG, "catch: " + e.toString());
}
}
我的宽度是1536,高度是1792.但是,输出不会最大化imageview的长度和宽度。我不得不玩一段时间的宽度和高度值。将它们与整数相乘得到较小的输出,而除法产生较大的输出(尽管质量似乎已经受到损害)。
似乎这是在Android L中添加的,因此它相对较新。然而,似乎有相当少的关于它的教程 - 考虑到我们最终有一个“原生”PDF观看课。