文档格式转换迁移新版

更新时间:2025-03-21 09:15:24
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

智能媒体管理(IMM)提供文档格式转换功能,支持将Office文档(包括Word、Excel、PPTPDF)转换为指定的输出文档类型(包括PNG、JPEG、PDFTXT)。当前存在多个版本的文档转换接口。您可以通过以下方式了解如何从旧版(API版本为2017-09-06)迁移至新版(API版本为2020-09-30)。

背景信息

新增功能及优化将主要集中于新版,旧版将逐步下线。新版本相比于旧版在文档兼容性、转换速度及功能丰富性等方面均有所提升,建议您尽快迁移至新版。

1f7889e00bd6109bd821d8755e0203e4

新版优势

  • 文档缩放:新版支持设置文档转换的缩放比例。

  • 纸张大小:设置表格文档转换为图片时的纸张大小(输出的图片可视为在纸张上进行打印)。可选的纸张尺寸范围为A0、A2A4(默认设置为A4)。

  • 文档质量:设置文档转换的质量标准。

  • 表格文档转换瘦身策略:新版支持设置表格文档转换的瘦身策略。例如,当表格中存在大量无内容的行列时,在未实施瘦身策略的情况下,可能会生成大量空白。

  • 纸张垂直水平放置:设置表格文档转换为图片时,请确认纸张是否水平放置(输出的图片可视为在纸张上进行打印)。

    说明

    新版本不再需要将数据转换为向量格式后再进行预览。您可以直接参考WebOffice预览和协作编辑,使用更强大的新版文档预览能力。

新版与旧版API对应关系说明

  • SDK/API版本

    • 旧版使用旧版SDK,API版本为2017-09-06。

    • 新版使用新版SDK,API版本为2020-09-30。

文档在线预览和协作编辑关于新版与旧版API的对应关系,请参见下表。

功能

新版API

旧版API

说明

功能

新版API

旧版API

说明

文档转换

CreateOfficeConversionTask - 创建文档转换任务

GetTask - 获取任务信息

说明

API版本为2020-09-30

CreateOfficeConversionTask - 创建文档转换任务

GetOfficeConversionTask - 获取任务信息

说明

API版本为2017-09-06

旧版的同步和异步转换接口已合并为新版的异步转换接口。

ConvertOfficeFormat - 文档(例如OFFICE文档)格式的转换

说明

API版本为2017-09-06

如何迁移

您可以按照以下步骤进行迁移:

  1. 创建新版项目。

  2. 调试新版同功能对应接口。

  3. 将您的业务切换到新版接口。

  4. 删除旧版本项目。

步骤一 :创建新版项目

说明

创建新版项目之前确认是否已创建过新版项目,参考检查项目新旧版本,新版项目存在则无需创建。

控制台创建新版项目

  1. 登录智能媒体管理控制台

  2. 左下角提供了新旧版本的切换功能,用户可在旧版中点击以体验新版。image

  3. 项目列表页面,请在页面左上角选择与旧版项目相同的地域,具体如下图所示。

    image

  4. 项目列表页面,单击创建项目,弹出创建项目面板,填写项目信息确认完成创建,如下图所示。

说明

创建项目时,需选择与旧版项目相同的服务角色,并将工作流模板设置为Official:DefaultEmptyId,其余选项无需进行配置。

image

步骤二:迁移文档转换接口

CreateOfficeConversionTask迁移到新版
ConvertOfficeFormat迁移到新版

替换旧版接口CreateOfficeConversionTask,调用新版同功能对应接口CreateOfficeConversionTask - 创建文档转换任务。具体操作请参见以下步骤:

重要

CreateOfficeConversionTask接口的项目名参数应使用新版本创建的项目名称。

