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

8
我正在使用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);
}

结果如下: PDF片段显示剪辑错误 每页的第一个标签看起来正确,但其余标签显示错误。矩形和圆形缺失,文本未剪切。

有人见过或拥有类似的示例吗?

谢谢


我想到的一个主意是在标签外部区域涂上一个白色(?)矩形,而不是剪裁它。然而,标签可能没有白色背景,这可能会成为一个问题。 - Jonesie
1个回答

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();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接