PDF to Word

更新时间:
复制 MD 格式

The PDF to Word API converts a single PDF document into an editable Word document. It accurately recognizes text content and preserves the original layout and style. This topic describes how to call the PDF to Word API. Before you call the OpenAPI, read the API usage guide.

How to call the API

The PDF to Word API is an asynchronous API. First, submit an asynchronous task by calling the SubmitConvertPdfToWordJob or SubmitConvertPdfToWordJobAdvance API. Then, poll for the result by calling the GetDocumentConvertResult API. You can also call the API in the Document Mind console.

Note
  • You can poll for the result every 10 seconds. The maximum polling duration is 120 minutes. If the task is not complete after 120 minutes, the task times out.

  • After an asynchronous task is submitted, you can query the result within 24 hours after the task is complete. After 24 hours, the result is no longer available.

  • Supported document format: A single PDF file.

Step 1: Call the SubmitConvertPdfToWordJob API to submit an asynchronous task

The asynchronous submission service supports two methods: uploading a local file and uploading a file from a URL.

  • To upload a local file, you can call the SubmitConvertPdfToWordJobAdvance API.

  • To upload a file from a URL, you can call the SubmitConvertPdfToWordJob API.

Request parameters

Name

Type

Required

Description

Example value

FileUrl

string

Yes

The URL of a single document. PDF files cannot exceed 1,000 pages or 100 MB.

To upload a local file, the software development kit (SDK) provides a separate input parameter that supports file streams.

https://example.com/example.pdf

FileName

string

No

The name of the file. The name must include the file extension. This API supports only PDF files.

example.pdf

OssBucket

string

No

The name of your Object Storage Service (OSS) bucket. For more information, see OSS hosting support.

docmind-trust

OssEndpoint

string

No

The endpoint of your OSS bucket. For more information, see OSS hosting support.

oss-cn-hangzhou.aliyuncs.com

FormulaEnhancement

bool

No

Enables formula recognition enhancement. The default value is false.

true

Option

string

No

basic: The new conversion pipeline. This is the default value.

keep_format: The old conversion pipeline.

basic

EnableEventCallback

bool

No

Specifies whether to enable event callbacks. The default value is False. For more information, see EventBridge support.

false

Response parameters

Name

Type

Description

Example

RequestId

string

The unique ID of the request.

43A29C77-405E-4CC0-BC55-EE694AD0****

Data

object

The returned data.

{"Id": "docmind-20220712-b15f****"}

Id

string

The business order ID. This is the unique identifier used to query the task status using the query API.

docmind-20220712-b15f****

Code

string

The status code.

200

Message

string

The details.

Message

Examples

