您只需重绘整个场景,省略不想写入PDF的部分。
如果您不想跟踪要重绘的所有内容,请创建第二个内存中的画布(document.createElement('canvas')
),然后对该画布执行所有绘制操作而不是常规画布,然后将该画布拖到您的画布上正常的用户编辑而不是直接绘制到正常的画布上。
老办法:
// First you round the corners permanently by making a clipping region:
ctx.roundedRect(etc)
ctx.clip();
//then a user draws something onto normal canvas, like an image
ctx.drawImage(myImage, 0, 0);
的新方法:
// make a hidden canvas:
var hiddenCanvas = document.createElement('canvas');
var hCtx = hiddenCanvas.getContext('2d');
// First you round the corners permanently by making a clipping region:
ctx.roundedRect(etc)
ctx.clip();
//then a user draws something onto HIDDEN canvas, like an image
// This image never gets its corners cut
hCtx.drawImage(myImage, 0, 0);
// Then you draw the hidden canvas onto your normal one:
ctx.drawImage(hiddenCanvas, 0, 0);
当它的时间来打印,你用你的隐藏的画布,它没有一个背景图像和不出现剪切角落。
我使用context.roundRect绕过角落。如果我不绕过角落,它会呈现完美。当我要呈现PDF时,是否可以“倒转”圆角? – Emil
为什么你不能只跟踪你对画布做的所有事情,然后当你想渲染一个PDF时,只需用任何你不想要的步骤重新渲染画布(背景,圆角等等......) )省略。 – hobberwickey
必须有比这更简单的方法。你的意思是我基本上创建了一个新的画布,不要弄弯它的角落等等,那么无论用户在可见的画布上做什么,隐藏的都一样? – Emil