为了账号安全,请及时绑定邮箱和手机立即绑定

实现PDF阅读器的代码示例

/ 猿问

实现PDF阅读器的代码示例

四季花海 2019-09-21 15:05:42

我想在正在执行的应用程序中实现PDF阅读器,我发现了几个API,但是它们都不是开源的。


你们中有人知道免费的替代品吗?


OP 对Dipak Keshariya解决方案的略微调整

头等舱


package android.pdf.reader;


import java.io.File;

import java.io.FilenameFilter;


import net.sf.andpdf.pdfviewer.PdfViewerActivity;


import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.os.Environment;

import android.view.View;

import android.widget.ArrayAdapter;

import android.widget.ListView;


public class First extends Activity {


    @Override

    public void onCreate(Bundle savedInstanceState) 

    {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);


        File images = Environment.getExternalStorageDirectory();

        File[] imagelist = images.listFiles(new FilenameFilter()

        {  

                public boolean accept(File dir, String name)  

                {  

                        return ((name.endsWith(".pdf")));

                }  

        }); 

        String[] pdflist = new String[imagelist.length]; 

        for(int i = 0;i<imagelist.length;i++)

        {

                pdflist[i] = imagelist[i].getName();

        }

        this.setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, pdflist));

    }


    protected void onListItemClick(ListView l, View v, int position, long id) 

    {

            super.onListItemClick(l, v, position, id);

            Object[] imagelist;

            String path = ((File) imagelist[(int)id]).getAbsolutePath();

            openPdfIntent(path);

    }


    private void openPdfIntent(String path) 

    {

        try

        {

          final Intent intent = new Intent(First.this, Second.class);

          intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, path);

          startActivity(intent);

        }

        catch (Exception e) 

        {

          e.printStackTrace();

        }

    }


}

查看完整描述

2 回答

?
慕容708150

为此使用下面的代码。


First.java


public class First extends ListActivity {


    String[] pdflist;

    File[] imagelist;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        //setContentView(R.layout.main);


        File images = Environment.getExternalStorageDirectory();

        imagelist = images.listFiles(new FilenameFilter() {

            public boolean accept(File dir, String name) {

                return ((name.endsWith(".pdf")));

            }

        });

        pdflist = new String[imagelist.length];

        for (int i = 0; i < imagelist.length; i++) {

            pdflist[i] = imagelist[i].getName();

        }

        this.setListAdapter(new ArrayAdapter<String>(this,

                android.R.layout.simple_list_item_1, pdflist));

    }


    protected void onListItemClick(ListView l, View v, int position, long id) {

        super.onListItemClick(l, v, position, id);

        String path = imagelist[(int) id].getAbsolutePath();

        openPdfIntent(path);

    }


    private void openPdfIntent(String path) {

        try {

            final Intent intent = new Intent(First.this, Second.class);

            intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, path);

            startActivity(intent);

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}

Second.java


public class Second extends PdfViewerActivity {


    @Override

    public void onCreate(Bundle savedInstanceState) {

        // TODO Auto-generated method stub

        super.onCreate(savedInstanceState);

    }


    public int getPreviousPageImageResource() {

        return R.drawable.left_arrow;

    }


    public int getNextPageImageResource() {

        return R.drawable.right_arrow;

    }


    public int getZoomInImageResource() {

        return R.drawable.zoom_in;

    }


    public int getZoomOutImageResource() {

        return R.drawable.zoom_out;

    }


    public int getPdfPasswordLayoutResource() {

        return R.layout.pdf_file_password;

    }


    public int getPdfPageNumberResource() {

        return R.layout.dialog_pagenumber;

    }


    public int getPdfPasswordEditField() {

        return R.id.etPassword;

    }


    public int getPdfPasswordOkButton() {

        return R.id.btOK;

    }


    public int getPdfPasswordExitButton() {

        return R.id.btExit;

    }


    public int getPdfPageNumberEditField() {

        return R.id.pagenum_edit;

    }

}

并将这两个活动声明到清单文件中。


查看完整回答
反对 回复 2019-09-21
?
守着星空守着你

这对我有用。


1)将PdfViewer.jar添加到项目的构建路径中


2)将以下可绘制资源从PdfViewer / res / drawable复制到YourProject / res / drawable left_arrow.png right_arrow.png zoom_in.png zoom_out.png


3)将以下布局资源从PdfViewer / res / layout复制到YourProject / res / layout dialog_pagenumber.xml pdf_file_password.xml


4)从net.sf.andpdf.pdfviewer.PdfViewerActivity导出您的PDF活动


5)使用默认的可绘制对象和布局:


public int getPreviousPageImageResource() { return R.drawable.left_arrow; }


public int getNextPageImageResource() { return R.drawable.right_arrow; }


public int getZoomInImageResource() { return R.drawable.zoom_in; }


public int getZoomOutImageResource() { return R.drawable.zoom_out; }


public int getPdfPasswordLayoutResource() { return R.layout.pdf_file_password; }


public int getPdfPageNumberResource() { return R.layout.dialog_pagenumber; }


public int getPdfPasswordEditField() { return R.id.etPassword; }


public int getPdfPasswordOkButton() { return R.id.btOK; }


public int getPdfPasswordExitButton() { return R.id.btExit; }


public int getPdfPageNumberEditField() { return R.id.pagenum_edit; }

enter code here

6)调用使用以下代码派生的PdfViewActivity:


Intent intent = new Intent(this, YourPdfViewerActivity.class);


intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, "PATH TO PDF GOES HERE");


startActivity(intent);


查看完整回答
反对 回复 2019-09-21

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信