如何在 iText 7 中用位图填充形状或用形状遮罩位图?

问题描述

我想用位图填充一个形状,换句话说,用一个形状遮蔽一个位图。我找不到直接的例子。我正在使用 iText 7 和 C#。

解决方法

您可以用位图填充形状,方法是使该形状成为剪辑路径并添加位图,例如像这样:

using (PdfWriter writer = new PdfWriter(...))
using (PdfDocument pdfDoc = new PdfDocument(writer))
{
    ImageData data = ImageDataFactory.Create(...);

    PdfCanvas pdfCanvas = new PdfCanvas(pdfDoc.AddNewPage());
    pdfCanvas.SaveState()
             .MoveTo(100,100)
             .LineTo(300,200)
             .LineTo(400,400)
             .LineTo(200,300)
             .ClosePath()
             .EoClip()
             .EndPath();
    pdfCanvas.AddImageAt(data,100,false);
    pdfCanvas.RestoreState();
}

(AddImageWithMask 测试 testAddImageInShape)

结果如下:

enter image description here