【问题标题】:Open Password Protected PDF file within a viewer in android在 android 的查看器中打开受密码保护的 PDF 文件
【发布时间】:2013-03-09 09:08:28
【问题描述】:

我正在开发一个 pdf 阅读器,因为 android 没有任何原生 pdf 查看器,所以我必须使用第三方 pdf 查看器。 在这种情况下,我选择了适用于 android 的 Adob​​e pdf 查看器。 我可以打开存储在设备 SD 卡中的 pdf 文件。 现在我想从我的应用程序中打开受密码保护的 pdf 文件。 如果用户想手动打开受密码保护的 pdf 文件,请使用 打开时必须提供密码。 但我想从我的应用程序中打开那些密码 pdf 文件 任何密码提示。 应用程序提供密码,[应用程序知道密码]和没有 任何密码提示,pdf都会打开。

目前,如果我想从我的 应用程序然后出现密码提示,需要密码才能 打开它。

我正在使用此代码从 SDCARD 中存储的 pdf 文件中打开 pdf。

====

File pdfFile = new File(fileLocation); 
if (pdfFile.exists()) 
{ 
    Uri pdfFilepathUri = Uri.fromFile(pdfFile); 
    Intent intent = new Intent(Intent.ACTION_VIEW);    

    intent.setDataAndType(pdfFilepathUri, "application/pdf");      
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    try 
    { 
        startActivity(intent);
    } 
    catch (ActivityNotFoundException e) 
    { 
        Toast.makeText(this,"No Application Available to View PDF : "+fileLocation,Toast.LENGTH_LONG).show(); 
    } 
} 
 else 
Toast.makeText(this,"File cannot found : "+fileLocation,Toast.LENGTH_SHORT).show(); 

====

任何人都可以帮助我如何提供密码 应用程序,这样它就可以自动打开pdf文件,而无需 提示任何密码窗口。 ?

【问题讨论】:

    标签: android pdf


    【解决方案1】:

    如果用户想要手动打开受密码保护的 pdf 文件,则在打开时使用必须提供密码。但我想在没有任何密码提示的情况下从我的应用程序中打开那些密码 pdf 文件。

    欢迎您联系各种 PDF 查看应用程序的作者,看看他们是否支持通过 Intent extra 或其他方式传递 PDF 密码。记录在案的 ACTION_VIEW 协议中肯定没有任何内容旨在支持这种情况。

    【讨论】:

      【解决方案2】:

      简而言之,你不能。我知道没有 PDF 阅读器确实支持这个,但即使有,你也不能依赖安装了特定阅读器的用户 - 所以没有办法得到这个普遍适用。

      但是,您可以通过使用 handles all the heavy lifting of the PDF rendering 的库在您的应用程序中构建您自己的基本 PDF 视图,然后使用该视图打开 PDF 来解决此问题。一些此类库,例如链接的AndroidPdfViewer 库允许您指定密码,例如:

      pdfView.fromFile(file)
          .password("password123")
          .load();
      

      这将使您能够提供一个通用的解决方案来显示受密码保护的 PDF 文件,并且还具有不会在上下文之间泄露密码的额外安全优势。

      【讨论】:

        【解决方案3】:

        如果是 SD 卡中的 PDF:

        private void displayPDF() {
            
             dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Data/1.pdf/");
                 
                    pdfView.fromFile(dir)
                            .password("12345678")
                            .load();
        }
        

        【讨论】:

        • 您的答案需要解释以用于教育目的
        最近更新 更多