在Android应用程序中显示pdf

时间:2011-06-27 03:13:52

标签: android pdf

我的应用程序中的resource/raw/color_chart_ciao.pdf中有一个PDF文件。我想在我的应用程序中显示该文件。我已为此编写代码:

File file = new File("http://www.adobe.com/devnet/acrobat/pdfs/pdf_open_parameters.pdf");
        System.out.println("FIle Path is" + file);
        if (file.exists()) {
            System.out.println("FIle Path is" + file);
            Uri path = Uri.fromFile(file);
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setDataAndType(path, "application/pdf");
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

            try {
                startActivity(intent);
                System.out.println("pdf show");
            } 
            catch (ActivityNotFoundException e) {
                Toast.makeText(CiaoView.this, 
                    "No Application Available to View PDF", 
                    Toast.LENGTH_SHORT).show();
            }
        }

但是当我运行我的应用程序时,我无法在应用程序上看到PDF。 我对应用程序开发更新。所以请帮助解决这个问题。

2 个答案:

答案 0 :(得分:0)

如果您在设备/模拟器中安装了任何默认PDF阅读器,则只能通过意图打开 PDF ,但您的应用程序将不是独立应用程序。如果您想让您的应用程序独立,那么您必须在应用程序中实现 PDF 阅读器。 PDF 上有开源项目,您可以阅读以下内容。

以下是 PDF 的几个链接:

  1. apdf
  2. mupdf

答案 1 :(得分:0)

在您的活动中复制以下代码。从任何地方调用函数CopyReadAssets(" File_name.pdf")。将File_name.pdf文件放在assets文件夹中。它会起作用!快乐的编码! :)

private void CopyReadAssets(String pdfname)
{
AssetManager assetManager = getAssets();
InputStream in = null;
OutputStream out = null;
File file = new File(getFilesDir(), pdfname);
try
{
    in = assetManager.open(pdfname);
    out = openFileOutput(file.getName(), Context.MODE_WORLD_READABLE);
    copyFile(in, out);
    in.close();
    in = null;
    out.flush();
    out.close();
    out = null;
} catch (Exception e)
{
    Toast.makeText(getApplicationContext(), "Pdf Viewer not installed", Toast.LENGTH_SHORT).show();
}
try
{
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(
        Uri.parse("file://" + getFilesDir() + "/"+pdfname),
        "application/pdf");

startActivity(intent);
}catch (Exception e) {
    // TODO: handle exception
    Toast.makeText(getApplicationContext(), "Pdf Viewer not installed" ,Toast.LENGTH_SHORT).show();
}

}