If you remove the line breaks and have a single string of text, it will be lined up as you expect. That text length gets taken into account when displaying the watermark. (Could be a bug... maybe not sure?) Most of the watermarks I used just needed a single line of text.
To get around it, trying using multiple watermarks and use the y offset to get what you desire.
var watermarkText = "This is an example of Draft watermark";
foreach (Page page in document.Pages)
{
var textWatermark = new TextWatermark(watermarkText)
{
//Angle = 0,
Opacity = 0.2f,
Font = Font.Helvetica,
FontSize = 30,
Position = WatermarkPosition.Center,
TextColor = RgbColor.Blue,
RelativeTo = RelativeTo.TopCenter,
IgnoreMargins = false,
AutoScale=true
};
page.Elements.Add(textWatermark);
var textWatermark2 = new TextWatermark(watermarkText)
{
//Angle = 0,
Opacity = 0.2f,
Font = Font.Helvetica,
FontSize = 30,
Position = WatermarkPosition.Center,
TextColor = RgbColor.Blue,
RelativeTo = RelativeTo.TopCenter,
IgnoreMargins = false,
AutoScale = true,
YOffset = 100
};
textWatermark2.YOffset = 100;
page.Elements.Add(textWatermark2);
var textWatermark3 = new TextWatermark(watermarkText)
{
//Angle = 0,
Opacity = 0.2f,
Font = Font.Helvetica,
//FontSize = 30,
Position = WatermarkPosition.Center,
TextColor = RgbColor.Blue,
RelativeTo = RelativeTo.TopCenter,
IgnoreMargins = false,
AutoScale = true,
YOffset = 200
};
page.Elements.Add(textWatermark3);
}