java - 阻止(普通用户)下载 PDF
问题描述
在你们开始咆哮之前......我已经知道,无论我做什么,总会有一种方法可以从网页下载图片和 PDF。
但是让我们假设我的用户不是那么精通技术,只知道基础知识。
在我们的 web 应用程序中显示一些图像和 PDF 时,我被要求“禁用”下载选项。
我设法用一行 CSS 禁用了图像的上下文菜单,但我遇到了 PDF 问题。
到目前为止我所尝试的:
- 使用标签,向上移动元素以隐藏工具栏。在 Firefox 上运行良好,然后我发现其他浏览器只是在悬停时显示下载按钮
- 用透明的 div 覆盖元素。为 FF 和 Chrome 工作。不适用于 IE 和 Edge(嵌入元素总是放在其余元素之上)
- 与两个相同,但使用 iFrame。IE 在后面时根本不显示 iFrame
- 我使用 SwingLabs PDF-renderer 将 PDF 转换为图像。最终图像颜色都是错误的。
由于安全限制,我的资源有限,而且我的想法已经不多了。有什么建议么?
注意:能够看到这些 PDF 的用户需要进行身份验证并具有特殊权限,所以不用担心摆弄。
解决方案
虽然我同意有关要求愚蠢的答案,但有一些方法可以解决您的问题。也就是说,根本不给普通用户一个PDF,而是别的东西。并将 PDF 提供给特权用户。您已经指出您有办法将它们区分开来。
您可以使用一些库将 PDF 转换为另一种格式。我曾经被分配了一个相对相似的任务。我的任务是在用户 DL 之前预览文档,客户端应用程序打开相关的文字处理软件。
虽然我不能凭良心推荐 Aspose 库(我真的不喜欢使用这个工具),但它们是我当时工作的公司正在使用的,我知道它们可以做你需要做的事情做。它们既不像言论自由那样免费,也不像免费啤酒那样免费,但它们可以免费下载和试用,代价是生成/转换的文档上有一个大水印。
我让 Aspose 完成将文档转换为 HTML 文件的工作,并将其加载到我界面中的 iFrame 中。
如果您的经理不接受以另一种格式提供 PDF 内容的解决方案,您真的需要让他们知道他们的愚蠢。
推荐阅读
- python - 从类对象中删除数据
- scala - AWS Glue Scala,输出一个带分区的文件
- c++ - 我该如何围绕这个对概念和不完整类型的限制进行设计?
- flutter - 我正在尝试反转 dart 中的列表,但出现错误。怎么修?
- python - 在同一 IP 中为两个不同的 Telegram 帐户使用两个 Telethon 脚本时是否存在任何潜在问题?
- javascript - 从导入的样式表获取根上的所有 CSS 变量
- vue.js - 如何结合插入()和动态指令vue?
- aws-api-gateway - 转换请求正文但没有头 api 网关 aws
- javafx - “标签”的 JavaFX addRow 字体大小
- javascript - 为什么我的网站在移动设备上左对齐