> For the complete documentation index, see [llms.txt](https://docs.apryse.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.apryse.com/uwp/security/decrypt.md).

# Decrypt & read a PDF document in UWP

Guide to read a PDF document with password protection.

To read a PDF document with password protection.

{% tabs %}
{% tab title="C#" %}
{% code lineNumbers="true" %}

```csharp
PDFDoc doc = new PDFDoc(filename);

// At this point MySecurityHandler callbacks will be invoked.
// MySecurityHandler.GetAuthorizationData() should collect the password and
// AuthorizeFailed() is called if user repeatedly enters a wrong password.
if (doc.InitStdSecurityHandler(password)) {
  // The password is correct! Document can now be used for reading and editing
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

[Encrypt and Decrypt PDF Files](/uwp/get-started/samples.md#encryption) Full sample code which illustrates some of our encryption support.

## About reading a secured document

Apryse SDK fully supports the reading of secured and encrypted PDF documents. To test whether a document requires a password, check the return value of `PDFDoc.InitSecurityHandler()` as shown above. Because `InitSecurityHandler()` doesn't have any side effects on documents that are not encrypted you should always invoke this method, or `InitStdSecurityHandler()`, after constructing a document.

If a document doesn't require authentication data (such as a user password) in order to view its content, `InitSecurityHandler()` is enough to work with encrypted documents. If, on the other hand, the document requires a password, `InitStdSecurityHandler` allows you to provide one.

After the document's security handler is initialized, you can access it using the `doc.GetSecurityHandler()` method. You can edit permissions and authorization data on an existing handler, or set a completely new security handler using the `doc.SetSecurityHandler(handler)` method.

## Removing security from a document

To **remove** PDF security, call the `RemoveSecurity()` method:

{% tabs %}
{% tab title="C#" %}
{% code lineNumbers="true" %}

```csharp
PDFDoc doc = new PDFDoc(filename);
doc.InitSecurityHandler();
doc.RemoveSecurity();
```

{% endcode %}
{% endtab %}
{% endtabs %}

A document may have both a current and a new security handler associated with it because a PDF document is not fully loaded in memory and decrypted when it is loaded. To fully decrypt the document, even after applying a new security handler, the original security handler is still required.

## PDF security permissions

The security mechanism for the high-level document works in the same way as with an SDF document. To secure a document, use the `PDFDoc.SetSecurityHandler()` method. To open a secured document, call `PDFDoc.InitSecurityHandler()`. To open a document with a password, call `PDFDoc.InitStdSecurityHandler()`.

The following table lists security permissions available through the standard security handler:

| Permission          | Description                                                                                                                                                                                                                                          |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| e\_owner            | All permissions are granted.                                                                                                                                                                                                                         |
| e\_doc\_open        | A permission to open a document.                                                                                                                                                                                                                     |
| e\_doc\_modify      | Modify the contents of the document.                                                                                                                                                                                                                 |
| e\_print            | Print the document.                                                                                                                                                                                                                                  |
| e\_print\_high      | Print the document to a representation from which a faithful digital copy of the PDF content could be generated. When this permission is not set, printing is limited to a low level representation of the appearance, possibly of degraded quality. |
| e\_extract\_content | Copy or otherwise extract text and graphics from the document.                                                                                                                                                                                       |
| e\_mod\_annot       | Add or modify text annotations, fill in interactive form fields.                                                                                                                                                                                     |
| e\_fill\_forms      | Fill in existing interactive form fields (including signature fields).                                                                                                                                                                               |
| e\_access\_support  | Extract text and graphics (in support of accessibility to disabled users or for other purposes).                                                                                                                                                     |
| e\_assemble\_doc    | Assemble the document (insert, rotate, or delete pages and create bookmarks or thumbnail images), even if e\_doc\_modify is not set.                                                                                                                 |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.apryse.com/uwp/security/decrypt.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
