4

这些浏览器(Windows 版本)正确打印在 img 标签图像上具有画布覆盖的网页:

IE6、IE7、IE8、火狐、Safari

但是Chrome(我在版本 3.0.195.27 键入时是最新的)和Opera(在我键入此版本时是最新的 10.0 build 1750)没有。Chrome 完全忽略了画布渲染。Opera 将整个画布渲染为一个白色矩形,使其后面的图像变得模糊。

我知道画布标签相当新,而且打印网页总是很冒险。我该如何处理?我是否缺少任何设置来完成这项工作?我可以从 JavaScript 中捕获“即将打印”事件以至少警告用户吗?


更新:它比看起来更奇怪。组合图像(覆盖 img 的画布)可以在我的 Brother 激光打印机上正确打印,但不能在我的 hp 喷墨打印机上打印)。

所以目前的情况是大多数浏览器都能正确打印到我的喷墨打印机上,但 Chrome 却不行。Opera 在两台打印机上都搞砸了。

这一切都归结为打印机驱动程序以及各种浏览器如何与它们通信吗?


更新:我注意到 Google Docs 构建了一个用于打印的 PDF。

4

3 回答 3

2

您可以使用PHP 的 PDF 函数以编程方式创建 PDF。这真的很容易!

要创建新 PDF:

$pdf = pdf_new();

打开文件:

pdf_open_file($pdf, "pdfName.pdf");

您可以设置一些变量,例如作者:

pdf_set_info($pdf, "Title", "pdf Title here");

现在您需要使用该pdf_begin_page()功能:

pdf_begin_page($pdf, 595, 842);

这些是 A4 的尺寸。

内容

并关闭文件:

pdf_end_page($pdf);
pdf_close($pdf);

如需完整参考,请查看PHP 的 PDF 手册

于 2009-11-17T14:33:08.460 回答
1

我想知道,如果不是渲染到<canvas>元素:如果您要渲染到文档外的画布对象并在 a 上设置 CSS 样式<div>background-image设置为"url("+myCanvasObject.toDataUrl()+")".

此外,您可以将src<img />元素的属性设置为相同的myCanvasObject.toDataUrl(). 这应该比我上面提到的方法处理得更好..

于 2009-11-16T20:18:06.283 回答
0

我建议将页面保存为 PDF 并尝试打印。要打印的 PDF 文档应该是所见即所得的。如果 PDF 呈现正确,任何打印机都应该可以正常打印。

于 2009-11-16T18:15:47.327 回答