2

我正在开发一个 pdf 阅读器,因为 android 没有任何本机 pdf 查看器,所以我必须使用第三方 pdf 查看器。在这种情况下,我选择了适用于 android 的 Adob​​e pdf 查看器。我可以打开存储在设备 SD 卡中的 pdf 文件。现在我想从我的应用程序中打开受密码保护的 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 文件而不会提示任何密码窗口。?

4

3 回答 3

1

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

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

于 2013-03-09T11:48:58.280 回答
0

如果是 SD 卡中的 PDF:

private void displayPDF() {
    
     dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Data/1.pdf/");
         
            pdfView.fromFile(dir)
                    .password("12345678")
                    .load();
}
于 2021-04-05T09:52:58.910 回答
0

简而言之,你不能。我知道那里没有支持此功能的 PDF 阅读器,但即使有,您也不能依赖安装了该特定阅读器的用户 - 所以没有办法让它普遍工作。

但是,您可以通过使用处理 PDF 渲染的所有繁重工作的库来解决此问题,以便在您的应用程序中构建您自己的基本 PDF 视图,然后使用该视图打开 PDF。一些这样的库,例如AndroidPdfViewer链接的库允许您指定密码,例如:

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

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

于 2018-07-06T12:56:45.843 回答