问题:
客户希望可以实现在网页中打开PDF文档时,只能查看不能打印、另存PDF文档。(假定客户端安装了Adobe Acrobat Reader)目前我可以做到用用java的Itext项目屏蔽PDF的打印功能,隐藏PDF的菜单栏和工具栏。但是在网页中打开PDF文档后,如果用户按F8可以呼出一个快捷菜单,上面有另存按钮,可以把当前PDF文档另存到客户端电脑中。如果用户按Ctrl+Shift+S,可以直接打开另存副本对话框。我想用Javascript屏蔽这两个键盘事件,但好像对Adobe Acrobat Reader不起作用。大家有什么高招?不知道自己开发IE和Firefox插件的话,能否在浏览器中屏蔽Acrobat的热键呢?

解决方案 »

  1.   

    也遇到同样的问题了呀,我比LZ的还差呀,想隐藏PDF的莱单怎么也不行呀,LZ可不可以贴下源码呀,弄了一天了,晕死了
      

  2.   

    下载Itext:
    http://sourceforge.net/projects/itext/PdfReader reader = new PdfReader("d:\\test.pdf");ByteArrayOutputStream baos = new ByteArrayOutputStream();
      PdfStamper stamper = new PdfStamper(reader, baos);
      PdfWriter writer = stamper.getWriter();
       if (needEncrypte(request, response)) {
        String password = "XXXXXX" + Math.random() * 1000;
    //加密,不允许打印
        stamper.setEncryption(null, password.getBytes(), 0, false);
    }
        // 隐藏菜单栏、工具栏
        writer.setViewerPreferences(PdfWriter.HideMenubar
          | PdfWriter.HideToolbar);ServletOutputStream svout = response.getOutputStream();
       baos.writeTo(svout);
       svout.flush();
      

  3.   

    如何屏蔽pdf中“另存为”热键吗?谢谢了!
      

  4.   

    建议通过pdf文件的权限设置
    都给人看了,我真要打印你还能防止人家截图?知道你的pdf文件地址也可以直接下载
      

  5.   

    不用翻译,C#和java很类似的,只要下载个包。拷贝上面的代码,修改下变量的定义方法就可以了。