You can call this API to upload a local file or upload a file from a URL.

  • Upload a local file: The following code provides an example of how to use the Java SDK to upload a local file. You can call the SubmitConvertPdfToWordJobAdvance API and use the fileUrlObject parameter to upload a local document.

    Note

    For more information about how to obtain and use AccessKey information, see the SDK usage guide for your programming language in SDK Overview.

    import com.aliyun.docmind_api20220711.models.*;
    import com.aliyun.teaopenapi.models.Config;
    import com.aliyun.docmind_api20220711.Client;
    import com.aliyun.teautil.models.RuntimeOptions;
    import java.io.File;
    import java.io.FileInputStream;
    
    public static void main(String[] args) throws Exception {
            submit();
        }
    public static void submit() throws Exception {
            // Use the default credential to initialize the Credentials client.
        		com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
        		Config config = new Config()
            // Obtain the AccessKey ID from the configuration using credentials.
            .setAccessKeyId(credentialClient.getAccessKeyId())
            // Obtain the AccessKey secret from the configuration using credentials.
            .setAccessKeySecret(credentialClient.getAccessKeySecret());
            // The endpoint. Both IPv4 and IPv6 are supported. For IPv6, use docmind-api-dualstack.cn-hangzhou.aliyuncs.com.
            config.endpoint = "docmind-api.cn-hangzhou.aliyuncs.com";
            Client client = new Client(config);
            // Create a RuntimeOptions instance and configure runtime parameters.
            RuntimeOptions runtime = new RuntimeOptions();
            SubmitConvertPdfToWordJobAdvanceRequest advanceRequest = new SubmitConvertPdfToWordJobAdvanceRequest();
            File file = new File("D:\\example.pdf");
            advanceRequest.fileUrlObject = new FileInputStream(file);
            advanceRequest.fileName = "example.pdf";
            // Initiate the request and handle the response or exceptions.
            SubmitConvertPdfToWordJobResponse response = client.submitConvertPdfToWordJobAdvance(advanceRequest, runtime);
            System.out.println(JSON.toJSON(response.getBody()));
        }
    const Client = require('@alicloud/docmind-api20220711');
    const Util = require('@alicloud/tea-util');
    const fs = require('fs');
    
    const getResult = async () => {
      // Use the default credential to initialize the Credentials client.
      const cred = new Credential.default();
      const client = new Client.default({
        // The endpoint. Both IPv4 and IPv6 are supported. For IPv6, use docmind-api-dualstack.cn-hangzhou.aliyuncs.com.
        endpoint: 'docmind-api.cn-hangzhou.aliyuncs.com',
        // Obtain the AccessKey ID from the configuration using credentials.
        accessKeyId: cred.credential.accessKeyId,
        // Obtain the AccessKey secret from the configuration using credentials.
        accessKeySecret: cred.credential.accessKeySecret,
        type: 'access_key',
        regionId: 'cn-hangzhou'
      });
      
      const advanceRequest = new Client.SubmitConvertPdfToWordJobAdvanceRequest();
      const file = fs.createReadStream('./example.pdf');
      advanceRequest.fileUrlObject = file;
      advanceRequest.fileName = 'example.pdf';
      const runtimeObject = new Util.RuntimeOptions({});
      const response = await client.submitConvertPdfToWordJobAdvance(advanceRequest, runtimeObject);
    	return response.body;
    }
    from alibabacloud_docmind_api20220711.client import Client as docmind_api20220711Client
    from alibabacloud_tea_openapi import models as open_api_models
    from alibabacloud_docmind_api20220711 import models as docmind_api20220711_models
    from alibabacloud_tea_util.client import Client as UtilClient
    from alibabacloud_credentials.client import Client as CredClient
    
    if __name__ == '__main__':
        cred=CredClient()
        config = open_api_models.Config(
            # Obtain the AccessKey ID from the configuration using credentials.
            access_key_id=cred.get_credential().get_access_key_id(),
            # Obtain the AccessKey secret from the configuration using credentials.
            access_key_secret=cred.get_credential().get_access_key_secret()
        )
        # The endpoint.
        config.endpoint = f'docmind-api.cn-hangzhou.aliyuncs.com'
        client = docmind_api20220711Client(config)
        request = docmind_api20220711_models.SubmitConvertPdfToWordJobAdvanceRequest(
            # file_url_object: The local file stream.
            file_url_object=open("./example.pdf", "rb"),
            # file_name: The name of the file. The name must include the file extension.
            file_name='123.pdf',
        )
        runtime = util_models.RuntimeOptions()
        try:
            # If you copy the code to run, print the API response on your own.
            response = client.submit_convert_pdf_to_word_job_advance(request, runtime)
            # The API response is in the format of body -> data -> specific property. You can print the results as needed. The following example shows how to print the returned business ID.
            # Property values start with a lowercase letter.
            print(response.body)        
        except Exception as error:
            # If necessary, print the error.
            UtilClient.assert_as_string(error.message)
    using Newtonsoft.Json;
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using System.Threading.Tasks;
    
    using Tea;
    using Tea.Utils;
    
    public static void SubmitFile()
            {
                // Use the default credential to initialize the Credentials client.
              	var akCredential = new Aliyun.Credentials.Client(null);
                AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
                {
                    // Obtain the AccessKey ID from the configuration using credentials.
                    AccessKeyId = akCredential.GetAccessKeyId(),
                    // Obtain the AccessKey secret from the configuration using credentials.
                    AccessKeySecret = akCredential.GetAccessKeySecret(),
                };
                // The endpoint.
                config.Endpoint = "docmind-api.cn-hangzhou.aliyuncs.com";
                // You must install the AlibabaCloud.DarabonbaStream dependency library.
                AlibabaCloud.SDK.Docmind_api20220711.Client client = new AlibabaCloud.SDK.Docmind_api20220711.Client(config);
                Stream bodySyream = AlibabaCloud.DarabonbaStream.StreamUtil.ReadFromFilePath("<YOUR-FILE-PATH>");
                AlibabaCloud.SDK.Docmind_api20220711.Models.SubmitConvertPdfToWordJobAdvanceRequest request = new AlibabaCloud.SDK.Docmind_api20220711.Models.SubmitConvertPdfToWordJobAdvanceRequest
                {
                    FileUrlObject = bodySyream,
                    FileName = "example.pdf"
                };
                AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
                try
                {
                    // If you copy the code to run, print the API response on your own.
                    client.SubmitConvertPdfToWordJobAdvance(request, runtime);
                }
                catch (TeaException error)
                {
                    // If necessary, print the error.
                    AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                }
                catch (Exception _error)
                {
                    TeaException error = new TeaException(new Dictionary<string, object>
                    {
                        { "message", _error.Message }
                    });
                    // If necessary, print the error.
                    AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                }
            }
    import (
    	"fmt"
    	"os"
      
    	openClient "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    	"github.com/alibabacloud-go/docmind-api-20220711/client"
    	"github.com/alibabacloud-go/tea-utils/v2/service"
      "github.com/aliyun/credentials-go/credentials"
    )
    
    func submit(){
      // Use the default credential to initialize the Credentials client.
    	credential, err := credentials.NewCredential(nil)
    	// Obtain the AccessKey ID from the configuration using credentials.
    	accessKeyId, err := credential.GetAccessKeyId()
    	// Obtain the AccessKey secret from the configuration using credentials.
    	accessKeySecret, err := credential.GetAccessKeySecret()
      // The endpoint. Both IPv4 and IPv6 are supported. For IPv6, use docmind-api-dualstack.cn-hangzhou.aliyuncs.com.
      var endpoint string = "docmind-api.cn-hangzhou.aliyuncs.com"
    	config := openClient.Config{AccessKeyId: accessKeyId, AccessKeySecret: accessKeySecret, Endpoint: &endpoint}
      // Initialize the client.
      cli, err := client.NewClient(&config)
    	if err != nil {
    		panic(err)
    	}
      // Call the API to upload a local document.
      filename := "D:\\example.pdf"    
      f, err := os.Open(filename)
    	if err != nil {
        panic(err)
    	}
      // Initialize the API request.
      request := client.SubmitConvertPdfToWordJobAdvanceRequest{
    		FileName:      &filename,
    		FileUrlObject: f,
    	}
      // Create a RuntimeOptions instance and configure runtime parameters.
      options := service.RuntimeOptions{}
      response, err := cli.SubmitConvertPdfToWordJobAdvance(&request, &options)
      if err != nil {
    		panic(err)
    	}
      // Print the result.
    	fmt.Println(response.Body.String())
    }
  • Upload a file from a URL: The following code provides an example of how to use the Java SDK to upload a file from a URL. You can call the SubmitConvertPdfToWordJob API and use the fileUrl parameter to specify the document URL. Note that the document URL must be a publicly accessible download URL, have no cross-domain restrictions, and contain no special escape characters.

    Note

    For more information about how to obtain and use AccessKey information, see the SDK usage guide for your programming language in SDK Overview.

    import com.aliyun.docmind_api20220711.models.*;
    import com.aliyun.teaopenapi.models.Config;
    import com.aliyun.docmind_api20220711.Client;
    
    public static void main(String[] args) throws Exception {
            submit();
        }
    public static void submit() throws Exception {
        // Use the default credential to initialize the Credentials client.
        com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
        Config config = new Config()
            // Obtain the AccessKey ID from the configuration using credentials.
            .setAccessKeyId(credentialClient.getAccessKeyId())
            // Obtain the AccessKey secret from the configuration using credentials.
            .setAccessKeySecret(credentialClient.getAccessKeySecret());
        // The endpoint. Both IPv4 and IPv6 are supported. For IPv6, use docmind-api-dualstack.cn-hangzhou.aliyuncs.com.
        config.endpoint = "docmind-api.cn-hangzhou.aliyuncs.com";
        Client client = new Client(config);
        SubmitConvertPdfToWordJobRequest request = new SubmitConvertPdfToWordJobRequest();
        request.fileName = "example.pdf";
        request.fileUrl = "https://example.com/example.pdf";
        SubmitConvertPdfToWordJobResponse response = client.submitConvertPdfToWordJob(request);
        System.out.println(JSON.toJSON(response.getBody()));
    }
    const Client = require('@alicloud/docmind-api20220711');
    
    const getResult = async () => {
      // Use the default credential to initialize the Credentials client.
      const cred = new Credential.default();
      const client = new Client.default({
        // The endpoint. Both IPv4 and IPv6 are supported. For IPv6, use docmind-api-dualstack.cn-hangzhou.aliyuncs.com.
        endpoint: 'docmind-api.cn-hangzhou.aliyuncs.com',
        // Obtain the AccessKey ID from the configuration using credentials.
        accessKeyId: cred.credential.accessKeyId,
        // Obtain the AccessKey secret from the configuration using credentials.
        accessKeySecret: cred.credential.accessKeySecret,
        type: 'access_key',
        regionId: 'cn-hangzhou'
      });
      
      const request = new Client.SubmitConvertPdfToWordJobRequest();
      request.fileName = 'example.pdf';
      request.fileUrl = 'https://example.com/example.pdf';
      const response = await client.submitConvertPdfToWordJob(request);
      
      return response.body;
    }
    from alibabacloud_docmind_api20220711.client import Client as docmind_api20220711Client
    from alibabacloud_tea_openapi import models as open_api_models
    from alibabacloud_docmind_api20220711 import models as docmind_api20220711_models
    from alibabacloud_tea_util.client import Client as UtilClient
    from alibabacloud_credentials.client import Client as CredClient
    
    if __name__ == '__main__':
        cred=CredClient()
        config = open_api_models.Config(
            # Obtain the AccessKey ID from the configuration using credentials.
            access_key_id=cred.get_credential().get_access_key_id(),
            # Obtain the AccessKey secret from the configuration using credentials.
            access_key_secret=cred.get_credential().get_access_key_secret()
        )
        # The endpoint.
        config.endpoint = f'docmind-api.cn-hangzhou.aliyuncs.com'
        client = docmind_api20220711Client(config)
        request = docmind_api20220711_models.SubmitConvertPdfToWordJobRequest(
            # file_url: The URL of the file.
            file_url='https://example.com/example.pdf',
            # file_name: The name of the file. The name must include the file extension.
            file_name='123.pdf',
        )
        try:
            # If you copy the code to run, print the API response on your own.
            response = client.submit_convert_pdf_to_word_job(request)
            # The API response is in the format of body -> data -> specific property. You can print the results as needed. The following example shows how to print the returned business ID.
            # Property values start with a lowercase letter.
            print(response.body)       
        except Exception as error:
            # If necessary, print the error.
            UtilClient.assert_as_string(error.message)
    using Newtonsoft.Json;
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using System.Threading.Tasks;
    
    using Tea;
    using Tea.Utils;
    
    public static void SubmitUrl()
            {
                // Use the default credential to initialize the Credentials client.
              	var akCredential = new Aliyun.Credentials.Client(null);
                AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
                {
                    // Obtain the AccessKey ID from the configuration using credentials.
                    AccessKeyId = akCredential.GetAccessKeyId(),
                    // Obtain the AccessKey secret from the configuration using credentials.
                    AccessKeySecret = akCredential.GetAccessKeySecret(),
                };
                // The endpoint.
                config.Endpoint = "docmind-api.cn-hangzhou.aliyuncs.com";
                AlibabaCloud.SDK.Docmind_api20220711.Client client = new AlibabaCloud.SDK.Docmind_api20220711.Client(config);
                AlibabaCloud.SDK.Docmind_api20220711.Models.SubmitConvertPdfToWordJobRequest request = new AlibabaCloud.SDK.Docmind_api20220711.Models.SubmitConvertPdfToWordJobRequest
                {
                    FileUrl = "https://example.pdf",
                    FileName = "example.pdf"
                };
                try
                {
                    // If you copy the code to run, print the API response on your own.
                    client.SubmitConvertPdfToWordJob(request);
                }
                catch (TeaException error)
                {
                    // If necessary, print the error.
                    AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                }
                catch (Exception _error)
                {
                    TeaException error = new TeaException(new Dictionary<string, object>
                    {
                        { "message", _error.Message }
                    });
                    // If necessary, print the error.
                    AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                }
            }
    import (
    	"fmt"
    
    	openClient "github.com/alibabacloud-go/darabonba-openapi/v2/client"
      "github.com/alibabacloud-go/docmind-api-20220711/client"
      "github.com/aliyun/credentials-go/credentials"
    )
    
    func submit(){
      // Use the default credential to initialize the Credentials client.
    	credential, err := credentials.NewCredential(nil)
    	// Obtain the AccessKey ID from the configuration using credentials.
    	accessKeyId, err := credential.GetAccessKeyId()
    	// Obtain the AccessKey secret from the configuration using credentials.
    	accessKeySecret, err := credential.GetAccessKeySecret()
      // The endpoint. Both IPv4 and IPv6 are supported. For IPv6, use docmind-api-dualstack.cn-hangzhou.aliyuncs.com.
      var endpoint string = "docmind-api.cn-hangzhou.aliyuncs.com"
    	config := openClient.Config{AccessKeyId: accessKeyId, AccessKeySecret: accessKeySecret, Endpoint: &endpoint}
      // Initialize the client.
      cli, err := client.NewClient(&config)
    	if err != nil {
    		panic(err)
    	}
      // The file URL.
      fileURL := "https://example.com/example.pdf"
      // The file name.
      fileName := "example.pdf"
      // Initialize the API request.
      request := client.SubmitConvertPdfToWordJobRequest{
    		FileUrl:  &fileURL,
    		FileName: &fileName,
    	}
      response, err := cli.SubmitConvertPdfToWordJob(&request)
      if err != nil {
    		panic(err)
    	}
      // Print the result.
    	fmt.Println(response.Body.String())
    }
    use AlibabaCloud\SDK\Docmindapi\V20220711\Docmindapi;
    use AlibabaCloud\SDK\Docmindapi\V20220711\Models\SubmitConvertPdfToWordJobRequest;
    use Darabonba\OpenApi\Models\Config;
    use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
    use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
    use AlibabaCloud\Credentials\Credential;
    
    // Use the default credential to initialize the Credentials client.
    $bearerToken = new Credential();    
    $config = new Config();
    // The endpoint. Both IPv4 and IPv6 are supported. For IPv6, use docmind-api-dualstack.cn-hangzhou.aliyuncs.com.
    $config->endpoint = "docmind-api.cn-hangzhou.aliyuncs.com";
    // Obtain the AccessKey ID from the configuration using credentials.
    $config->accessKeyId = $bearerToken->getCredential()->getAccessKeyId();
    // Obtain the AccessKey secret from the configuration using credentials.
    $config->accessKeySecret = $bearerToken->getCredential()->getAccessKeySecret();
    $config->type = "access_key";
    $config->regionId = "cn-hangzhou";
    $client = new Docmindapi($config);
    $request = new SubmitConvertPdfToWordJobRequest();
    
    $runtime = new RuntimeOptions();
    $runtime->maxIdleConns = 3;
    $runtime->connectTimeout = 10000;
    $runtime->readTimeout = 10000;
    
    $request->fileName = "example.pdf";
    $request->fileUrl = "https://example.com/example.pdf";
    
    try {
      $response = $client->submitConvertPdfToWordJob($request, $runtime);
      var_dump($response->toMap());
    } catch (TeaUnableRetryError $e) {
      var_dump($e->getMessage());
      var_dump($e->getErrorInfo());
      var_dump($e->getLastException());
      var_dump($e->getLastRequest());
    }