新版本WebOffice生成预览凭证

  • SDK/API版本

    • 新版使用新版SDK,API版本为2020-09-30。

    • 旧版使用旧版SDK,API版本为2017-09-06。

  • SDK 安装命令

    pip install alibabacloud_imm20200930==4.6.1
  • 示例代码

    # -*- coding: utf-8 -*-
    # This file is auto-generated, don't edit it. Thanks.
    import os
    import sys
    
    from typing import List
    
    from alibabacloud_imm20200930.client import Client as imm20200930Client
    from alibabacloud_tea_openapi import models as open_api_models
    from alibabacloud_imm20200930 import models as imm_20200930_models
    from alibabacloud_tea_util import models as util_models
    from alibabacloud_tea_util.client import Client as UtilClient
    
    
    class Sample:
        def __init__(self):
            pass
    
        @staticmethod
        def create_client() -> imm20200930Client:
            """
            使用AK&SK初始化账号Client
            @return: Client
            @throws Exception
            """
            # 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
            # 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.html。
            config = open_api_models.Config(
                # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。,
                access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,
                access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
            )
            # Endpoint 请参考 https://api.aliyun.com/product/imm
            config.endpoint = f'imm.cn-hangzhou.aliyuncs.com'
            return imm20200930Client(config)
    
        @staticmethod
        def main(
            args: List[str],
        ) -> None:
            client = Sample.create_client()
            create_office_conversion_task_request = imm_20200930_models.CreateOfficeConversionTaskRequest(
                project_name='TestProject',
                source_uri='oss://test/test.docx',
                target_type='pdf',
                target_uriprefix='oss://test/target/'
            )
            runtime = util_models.RuntimeOptions()
            try:
                # 复制代码运行请自行打印 API 的返回值
                client.create_office_conversion_task_with_options(create_office_conversion_task_request, runtime)
            except Exception as error:
                # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
                # 错误 message
                print(error.message)
                # 诊断地址
                print(error.data.get("Recommend"))
                UtilClient.assert_as_string(error.message)
    
        @staticmethod
        async def main_async(
            args: List[str],
        ) -> None:
            client = Sample.create_client()
            create_office_conversion_task_request = imm_20200930_models.CreateOfficeConversionTaskRequest(
                project_name='TestProject',
                source_uri='oss://test/test.docx',
                target_type='pdf',
                target_uriprefix='oss://test/target/'
            )
            runtime = util_models.RuntimeOptions()
            try:
                # 复制代码运行请自行打印 API 的返回值
                await client.create_office_conversion_task_with_options_async(create_office_conversion_task_request, runtime)
            except Exception as error:
                # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
                # 错误 message
                print(error.message)
                # 诊断地址
                print(error.data.get("Recommend"))
                UtilClient.assert_as_string(error.message)
    
    
    if __name__ == '__main__':
        Sample.main(sys.argv[1:])

替换旧版接口ConvertOfficeFormat,调用新版同功能对应接口CreateOfficeConversionTask - 创建文档转换任务。具体操作请参见以下步骤:

重要

CreateOfficeConversionTask接口的项目名参数应使用新版本中创建的项目名称。

新版本WebOffice生成预览凭证

  • SDK/API版本。

    • 新版使用新版SDK,API版本为2020-09-30。

    • 旧版使用旧版SDK,API版本为2017-09-06。

SDK 安装命令

pip install alibabacloud_imm20200930==4.6.1

示例代码

创建项目示例代码如下。

# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys

from typing import List

from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client() -> imm20200930Client:
        """
        使用AK&SK初始化账号Client
        @return: Client
        @throws Exception
        """
        # 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
        # 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.html。
        config = open_api_models.Config(
            # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。,
            access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
            # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,
            access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
        )
        # Endpoint 请参考 https://api.aliyun.com/product/imm
        config.endpoint = f'imm.cn-hangzhou.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        create_office_conversion_task_request = imm_20200930_models.CreateOfficeConversionTaskRequest(
            project_name='TestProject',
            source_uri='oss://test/test.docx',
            target_type='pdf',
            target_uriprefix='oss://test/target/'
        )
        runtime = util_models.RuntimeOptions()
        try:
            # 复制代码运行请自行打印 API 的返回值
            client.create_office_conversion_task_with_options(create_office_conversion_task_request, runtime)
        except Exception as error:
            # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            # 错误 message
            print(error.message)
            # 诊断地址
            print(error.data.get("Recommend"))
            UtilClient.assert_as_string(error.message)

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        create_office_conversion_task_request = imm_20200930_models.CreateOfficeConversionTaskRequest(
            project_name='TestProject',
            source_uri='oss://test/test.docx',
            target_type='pdf',
            target_uriprefix='oss://test/target/'
        )
        runtime = util_models.RuntimeOptions()
        try:
            # 复制代码运行请自行打印 API 的返回值
            await client.create_office_conversion_task_with_options_async(create_office_conversion_task_request, runtime)
        except Exception as error:
            # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            # 错误 message
            print(error.message)
            # 诊断地址
            print(error.data.get("Recommend"))
            UtilClient.assert_as_string(error.message)


if __name__ == '__main__':
    Sample.main(sys.argv[1:])

步骤三:迁移获取任务信息接口

GetOfficeConversionTask迁移到新版

替换旧版接口GetOfficeConversionTask,调用新版同功能对应接口GetTask - 获取任务信息。具体操作请参见以下步骤:

重要

