Java 如何使用用户密码以编程方式打开PDF
这与我的。。。希望这个有个解决办法 要求在浏览器中显示受密码保护的PDF,但要通过编程方式传递用户密码。我使用Jasper创建了一个PDF,并按如下方式设置用户密码:Java 如何使用用户密码以编程方式打开PDF,java,pdf,jasper-reports,password-protection,Java,Pdf,Jasper Reports,Password Protection,这与我的。。。希望这个有个解决办法 要求在浏览器中显示受密码保护的PDF,但要通过编程方式传递用户密码。我使用Jasper创建了一个PDF,并按如下方式设置用户密码: exporter.setParameter(JRPdfExporterParameter.USER\u密码,userPassword) 一旦创建PDF,它就必须显示在屏幕上。在浏览器中显示时,不应提示用户输入密码,因此应用程序应提供密码。但是,如果用户下载PDF并试图打开它,则应提示用户输入密码。 [编辑]:我正在寻找一种不涉及许
exporter.setParameter(JRPdfExporterParameter.USER\u密码,userPassword) 一旦创建PDF,它就必须显示在屏幕上。在浏览器中显示时,不应提示用户输入密码,因此应用程序应提供密码。但是,如果用户下载PDF并试图打开它,则应提示用户输入密码。
[编辑]:我正在寻找一种不涉及许可工具的方法您可以签出PDF.js,这是一种基于开源客户端的PDF呈现程序,还支持加密PDF。
这意味着您必须将密码放在javascript中的某个地方,因此您必须对其进行伪装,但它应该可以做到这一点:)我不确定这是否可行。在浏览器上,pdf是通过插件打开的——通常是Adobe Reader插件。除了Adobe Reader,还有其他品牌。Chrome有自己的插件 在浏览器上检测到任何PDF文件时,渲染插件将接管,这是特定于浏览器的。你几乎无法控制 简单的替代方法是在网页中显示相同的内容——如果内容敏感,可能是一个模式窗口,并提供下载受密码保护的pdf文件的链接
my 2c您可以使用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
});
我写了一篇关于它的博客文章,也包含了一个演示。这是链接:您可以使用mozilla的pdf.js来呈现受密码保护的pdf。下面的url将提示输入密码,直到给出正确的密码。pdf的密码为“test” 下面是提示密码的示例代码
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部分(//无效密码)
您可以从这里获得完整的代码为什么不能分离浏览器版本并使其免pwd?@TechExchange问题在于,无法在浏览器上阻止“保存”选项。因此,如果我创建一个没有密码的浏览器版本,则可以下载pdf文件,然后在没有密码的情况下打开。@basav,reg。您提到的另一种方法是,“如果内容敏感,可能是一个模式窗口”,当显示pdf时,它会提示输入密码,这是我想要避免的。如果我必须避免提示,那么应该删除密码保护。这意味着,pdf可以不使用密码保存。所以,继续兜圈子吧!:)我的理解正确吗?没有。我的意思是不是直接在浏览器中打开PDF,而是在模式窗口中将PDF的内容显示为网页。找不到任何解决方案。决定使用HTML版本进行查看。