Response

{
  "RequestId": "43A29C77-405E-4CC0-BC55-EE694AD0****",
  "Data": {
    "Id": "docmind-20220712-b15f****"
  }  
}

Step 2: Call the GetDocumentConvertResult API to query the document conversion result

The Id input parameter for the query API is the Id returned by the asynchronous task submission API. The query result can be in one of three states: in progress, successful, or failed.

Request parameters

Name

Type

Required

Description

Example

Id

string

Yes

The business order ID that you want to query. Obtain the order ID from the response of the submission API call.

docmind-20220712-b15f****

Response parameters

Name

Type

Description

Example

RequestId

string

The unique ID of the request.

43A29C77-405E-4CC0-BC55-EE694AD0****

Completed

boolean

Indicates whether the asynchronous task is complete. A value of false indicates that the task is in progress. A value of true indicates that the task is complete, with a result of either successful or failed.

true

Status

string

The final status of the asynchronous task. Success indicates that the task was successful. Fail indicates that the task failed.

Success

Data

object

The result of the document conversion. For more information about the parameters, see the following table.

This is a list.

Data parameters:

Name

Type

Description

Example

Code

string

The status code.

200

Message

string

The details.

message

Url

String

The URL of the converted file.

https://example.com/example.pdf

Size

Integer

