Try this. Dug it out of previously working code.
BORDER
PdfContentByte content = writer.DirectContent;
Rectangle rect = new Rectangle(doc.PageSize);
rect.Left += doc.LeftMargin;
rect.Right -= doc.RightMargin;
rect.Top -= doc.TopMargin;
rect.Bottom += doc.BottomMargin;
content.SetColorStroke(Color.BLACK);
content.Rectangle(rect.Left, rect.Bottom, rect.Width, rect.Height);
content.Stroke();
WATERMARK
Add similar to the onStartPage event so it gets called for each new page.
float fontSize = 48;
float xPos = 300;
float yPos = 400;
float angle = 25;
PdfContentByte wmark = writer.DirectContentUnder;
BaseFont baseFont = BaseFont.CreateFont(BaseFont.ARIAL, BaseFont.WINANSI, BaseFont.EMBEDDED);
wmark.BeginText();
wmark.SetColorFill(BaseColor.LIGHT_GRAY);
wmark.SetFontAndSize(baseFont, fontSize);
wmark.ShowTextAligned(PdfContentByte.ALIGN_CENTER, "CONFIDENTIAL", xPos, yPos, angle);
wmark.EndText();