是否可以捕获或打印html画布中显示的图像或pdf?

我希望通过画布生成图像,并能够从该图像生成png。


当前回答

在某些版本的Chrome上,您可以:

使用绘制图像函数ctx.drawImage(image1,0,0,w,h);在画布上单击鼠标右键

其他回答

从<canvas/>上载图像:

async function canvasToBlob(canvas) {
  if (canvas.toBlob) {
    return new Promise(function (resolve) {
      canvas.toBlob(resolve)
    })
  } else {
    throw new Error('canvas.toBlob Invalid')
  }
}

await canvasToBlob(yourCanvasEl)

最初的答案是针对一个类似的问题。已修订如下:

const canvas = document.getElementById('mycanvas')
const img    = canvas.toDataURL('image/png')

使用IMG中的值,您可以将其写入新图像,如下所示:

document.getElementById('existing-image-id').src = img

or

document.write('<img src="'+img+'"/>');

HTML5提供Canvas.toDataURL(mimetype),它在Opera、Firefox和Safari4测试版中实现。然而,有许多安全限制(主要是与将内容从另一个来源绘制到画布上有关)。

因此,您不需要额外的库。

e.g.

 <canvas id=canvas width=200 height=200></canvas>
 <script>
      window.onload = function() {
          var canvas = document.getElementById("canvas");
          var context = canvas.getContext("2d");
          context.fillStyle = "green";
          context.fillRect(50, 50, 100, 100);
          // no argument defaults to image/png; image/jpeg, etc also work on some
          // implementations -- image/png is the only one that must be supported per spec.
          window.location = canvas.toDataURL("image/png");
      }
 </script>

理论上,这应该创建一个中间有绿色方块的图像,然后导航到该图像,但我还没有进行测试。

简单的答案就是获取它的blob并将imgsrc设置为该blob的新对象URL,然后使用一些库将该图像添加到PDF中,例如

var ok=document.createElement(“画布”)正常宽度=400ok.height=140var ctx=ok.getContext(“2d”);for(设k=0;k<ok.height;k++)(k% 数学楼层((数学.随机()) *10)== 0)&&(y=>){对于(var i=0;i<ok.width;i++){如果(i%25==0){ctx.globalAlpha=数学随机()ctx.fillStyle=(“rgb(”+数学random()*255+“,”+数学random()*255+“,”+数学random()*255+“)”);(wdth=>ctx.fill矩形(数学.sin(i*数学.PI/180) * 数学.随机()*ok宽度,数学科(i*数学PI/180,)*wdth+y,wdth中,世界贸易组织))(15)}}})(k)ok。toBlob(blob=>{k.src=URL.createObjectURL(blob)})<img id=k>

或者,如果您想使用低级字节数据,可以获取画布的原始字节,然后根据文件规范将原始图像数据写入数据的必要字节。您只需要调用ctx.getImageData(0,0,ctx.canvas.widht,ctx.画布.height)来获取原始图像数据,然后根据文件规范将其写入

我会使用“wkhtmltopdf”。它工作得很好。它使用webkit引擎(在Chrome、Safari等中使用),并且非常容易使用:

wkhtmltopdf stackoverflow.com/questions/923885/ this_question.pdf

就是这样!

试试看