Javascript 如何在jsPDF中使用clip方法?

Javascript 如何在jsPDF中使用clip方法?,javascript,pdf,jspdf,Javascript,Pdf,Jspdf,我想使用jsPDF在裁剪区域内设置线条,如下所示 var doc = new jsPDF(); doc.lines([[50, 0], [0, 50], [-50, 0], [0, -50]], 20, 20, [1.0, 1.0], null, true); // horizontal line doc.clip(); doc.rect(50, 50, 100, 100, 'F'); 所以,我调用了类似blow的方法。 我在调用.lines()之后调用了.clip(),其样式参数为null

我想使用jsPDF在裁剪区域内设置线条,如下所示

var doc = new jsPDF();
doc.lines([[50, 0], [0, 50], [-50, 0], [0, -50]], 20, 20, [1.0, 1.0], null, true); // horizontal line
doc.clip();
doc.rect(50, 50, 100, 100, 'F');

所以,我调用了类似blow的方法。 我在调用.lines()之后调用了.clip(),其样式参数为null,如下所示

var doc = new jsPDF();
doc.lines([[50, 0], [0, 50], [-50, 0], [0, -50]], 20, 20, [1.0, 1.0], null, true); // horizontal line
doc.clip();
doc.rect(50, 50, 100, 100, 'F');
我成功地剪线了

但我不能使剪辑区域多于一个


他们最近确实修复了这个问题,但显然不想破坏现有的API,所以他们添加了一个名为
clip\u fixed的新方法:

一旦使用null样式对象绘制了剪辑路径并称为
doc.clip\u fixed()
,随后绘制的所有形状都将剪裁到当前剪辑路径

如果以后您需要在不应用剪裁的情况下绘制另一个形状,您会发现没有什么比doc.dispose()更好的了。因此,以后绘制未剪裁形状的最佳选择是,在绘制剪裁路径之前,首先将当前状态保存到图形状态堆栈中,绘制完最后一个剪裁形状后,从堆栈中恢复以前的状态。不幸的是,该堆栈的API尚未通过jsPDF公开,但您可以通过
doc.internal.write()
访问jsPDF的内部命令队列,以插入任何未由jsPDF处理的PDF命令

因此,要创建可反转剪裁,请执行以下操作:

doc.internal.write('q'); // saves the currrent state
// any draw command with a style value of null
doc.clip_fixed();
// any number of draw commands with strokes, fills, or null for compound paths
doc.internal.write('Q'); // restores the state to where there was no clipping
进一步阅读剪辑:

他们最近确实修复了这个问题,但显然不想破坏现有的API,所以他们添加了一个名为
clip\u fixed的新方法:

一旦使用null样式对象绘制了剪辑路径并称为
doc.clip\u fixed()
,随后绘制的所有形状都将剪裁到当前剪辑路径

如果以后您需要在不应用剪裁的情况下绘制另一个形状,您会发现没有什么比doc.dispose()更好的了。因此,以后绘制未剪裁形状的最佳选择是,在绘制剪裁路径之前,首先将当前状态保存到图形状态堆栈中,绘制完最后一个剪裁形状后,从堆栈中恢复以前的状态。不幸的是,该堆栈的API尚未通过jsPDF公开,但您可以通过
doc.internal.write()
访问jsPDF的内部命令队列,以插入任何未由jsPDF处理的PDF命令

因此,要创建可反转剪裁,请执行以下操作:

doc.internal.write('q'); // saves the currrent state
// any draw command with a style value of null
doc.clip_fixed();
// any number of draw commands with strokes, fills, or null for compound paths
doc.internal.write('Q'); // restores the state to where there was no clipping
进一步阅读剪辑: