Vivek Kansal Ответов: 0

Как показать pdf файл в pdfviewer android


public class MainActivity extends AppCompatActivity {
private ImageView imageview;
private int currentpage =0;
private Button next,previous;
    String path;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        next = (Button) findViewById(R.id.next);
        previous = (Button) findViewById(R.id.previous);


        next.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                currentpage++;
                render();
            }
        });
        previous.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                currentpage--;
                render();
            }
        });
        render();
    }
private void render(){
        try{

            imageview =(ImageView)findViewById(R.id.image);
            int REQ_WIDTH = imageview.getWidth();
            int REQ_HEIGHT= imageview.getHeight();
            Bitmap bitmap = Bitmap.createBitmap(REQ_WIDTH,REQ_HEIGHT,Bitmap.Config.ARGB_4444);

File file = new File(path);
if(file==null){
    Toast.makeText( MainActivity.this,"file not exists",
            Toast.LENGTH_LONG).show();
}else{
    Toast.makeText( MainActivity.this,path,            Toast.LENGTH_LONG).show();
}
            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.invalidate();
        }catch (Exception e){}
}




    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"

    tools:context=".MainActivity">
<ImageView
    android:id="@+id/image"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:scaleType="fitCenter"
    />
    <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>


Что я уже пробовал:

Я использую pdfviewer для просмотра pdf-файлов .При использовании третьей библиотеки и приведении выше строкового пути PDF-файл отображается, а при использовании просто во встроенной библиотеке (как и выше) он показывает пустой экран. Кнопки и меню отображаются, но не pdf-файл(белый экран). Пожалуйста, кто-нибудь, помогите.

David Crow

Переменная path не было ли присвоено значение? Это намеренно?

Vivek Kansal

path = "/storage/3737-3933/lec3.pdf"; .Извините, что эта строка была пропущена во время копирования вставки.

David Crow

Где происходит это назначение? Ты уже переступил порог render() использование отладчика (чтобы увидеть, не возникает ли исключение)?

0 Ответов