'''' This code is part of Document Solutions for PDF .NET demos.'' Copyright (c) MESCIUS inc. All rights reserved.''ImportsSystem.IOImportsSystem.DrawingImportsGrapeCity.Documents.PdfImportsGrapeCity.Documents.Pdf.Annotations '' 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.PublicClassNoPassAddAnnotationPublicFunctionCreatePDF(ByVal stream AsStream) AsIntegerUsing fsSrc = File.OpenRead(Path.Combine("Resources", "PDFs", "Wetlands-password-user.pdf"))'' Set up DecryptionOptions to allow loading password protected PDFs without password:Dim dopt = NewDecryptionOptions() With {.ThrowExceptionIfInvalidPassword = False}Dim docSrc = NewGcPdfDocument() docSrc.Load(fsSrc, dopt) '' Add a square annotation to the first page of the PDF:Dim page = docSrc.Pages(0)Dim pageSize = page.SizeDim sa = NewSquareAnnotation() With { .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 = Nothing '' 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:Dim fn = Path.GetTempFileName() docSrc.Save(fn)Dim doc = NewGcPdfDocument()Using fs = File.OpenRead(fn) doc.Load(fs, "user") doc.Save(stream)EndUsingFile.Delete(fn)'' Done:Return docSrc.Pages.CountEndUsingEndFunctionEndClass