The size of the converted file in bytes.

1345488

Type

String

The file extension of the converted file. For PDF-to-Word conversion, this is docx.

pdf

Md5

String

The MD5 hash of the converted file. You can use this value for verification.

2d49eb7705f9f93ed857874db247****

Examples

The following code provides an example of how to use the Java SDK to call the API for querying the result of a Document Mind task. You can call the GetDocumentConvertResult API and specify the ID to query the task.

Note

For more information about how to obtain and use AccessKey information, see the SDK usage guide for your programming language in SDK Overview.

import com.aliyun.docmind_api20220711.models.*;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.docmind_api20220711.Client;

public static void main(String[] args) throws Exception {
        submit();
    }
public static void submit() throws Exception {
    // Use the default credential to initialize the Credentials client.
    com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
    Config config = new Config()
        // Obtain the AccessKey ID from the configuration using credentials.
        .setAccessKeyId(credentialClient.getAccessKeyId())
        // Obtain the AccessKey secret from the configuration using credentials.
        .setAccessKeySecret(credentialClient.getAccessKeySecret());
    // The endpoint. Both IPv4 and IPv6 are supported. For IPv6, use docmind-api-dualstack.cn-hangzhou.aliyuncs.com.
    config.endpoint = "docmind-api.cn-hangzhou.aliyuncs.com";
    Client client = new Client(config);
    GetDocumentConvertResultRequest resultRequest = new GetDocumentConvertResultRequest();
    resultRequest.id = "docmind-20220902-824b****";
    GetDocumentConvertResultResponse response = client.getDocumentConvertResult(resultRequest);
    System.out.println(JSON.toJSON(response.getBody()));

}
const Client = require('@alicloud/docmind-api20220711');

