すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:ドキュメント形式変換

最終更新日:Nov 09, 2025

ドキュメント形式変換機能を使用すると、さまざまな種類のドキュメントをターゲット形式に変換し、変換結果を指定された OSS パスに保存できます。

シナリオ

  • オンラインプレビューの最適化: PDF、Word、Excel、PPT、およびその他のドキュメントを OSS にアップロードした後、ドキュメント変換インターフェイスを呼び出してドキュメントをイメージに変換し、ダウンロードせずに Web またはモバイルデバイスで直接プレビューできます。

  • クロスプラットフォームの互換性: ドキュメント変換サービスを通じて、さまざまなデバイスやオペレーティングシステムを使用するユーザーがシームレスにドキュメントを表示できます。

サポートされている入力ファイルタイプ

ファイルタイプ

ファイル拡張子

Word

doc, docx, wps, wpss, docm, dotm, dot, dotx, html

PPT

pptx, ppt, pot, potx, pps, ppsx, dps, dpt, pptm, potm, ppsm, dpss

Excel

xls, xlt, et, ett, xlsx, xltx, csv, xlsb, xlsm, xltm, ets

PDF

pdf

使用方法

前提条件

ドキュメント形式の変換

SDK を使用してドキュメント変換インターフェイスを呼び出して処理を行い、処理されたファイルを指定されたバケットに保存できます。 ドキュメントを変換するには、Java、Python、または Go 用の OSS SDK のみを使用できます。

Java

OSS SDK for Java V3.17.4 以降が必要です。

import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.AsyncProcessObjectRequest;
import com.aliyun.oss.model.AsyncProcessObjectResult;
import com.aliyuncs.exceptions.ClientException;

import java.util.Base64;

public class Demo1 {
    public static void main(String[] args) throws ClientException {
        // バケットが配置されているリージョンのエンドポイントを指定します。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // バケットが配置されている Alibaba Cloud リージョンの ID を指定します。 例: cn-hangzhou。
        String region = "cn-hangzhou";
        // 環境変数から資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // バケットの名前を指定します。
        String bucketName = "examplebucket";
        // 出力オブジェクトの名前を指定します。
        String targetKey = "dest.png";
        // ソースドキュメントの名前を指定します。
        String sourceKey = "src.docx";

        // OSSClient インスタンスを作成します。
        // OSSClient インスタンスが不要になったら、shutdown メソッドを呼び出してリソースを解放します。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // 文字列型のスタイル変数を作成して、ドキュメント変換パラメーターを格納します。
            String style = String.format("doc/convert,target_png,source_docx");
            // 非同期処理命令を作成します。
            String bucketEncoded = Base64.getUrlEncoder().withoutPadding().encodeToString(bucketName.getBytes());
            String targetEncoded = Base64.getUrlEncoder().withoutPadding().encodeToString(targetKey.getBytes());
            String process = String.format("%s|sys/saveas,b_%s,o_%s", style, bucketEncoded, targetEncoded);
            // AsyncProcessObjectRequest オブジェクトを作成します。
            AsyncProcessObjectRequest request = new AsyncProcessObjectRequest(bucketName, sourceKey, process);
            // 非同期処理タスクを実行します。
            AsyncProcessObjectResult response = ossClient.asyncProcessObject(request);
            System.out.println("EventId: " + response.getEventId());
            System.out.println("RequestId: " + response.getRequestId());
            System.out.println("TaskId: " + response.getTaskId());

        } finally {
            // OSSClient を閉じます。
            ossClient.shutdown();
        }
    }
}

Python

OSS SDK for Python 2.18.4 以降が必要です。

# -*- coding: utf-8 -*-
import base64
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

def main():
    # 環境変数から一時的なアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    # バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
    endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
    # バケットが配置されている Alibaba Cloud リージョンの ID を指定します。 例: cn-hangzhou。
    region = 'cn-hangzhou'

    # バケットの名前を指定します。 例: examplebucket。
    bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)

    # ソースドキュメントの名前を指定します。
    source_key = 'src.docx'

    # 出力オブジェクトの名前を指定します。
    target_key = 'dest.png'

    # 文字列型のスタイル変数を作成して、ドキュメント変換パラメーターを格納します。
    animation_style = 'doc/convert,target_png,source_docx'

    # バケットの名前と出力オブジェクトの名前が Base64 エンコードされている処理命令を作成します。
    bucket_name_encoded = base64.urlsafe_b64encode('examplebucket'.encode()).decode().rstrip('=')
    target_key_encoded = base64.urlsafe_b64encode(target_key.encode()).decode().rstrip('=')
    process = f"{animation_style}|sys/saveas,b_{bucket_name_encoded},o_{target_key_encoded}"

    try:
        # 非同期処理タスクを実行します。
        result = bucket.async_process_object(source_key, process)
        print(f"EventId: {result.event_id}")
        print(f"RequestId: {result.request_id}")
        print(f"TaskId: {result.task_id}")
    except Exception as e:
        print(f"Error: {e}")


