【发布时间】: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