Servlets 禁用Adobe PDF reader中的保存按钮并在IE窗口中隐藏菜单栏

Servlets 禁用Adobe PDF reader中的保存按钮并在IE窗口中隐藏菜单栏,servlets,pdf,itext,Servlets,Pdf,Itext,我正在尝试通过servlet呈现PDF,使用Itext获取PDF文件。 需要禁用adobe pdf reader菜单栏中的“保存、打印”选项,而其他选项(如“滚动”、“查找”)则应在该菜单栏中,此外,还需要禁用浏览器窗口中的“文件”菜单 我用下面的代码禁用了打印和文件菜单 stamper.setEncryption(null,null, PdfWriter.HideWindowUI, PdfWriter.STRENGTH40BITS); stamper.se

我正在尝试通过servlet呈现PDF,使用Itext获取PDF文件。
需要禁用adobe pdf reader菜单栏中的“保存、打印”选项,而其他选项(如“滚动”、“查找”)则应在该菜单栏中,此外,还需要禁用浏览器窗口中的“文件”菜单

我用下面的代码禁用了打印和文件菜单

stamper.setEncryption(null,null,
                 PdfWriter.HideWindowUI, PdfWriter.STRENGTH40BITS); 

stamper.setViewerPreferences(PdfWriter.HideToolbar);
问题是

  • 禁用Adobe PDF reader菜单栏中的“保存”按钮(使用**Adobe reader 9**)

  • 我们需要区分两个不同的方面:打印和保存

    您可以对文件进行加密,并设置不允许打印的权限。但是:如果只使用所有者密码对文档进行加密,则很容易解密文档并删除限制。使用所有者密码加密文档只在心理层面起作用:例如:您表示文档的原始制作人不希望打印文档

    如果您想避免最终用户保存PDF文档,那么您提出的问题是不可能的。避免最终用户没有PDF副本的唯一方法是不向其发送PDF。如果磁盘上没有实际字节,则无法在Adobe Reader中打开PDF。即使您禁用保存(例如在web应用程序的上下文中),您也总能在临时文件中找到PDF,人们可以复制该文件任意多次

    在代码段中,您尝试隐藏工具栏(查看器首选项),但这没有意义。是否尊重此查看器首选项完全取决于PDF查看器。例如:在AdobeReaderX和更高版本中,当您将鼠标悬停在文档上时,会出现一个特殊的小部件。此小部件允许用户保存文档

    即使使用AdobeReader9,隐藏工具栏也是不够的:如果用户选择适当的菜单项或点击适当的“热键”,工具栏就会出现,他们可以愉快地单击“保存”按钮。此外,他们还可以右键单击并选择“保存”

    简言之,你问错了问题


    您需要做的不是阻止保存,而是控制PDF的实际使用,这就是DRM(数字版权管理)的用武之地。然而,数字版权管理通常非常昂贵,它需要自定义PDF查看器,不在iText的范围内。

    @Lowagie感谢您的回复。我的要求是在Adobe reader版本9中禁用保存选项。从您的回复中,我得出结论,在Adobe reader版本9中无法禁用保存选项,禁用保存选项没有意义,因为我们有一个副本放在温度正确的地方。您可以尝试隐藏“保存”工具栏,但仍有不同的方法可以解决此问题以保存文件。您的上司要求提供DRM解决方案。