---
title: "PSPDFKit 7.6 Migration Guide"
canonical_url: "https://www.nutrient.io/guides/ios/migration-guides/pspdfkit-7-6-migration-guide/"
md_url: "https://www.nutrient.io/guides/ios/migration-guides/pspdfkit-7-6-migration-guide.md"
last_updated: "2026-05-14T16:53:43.872Z"
description: "Migration guide for Nutrient iOS SDK version 7.6 with breaking changes, API updates, and upgrade instructions."
---

This guide tells you how to update an iOS project from PSPDFKit 7.0–7.5 to PSPDFKit 7.6.

PSPDFKit 7.6 for iOS fully supports iOS 10 and 11. Additionally, Xcode 9.4 is required to use this version of the SDK. Learn more in our [version support](https://www.nutrient.io/../../announcements/version-support) guide.

## Custom Page Templates

In PSPDFKit 7.6 for iOS, you can now customize the set of templates that [`PSPDFNewPageViewController`](https://www.nutrient.io/api/ios/documentation/pspdfkitui/pdfnewpageviewcontroller) offers on the picker via the new [`PSPDFPageTemplate`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pagetemplate) API.

The page templates can be updated via the [`pageTemplates`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pdfdocumenteditor/configuration/pagetemplates) property on [`PSPDFDocumentEditorConfiguration`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pdfdocumenteditor/configuration). Then you can instantiate a [`PSPDFNewPageViewController`](https://www.nutrient.io/api/ios/documentation/pspdfkitui/pdfnewpageviewcontroller) with that configuration. If you wish to make your custom set of templates available globally, you can update the page templates list on a [`PSPDFDocumentEditorConfiguration`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pdfdocumenteditor/configuration) and then assign that configuration to [`-[PSPDFConfiguration documentEditorConfiguration]`][`documenteditorconfiguration`].

There are two common ways to create a custom template:

- [`-[PSPDFPageTemplate initWithDocument:sourcePageIndex:]`][`initwithdocument:sourcepageindex:`] will instantiate a template that takes the source document’s page at the provided index.

- [`-[PSPDFPageTemplate initWithTiledPatternFromDocument:sourcePageIndex:]`][`initwithtiledpatternfromdocument:sourcepageindex:`] will instantiate a template that’s intended to be used as a tiled pattern. If you want to add a page to a document with a repeating pattern, this is the initializer you’ll use.

Creating a tiled pattern page template requires the source document to be exported correctly. This means that the source PDF needs to contain a pattern itself. If a `PSPDFPageTemplate` is instantiated using the tiled pattern initializer and the source document does not contain a pattern, the rendering will fail silently.

Check out [`DocumentEditorCustomTemplatesExample.swift`](https://github.com/PSPDFKit/pspdfkit-ios-catalog/blob/master/Catalog/Examples/DocumentEditing/DocumentEditorCustomTemplatesExample.swift) in the [Catalog app](https://www.nutrient.io/guides/ios/getting-started/example-projects.md#nutrient-catalog) to see `PSPDFPageTemplate` in action, and refer to our [custom page templates](https://www.nutrient.io/../../miscellaneous/custom-page-templates/) guide to learn more about implementing this functionality in your app.

## Builder Pattern for PSPDFDocumentEditorConfiguration

We also made `PSPDFDocumentEditorConfiguration` use the builder pattern that we use throughout the rest of the SDK to provide a more cohesive API. This is a breaking change, which means you’ll see compilation errors when you try to build your app with version 7.6 of the SDK.

If you have a reference to a `PSPDFDocumentEditorConfiguration` object and need to update it, before you would’ve done this:

### SWIFT

```swift

self.documentEditorConfiguration.selectedCompression = selectedCompression

```

### OBJECTIVE-C

```objc

self.documentEditorConfiguration.selectedCompression = selectedCompression;

```

Now you should use the builder helper to update the entire editor configuration:

### SWIFT

```swift

self.editorConfiguration = editorConfiguration.configurationUpdated { builder in
	builder.selectedCompression = selectedCompression
}

```

### OBJECTIVE-C

```objc

self.documentEditorConfiguration = [self.documentEditorConfiguration configurationUpdatedWithBuilder:^(PSPDFDocumentEditorConfigurationBuilder * _Nonnull builder) {
	builder.selectedCompression = selectedCompression;
}];

```

## Customizing Document-Saving Options

`PSPDFViewControllerDelegate` now offers two new methods that let you hook into the autosaving mechanism of `PSPDFDocument`.

- `-pdfViewController:shouldSaveDocument:withOptions:` asks the `PSPDFViewController` delegate if the document should be saved. The `options` parameter is an `inout` parameter that can be updated to customize the options the document is going to be saved with.

- `-pdfViewController:didSaveDocument:error:` lets the `PSPDFViewController` delegate know that the saving operation either succeeded or failed.

## PSPDFProcessor Revamp

The `PSPDFProcessor` API has been revamped to offer more flexibility and control over what’s going on when requesting PDF processing. The class-level methods have been deprecated, and instance-level methods have been introduced, along with a new API for canceling document processing.

A new `PSPDFProcessorDelegate` protocol has also been introduced. Objects that conform through this new delegate are able to receive progress updates from `PSPDFProcessorInstances`, in addition to being notified about processing completion or failure.

For instance, previously, you would’ve requested a PDF via `PSPDFProcessor` like this:

### SWIFT

```swift

try PSPDFProcessor.generatePDF(from: processorConfiguration, securityOptions: nil, outputFileURL: temporaryDocumentUR, progressBlock: progressBlock)

```

### OBJECTIVE-C

```objc

[PSPDFProcessor generatePDFFromConfiguration:processorConfiguration securityOptions:nil outputFileURL:temporaryDocumentURL progressBlock:progressBlock error:&error];

```

Now you need to create a `PSPDFProcessor` instance with a configuration and a set of security options and request a file write:

### SWIFT

```swift

let processor = PSPDFProcessor(configuration: processorConfiguration, securityOptions: nil)
processor.delegate = self // Required to track processing progress/completion status.
try processor.write(toFileURL: temporaryDocumentURL)

```

### OBJECTIVE-C

```objc

PSPDFProcessor *processor =  [[PSPDFProcessor alloc] initWithConfiguration:processorConfiguration securityOptions:nil];
processor.delegate = self; // Required to track processing progress/completion status.
[processor writeToFileURL:temporaryDocumentURL error:&error];

```

Finally, the `PSPDFPageRenderer` protocol was also deprecated.

The newly deprecated API will be removed from the SDK in a future release.
---

## Related pages

- [14 9 Migration Guide](/guides/ios/migration-guides/14-9-migration-guide.md)
- [14 2 Migration Guide](/guides/ios/migration-guides/14-2-migration-guide.md)
- [Migrating From Apple Pdfkit](/guides/ios/migration-guides/migrating-from-apple-pdfkit.md)
- [Migrate to electronic signatures](/guides/ios/migration-guides/migrating-to-electronic-signatures.md)
- [Pspdfkit 10 3 Migration Guide](/guides/ios/migration-guides/pspdfkit-10-3-migration-guide.md)
- [Pspdfkit 10 4 Migration Guide](/guides/ios/migration-guides/pspdfkit-10-4-migration-guide.md)
- [Pspdfkit 11 5 Migration Guide](/guides/ios/migration-guides/pspdfkit-11-5-migration-guide.md)
- [Pspdfkit 10 Migration Guide](/guides/ios/migration-guides/pspdfkit-10-migration-guide.md)
- [Migrating To Advanced Digital Signatures Api](/guides/ios/migration-guides/migrating-to-advanced-digital-signatures-api.md)
- [Pspdfkit 11 3 Migration Guide](/guides/ios/migration-guides/pspdfkit-11-3-migration-guide.md)
- [Pspdfkit 13 3 Migration Guide](/guides/ios/migration-guides/pspdfkit-13-3-migration-guide.md)
- [Pspdfkit 13 Migration Guide](/guides/ios/migration-guides/pspdfkit-13-migration-guide.md)
- [Pspdfkit 12 2 Migration Guide](/guides/ios/migration-guides/pspdfkit-12-2-migration-guide.md)
- [Pspdfkit 12 3 Migration Guide](/guides/ios/migration-guides/pspdfkit-12-3-migration-guide.md)
- [Pspdfkit 3 Migration Guide](/guides/ios/migration-guides/pspdfkit-3-migration-guide.md)
- [Pspdfkit 11 4 Migration Guide](/guides/ios/migration-guides/pspdfkit-11-4-migration-guide.md)
- [Pspdfkit 4 Migration Guide](/guides/ios/migration-guides/pspdfkit-4-migration-guide.md)
- [Pspdfkit 5 Migration Guide](/guides/ios/migration-guides/pspdfkit-5-migration-guide.md)
- [Pspdfkit 6 5 Migration Guide](/guides/ios/migration-guides/pspdfkit-6-5-migration-guide.md)
- [Pspdfkit 12 Migration Guide](/guides/ios/migration-guides/pspdfkit-12-migration-guide.md)
- [Pspdfkit 6 Migration Guide](/guides/ios/migration-guides/pspdfkit-6-migration-guide.md)
- [Pspdfkit 9 2 Migration Guide](/guides/ios/migration-guides/pspdfkit-9-2-migration-guide.md)
- [Pspdfkit 9 4 Migration Guide](/guides/ios/migration-guides/pspdfkit-9-4-migration-guide.md)
- [Pspdfkit 9 5 Migration Guide](/guides/ios/migration-guides/pspdfkit-9-5-migration-guide.md)
- [Pspdfkit 9 3 Migration Guide](/guides/ios/migration-guides/pspdfkit-9-3-migration-guide.md)
- [Upgrading](/guides/ios/getting-started/upgrading.md)
- [Pspdfkit 9 Migration Guide](/guides/ios/migration-guides/pspdfkit-9-migration-guide.md)
- [Migrate to PSPDFKit 7 with ease](/guides/ios/migration-guides/pspdfkit-7-migration-guide.md)
- [PSPDFKit 8 migration guide for iOS developers](/guides/ios/migration-guides/pspdfkit-8-migration-guide.md)

