Пошаговое руководство

AlterOffice Online - это платформа для редактирования документов в реальном времени в веб-браузере. Она может быть интегрирована в ваш сервис, чтобы позволить вашим пользователям создавать и редактировать документы без необходимости устанавливать дополнительное программное обеспечение.

Чтобы интегрировать AlterOffice Online в ваше веб-приложение, вам необходимо реализовать Rest-сервис на основе API WOPI. Этот Rest-сервис как правило интегрируется в ваше веб-приложение.
Протокол интерфейса открытой платформы веб-приложений (WOPI) определяет набор операций, которые позволяют клиентам получать доступ и изменять файлы, хранящиеся на сервере. Вы можете ознакомиться с документацией по этому протоколу на сайте WOPI REST API Reference | Microsoft Learn

WOPI-хост


WOPI-хост - это Rest-сервис, основанный на API WOPI.  Для реализации WOPI-хоста в вашем сервисе вам необходимо создать три конечных точки.  

  • CheckFileInfo - GET /wopi/files/{name}. Эта конечная точка возвращает JSON-объект, предоставляющий информацию о файле {name}. 

Пример реализации на python Flask:

@app.route('/wopi/files/<name>', methods=['GET'])
def check_file_info(name):
    path = f"/home/user1/wopi_flask/{name}"
    filename = os.path.basename(path)
    size = os.path.getsize(path)
    # Получаем информацию о файле
    file_info = {
        'BaseFileName': filename,
        'Size': size,
        'UserId': 1,
        'UserCanWrite': True,
    }
    # Возвращаем информацию о файле в формате JSON
    return jsonify(file_info)


  • GetFile - GET /wopi/files/{name}/contents. Эта конечная точка предоставляет исходные данные файла и вызывается AlterOffice Online для открытия файла.

Пример реализации на python Flask:

@app.route('/wopi/files/<name>/contents', methods=['GET'])
def get_file(name):

    with open(f"/home/user1/wopi_flask/{name}", 'r') as file:
        content = file.read()

    return content

  • PutFile - POST /wopi/files/{name}/contents. Эта конечная точка вызывается  AlterOffice Online, при сохранении файла. 

Пример реализации на python Flask:

@app.route('/wopi/files/<name>/contents', methods=['POST'])
def put_file(name):
    content = request.stream.read()
    result = {"name": name, "content": content.decode()}
    with open(f"/home/user1/wopi_flask/{name}", "w") as f:
        f.write(result["content"])

    return jsonify(result)



Более подробное описание этих конечных точек приведено в статье: https://support.almi-partner.ru/#knowledge_base/1/locale/ru/answer/152

Интеграция


После создания вышеуказанных конечных точек и запуска вашего сервиса вы можете открыть текстовый файл в редакторе AlterOffice Online. Для этого необходимо составить URL-адрес из двух частей. Первая часть - это urlsrc необходимого формата файла. Urlsrc  можно посмотреть открыв конечную точку discovery вашего AlterOffice Online сервера: https://localhost:9980/hosting/discovery. Вторая часть это WOPI-хост с необходимым файлом, ссылка должна быть в закодированном виде (url encode). Финальная ссылка выглядит следующим образом:

https://localhost:9980/{alteroffice-editor}.html?WOPISrc=http%3A%2F%2Fwopi-app%3A5000%2Fwopi%2Ffiles%2F{file}



Прикреплённые файлы
example_wopi_host.rar
404kb