PDF页面上的多个剪辑区域无法正常工作

Jon*_*sie 8 skiasharp

我正在使用SkiaSharp将标签打印到PDF(和其他东西).PDF的每个页面都可以有多个行和列.我需要将每个标签剪裁成正确的尺寸,这样它就不会丢弃相邻的标签.

为了进行测试,每个标签都有一个延伸得太远的矩形加上7行文字和一个靠近垂直中间的圆圈.

我的代码是这样的:

using (var region = new SKRegion())
{
   region.SetRect(_labelClipRect);
   _currentCanvas.ClipRegion(region, SKClipOperation.Intersect);
   _labelView.Draw(_currentCanvas, _printRequest.Device.DPI, xOffsetPX, yOffsetPX);
}
Run Code Online (Sandbox Code Playgroud)

结果是: 显示剪辑错误的PDF的片段 每页上的第一个标签看起来都是正确的,但其余的都很时髦.缺少矩形和圆形,文本根本没有剪裁.

有人见过这样的样品吗?

谢谢

Mak*_*aku 0

每次调用都会将_currentCanvas.ClipRegion传递的区域与当前区域相交,但不会将剪辑设置到该区域。

尝试保存画布状态并在绘制标签后恢复:

using (var region = new SKRegion())
{
   region.SetRect(_labelClipRect);
   _currentCanvas.Save();
   _currentCanvas.ClipRegion(region, SKClipOperation.Intersect);
   _labelView.Draw(_currentCanvas, _printRequest.Device.DPI, xOffsetPX, yOffsetPX);
   _currentCanvas.Restore();
}
Run Code Online (Sandbox Code Playgroud)