//// This code is part of Document Solutions for PDF .NET demos.// Copyright (c) MESCIUS inc. All rights reserved.//usingSystem.IO;usingSystem.Drawing;usingGrapeCity.Documents.Pdf;usingGrapeCity.Documents.Pdf.Annotations; namespaceDsPdfWeb.Demos{// This example shows how to load a password protected PDF without specifying the password,// and add a square annotation (a red border along the sides of the page) to the first page of the PDF.// The modified PDF is saved and re-opened with the password so that we can show it in the demo.publicclassNoPassAddAnnotation {publicintCreatePDF(Stream stream) {usingvar fsSrc = File.OpenRead(Path.Combine("Resources", "PDFs", "Wetlands-password-user.pdf"));// Set up DecryptionOptions to allow loading password protected PDFs without password:var dopt = newDecryptionOptions() { ThrowExceptionIfInvalidPassword = false };var docSrc = newGcPdfDocument(); docSrc.Load(fsSrc, dopt); // Add a square annotation to the first page of the PDF:var page = docSrc.Pages[0];var pageSize = page.Size;var sa = newSquareAnnotation() {Page = page,Rect = newRectangleF(36, 36, pageSize.Width - 72, pageSize.Height - 72),Color = Color.Red, };// Note: we must remove the UserName, as it is initialized by default which will cause an exception// when the document is saved, because strings cannot be encrypted: sa.UserName = null; // Demo site specific:// We save the modified password protected document to a temp file,// and load it again with the password, so that the demo site can show it// without asking the user for a password (the block is to delete the temp file):var fn = Path.GetTempFileName(); { docSrc.Save(fn);var doc = newGcPdfDocument();usingvar fs = File.OpenRead(fn); doc.Load(fs, "user"); doc.Save(stream); }File.Delete(fn);return docSrc.Pages.Count; } }}