javascript - 如何使用 javascript 打印 Canvas 内容

标签 javascript jquery html printing html5-canvas

我正在使用 canvas 使用 jsp 页面进行书写。我可以在 Canvas 上写下任何信息, (我创建的 Canvas 消息..) enter image description here 但在此之后,当我想使用 javascript 打印代码 打印此 Canvas 消息时,我无法打印 Canvas 内容。下面你可以看到打印预览.. enter image description here

我想打印我在 Canvas 上创建的 Canvas 消息。 请帮助我解决这个问题,任何帮助将不胜感激..

最佳答案

当对话框显示时,您的 Canvas 可能会被清除 - 这通常发生在 Chrome 浏览器中。

由于您没有发布任何源代码,因此没有源代码可供尝试,我将给出一个您可以尝试的理论答案 - 我会建议两种可能的解决方案:

  1. 添加用于调整大小的事件处理程序。触发时重绘内容(这意味着您需要存储您绘制的点等或制作离屏 Canvas 来存储副本)。我经历过,当对话框清除 Canvas 时,此事件会触发(在 Chrome 中) - 如果它适用于打印预览,我不确定 - 如果不尝试下一点:

  2. 当您单击打印按钮时,将 Canvas 提取为图像,并将 Canvas 元素替换(临时)为图像元素,将源设置为 Canvas 中的 data-uri。在图像的 onload 处理程序上触发打印代码:

第二点示例:

/// create a reference to canvas element
var canvas = document.getElementById('myCanvas');

printBtn.addEventListener('click' function() {

    /// remove it from DOM (use parent element if any, for demo I use body)
    document.body.removeChild(canvas);

    var img = new Image;

    img.id = 'tempPrintImage';    /// give an id so we can remove it in next step
    img.onload = print;           /// onload handler triggers your print method
    img.src = canvas.toDataURL(); /// set canvas image as source

    document.body.appendChild(img);

}, false);

function print() {

    ...your print code here. On return reverse the elements: ...

    var img = document.getElementById('tempPrintImage');
    document.body.removeChild(img);
    document.body.appendChild(canvas);
}

代码可能看起来有点重载,但这里的关键点是保留 Canvas 的内容。您可以将图像放在顶部等等。

关于javascript - 如何使用 javascript 打印 Canvas 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21595413/

相关文章:

javascript - 如果 "mousemove"和 "click"事件同时触发该怎么办?

php - 显示用户详细信息而不保存上一个 session

php - 如何在没有js的情况下在magento中结帐?

javascript - 为什么这在 Internet Explorer 上不起作用? [jQuery、单选、选择器]

javascript - 在这个例子中,为什么 CSS 透明度在 IE 7/8 中不起作用?

javascript - 使用 .replace() 将句点更改为下划线

javascript - 如何在 JavaScript 中定义和操作 Date 变量?

javascript - 如何将查询结果保存在 Mongo JS 的变量中并用它更新文档?

javascript - 如何在移动设备上滚动覆盖 div

html - 如何将两个超链接并排放置?