2017-07-04 9 views
0

以下のように、jsPDFを使用してクリッピング領域に行を設定したいとします。jsPDFでクリップメソッドを使用するには?

enter image description here

だから、私は吹いたようなメソッドと呼ばれます。 私は以下のようにスタイル引数がnullの.lines()を呼び出した後に.clip()を呼び出しました。

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'); 

クリッピングラインに成功しました。

しかし、クリップ領域を複数作成することはできません。

enter image description here

答えて

1

彼らは実際に最近、この1を固定どうやら既存のAPIを壊したいので、彼らは名前clip_fixedで新しいメソッドを追加しませんでした:あなたが描いたら
https://github.com/MrRio/jsPDF/commit/e32f0a2b222a940b0f228457371a118fc138ec28#diff-8162ee9f6251a2016741ffe67239c3c4

クリップパスのスタイルオブジェクトをヌルにしてdoc.clip_fixed()と呼ぶと、後で描画するすべてのシェイプが現在のクリップパスにクリップされます。

その後あなたが適用クリッピングせずに別の形状を描画する必要がある場合、あなたはdoc.unclip()のようなものが存在しないことを実現します。後でクリップされないシェイプを描画する最も良い方法は、クリップパスを描画する前にまず現在の状態をGraphics State Stackに保存し、最後に切り抜いたシェイプを描画したら、スタックから前の状態を復元します。残念ながら、このスタックへのAPIはまだjsPDFを介して公開されていませんが、jsPDFの内部コマンドキューdoc.internal.write()を使って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 

はさらにクリッピングに読んで:

だからあなたがクリッピングreversableを作成する
http://www.verypdf.com/document/pdf-format-reference/pg_0234.htm

関連する問題