> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chromiumly.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# PDF permissions

> Restrict printing, copying, editing, and other actions on encrypted PDFs with the six permission booleans.

Every route in [PDF encryption](/advanced/encryption) also accepts six permission booleans, all defaulting to `true`:

```typescript theme={null}
type PdfEnginePermissions = {
  allowPrinting?: boolean; // Allow printing the document
  allowCopying?: boolean; // Allow copying content from the document
  allowModifying?: boolean; // Allow modifying the document
  allowAnnotating?: boolean; // Allow adding or modifying annotations
  allowFillingForms?: boolean; // Allow filling in form fields
  allowAssembling?: boolean; // Allow document assembly, e.g. inserting, deleting, or rotating pages
};
```

```typescript theme={null}
import { UrlConverter } from "chromiumly";

const buffer = await new UrlConverter().convert({
  url: "https://example.com/",
  ownerPassword: "my_owner_password",
  allowPrinting: false,
  allowCopying: false,
});
```

These booleans are available wherever `userPassword`/`ownerPassword` are: Chromium converters (`UrlConverter`, `HtmlConverter`, `MarkdownConverter`) `convert()`, `LibreOffice.convert()`, `PDFEngines.merge()`, `PDFEngines.split()`, and the dedicated `PDFEngines.encrypt()` route.

Permission enforcement depends on the active PDF engine: QPDF honors each permission individually, pdfcpu restricts all permissions if any one is denied, and PDFtk supports neither owner-only encryption nor permission restrictions. Restrictions are advisory: PDF viewers honor them, but they aren't cryptographically enforced once the document opens. See [Gotenberg PDF Engines configuration](https://gotenberg.dev/docs/configuration#pdf-engines).
