New to Telerik Document ProcessingStart a free 30-day trial

Settings

Updated on Jun 3, 2026

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:

The OnDemand mode must be applied when used with viewers only.
PropertyDescription
ReadingModeGets or sets the mode for loading the document pages content on import. Introduced in R2 2020.
  • ReadAllAtOnce: All document pages content is loaded on import. This is the default behavior.
  • OnDemand: The document pages content is loaded on demand. This mode is designed for use with PdfViewers and only the currently visible page is loaded.
CopyStreamGets 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.
EventDescription
UserPasswordNeededThe event fires when a user password is needed to open the document. The password can be set in the PasswordNeededEventArgs.Password property.
OwnerPasswordNeededThe event fires when an owner password is needed to open the document. The password can be set in the PasswordNeededEventArgs.Password property.
DuplicatedEmbeddedFileNameResolvingThe event fires when the provider resolves conflicts between embedded file names with the same names.
DocumentUnhandledExceptionRaised 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:

C#
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:

PropertyDescription
StripStructureTreeSpecifies whether the PDF document strips the structure tree on export. Introduced in Q2 2025. The default value is false.
StripJavaScriptActionsSpecifies whether the PDF document strips JavaScript actions on export. Introduced in Q4 2024. The default value is false.
FontEmbeddingTypeControls what part of the fonts is embedded in the file:
  • None: Does not embed fonts.
  • Full: Fully embeds fonts.
  • Subset: Embeds only the used characters subset of the fonts. This is the default approach.
The subset export option is implemented only for TrueType fonts (.ttf).
IsEncryptedSpecifies 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.
EncryptionTypeEncryption algorithm applied when the IsEncrypted property is true. The supported values are:
  • AES256
  • AES128 (introduced in Q4 2025)
  • RC4 (default value)
UserPasswordThe password to use if the document is encrypted. The default password is an empty string.
OwnerPasswordThe password that governs permissions for operations such as printing, copying, and modifying the document. The default password is an empty string.
UserAccessPermissionsGets 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
ImageQualitySpecifies 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.
ImageCompressionSets the desired compression for images when exporting. You can set one of the following values of the ImageFilterTypes enum:
  • Default: The image compression is preserved as in the original document.
  • None: The images are not encoded.
  • FlateDecode: The images are encoded with a FlateDecode filter. Compresses data with the zlib/deflate compression method.
  • DCTDecode: The images are encoded with a DCTDecode filter. Compresses data with a DCT (discrete cosine transform) technique based on the JPEG standard.
StreamCompressionGets or sets the content stream compression type. Possible values:
  • None: The content streams are not encoded.
  • FlateDecode: Compresses data with the zlib/deflate compression method.
ComplianceLevelSpecifies the PDF/A or PDF/UA compliance level. It can have one of the following values:
  • None: No compliance level.
  • PdfA1B: PDF/A-1b compliance level.
  • PdfA1A: PDF/A-1a compliance level.
  • PdfA2B: PDF/A-2b compliance level.
  • PdfA2A: PDF/A-2a compliance level.
  • PdfA2U: PDF/A-2u compliance level.
  • PdfA3B: PDF/A-3b compliance level.
  • PdfA3A: PDF/A-3a compliance level.
  • PdfA3U: PDF/A-3u compliance level.
  • PdfUA1: PDF/UA-1 compliance level.
The default value is None. For more information on PDF/A compliance, refer to the PDF/A Compliance article.
ShouldExportXfaSpecifies whether the PDF document exports XFA content (if any). Default value: false. Introduced in Q1 2025.
TaggingStrategySpecifies the tagging strategy used when exporting the document. Default value: UseExisting. Introduced in Q3 2025.
Possible values:
  • UseExisting: The document is not tagged automatically and the existing StructureTree is used.
  • Build: The document is automatically tagged and a new StructureTree is created.

Available UserAccessPermissions

UserAccessPermission TypeDescription
PrintingPermissionTypeSets the permissions for document printing. Possible values:
  • None: No printing is allowed.
  • LowResolution: Low resolution (150 dpi) printing is allowed.
  • HighResolution: Printing at the highest resolution is allowed.
ChangingPermissionTypeSets the permissions for making changes to the document. Possible values:
  • None: No document changes are allowed.
  • DocumentAssembly: Inserting, deleting, and rotating page changes are allowed.
  • FormFieldFillingOrSigning: Filling in form fields and signing existing signature fields are allowed.
  • FormFieldFillingOrSigningAndCommenting: Commenting, filling in form fields, and signing existing signature fields are allowed.
  • AnyExceptExtractingPages: Any changes except extracting pages are allowed.
CopyingPermissionTypeSets the permissions for document copying. Possible values:
  • None: No copying is allowed.
  • Copying: Copying is allowed.
  • TextAccess: Text access for screen reader devices for copying is allowed.
  • NumberingFieldsPrecisionLevel: Represents precision level when updating numbering fields. When the Normal option is selected the fields are updated once, not taking into account if their new values have shifted the already measured layout. In such cases, the results could be outdated. This is the MS Word-like behavior. If you need more accurate results, use NumberingFieldsPrecisionLevel.High where the fields are updated until their values become more accurate. This precision level is more accurate than NumberingFieldsPrecisionLevel.Normal but requires more resources.

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:

C#
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;
};

See Also