const getResult = async () => {
  // Use the default credential to initialize the Credentials client.
  const cred = new Credential.default();
  const client = new Client.default({
    // The endpoint. Both IPv4 and IPv6 are supported. For IPv6, use docmind-api-dualstack.cn-hangzhou.aliyuncs.com.
    endpoint: 'docmind-api.cn-hangzhou.aliyuncs.com',
    // Obtain the AccessKey ID from the configuration using credentials.
    accessKeyId: cred.credential.accessKeyId,
    // Obtain the AccessKey secret from the configuration using credentials.
    accessKeySecret: cred.credential.accessKeySecret,
    type: 'access_key',
    regionId: 'cn-hangzhou'
  });
  
  const resultRequest = new Client.GetDocumentConvertResultRequest();
  resultRequest.id = "docmind-20220902-824b****";
  const response = await client.getDocumentConvertResult(resultRequest);
  
  return response.body;
}
from alibabacloud_docmind_api20220711.client import Client as docmind_api20220711Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_docmind_api20220711 import models as docmind_api20220711_models
from alibabacloud_tea_util.client import Client as UtilClient
from alibabacloud_credentials.client import Client as CredClient

if __name__ == '__main__':
    cred=CredClient()
    config = open_api_models.Config(
        # Obtain the AccessKey ID from the configuration using credentials.
        access_key_id=cred.get_credential().get_access_key_id(),
        # Obtain the AccessKey secret from the configuration using credentials.
        access_key_secret=cred.get_credential().get_access_key_secret()
    )
    # The endpoint.
    config.endpoint = f'docmind-api.cn-hangzhou.aliyuncs.com'
    client = docmind_api20220711Client(config)
    request = docmind_api20220711_models.GetDocumentConvertResultRequest(
        # id: The ID returned by the task submission API.
        id='docmind-20220902-824b****'
    )
    try:
        # If you copy the code to run, print the API response on your own.
        response = client.get_document_convert_result(request)
        # The API response is in the format of body -> data -> specific property. You can print the results as needed. Property values start with a lowercase letter.
        # Get the status of the asynchronous task. You can check response.body.completed to determine whether to continue polling for the result.
        print(response.body.completed)
        # Get the response. We recommend that you first convert response.body.data to JSON and then extract the required values from the JSON object.
        print(response.body)	        
    except Exception as error:
        # If necessary, print the error.
        UtilClient.assert_as_string(error.message)
