Welcome GuestLogin

PDFsharp and MigraDoc Wiki



Quick Search

<< Previous^UpNext >>
This sample shows how to unprotect a document (if you know the password).

Note:  that we will not explain nor give any tips how to crack a protected document with PDFsharp.

PDF Output File

See the PDF file created by this sample: output.pdf (7 kB)

Screen Shots

Here is a sample screen shot:

The unprotected document with some added text

Source Code

This code shows how to unprotect a document to allow modification:
// Get a fresh copy of the sample PDF file.
// The passwords are 'user' and 'owner' in this sample.
const string filenameSource = "HelloWorld (protected).pdf";
const string filenameDest = "HelloWorld_tempfile.pdf";
File.Copy(Path.Combine("../../../../../PDFs/", filenameSource),
  Path.Combine(Directory.GetCurrentDirectory(), filenameDest), true);
PdfDocument document;
// Opening a document will fail with an invalid password.
  document = PdfReader.Open(filenameDest, "invalid password");
catch (Exception ex)
// You can specifiy a delegate, which is called if the document needs a
// password. If you want to modify the document, you must provide the
// owner password.
document = PdfReader.Open(filenameDest, PdfDocumentOpenMode.Modify, PasswordProvider);
// Open the document with the user password.
document = PdfReader.Open(filenameDest, "user", PdfDocumentOpenMode.ReadOnly);
// Use the property HasOwnerPermissions to decide whether the used password
// was the user or the owner password. In both cases PDFsharp provides full
// access to the PDF document. It is up to the programmer who uses PDFsharp
// to honor the access rights. PDFsharp doesn't try to protect the document
// because this make little sence for an open source library.
bool hasOwnerAccess = document.SecuritySettings.HasOwnerPermissions;
// Open the document with the owner password.
document = PdfReader.Open(filenameDest, "owner");
hasOwnerAccess = document.SecuritySettings.HasOwnerPermissions;
// A document opened with the owner password is completely unprotected
// and can be modified.
XGraphics gfx = XGraphics.FromPdfPage(document.Pages[0]);
gfx.DrawString("Some text...",
  new XFont("Times New Roman", 12), XBrushes.Firebrick, 50, 100);
// The modified document is saved without any protection applied.
PdfDocumentSecurityLevel level = document.SecuritySettings.DocumentSecurityLevel;
// If you want to save it protected, you must set the DocumentSecurityLevel
// or apply new passwords.
// In the current implementation the old passwords are not automatically
// reused. See 'ProtectDocument' sample for further information.
// Save the document...
// ...and start a viewer.

Here's the source code for the password provider:
/// The 'get the password' call back function.
static void PasswordProvider(PdfPasswordProviderArgs args)
  // Show a dialog here in a real application
  args.Password = "owner";


ScrewTurn Wiki version Some of the icons created by FamFamFam.

Impressum - Legal Notice