if __name__ == "__main__":
    main()

Go

OSS SDK for Go 3.0.2 以降が必要です。

package main

import (
    "encoding/base64"
    "fmt"
    "os"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "log"
)

func main() {
    // 環境変数から一時的なアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
    }
    // OSSClient インスタンスを作成します。
    // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 実際の エンドポイントを指定してください。
    // バケットが配置されている Alibaba Cloud リージョンの ID を指定します。 例: cn-hangzhou。
    client, err := oss.New("https://oss-cn-hangzhou.aliyuncs.com", "", "", oss.SetCredentialsProvider(&provider), oss.AuthVersion(oss.AuthV4), oss.Region("cn-hangzhou"))
    if err != nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
    }
    // バケットの名前を指定します。 例: examplebucket。
    bucketName := "examplebucket"

    bucket, err := client.Bucket(bucketName)
    if err != nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
    }

    // ソースドキュメントの名前を指定します。
    sourceKey := "src.docx"
    // 出力オブジェクトの名前を指定します。
    targetKey := "dest.png"

    // 文字列型のスタイル変数を作成して、ドキュメント変換パラメーターを格納します。
    animationStyle := "doc/convert,target_png,source_docx"

    // バケットの名前と出力オブジェクトの名前が Base64 エンコードされている処理命令を作成します。
    bucketNameEncoded := base64.URLEncoding.EncodeToString([]byte(bucketName))
    targetKeyEncoded := base64.URLEncoding.EncodeToString([]byte(targetKey))
    process := fmt.Sprintf("%s|sys/saveas,b_%v,o_%v", animationStyle, bucketNameEncoded, targetKeyEncoded)

    // 非同期処理タスクを実行します。
    result, err := bucket.AsyncProcessObject(sourceKey, process)
    if err != nil {
    log.Fatalf("Failed to async process object: %s", err)
    }

    fmt.Printf("EventId: %s\n", result.EventId)
    fmt.Printf("RequestId: %s\n", result.RequestId)
    fmt.Printf("TaskId: %s\n", result.TaskId)
}

パラメーターの説明

アクション: doc/convert

次の表に、ドキュメント変換のパラメーターを示します。

パラメーター名

タイプ

必須

説明

target

string

はい

出力オブジェクトのフォーマット。 有効な値:

  • pdf

  • png

  • jpg

  • txt

source

string

いいえ

ソースファイル形式。 デフォルトでは、オブジェクト名の拡張子が使用されます。 有効な値:

  • docx (HTML ドキュメントを変換する場合、形式変換を完了するには docx を指定する必要があります)

  • doc

  • pptx

  • ppt

  • pdf

  • xlsx

  • xls

pages

string

いいえ

変換するページ番号。

例: 1,2,4-10 は、ページ 1、ページ 2、およびページ 4 から 10 を変換することを示します。

sys/saveas パラメーターを使用して、変換されたドキュメントを指定されたバケットに保存する必要があります。 詳細については、「名前を付けて保存」をご参照ください。 変換タスクの処理結果を取得する必要がある場合は、notify パラメーターを使用する必要があります。 詳細については、「通知」をご参照ください。

その他のシナリオ

ドキュメント形式変換は非同期リクエストとして送信されます。つまり、処理結果が返されたときにドキュメント変換結果 (処理の成功または失敗情報など) を直接取得することはできません。 処理結果を取得する必要がある場合は、Simple Message Queue (SMQ、旧 MNS) でイベント通知を設定して、タスクステータスを繰り返しクエリすることなく、処理完了後に即時通知を受信することをお勧めします。

イベント通知の設定

