PDFReader在Android中呈现的输出小于预期

时间:2016-09-22 15:05:44

标签: android pdf-reader

我在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观看课。

0 个答案:

没有答案