2

我正在寻找一种解决方案,用于从基于 PHP Web 的应用程序中打印报告和预先格式化的表单。请注意,这些不是 HTML 页面的打印。相当好的对齐固定格式的收据、订单、分类帐等。

我有的东西。

使用 PDF:是否有一种简单的单击方式从客户端打印报告?在窗口中打开 PDF,然后选择 File -> Print 的明显选择似乎太麻烦了。

使用 Flash:我看到一些网站通过 Flash 提供单击打印。不知道什么在后台工作。关于这方面的任何见解都会有所帮助。

Active-X/Silverlight(?):我不想只在 IE 上限制我的用户。但是这种一键打印的要求太严格了,如果它完成了任务,我宁愿切换到只有 MS 的平台。

请注意,单击即可弹出打印对话框,然后用户再次单击以进行打印。但任何比这更复杂的都是一个缺点。

4

3 回答 3

3

如果格式太死板,您需要像 PDF 这样的格式。HTML/CSS 是如此多变,你永远不会在所有浏览器上得到相同的结果。插件网页没有真正的页面概念(尽管有一些支持,例如 CSS 打印媒体样式)。

也并非所有人都拥有一台打印机。试图强制打印某些东西确实是错误的方法,并且通常会使您的一些客户望而却步。

最小的解决方案是使用 emdia print CSS 创建一个收据页面,以使其在大多数情况下看起来是负责任的。

如果这还不够,你需要去PDF。不幸的是,这变得很难,因为这个关于 HTML+CSS 到 PDF 转换的问题说明了PrinceXML在这种转换方面做得非常出色,但它并不便宜。 Html2PDF是开源软件中最好的,但存在问题(有关详细信息,请参阅该答案)。我在 Java 领域也遇到过同样的问题,发票最终使用Jasper Reports。不过,我还没有真正看到 PHP 的等效报告解决方案。Python 有reportlab,这似乎也是做这种工作的候选人。

也许您最好的选择是直接生成 PDF。这有点乏味,但它避免了 HTML 到 PDF 转换的许多陷阱。 本教程第 2 部分)解释了如何。

于 2009-01-18T09:11:57.827 回答
1
<a href = "#" onclick = "window.print(); return false;">Print!</a>
于 2009-01-18T07:37:24.617 回答
0

在 Nelson LaQuet 之后,您可以将 window.print() 放在 body 标记的 onload 属性中,以便在页面加载时弹出打印对话框,

(或使用 jquery 的 document.ready() 来实现相同的目标,或任何其他 JS 框架提供的)

于 2009-01-18T07:55:35.733 回答