New to Telerik Document Processing? Start a free 30-day trial
Create Custom Predefined CMaps Provider
Updated on Jun 5, 2026
| Product Version | Product | Author |
|---|---|---|
| 2021.1.118 | RadPdfProcessing | Martin Velikov |
Description
This article shows how to create a custom implementation of the PredefinedCMapsProviderBase to use a custom CMap table.
Solution
Create a custom class that inherits PredefinedCMapsProviderBase and pass it to the PredefinedCMapsProvider property of the FixedExtensibilityManager class.
Example 1: Create 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);
}
}
Example 2: Set the custom PredefinedCMapsProvider to the FixedExtensibilityManager
csharp
FixedExtensibilityManager.PredefinedCMapsProvider = new CustomPredefinedCMapsProvider(new PredefinedCMapsProvider());