using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

using Tea;
using Tea.Utils;

public static void GetResult() 
        {
            // Use the default credential to initialize the Credentials client.
          	var akCredential = new Aliyun.Credentials.Client(null);
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
            {
                // Obtain the AccessKey ID from the configuration using credentials.
                AccessKeyId = akCredential.GetAccessKeyId(),
                // Obtain the AccessKey secret from the configuration using credentials.
                AccessKeySecret = akCredential.GetAccessKeySecret(),
            };
            // The endpoint.
            config.Endpoint = "docmind-api.cn-hangzhou.aliyuncs.com";
            AlibabaCloud.SDK.Docmind_api20220711.Client client = new AlibabaCloud.SDK.Docmind_api20220711.Client(config);
            AlibabaCloud.SDK.Docmind_api20220711.Models.GetDocumentConvertResultRequest request = new AlibabaCloud.SDK.Docmind_api20220711.Models.GetDocumentConvertResultRequest
            {
                Id = "docmind-20220902-824b****"
            };
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            try
            {
                // If you copy the code to run, print the API response on your own.
                client.GetDocumentConvertResult(request);
            }
            catch (TeaException error)
            {
                // If necessary, print the error.
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
            }
            catch (Exception _error)
            {
                TeaException error = new TeaException(new Dictionary<string, object>
                {
                    { "message", _error.Message }
                });
                // If necessary, print the error.
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
            }
        }
