当用户单击打印按钮时,将文件发送到打印机进行打印。但用户不能在打印之前下载 PDF

问题描述 投票:0回答:1

用户请求打印服务器端生成的报告。这些报告以 PDF 文件形式发回。打印前无需打开这些文件。 我正在使用 asp.net mvc 5 和 js/jq。

注意:我知道出于安全原因,浏览器不允许我们这样做,但在我的情况下,只有有权访问的人才能打印报告,我们只需要阻止他们更改内容即可。

我已经尝试过不同的方法,但似乎 chrome 和其他流行的浏览器不允许网站在不通过 chrome 上的打印弹出窗口(ctrl + p)的情况下向打印机发送打印请求。 我不介意打印弹出窗口,因此用户仍然可以启动打印。

但问题是打印弹出窗口上有一个保存/下载文件的选项(ctrl + p)。 存在安全问题,因为用户可以使用 PDF 编辑器工具更改价格、银行帐户详细信息等有价值的信息并打印文档。

我尝试了 print.js (https://printjs.crabbly.com/),但它不起作用,因为它还打开打印弹出窗口并保存选项以保存。

目前我们将文件发送到 api,通过 api 将它们发送到打印机。但有些打印机不支持 api 请求。 这使得我们让用户从浏览器中选择打印机并进行打印。

我对任何类型的建议和解决方案持开放态度。 解决方案可以是客户端/服务器端/Windows 服务等任何东西。 只是用户在打印之前不应该能够篡改文件。

javascript asp.net-mvc printing windows-services api-design
1个回答
0
投票

我看到两种解决方案:

  1. 完全放弃这个想法。
  2. 放弃支持任何打印机的想法。

如果您将 PDF 发送给用户,无论是否有“保存”按钮,他们都可以访问该 PDF。您可以尝试对PDF进行加密,但需要解密才能获取数据,然后才能对其进行操作。如果您可以将 PDF 密码编程到可以工作的打印机中,但如果打印机也是复印机,他们可以打印文档,剪切并粘贴新的数字,然后进行复印。

您还指出:

目前我们将文件发送到 api,通过以下方式将它们发送到打印机 蜜蜂。但有些打印机不支持 api 请求。 这使得我们让用户从浏览器中选择打印机 并打印。

直接发送到打印机可能是您拥有的最佳解决方案,特别是如果您可以获得可以打印加密 PDF 的打印机(大多数打印机还会保存 PDF 的本地副本,因此也需要在此处进行加密) 。这并不能解决复印机的问题,但如果你能把所有复印机都赶出场所,它就可以工作。您只需放弃让人们打印到其他设备的想法即可。

© www.soinside.com 2019 - 2024. All rights reserved.