如果PDF被锁定或加密,则在浏览器中检测

时间:2017-06-23 23:48:46

标签: javascript reactjs pdf exif-js

在我的应用程序中,用户可以上传其他用户以后可以查看的PDF。对于我的用例,我需要确保PDF没有被锁定或加密,并且可以被任何其他用户查看。

要做到这一点,我要求用户上传未锁定的PDF,并且在我尝试上传到S3之前,如果PDF被锁定,则会抛出错误。

我还没有就浏览器中可能最好的方法找到共识?如果我不能,我是否尝试读取缓冲区并抛出错误?或者是否有另一种高性能的检测方法?

1 个答案:

答案 0 :(得分:1)

用户体验,带宽和性能最好能够检测客户端的状态。您可以在页面上有一个文件输入元素,并捕获onChange事件。

<input type="file" id="pdfFile" size="50" onChange='processFile' />

在onChange-handling函数内部,您可以获取文件字节并加载到缓冲区中。有关代码和更多详细信息,请参阅reading file contents on the client side in javascript in various browsers

您需要进行一些PDF解析才能学习锁定/加密状态,但我想有JS库可以做到这一点。即使您要解析非常大的PDF,也总是比将PDF上传到服务器更快,因为上传时间将取决于文件大小。

我可以看到上传文件而不是客户端解析的案例:

  • 您的目标是低端移动设备,并期望PDF为+ 100mb。
  • 您将在具有Javascript限制的浏览器上运行
  • 总是想要将文件上传到你的服务器,即使PDF受到保护,你已经知道用户体验更好