【问题标题】:Print another page, but stay on the current one打印另一页,但留在当前页上
【发布时间】:2019-01-13 12:45:46
【问题描述】:

我有一个用 PHP 制作的发票系统。所有客户的发票都有一个视图。我想选择打印发票。

我知道 CSS 的 window.print()media="print"。但我在想,是否可以通过单击旁边的按钮来打印发票,但留在列表页面上?它只会打开一个包含不同内容的打印提示,对当前体验没有任何影响。

我想到了一个解决方法。单击时,我可以用发票数据替换某些元素的内容,并使样式隐藏除该容器之外的所有其他内容。不过,这对我来说似乎是个把戏。这个问题还有其他解决方案吗?可能类似于链接的download 属性:

<a href="invoice.php?id=3" download="invoice.html">Download Me</a>

可能是这样的:

<a href="invoice.php?id=3" print>Print Me</a>

或者可能是 HTTP 标头?请分享一些建议。

【问题讨论】:

  • 也许指定一个目标?
  • 您必须将数据加载到视图中,否则客户端不会知道您要打印的数据。那可以是一个新窗口或一个框架或一个模态或任何东西......然后你需要使用其他方法来告诉客户端打印什么,不打印什么以及打印时的外观。
  • @daddygames 但正如我提到的,它可以用于下载,因此理论上可以完成。内容可以在后台加载,然后提示打印。我不认为这已经实现了。
  • @charlietfl 我认为iframe 可能是比我更好的解决方法。只需将视图加载到不可见的 iframe,然后在加载后执行window.print()。我需要尝试一下。
  • @charlietfl 我想避免打开任何窗口,因为这只是丑陋的体验,我个人讨厌立即关闭的窗口(或标签)。

标签: javascript php css http


【解决方案1】:

我建议使用下面的 JQuery PrintJS 插件:

http://printjs.crabbly.com/

这将最终解决您的问题。

【讨论】:

  • 看起来很有希望。你知道它在幕后做什么吗?
  • 对于 PDF,它使用 HTML iframe 标签。不确定是否要打印 HTML。
  • 我刚刚做了一个测试,我有点惊讶。如果您只是将window.print() 放入目标文件,然后将其与&lt;a href="destination.html" target="my-iframe"&gt; 链接,则打印效果很好,其中my-iframe 是iframe 的名称。我不知道以这种方式从 iframe 运行脚本是可能的。
猜你喜欢
  • 2010-10-09
  • 2020-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-18
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多