import (
	"fmt"

	openClient "github.com/alibabacloud-go/darabonba-openapi/v2/client"
  "github.com/alibabacloud-go/docmind-api-20220711/client"
  "github.com/aliyun/credentials-go/credentials"
)

func submit(){
     // Use the default credential to initialize the Credentials client.
	  credential, err := credentials.NewCredential(nil)
	  // Obtain the AccessKey ID from the configuration using credentials.
	  accessKeyId, err := credential.GetAccessKeyId()
	  // Obtain the AccessKey secret from the configuration using credentials.
	  accessKeySecret, err := credential.GetAccessKeySecret()
    // The endpoint. Both IPv4 and IPv6 are supported. For IPv6, use docmind-api-dualstack.cn-hangzhou.aliyuncs.com.
    var endpoint string = "docmind-api.cn-hangzhou.aliyuncs.com"
	  config := openClient.Config{AccessKeyId: accessKeyId, AccessKeySecret: accessKeySecret, Endpoint: &endpoint}
    // Initialize the client.
    cli, err := client.NewClient(&config)
    if err != nil {
      panic(err)
    }
    id := "docmind-20220925-76b1****"
    // Call the query API.
    request := client.GetDocumentConvertResultRequest{Id: &id}
    response, err := cli.GetDocumentConvertResult(&request)
    if err != nil {
      panic(err)
    }
    // Print the query result.
    fmt.Println(response.Body)
  // Note: The Go SDK URL-encodes the ampersand (&) in the returned URL to \u0026. You must manually decode \u0026 back to & to download the file from the URL.
  // The following code provides an example of a URL returned by the Go SDK: http://docmind-api-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/convert/docmind-20220927-87ad**/example.pdf?Expires=XX\u0026OSSAccessKeyId=YY\u0026Signature=ZZ
}
use AlibabaCloud\SDK\Docmindapi\V20220711\Docmindapi;
use AlibabaCloud\SDK\Docmindapi\V20220711\Models\GetDocumentConvertResultRequest;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
use AlibabaCloud\Credentials\Credential;

