New to Telerik Document ProcessingStart a free 30-day trial

Create Custom Predefined CMaps Provider

Updated on Feb 19, 2026
Product VersionProductAuthor
2021.1.118RadPdfProcessingMartin Velikov

Description

How to create a custom implementation of the PredefinedCMapsProviderBase in order to use a custom CMAP table.

Solution

This functionality could be achieved by creating a custom class inheriting the PredefinedCMapsProviderBase and passing it to PredefinedCMapsProvider property of the FixedExtensibilityManager class.

Creating a custom class inheriting PredefinedCMapsProviderBase

csharp

	internal class CustomPredefinedCMapsProvider : PredefinedCMapsProviderBase
    {
        private readonly PredefinedCMapsProviderBase predefinedCMapsProvider;

        public CustomPredefinedCMapsProvider(PredefinedCMapsProviderBase predefinedCMapsProvider)
        {
            this.predefinedCMapsProvider = predefinedCMapsProvider;
        }

        public override byte[] GetCidCMapData(string name)
        {
            if (name == "90ms-RKSJ-V")
            {
                return File.ReadAllBytes("90ms-RKSJ-V");
            }

            return this.predefinedCMapsProvider.GetCidCMapData(name);
        }

        public override byte[] GetUnicodeCMapData(string name)
        {
            return this.predefinedCMapsProvider.GetUnicodeCMapData(name);
        }
    }
	

Set the custom PredefinedCMapsProvider the FixedExtensibilityManager.PredefinedCMapsProvider

csharp

	FixedExtensibilityManager.PredefinedCMapsProvider = new CustomPredefinedCMapsProvider(new PredefinedCMapsProvider());
 
In this article
DescriptionSolution
Not finding the help you need?
Contact Support