这与我的 other question有关...希望这个有解决方案。
要求是在浏览器中显示受密码保护的PDF,但以编程方式传递用户密码。我使用Jasper创建PDF并设置用户密码如下:
exporter.setParameter(JRPdfExporterParameter.USER_PASSWORD,userPassword);
创建PDF后,必须立即在屏幕上显示。在浏览器中显示时,不应提示用户输入密码,因此应由应用程序提供密码但是,如果用户下载PDF然后尝试打开它,则应提示他输入密码。
[编辑]:我正在寻找一种不涉及许可工具的方法
答案 0 :(得分:1)
您可以使用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
答案 1 :(得分:0)
您可以签出PDF.js,这是一个基于开源客户端的PDF渲染器,也支持加密的PDF。 http://mozilla.github.com/pdf.js/
这意味着你必须将你的密码放在javascript的某个地方,所以你必须伪装它,但它应该可以解决这个问题:)
答案 2 :(得分:0)
我不确定这是否可行。在浏览器上,pdf由插件打开 - 通常是Adobe Reader插件。除了Adobe Reader之外还有其他一些功能。 Chrome有自己的插件。
在浏览器上检测到任何PDF文件时 - 渲染插件接管 - 这是浏览器特定的。你几乎没有任何控制权。
简单的替代方法是在网页中显示相同的内容 - 如果内容是敏感的,可能是模态窗口,并提供下载受密码保护的pdf文件的链接
my 2c
答案 3 :(得分:0)
您可以使用mozilla的pdf.js呈现受密码保护的PDF。以下网址将提示您输入密码,直到提供正确的密码为止。 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
获取完整的代码