// Open an existing document. Providing an unrequired password is ignored.
PdfSharp.Pdf.PdfDocument document = PdfReader.Open(pdfFilePath);
PdfSecuritySettings securitySettings = document.SecuritySettings;
// Setting one of the passwords automatically sets the security level to
// PdfDocumentSecurityLevel.Encrypted128Bit.
//securitySettings.UserPassword = "user";
securitySettings.OwnerPassword = GGGuid.ToString();
// Don't use 40 bit encryption unless needed for compatibility reasons
//securitySettings.DocumentSecurityLevel = PdfDocumentSecurityLevel.Encrypted40Bit;
// Restrict some rights.
//除打印权限其他均关闭
securitySettings.PermitAccessibilityExtractContent = false;
securitySettings.PermitAnnotations = false;
securitySettings.PermitAssembleDocument = false;
securitySettings.PermitExtractContent = false;
securitySettings.PermitFormsFill = false;
securitySettings.PermitFullQualityPrint = true;
securitySettings.PermitModifyDocument = false;
securitySettings.PermitPrint = true;
//水印
for (int i = 0; i < document.Pages.Count; i++)
{
string watermark = "水印文字"; //水印文字
double emSize = 42;
XFont xFont = new XFont("黑体", emSize);
var page = document.Pages[i];
var gfx = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Prepend);
var size = gfx.MeasureString(watermark, xFont);
gfx.TranslateTransform(page.Width / 2, page.Height / 2);
gfx.RotateTransform(-Math.Atan(page.Height / page.Width) * 180 / Math.PI);
gfx.TranslateTransform(-page.Width / 2, -page.Height / 2);
var format = new XStringFormat();
format.Alignment = XStringAlignment.Near;
format.LineAlignment = XLineAlignment.Near;
XBrush brush = new XSolidBrush(XColor.FromArgb(16, 0, 0, 0));
//循环以实现全屏水印
for (int y = 0; y < 10; y++)
{
for (int x = 0; x < 10; x++)
{
gfx.DrawString(watermark, xFont, brush, new XPoint(x * 180 - 300, y * 120), format);
}
}
}
document.Save(pdfFilePath);