// Use the default credential to initialize the Credentials client.
$bearerToken = new Credential();    
$config = new Config();
// The endpoint. Both IPv4 and IPv6 are supported. For IPv6, use docmind-api-dualstack.cn-hangzhou.aliyuncs.com.
$config->endpoint = "docmind-api.cn-hangzhou.aliyuncs.com";
// Obtain the AccessKey ID from the configuration using credentials.
$config->accessKeyId = $bearerToken->getCredential()->getAccessKeyId();
// Obtain the AccessKey secret from the configuration using credentials.
$config->accessKeySecret = $bearerToken->getCredential()->getAccessKeySecret();
$config->type = "access_key";
$config->regionId = "cn-hangzhou";
$client = new Docmindapi($config);
$request = new GetDocumentConvertResultRequest();   
$request->id = "docmind-20220902-824b****";

$runtime = new RuntimeOptions();
$runtime->maxIdleConns = 3;
$runtime->connectTimeout = 10000;
$runtime->readTimeout = 10000;

try {
  $response = $client->getDocumentConvertResult($request, $runtime);
  var_dump($response->toMap());
} catch (TeaUnableRetryError $e) {
  var_dump($e->getMessage());
  var_dump($e->getErrorInfo());
  var_dump($e->getLastException());
  var_dump($e->getLastRequest());
}

Result

The response indicates one of three states: in progress, successful, or failed. The following sections provide sample responses for each state.

  • An operation in progress returns the following response:

    {
      "RequestId": "2AABD2C2-D24F-12F7-875D-683A27C3****",
      "Completed": false,
      "Code": "DocProcessing",
      "Message": "Document processing",
      "HostId": "ocr-api.cn-hangzhou.aliyuncs.com",
      "Recommend": "https://next.api.aliyun.com/troubleshoot?q=DocProcessing&product=docmind-api"
    }

    If the task is in progress, the value of Completed is false. This indicates that the task is not finished. In this case, you can continue polling until Completed returns true or the maximum polling time is exceeded.

  • If an operation fails, it returns the following response:

    {
      "RequestId": "A8EF3A36-1380-1116-A39E-B377BE27****",
      "Completed": true,
      "Status": "Fail",
      "Code": "UrlNotLegal",
      "Message": "Failed to process the document.  The document url you provided is not legal.",
      "HostId": "docmind-api.cn-hangzhou.aliyuncs.com",
      "Recommend": "https://next.api.aliyun.com/troubleshoot?q=IDP.UrlNotLegal&product=docmind-api"
    }

    If the task failed, the value of Completed is true and the value of Status is Fail. The response also includes an error Code and a detailed Message. For more information, see Error codes.

  • The following is a successful response:

    {
      "Status": "Success",
      "RequestId": "73134E1A-E281-1B2C-A105-D0ECFE2D****",
      "Completed": true,
      "Data": [
        {
          "Type": "docx",
          "Size": 7940,
          "Url": "http://docmind-api-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/convert/docmind-20220902-57de****/example.docx?Expires=1662190830&OSSAccessKeyId=XX&Signature=YY",
          "Md5": "36256a4c2db8e31e056aeeb8b871****"
        }
      ]
    }

    If the task is successful, the value of Completed is true and the value of Status is Success. The processing result is in the Data node. The Data node is a list that contains only one element. The following list describes the format of the element in the Data node:

    • Type: The document type of the converted file. For example, this PDF-to-Word API returns a Word document in the docx format.

    • URL: The download link for the converted document. The URL returned by each query request is valid for 60 minutes. After the URL expires, you must call the query API again to obtain a new download link.

    • Size: The size of the converted document in bytes. You can use this value to verify the integrity of the downloaded document by comparing its file size with the Size value returned by the API.

    • Md5: The MD5 hash of the converted document. You can use this value to verify the integrity of the downloaded document by comparing its MD5 hash with the Md5 value returned by the API.