如何在Android中使用PDF查看器打开.pdf文件 [英] How to open a .pdf file using PdfViewer in Android

查看:216
本文介绍了如何在Android中使用PDF查看器打开.pdf文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的Andr​​oid应用程序中打开.pdf文件使用PDF查看器库。我已经下载了库文件,并添加它lib文件夹。另外我对清单添加权限。现在,浏览文件后,将显示对话框装载机的加载PDF页面的并且不显示文件。这里是我的code。

//浏览PDF文件

 意向意图=新意图(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType(应用程序/ PDF格式);
startActivityForResult(意向,PICK_FILE_REQUEST);

//的onActivityResult

 公共无效的onActivityResult(最终诠释请求code,INT结果code,
            意图数据){
        尝试{
            开关(要求code){
                案例PICK_FILE_REQUEST:
                如果(结果code == RESULT_OK){
                    尝试{
                        //阅读PDF文件
                        乌里selectedFile = data.getData();
                        字符串路径= selectedFile.getPath()的toString()。                        最终意向意图=新意图(MainActivity.this,ViewPdf.class);
                        intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME,路径);
                        startActivity(意向);
                    }赶上(例外五){
                        ShowDialog_Ok(错误,无法打开文件);
                    }
                }
                打破;
            }
        }赶上(例外五){
        }
    }

ViewPdf.class

 公共类ViewPdf扩展PdfViewerActivity {    @覆盖
    公共无效的onCreate(捆绑savedInstanceState){
        // TODO自动生成方法存根
        super.onCreate(savedInstanceState);
    }    公众诠释的get previousPageImageResource(){
        返回R.drawable.left_arrow;
    }    公众诠释getNextPageImageResource(){
        返回R.drawable.right_arrow;
    }    公众诠释getZoomInImageResource(){
        返回R.drawable.zoom_in;
    }    公众诠释getZoomOutImageResource(){
        返回R.drawable.zoom_out;
    }    公众诠释getPdfPasswordLayoutResource(){
        返回R.layout.pdf_file_password;
    }    公众诠释getPdfPageNumberResource(){
        返回R.layout.dialog_pagenumber;
    }    公众诠释getPdfPasswordEditField(){
        返回R.id.etPassword;
    }    公众诠释getPdfPasswordOkButton(){
        返回R.id.btOK;
    }    公众诠释getPdfPasswordExitButton(){
        返回R.id.btExit;
    }    公众诠释getPdfPageNumberEditField(){
        返回R.id.pagenum_edit;
    }
}


解决方案

添加PDF查看器作为项目库,复制其资源,你作为在这里指导。这是工作code我。我读从资产文件夹PDF。做定制作为您的需求量的。从上面的链接1.Download pdf阅读器项目。 2.将所有资源在项目中。 3.extend您的活动(其中要显示PDF格式)从PdfViewerActivity。 4.复制从pdfreader项目yourpdfview活动的所有方法。 5.Run。快乐编码

  AssetManager assetManager = getAssets();
   在的InputStream = NULL;
   出的OutputStream = NULL;
   档案文件=新的文件(getFilesDir(),ABC.pdf);
   尝试{
    在= assetManager.open(ABC.pdf);
    OUT = openFileOutput(file.getName(),Context.MODE_WORLD_READABLE);    copyFile(IN,OUT);
    附寄();
    在= NULL;
    了out.flush();
    out.close();
    出= NULL;
}赶上(例外五){
    Log.e(标签,e.getMessage());
} 意向意图=新意图(这一点,YourNextActivityName.class);
 intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME,getFilesDir()+/ABC.pdf);
startActivity(意向);}   私人无效copyFile(在的InputStream,OutputStream的了)抛出IOException
  字节[]缓冲区=新的字节[1024];
  INT读;
  而((读= in.read(缓冲))!= -1){
    out.write(缓冲,0,读);
}
}

yourpdfview活性的方法是

 公众诠释的get previousPageImageResource(){返回R.drawable.left_arrow; }
公众诠释getNextPageImageResource(){返回R.drawable.right_arrow; }
公众诠释getZoomInImageResource(){返回R.drawable.zoom_in; }
公众诠释getZoomOutImageResource(){返回R.drawable.zoom_out; }
公众诠释getPdfPasswordLayoutResource(){返回R.layout.pdf_file_password; }
公众诠释getPdfPageNumberResource(){返回R.layout.dialog_pagenumber; }
公众诠释getPdfPasswordEditField(){返回R.id.etPassword; }
公众诠释getPdfPasswordOkButton(){返回R.id.btOK; }
公众诠释getPdfPasswordExitButton(){返回R.id.btExit; }
公众诠释getPdfPageNumberEditField(){返回R.id.pagenum_edit; }

I want to open a .pdf file in my Android application Using PdfViewer library. I have downloaded the library file and added it on lib folder. Also i have added permissions on the manifest. Now after browsing the file it will show Loader Dialog "Loading PDF Page" and the file is not displayed. Here is my code.

//To Browse the pdf file

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("application/pdf");              
startActivityForResult(intent, PICK_FILE_REQUEST);

//onActivityResult

public void onActivityResult(final int requestCode, int resultCode,
            Intent data) {
        try {
            switch (requestCode) {
                case PICK_FILE_REQUEST:
                if (resultCode == RESULT_OK) {
                    try {
                        //To read PDF file
                        Uri selectedFile = data.getData();
                        String path =  selectedFile.getPath().toString();

                        final Intent intent = new Intent(MainActivity.this, ViewPdf.class);
                        intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, path);
                        startActivity(intent);
                    } catch (Exception e) {
                        ShowDialog_Ok("Error", "Cannot Open File");
                    }
                }
                break;
            }
        } catch (Exception e) {
        }
    }

ViewPdf.class

public class ViewPdf 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;
    }
}

解决方案

add PDFViewer as library in your project, copy its resources in your as guided in HERE. This is working code for me. I am reading pdf from assets folder. Do customization as your requirment. 1.Download pdf reader project from above link. 2. copy all resources in your project. 3.extend your activity(in which you want to display pdf) from PdfViewerActivity. 4. copy all methods from pdfreader project in yourpdfview activity. 5.Run. Happy Coding

   AssetManager assetManager = getAssets();
   InputStream in = null;
   OutputStream out = null;
   File file = new File(getFilesDir(), "ABC.pdf");
   try {
    in = assetManager.open("ABC.pdf");
    out = openFileOutput(file.getName(), Context.MODE_WORLD_READABLE);

    copyFile(in, out);
    in.close();
    in = null;
    out.flush();
    out.close();
    out = null;
} catch (Exception e) {
    Log.e("tag", e.getMessage());
}

 Intent intent = new Intent(this, YourNextActivityName.class);
 intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, getFilesDir() +           "/ABC.pdf");
startActivity(intent);

}

   private void copyFile(InputStream in, OutputStream out) throws    IOException {
  byte[] buffer = new byte[1024];
  int read;
  while ((read = in.read(buffer)) != -1) {
    out.write(buffer, 0, read);
}
}

The methods of yourpdfview activity are

   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; }

这篇关于如何在Android中使用PDF查看器打开.pdf文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