Settings
The PdfFormatProvider class imports and exports PDF documents. The import and export settings provide options for controlling encryption, image quality, font embedding, compliance levels, and more.
Import Settings
The PdfFormatProvider class exposes the ImportSettings property, which allows you to control how the content is imported. The following table lists the available import settings:
| Property | Description |
|---|---|
ReadingMode | Gets or sets the mode for loading the document pages content on import. Introduced in R2 2020.
|
CopyStream | Gets or sets whether to copy the document stream on import. When false and ReadingMode is OnDemand, the original stream must be kept open while the document is in use. When true, the original stream can be disposed after import, regardless of the reading mode. |
| Event | Description |
|---|---|
UserPasswordNeeded | The event fires when a user password is needed to open the document. The password can be set in the PasswordNeededEventArgs.Password property. |
OwnerPasswordNeeded | The event fires when an owner password is needed to open the document. The password can be set in the PasswordNeededEventArgs.Password property. |
DuplicatedEmbeddedFileNameResolving | The event fires when the provider resolves conflicts between embedded file names with the same names. |
DocumentUnhandledException | Raised when an unhandled exception occurs during document import. Provides error details for logging or recovery. |
The following example shows how to create a PdfImportSettings object with the desired settings and handle the offered events:
PdfFormatProvider provider = new PdfFormatProvider();
PdfImportSettings settings = new PdfImportSettings();
settings.UserPasswordNeeded += (s, a) =>
{
a.Password = "Us3rP4ssw0rd";
};
settings.OwnerPasswordNeeded += (s, a) =>
{
a.Password = "Own3erP4ssw0rd";
};
settings.DuplicatedEmbeddedFileNameResolving += (s, a) =>
{
string myNewName = "2_" + a.Name;
if (!a.UsedNames.Contains(myNewName))
{
a.NewName = myNewName;
}
};
provider.ImportSettings = settings;
Export Settings
The PdfFormatProvider class exposes the ExportSettings property, which allows you to control how the content is exported. The following table lists the available export settings:
| Property | Description |
|---|---|
StripStructureTree | Specifies whether the PDF document strips the structure tree on export. Introduced in Q2 2025. The default value is false. |
StripJavaScriptActions | Specifies whether the PDF document strips JavaScript actions on export. Introduced in Q4 2024. The default value is false. |
FontEmbeddingType | Controls what part of the fonts is embedded in the file:
|
IsEncrypted | Specifies whether the document is encrypted. The default value is false. You can set the encryption algorithm through the EncryptionType property.All passwords for revision 6 (AES-256) must be based on Unicode. Preprocessing of a user-provided password consists first of normalizing its representation by applying the "SASLPrep" profile (Internet RFC 4013) of the "stringprep" algorithm (Internet RFC 3454) to the supplied password using the Normalize and BiDi options. This setting is ignored when ComplianceLevel differs from None as PDF/A compliant documents do not allow encryption. |
EncryptionType | Encryption algorithm applied when the IsEncrypted property is true. The supported values are:
|
UserPassword | The password to use if the document is encrypted. The default password is an empty string. |
OwnerPassword | The password that governs permissions for operations such as printing, copying, and modifying the document. The default password is an empty string. |
UserAccessPermissions | Gets or sets the user access permissions. These permissions specify which operations are allowed when the document is opened with user access. To apply these permissions, set the IsEncrypted property to true. This property supports three types of user access permissions: Available UserAccessPermissions |
ImageQuality | Specifies the quality with which images are exported to PDF. More information is available in the ImageQuality article. The .NET Standard specification does not define APIs for converting images or scaling their quality. To allow the library to export images other than Jpeg and Jpeg2000, or to use ImageQuality values other than High, provide an implementation of the JpegImageConverterBase abstract class. Pass this implementation to the JpegImageConverter property of the FixedExtensibilityManager. For more information, refer to the Cross-Platform Support article. |
ImageCompression | Sets the desired compression for images when exporting. You can set one of the following values of the ImageFilterTypes enum:
|
StreamCompression | Gets or sets the content stream compression type. Possible values:
|
ComplianceLevel | Specifies the PDF/A or PDF/UA compliance level. It can have one of the following values:
None. For more information on PDF/A compliance, refer to the PDF/A Compliance article. |
ShouldExportXfa | Specifies whether the PDF document exports XFA content (if any). Default value: false. Introduced in Q1 2025. |
TaggingStrategy | Specifies the tagging strategy used when exporting the document. Default value: UseExisting. Introduced in Q3 2025. Possible values:
|
Available UserAccessPermissions
| UserAccessPermission Type | Description |
|---|---|
PrintingPermissionType | Sets the permissions for document printing. Possible values:
|
ChangingPermissionType | Sets the permissions for making changes to the document. Possible values:
|
CopyingPermissionType | Sets the permissions for document copying. Possible values:
|
The receiver of a PDF document must have the same fonts that were originally used to create it. If a different font is substituted, its character set, glyph shapes, and metrics may differ from those in the original font. This substitution can produce unexpected and unwanted results, such as lines of text extending into margins or overlapping with graphics. A PDF file can refer by name to fonts that are not embedded in the PDF file. In this case, a PDF consumer can use those fonts if they are available in its environment. This approach suffers from the uncertainties noted previously.
Starting with Q1 2025, the PdfExportSettings class exposes the DocumentUnhandledException event, which allows you to handle exceptions while exporting a document.
The following example shows how to create a PdfExportSettings object with custom settings and handle unexpected errors while exporting the PDF document:
PdfFormatProvider provider = new PdfFormatProvider();
PdfExportSettings settings = new PdfExportSettings();
provider.ExportSettings = settings;
settings.StripJavaScriptActions = true;
settings.StripStructureTree = false;
settings.FontEmbeddingType = FontEmbeddingType.Full;
settings.ComplianceLevel = PdfComplianceLevel.PdfA2B;
settings.ImageCompression = new ImageFilterTypes[] { ImageFilterTypes.FlateDecode };
settings.ImageQuality = ImageQuality.Medium;
settings.IsEncrypted = true;
settings.UserPassword = "TelerikUser";
settings.OwnerPassword = "0wn3rP4ssw0rd";
UserAccessPermissions permissions = new UserAccessPermissions
{
Printing = PrintingPermissionType.HighResolution,
Changing = ChangingPermissionType.AnyExceptExtractingPages,
Copying = CopyingPermissionType.TextAccess,
};
settings.UserAccessPermissions = permissions;
settings.DocumentUnhandledException += (s, e) =>
{
Debug.WriteLine("The document is corrupted and cannot be exported: " + e.Exception.Message);
e.Handled = true;
};