イベント通知を実装するには、まず「トピックモデルのクイックスタート」を参照して、バケットと同じリージョンにメッセージ Topic を作成する必要があります。 次のコードを使用してドキュメント変換を実行するときにイベント通知を設定できます。ここで、Topic 名は URL セーフな Base64 でエンコードする必要があります。 たとえば、メッセージ Topic 名が test-topic の場合、エンコードされた名前は dGVzdC10b3BpYw です。

サンプルコード

ドキュメントを変換するには、Java、Python、または Go 用の OSS SDK のみを使用できます。

Java

OSS SDK for Java V3.17.4 以降が必要です。

import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.AsyncProcessObjectRequest;
import com.aliyun.oss.model.AsyncProcessObjectResult;
import com.aliyuncs.exceptions.ClientException;

import java.util.Base64;

public class Demo1 {
    public static void main(String[] args) throws ClientException {
        // バケットが配置されているリージョンのエンドポイントを指定します。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // バケットが配置されている Alibaba Cloud リージョンの ID を指定します。 例: cn-hangzhou。
        String region = "cn-hangzhou";
        // 環境変数から資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // バケットの名前を指定します。
        String bucketName = "examplebucket";
        // 出力オブジェクトの名前を指定します。
        String targetKey = "dest.png";
        // ソースドキュメントの名前を指定します。
        String sourceKey = "src.docx";

        // OSSClient インスタンスを作成します。
        // OSSClient インスタンスが不要になったら、shutdown メソッドを呼び出してリソースを解放します。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // 文字列型のスタイル変数を作成して、ドキュメント変換パラメーターを格納します。
            String style = String.format("doc/convert,target_png,source_docx");
            // 非同期処理命令を作成します。
            String bucketEncoded = Base64.getUrlEncoder().withoutPadding().encodeToString(bucketName.getBytes());
            String targetEncoded = Base64.getUrlEncoder().withoutPadding().encodeToString(targetKey.getBytes());
            String process = String.format("%s|sys/saveas,b_%s,o_%s/notify,topic_dGVzdC10b3BpYw", style, bucketEncoded, targetEncoded);
            // AsyncProcessObjectRequest オブジェクトを作成します。
            AsyncProcessObjectRequest request = new AsyncProcessObjectRequest(bucketName, sourceKey, process);
            // 非同期処理タスクを実行します。
            AsyncProcessObjectResult response = ossClient.asyncProcessObject(request);
            System.out.println("EventId: " + response.getEventId());
            System.out.println("RequestId: " + response.getRequestId());
            System.out.println("TaskId: " + response.getTaskId());

        } finally {
            // OSSClient を閉じます。
            ossClient.shutdown();
        }
    }
}

Python

OSS SDK for Python 2.18.4 以降が必要です。

# -*- coding: utf-8 -*-
import base64
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

def main():
    # 環境変数から一時的なアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    # バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
    endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
    # バケットが配置されている Alibaba Cloud リージョンの ID を指定します。 例: cn-hangzhou。
    region = 'cn-hangzhou'

    # バケットの名前を指定します。 例: examplebucket。
    bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)

    # ソースドキュメントの名前を指定します。
    source_key = 'src.docx'

    # 出力オブジェクトの名前を指定します。
    target_key = 'dest.png'

    # 文字列型のスタイル変数を作成して、ドキュメント変換パラメーターを格納します。
    animation_style = 'doc/convert,target_png,source_docx'

    # バケットの名前と出力オブジェクトの名前が Base64 エンコードされている処理命令を作成します。
    bucket_name_encoded = base64.urlsafe_b64encode('examplebucket'.encode()).decode().rstrip('=')
    target_key_encoded = base64.urlsafe_b64encode(target_key.encode()).decode().rstrip('=')
    process = f"{animation_style}|sys/saveas,b_{bucket_name_encoded},o_{target_key_encoded}/notify,topic_dGVzdC10b3BpYw"

    try:
        # 非同期処理タスクを実行します。
        result = bucket.async_process_object(source_key, process)
        print(f"EventId: {result.event_id}")
        print(f"RequestId: {result.request_id}")
        print(f"TaskId: {result.task_id}")
    except Exception as e:
        print(f"Error: {e}")


if __name__ == "__main__":
    main()

Go

OSS SDK for Go 3.0.2 以降が必要です。

package main

import (
    "encoding/base64"
    "fmt"
    "os"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "log"
)

