带有 PdfRenderer 的 SecurityException,带有受密码保护的 pdf,即使使用普通 pdf 也会重复
Posted
技术标签:
【中文标题】带有 PdfRenderer 的 SecurityException,带有受密码保护的 pdf,即使使用普通 pdf 也会重复【英文标题】:SecurityException with PdfRenderer, comes with password protected pdfs, and than repeats even with normal pdfs 【发布时间】:2019-04-16 06:09:23 【问题描述】:如果尝试使用 PdfRenderer API 打开受密码保护的 PDF,则在 catch 块内给出 SecurityException 并进行相应处理,然后进行 onDestroy 基本清理完成,然后返回主活动,然后导航一个简单的不受保护的 PDF,然后再次发生相同的异常。
请注意,只有在打开任何受保护的文件后才会发生这种情况。
参考以下代码:
@Override
protected PdfRenderer doInBackground(Uri... uri)
Uri uriToProcess = uri[0];
try
contentResolver=getContentResolver();
parcelFileDescriptor = contentResolver.openFileDescriptor(uriToProcess, "r");
if(parcelFileDescriptor!=null && mPdfRenderer==null)
mPdfRenderer = new PdfRenderer(parcelFileDescriptor);
catch (FileNotFoundException e)
exceptionMsg="Sorry! No such file or directory found";
handleExceptionInUI(exceptionMsg, progressDialog);
Log.e("$$$$ FNFException", e.toString());
catch (IOException e)
exceptionMsg="Sorry! Something went wrong with IO";
handleExceptionInUI(exceptionMsg, progressDialog);
Log.e("$$$$ IOException", e.toString());
catch (SecurityException e)
if (parcelFileDescriptor!=null)
try
parcelFileDescriptor.close();
parcelFileDescriptor = null;
contentResolver=null;
catch (IOException e1)
e1.printStackTrace();
if (mPdfRenderer!=null)
mPdfRenderer.close();
mPdfRenderer=null;
exceptionMsg="Password protected file, This can't be opened";
handleExceptionInUI(exceptionMsg, progressDialog);
Log.e("$$$$ SecurityException", e.toString());
catch (Exception e)
exceptionMsg="Sorry! Something went wrong.";
handleExceptionInUI(exceptionMsg, progressDialog);
Log.e("$$$$ EXCEPTION", e.toString());
return mPdfRenderer;
衷心感谢任何帮助。
【问题讨论】:
【参考方案1】:我的应用也遇到了同样的问题。我解决它的方法是使用https://github.com/TomRoush/PdfBox-android 并加载文档并检查密码保护。在没有引发 InvalidPasswordException 之后,可以使用 PdfRenderer 安全地加载文件。
【讨论】:
以上是关于带有 PdfRenderer 的 SecurityException,带有受密码保护的 pdf,即使使用普通 pdf 也会重复的主要内容,如果未能解决你的问题,请参考以下文章
PdfRenderer 在呈现受密码保护的文件后总是抛出“需要密码”SecurityException
使用 Sun PDFRenderer 进行 Java 打印编码
java技术开发 ,将pdf文档转成图片,使用PDFRenderer-0.9.0架包
带有 OpenIDAuthenticationFilter 问题的 Spring Security