# 自定义拼写

在 Web SDK 的 Canvas 文本编辑场景中,由于无法直接使用 HTML 原生拼写检查功能,自 v11.0.0 起我们通过应用层实现了拼写检查支持。我们为开发者提供了两种方式实现自定义拼写检查功能:

  1. 通过接口配置符合 Hunspell 规范的词典文件,实现定制化的拼写检查功能。
  2. 自定义 SpellChecker 接口

# 自定义字典

自定义字典需要开发者提供符合 Hunspell 规范的词典文件。开源词典库可参考 wooorm/dictionaries (opens new window)

# 字典规范说明

字典文件需按一下目录结构进行组织:

/spell-checker-dictionaries-root
├── en_US
│   ├── index.aff    # 拼写规则文件
│   └── index.dic    # 词典数据文件
└── fr_FR
    ├── index.aff
    └── index.dic

关键要素说明:

  • /lib/spell-checker/dictionaries: 所有词典的存储根目录
  • en_US:以语言编码命名的二级目录
  • index.affindex.dic: 是词典的数据文件

# 字典接入方法

# 接口调用示例

通过 SpellCheckerService 服务进行字典注册:

// 获取拼写检查服务实例
const spellCheckerService = pdfViewer.getSpellCheckerService();
// 注册英国英语词典
spellCheckerService.appendDictionaries({
    'en-gb': '/lib/spell-checker/dictionaries/en-gb/'
})

# 配置注意事项

  1. 路径解析规则

    • 相对路径以 Web Worker (WebPDFJRWorker.js) 脚本位置为基准
    • 建议使用绝对路径确保定位准确
  2. 跨域访问控制

  3. 生效机制

    • 新词典将在下次拼写检查时自动生效
    • 支持运行时动态更新词典配置

# 自定义 SpellChecker 接口实现

如果默认的 Hunspell 词典无法满足需求,开发者可以通过实现自定义的 SpellChecker 接口来实现更灵活的拼写检查功能。

# SpellChecker 接口定义

interface SpellChecker {
   // 检查单词是否拼写正确
    check(word: string): Promise<boolean>;
    // 获取建议单词
    getSuggestedWords(word: string): Promise<Array<string>>;
}

# 实现自定义拼写检查器

开发者可以通过实现 SpellChecker 接口来创建自定义的拼写检查器。以下是一个简单的示例:

class CustomSpellChecker implements SpellChecker {
    async check(word: string): Promise<boolean> {
        // 自定义拼写检查逻辑
        // 返回 true 表示单词拼写正确,false 表示拼写错误
        return true; // 示例逻辑
    }

    async getSuggestedWords(word: string): Promise<Array<string>> {
        // 自定义建议单词逻辑
        // 返回一个包含建议单词的数组
        return []; // 示例逻辑
    }
}

# 注册自定义拼写检查器

实现自定义拼写检查器后,可以通过以下方式将其注册到 SDK 中:

// 创建自定义拼写检查器实例
const customSpellChecker = new CustomSpellChecker();

// 获取拼写检查服务实例
const spellCheckerService = pdfViewer.getSpellCheckerService();

// 注册自定义拼写检查器
spellCheckerService.setSpellChecker(customSpellChecker);

# 注意事项

  1. 性能优化

    • 拼写检查操作可能会频繁调用,建议在实现时优化性能,减少重复检查带来的性能损耗。
  2. 错误处理

    • checkgetSuggestedWords 方法中,建议添加错误处理逻辑,确保拼写检查功能的稳定性。
  3. 动态更新

    • 支持在运行时动态更新拼写检查器,适用于需要切换不同词典或规则的场景。

通过以上方式,开发者可以灵活地实现自定义拼写检查功能,满足多样化的业务需求。