func main() {
    // 環境変数から一時的なアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
    }
    // OSSClient インスタンスを作成します。
    // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 実際の エンドポイントを指定してください。
    // バケットが配置されている Alibaba Cloud リージョンの ID を指定します。 例: cn-hangzhou。
    client, err := oss.New("https://oss-cn-hangzhou.aliyuncs.com", "", "", oss.SetCredentialsProvider(&provider), oss.AuthVersion(oss.AuthV4), oss.Region("cn-hangzhou"))
    if err != nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
    }
    // バケットの名前を指定します。 例: examplebucket。
    bucketName := "examplebucket"

    bucket, err := client.Bucket(bucketName)
    if err != nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
    }

    // ソースドキュメントの名前を指定します。
    sourceKey := "src.docx"
    // 出力オブジェクトの名前を指定します。
    targetKey := "dest.png"

    // 文字列型のスタイル変数を作成して、ドキュメント変換パラメーターを格納します。
    animationStyle := "doc/convert,target_png,source_docx"

    // バケットの名前と出力オブジェクトの名前が Base64 エンコードされている処理命令を作成します。
    bucketNameEncoded := base64.URLEncoding.EncodeToString([]byte(bucketName))
    targetKeyEncoded := base64.URLEncoding.EncodeToString([]byte(targetKey))
    process := fmt.Sprintf("%s|sys/saveas,b_%v,o_%v/notify,topic_dGVzdC10b3BpYw", animationStyle, bucketNameEncoded, targetKeyEncoded)

    // 非同期処理タスクを実行します。
    result, err := bucket.AsyncProcessObject(sourceKey, process)
    if err != nil {
    log.Fatalf("Failed to async process object: %s", err)
    }

    fmt.Printf("EventId: %s\n", result.EventId)
    fmt.Printf("RequestId: %s\n", result.RequestId)
    fmt.Printf("TaskId: %s\n", result.TaskId)
}

関連 API

ビジネスで高度なカスタマイズが必要な場合は、RESTful API を直接呼び出すことができます。 RESTful API を直接呼び出すには、コードに署名計算を含める必要があります。 Authorization ヘッダーの計算方法の詳細については、「署名バージョン 4 (推奨)」をご参照ください。

ドキュメント形式の変換

  • ソースオブジェクト

    • ドキュメント形式: DOCX

    • ドキュメント名: example.docx

  • 宛先オブジェクト

    • オブジェクト形式: PNG

    • ストレージパス: oss://test-bucket/doc_images/{index}.png

      • b_dGVzdC1idWNrZXQ=: 変換が完了したら、test-bucket という名前のバケットに保存します (dGVzdC1idWNrZXQ=test-bucket の Base64 エンコード値です)。

      • o_ZG9jX2ltYWdlcy97aW5kZXh9LnBuZw==: オブジェクトは {index} 変数を使用して、example.docx のページ番号をファイル名として doc_images ディレクトリにイメージを保存します (ZG9jX2ltYWdlcy97aW5kZXh9LnBuZw==doc_images/{index}.png の Base64 エンコード値です)。

    • 変換完了通知: test-topic という名前の Simple Message Queue (SMQ、旧 MNS) Topic に送信します

処理例

// example.docx ファイルを PNG 形式のイメージファイルに変換します。
POST /example.docx?x-oss-async-process HTTP/1.1
Host: doc-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: SignatureValue

x-oss-async-process=doc/convert,target_png,source_docx|sys/saveas,b_dGVzdC1idWNrZXQ=,o_ZG9jX2ltYWdlcy97aW5kZXh9LnBuZw==/notify,topic_dGVzdC10b3BpYw

  • ドキュメント変換は非同期処理 (x-oss-async-process) のみをサポートします。

  • 匿名アクセスはサポートされていません。

  • ドキュメント形式変換でサポートされる最大ファイルサイズは 200 MB で、調整はできません。

FAQ

OSS ドキュメント変換は Excel シートのコンテンツの指定をサポートしていますか?

いいえ、サポートしていません。 OSS ドキュメント変換は、Excel ファイル内のすべてのシートの変換のみをサポートします。 特定のシートを変換する必要がある場合は、IMM CreateOfficeConversionTask - ドキュメント変換タスクの作成インターフェイスを呼び出し、SheetIndex パラメーターを設定することをお勧めします。

リファレンス

詳細については、「ドキュメント形式変換」をご参照ください。