0

这与我的另一个问题有关......希望这个问题有解决方案。

要求是在浏览器中显示受密码保护的 PDF,但以编程方式传递用户密码。我使用 Jasper 创建 PDF 并设置用户密码如下:
exporter.setParameter(JRPdfExporterParameter.USER_PASSWORD, userPassword);

一旦创建 PDF,它就必须显示在屏幕上。在浏览器中显示时,不应提示用户输入密码,因此密码应由应用程序提供。但是,如果用户下载 PDF 然后尝试打开它,则应提示他输入密码.
[编辑]:我正在寻找一种不涉及许可工具的方法

4

4 回答 4

4

您可以使用 PDF.JS 库打开受密码保护的 PDF。

PDFJS.getDocument({ url: pdf_url, password: pdf_password }).then(function(pdf_doc) {
    // success
}).catch(function(error) {
    // incorrect password

    // error is an object having 3 properties : name, message & code
});

我已经写了一篇关于它的博客文章,还包含一个演示。这是链接:http ://usefulangle.com/post/22/pdfjs-tutorial-2-viewing-a-password-protected-pdf

于 2016-12-14T17:33:43.647 回答
0

您可以查看 PDF.js,这是一个基于开源客户端的 PDF 渲染器,它也支持加密的 PDF。 http://mozilla.github.com/pdf.js/

这意味着您必须将密码放在javascript中的某个位置,因此您必须伪装它,但它应该可以解决问题:)

于 2013-01-30T11:24:46.767 回答
0

我不确定这是否可行。在浏览器上,pdf 由插件(通常是 Adob​​e Reader 插件)打开。除了 Adob​​e Reader 之外,还有其他品牌。Chrome 有它自己的插件。

在浏览器上,当它检测到任何 PDF 文件时——渲染插件会接管——这是特定于浏览器的。你几乎没有任何控制权。

简单的替代方法是在网页中显示相同的内容 - 如果内容敏感,可能是模式窗口,并提供下载受密码保护的 pdf 文件的链接

我的2c

于 2013-01-30T11:32:57.040 回答
0

您可以使用 mozilla 的 pdf.js 来呈现受密码保护的 PDF。下面的 url 将提示输入密码,直到给出正确的密码。pdf 的密码是“test”。

http://learnnewhere.unaux.com/pdfViewer/passwordviewer.html

这是提示密码的示例代码

pdfJs.onPassword = function (updatePassword, reason) { 
      if (reason === 1) { // need a password
            var new_password= prompt('Please enter a password:');
            updatePassword(new_password);
        } else { // Invalid password
            var new_password= prompt('Invalid! Please enter a password:');
            updatePassword(new_password);
        }
   };

如果您想在密码尝试不成功时关闭密码提示,您可以删除 else 部分(// 无效密码)。

您可以从这里获取完整代码https://github.com/learnnewhere/simpleChatApp/tree/master/pdfViewer

于 2020-06-12T06:08:57.177 回答