---
title: "Create PDFs with restricted permissions"
canonical_url: "https://www.nutrient.io/guides/ios/document-security/set-permissions/"
md_url: "https://www.nutrient.io/guides/ios/document-security/set-permissions.md"
last_updated: "2026-06-19T07:57:11.432Z"
description: "Learn how to set and manage PDF permissions on iOS to restrict user actions with Nutrient."
---

# Managing PDF restrictions on iOS

The PDF specification defines a series of flags that can be set on a document to determine what a user can do with a document. These permissions are represented as a bitmask at the PDF level. When a permission bit isn’t present at its defined position, the permission is considered not granted.

Nutrient honors the permissions set on a document and enables or disables certain platform features based on the permission configuration. For instance, if a PDF doesn’t explicitly define the printing permission as loaded, Nutrient won’t enable the printing option in the UI.

The PDF specification defines the permissions shown below:

- Printing — Print the document

- High-quality printing — Print the document in high fidelity

- Copying content — Copy or otherwise extract text and graphics from the document

- Document assembly — Insert, rotate, or delete pages and create document outline items or thumbnail images

- Editing annotations and forms — Add or modify text annotations and fill in interactive form fields

- Filling forms — Fill in existing interactive form fields (including signature fields)

- Modifying content — Any other modifications not covered by previous permission flags

By default, most documents will have all permissions marked as granted.

## Secured documents

PDF documents can be secured with a password or with other security methods. Nutrient can handle protected and secured documents and write annotations and forms into a password-protected document the same as it would a non-protected document.

As shown above, Acrobat defines various restrictions. For example, sometimes form filling isn’t allowed for a document.

Sometimes documents are password secured but have an empty password set. This might sound paradoxical, but it isn’t unusual in the PDF world. In such a case, Nutrient will attempt to unlock documents with an empty password before showing the password dialog. This way, users don’t get confused. This behavior is the same as in Adobe Acrobat.

## Getting and setting permissions

Modifying a document’s permissions requires Nutrient to be instantiated with a license that includes the Document Editor component.

It’s worth noting that if you wish to modify the default document permissions with Nutrient, you’ll be required to protect the document with a password.

You can retrieve the current permissions of a document via the [`Document.permissions`](https://www.nutrient.io/api/ios/documentation/pspdfkit/document/permissions) property. This property is read-only and will only return the permissions from the first file when the document is comprised of multiple underlying files.

Document permissions can be set using the [`Document.SecurityOptions`](https://www.nutrient.io/api/ios/documentation/pspdfkit/document/securityoptions) class when interacting with the document processor. After you define your desired security options, you instantiate a Processor object with it:

```swift

do {
  let documentSecurityOptions = try Document.SecurityOptions(ownerPassword: password, userPassword: password, keyLength: Document.SecurityOptionsKeyLengthAutomatic, permissions: [.annotationsAndForms])
} catch {
  // Handle error.
  return
}
guard let processorConfiguration = Processor.Configuration(document: document) else {
  // Handle error.
  return
}

// Create a processor and write the file with the permissions applied.
let processor = Processor(configuration: processorConfiguration, securityOptions: securityOptions)
try processor.write(toFileURL: outputFileURL)

```

Users can also customize the permissions directly from the UI via [`PDFDocumentSecurityViewController`](https://www.nutrient.io/api/ios/documentation/pspdfkitui/pdfdocumentsecurityviewcontroller). This is part of the default UI that’s presented when [`outlineButtonItem`](https://www.nutrient.io/api/ios/documentation/pspdfkitui/pdfviewcontroller/outlinebuttonitem) is invoked.

## Restricting draggable content

Nutrient allows users to drag and drop various elements, such as images and text, from and to an application. All drag-and-drop interactions are enabled by default. However, you can selectively restrict specific interactions, as described in our [drag and drop](https://www.nutrient.io/guides/ios/features/drag-and-drop.md) guide.
---

## Related pages

- [Securing PDFs by adding watermarks on iOS](/guides/ios/document-security/add-a-watermark.md)
- [Decrypt PDFs with AES on iOS](/guides/ios/security/aesdataprovider.md)
- [Creating password-protected PDFs on iOS](/guides/ios/document-security/add-a-password.md)
- [Encrypt PDFs with AES on iOS](/guides/ios/security/encrypt-or-decrypt-files-on-the-server.md)
- [Document security on iOS](/guides/ios/document-security.md)
- [Prevent sharing of PDF files on iOS](/guides/ios/document-security/prevent-sharing.md)
- [Introduction to PDF encryption on iOS](/guides/ios/security/introduction-to-encryption.md)

