重复水印文字

Repeating watermark text

我正在使用 PDF4NET 在 pdf 页面上绘制水印。现在我想以平铺模式在整个页面上重复水印文本。像这样 watermark.

下面是我重复水印文字的做法:

var text= string.Concat(Enumerable.Repeat("Sample   ", 800));
PDFTextFormatOptions format= new PDFTextFormatOptions();
format.Align = PDFTextAlign.TopLeft;
// ----- 
// ....
page.Canvas.DrawTextBox(text, fontText, null, redBrush, 0, 0, page.Width, page.Height, format);

如何使文本以平铺模式显示而不考虑字体大小和文本长度?

无法自动生成预期的布局。
下面的代码显示了一种获得所需布局的可能方法。您可以根据需要使用 X、Y 来调整输出。

PDFFixedDocument document = new PDFFixedDocument();
PDFPage page = document.Pages.Add();

PDFBrush lightGrayBrush = new PDFBrush(PDFRgbColor.LightGray);
PDFStandardFont helvetica = new PDFStandardFont(PDFStandardFontFace.Helvetica, 12);
string watermarkText = "Sample Watermark";
double watermarkTextWidth = PDFTextEngine.MeasureString(watermarkText, helvetica).Width;

double y = 0;
double startX = watermarkTextWidth / 2;
int sign = -1;
while (y < page.Height)
{
    double x = startX;

    while (x < page.Width)
    {
        page.Canvas.DrawString(watermarkText, helvetica, lightGrayBrush, x, y);
        x = x + watermarkTextWidth + watermarkTextWidth / 4;
    }

    startX = startX + sign * watermarkTextWidth / 2;
    sign = -sign;

    y = y + 2 * helvetica.Size;
}

document.Save("InterleavedWatermak.pdf");

输出文档如下:

免责声明:我在开发 PDF4NET 库的公司工作。