我试图通过servlet呈现PDF,使用Itext获取PDF文件。
需要禁用保存,打印选项在adobe阅读器菜单栏,而其他选项,如滚动,查找应该在那里,此外,需要禁用文件菜单的浏览器窗口,它是在其中呈现。
我已经使用下面的代码禁用了打印和文件菜单
stamper.setEncryption(null,null,
PdfWriter.HideWindowUI, PdfWriter.STRENGTH40BITS);
stamper.setViewerPreferences(PdfWriter.HideToolbar);问题是
发布于 2014-04-05 15:21:28
我们需要区分两个不同的方面:印刷和储蓄。
您可以对文件进行加密,并以不允许打印的方式设置权限。但是:如果只使用所有者密码加密文档,则很容易解密文档并取消限制。使用所有者密码加密文档只在心理层面上起作用:例如:您表示文档的原始生产者不希望文档被打印。
如果您想避免最终用户保存PDF文档,那么您所要求的是一些不可能的事情。避免最终用户没有PDF副本的唯一方法是不发送PDF。如果磁盘上没有实际字节,则无法在Adobe中打开PDF。即使您要禁用保存(例如在web应用程序的上下文中),您也总是可以在临时文件中的某个位置找到PDF,并且人们可以根据自己的意愿多次复制该文件。
在代码片段中,您尝试隐藏工具栏(查看器首选项),但这是没有意义的。此查看器偏好是否会被完全尊重取决于PDF查看器。例如:在Adobe和更高版本中,当您悬停在文档上时,会出现一个特殊的小部件。这个小部件允许用户保存文档。
即使使用Adobe 9,隐藏工具栏也是不够的:如果用户选择适当的菜单项或点击适当的“热键”,工具栏就会出现,他们可以很高兴地单击Save按钮。此外,他们也可以正确点击并选择“保存”。
总之,你问错问题了。
您需要做的不是阻止保存,而是控制PDF的实际使用,这就是DRM (数字版权管理)出现的地方。然而,DRM通常是非常昂贵的,它需要一个定制的PDF查看器,而且它超出了iText的范围。
https://stackoverflow.com/questions/22880444
复制相似问题