【问题标题】:How to "flatten" images when printing from browser?从浏览器打印时如何“展平”图像?
【发布时间】:2018-11-25 18:15:12
【问题描述】:

我们有希望允许用户打印的网页。页面可能包含我们希望“保护”的图像。我们采用了多种技术来防止天真的用户从网页上“复制”图像。

当用户打印时,浏览器提供的一个选项是“打印到 PDF”。我们没有办法阻止这种情况。问题是,PDF 由离散图像组成,因此任何用户都可以单独选择并复制 PDF 中的图像。

我们希望使用html2canvas 可以解决问题,但是虽然它制作了一个不错的画布对象,但打印画布并没有“压平”组成图像。 (它们仍然可以被选择和复制)

其他人如何保护他们网页上的图像,同时仍然允许用户打印它们?

【问题讨论】:

    标签: html image pdf printing flatten


    【解决方案1】:

    您可以创建一个单独的样式表(类似于 print.css),它将为打印机显示不同的布局/样式。您可以使用 display:none;为您谨慎的图像。

    这篇文章应该很好地解释了如何设置它。 https://www.smashingmagazine.com/2011/11/how-to-set-up-a-print-style-sheet/

    【讨论】:

    • 谢谢。但是,正如问题所问的,我们需要打印图像。我们只是不希望它们在浏览器生成的 PDF 中保持谨慎。
    【解决方案2】:

    html2canvas 完全符合我们的要求……在我们修复了使用方式的错误之后。

    我们以通常的方式构建 dom,然后调用 html2canvas 来“快照”我们希望用户打印的屏幕部分。正确完成后,我们所有的图像都会折叠成一个图像,如果用户打印为 PDF,他们就无法将它们分开。

    我们的错误在于在转换后没有正确地从 dom 中删除所有图像。因此,它们被离散地流式传输到 PDF 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-23
      • 2010-09-17
      • 2016-02-28
      • 1970-01-01
      • 2010-11-20
      • 2016-08-21
      • 2017-08-28
      • 2023-02-03
      相关资源
      最近更新 更多