【问题标题】:Online pdf viewers to restrict users from saving files在线 pdf 查看器以限制用户保存文件
【发布时间】:2021-08-09 10:26:13
【问题描述】:

我们在服务器上存储了一些 pdf 文件,路径是已知的,并且可以使用 url 访问这些文件。

我们的要求是,我们的客户不能下载、打印或保存这些 pdf 文件。

网上有没有可以在浏览器中显示pdf内容但不能让用户下载/打印或保存文件的服务?

期望用户使用chrome的设置查看pdf内容是不现实的。

提前致谢

【问题讨论】:

  • 您的客户总是能够为他们的屏幕拍照(他们可以改进一些开源 PDF 查看器,例如 evince 以满足他们的需求)。我的感觉是您的要求不切实际(因为PDF 是一个开放标准)
  • 是的,他们可以拍照,而且他们也可以截屏。如果没有适当的 IRM,我们将无法限制这些活动。但是,无论如何,这是我们必须满足的要求。
  • 您应该问为什么会给出这些要求,以及他们试图解决的问题是什么。这些要求听起来像是有人遇到了问题,但他们不了解可用的工具,因此结果毫无意义。
  • 如果您无法满足该要求,您会怎样?那些生活在其他大陆的计算机科学家用户呢?您是否向律师询问了这些要求(这在欧盟可能是非法的,请您的律师研究GDPR)?
  • 您可以禁止按 PDF 设置保存和打印

标签: pdf pdf-viewer


【解决方案1】:

我能够实现我的目标。

每个人的 cmets 都会被记录下来。我也同意我的应用程序的用户将能够截取屏幕截图,或者一些用户会尝试在浏览器缓存中查找 pdf 文件。

但是,我们的客户希望我们满足某些要求;他们有自己的理由。我们必须对他们负责。

在这种情况下,我们确保客户了解风险和陷阱。

这里是代码sn-p

<html>
<head>
    <style>
        .embed-cover {
          position: absolute;
          top: 0;
          left: 0;
          bottom: 0;
          right: 0;
          
          /* Just for demonstration, remove this part */
          opacity: 0.25;
        }

        .wrapper {
          position: relative;
          overflow: hidden;
        }
    </style>
    <script type="text/javascript">
        function disableContextMenu() {
            window.frames["pdfframe"].contentDocument.oncontextmenu = function(){return true;};   
            var myFrame = document.getElementById('pdfframe');
            myFrame.window.eval('document.addEventListener("contextmenu", function (e) {e.preventDefault();}, false)');
        }

    </script>
</head>
<body onload="disableContextMenu();" oncontextmenu="return false">
    <div class="wrapper">
        <embed id="pdfframe" src="<url of myfile.pdf>#toolbar=0" width="100%" height="100%" ></embed>
        <div class="embed-cover"></div>
    </div>
</body>

【讨论】:

  • 这是 HTML,不是 PDF。您是否尝试使用 Linux,然后 GNU wget 获取 PDF 文件(到计算机上的一些本地文件,如 $HOME/f.pdf,所以 /usr/bin/wget http://remoteweb.com/remote-file.pdf -o $HOME/f.pdf)。然后重新启动 Linux,切断所有 Internet 连接,并使用 evince $HOME/f.pdf 查看 PDF 文件?我可以打赌 30 欧元它可以工作,或者修补 Dillo web browser 以使其工作。
  • 规避起来非常简单:在 Firefox 中使用查看页面源代码,然后复制 URL....(可能首先使用铅笔和纸)。因此,我对您的答案投了反对票(我确实在本地尝试过)
猜你喜欢
  • 1970-01-01
  • 2015-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多