GetTask接口的项目名称参数应使用新版本所创建的项目名称。

  • SDK/API版本

    • 新版使用新版SDK,API版本为2020-09-30。

    • 旧版使用旧版SDK,API版本为2017-09-06。

  • SDK 安装命令

    pip install alibabacloud_imm20200930==4.6.1
  • 示例代码

    # -*- coding: utf-8 -*-
    # This file is auto-generated, don't edit it. Thanks.
    import os
    import sys
    
    from typing import List
    
    from alibabacloud_imm20200930.client import Client as imm20200930Client
    from alibabacloud_tea_openapi import models as open_api_models
    from alibabacloud_imm20200930 import models as imm_20200930_models
    from alibabacloud_tea_util import models as util_models
    from alibabacloud_tea_util.client import Client as UtilClient
    
    
    class Sample:
        def __init__(self):
            pass
    
        @staticmethod
        def create_client() -> imm20200930Client:
            """
            使用AK&SK初始化账号Client
            @return: Client
            @throws Exception
            """
            # 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
            # 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.html。
            config = open_api_models.Config(
                # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。,
                access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,
                access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
            )
            # Endpoint 请参考 https://api.aliyun.com/product/imm
            config.endpoint = f'imm.cn-hangzhou.aliyuncs.com'
            return imm20200930Client(config)
    
        @staticmethod
        def main(
            args: List[str],
        ) -> None:
            client = Sample.create_client()
            get_task_request = imm_20200930_models.GetTaskRequest(
                task_id='OfficeConversion-8f827a1a-a264-44a2-85cc-59d*****',
                task_type='OfficeConversion',
                project_name='TestProject'
            )
            runtime = util_models.RuntimeOptions()
            try:
                # 复制代码运行请自行打印 API 的返回值
                client.get_task_with_options(get_task_request, runtime)
            except Exception as error:
                # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
                # 错误 message
                print(error.message)
                # 诊断地址
                print(error.data.get("Recommend"))
                UtilClient.assert_as_string(error.message)
    
        @staticmethod
        async def main_async(
            args: List[str],
        ) -> None:
            client = Sample.create_client()
            get_task_request = imm_20200930_models.GetTaskRequest(
                task_id='OfficeConversion-8f827a1a-a264-44a2-85cc-59d*****',
                task_type='OfficeConversion',
                project_name='TestProject'
            )
            runtime = util_models.RuntimeOptions()
            try:
                # 复制代码运行请自行打印 API 的返回值
                await client.get_task_with_options_async(get_task_request, runtime)
            except Exception as error:
                # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
                # 错误 message
                print(error.message)
                # 诊断地址
                print(error.data.get("Recommend"))
                UtilClient.assert_as_string(error.message)
    
    
    if __name__ == '__main__':
        Sample.main(sys.argv[1:])

步骤四:删除旧版项目

警告

删除旧版项目之前,请确保业务已完全迁移到新版,旧版没有流量之后再进行删除,此操作不可恢复。

  1. 登录智能媒体管理控制台

  2. 左下角可切换新旧版本,点击可返回旧版。

    无标题

  3. 项目列表页面中,选择旧版项目所处的地域,如下图所示。

    image

  4. 项目列表页面中,选择需删除的旧版项目,然后点击删除按钮,如下图所示。

image

  1. 点击确定完成删除操作。

image

新版在线预览与文档转换预览计费

通常情况下,新旧版本的计费模式基本保持一致。新版获取任务信息API接口引入了调用次数计费的机制。

在线预览计费项

版本

API

计费

计费说明

版本

API

计费

计费说明

旧版文档转换

CreateOfficeConversionTask-文档转换

GetOfficeConversionTask - 获取任务信息

说明

API版本为2017-09-06

DocumentConvert*1

旧版调用转换接口计费,获取任务信息不计费。

ConvertOfficeFormat - 文档转换

说明

API版本为2017-09-06

DocumentConvert*1

旧版调用转换接口计费。

新版文档转换

CreateOfficeConversionTask - 创建文档转换任务

GetTask - 获取任务信息

说明

API版本为2020-09-30

DocumentConvert*1

StandardQueryL0*1

新版调用转换接口和获取任务信息接口计费。

  • 本页导读 (1)
  • 背景信息
  • 新版优势
  • 新版与旧版API对应关系说明
  • 如何迁移
  • 步骤一 :创建新版项目
  • 步骤二:迁移文档转换接口
  • 步骤三:迁移获取任务信息接口
  • 步骤四:删除旧版项目
  • 新版在线预览与文档转换预览计费
  • 在线预览计费项