我正在寻找一种解决方案,用于从基于PHP网络的应用程序的客户端打印报告和预格式化表单。请注意,这些不是HTML页面的打印。相当不错的对齐固定格式收据,订单表格,分类帐等。
我有的东西。
使用PDF:是否有简单的单击方式从客户端打印报告?在窗口中打开PDF的明显选择,然后选择文件 - >打印看起来太麻烦了。
使用Flash:我看到一些网站通过flash提供单击打印。不确定在后台工作的是什么。任何有关这方面的见解都会有所帮助。
Active-X / Silverlight(?):我不想仅限IE上的用户。但是这种一键打印要求是如此严格,以至于如果它完成任务我宁愿切换到仅MS平台。
请注意,单击即可调出打印对话框,用户再次单击进行打印即可。但更复杂的是一个缺点。
答案 0 :(得分:3)
如果格式太严格,则需要PDF格式。 HTML / CSS是如此可变,你永远不会在所有浏览器上得到它。插件网页没有真正的页面概念(虽然有一些支持CSS打印媒体样式的东西)。
也并非所有人都有打印机。试图强制要打印的东西确实是错误的做法,通常会让你的一些客户失望。
最小的解决方案是使用emdia print CSS创建一个收据页面,使其在大多数时间内显得有响应。
如果这还不够,你需要去PDF。不幸的是,这变得很难this question regarding HTML+CSS to PDF conversion illustrates。 PrinceXML在这次转换中表现出色,但并不便宜。 Html2PDF是开源软件中最好的,但是有问题(请参阅答案以获取更多详细信息)。我在Java空间中遇到了同样的问题,并且最终使用Jasper Reports的发票。我还没有真正看到过PHP的等效报告解决方案。 Python有reportlab,这似乎也是做这种工作的候选人。
也许您最好的选择是直接生成PDF。这有点单调乏味,但它避免了HTML到PDF转换的许多陷阱。 This tutorial(Part 2)解释了如何。
答案 1 :(得分:1)
<a href = "#" onclick = "window.print(); return false;">Print!</a>
答案 2 :(得分:0)
对Nelson LaQuet来说,您可以将window.print()放在body标签的onload属性中,以便在页面加载时弹出打印对话框,
(或者使用jquery的document.ready()来实现相同的,或者其他任何JS框架提供的)