使用 Java SDK 集成编辑器

ONLYOFFICE文档集成SDK提供通用接口和默认实现, 用于将ONLYOFFICE文档服务器集成到您自己的Java网站或应用程序中。

SDK由5个主要管理器和4个服务组成。

管理器
管理器 描述 默认实现
DocumentManager 该管理器用于处理文件和文档格式。 DefaultDocumentManager (抽象)
RequestManager 该管理器用于向 ONLYOFFICE 文档服务器发出请求。 DefaultRequestManager
JwtManager 该管理器用于生成和验证授权令牌。 DefaultJwtManager
SettingsManager 该管理器用于管理集成应用程序设置。 DefaultSettingsManager (抽象)
UrlManager 该管理器用作 URL 提供者。 DefaultUrlManager
服务
服务 描述 默认实现
ConfigService 该配置生成服务用于打开文档编辑器。 DefaultConfigService
CallbackService 该服务用于处理文档服务器的响应。 DefaultCallbackService
ConvertService 该服务用于转换文档。 DefaultConvertService
SettingsValidationService 该服务用于检查文档服务器连接设置。 DefaultSettingsValidationService

让我们看一下演示示例, 它展示了 SDK 如何在经典 Spring Web 应用程序中工作:

  1. 实现抽象DefaultSettingsManager 类的方法:

    @Override
    public String getSetting(final String name) {
        return properties.getProperty(name);
    }
    
    @Override
    public void setSetting(final String name, final String value) {
        properties.setProperty(name, value);
    }
    

    完整的示例代码可以在 此处找到。

  2. 实现抽象 DefaultDocumentManager 类的方法:

    @Override
    public String getDocumentKey(final  String fileId, final boolean embedded) {
        return String.valueOf(fileId.hashCode());
    }
    
    @Override
    public String getDocumentName(final String fileId) {
        return "sample.docx";
    }
    

    完整的示例代码可以在 此处找到。

  3. 实现 UrlManager 方法。 要在编辑模式下打开编辑器,您需要定义:

    @Override
    public String getFileUrl(final String fileId) {
        return getServerUrl() + "/file/download";
    }
    
    @Override
    public String getCallbackUrl(final String fileId) {
        return getServerUrl() + "/callback";
    }
    

    完整的示例代码可以在 此处找到。

  4. 初始化 JwtManagerRequestManager Spring bean 并将它们添加到 DI 容器中。 这允许您在应用程序中的任何位置调用注册的 bean:

    @Bean
    public JwtManager jwtManager(final SettingsManager settingsManager) {
        return new DefaultJwtManager(settingsManager);
    }
    
    @Bean
    public RequestManager requestManager(final UrlManager urlManager, final JwtManager jwtManager, final SettingsManager settingsManager) {
        return new DefaultRequestManager(urlManager, jwtManager, settingsManager);
    }
    

    完整的示例代码可以在 此处找到。

  5. 之后,您可以在其默认实现中或通过覆盖和扩展它们来使用所有可用服务:

    • 要使用 回调服务, 创建 回调控制器, 其中请求正文包装在Callback模型中,并调用回调服务来处理该模型。
    • 演示配置服务工作, @GetMapping("/editor") 用于 主控制器。 当用户打开该地址时,会请求编辑器页面。 同时,调用配置服务并生成Config模型以打开编辑器:

    @GetMapping("/editor")
    public String main(final Model model) throws JsonProcessingException {
    
        Config config = configService.createConfig("1", Mode.EDIT, Type.DESKTOP);
    
        model.addAttribute("config", config);
        model.addAttribute("documentServerApiUrl", urlManager.getDocumentServerApiUrl());
    
        return "editor";
    }
    
  6. 创建 文件控制器 获取要在编辑器中打开的文件。 当配置服务生成配置模型时,该模型中指定了下载文件的URL。 要打开文档,编辑器向此 URL 发送请求,文件控制器响应此请求并返回文档。