The PDF to Excel API converts a single PDF document into an editable Excel document. It accurately recognizes text content and preserves the layout and style of the original document. This topic describes how to call the PDF to Excel API. Before you call the OpenAPI, read the API guide.
Calling method
The PDF to Excel API is asynchronous. First, you can call the `SubmitConvertPdfToExcelJob` or `SubmitConvertPdfToExcelJobAdvance` API to submit an asynchronous task. Then, you can call the `GetDocumentConvertResult` API to poll for the result.
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, the result is retained for 24 hours. You cannot query the result after this period.
Supported document format: A single PDF document.
Step 1: Call the SubmitConvertPdfToExcelJob API of the asynchronous PDF-to-Excel submission service
You can submit an asynchronous task by uploading a local file or using a file URL.
To upload a local file, call the `SubmitConvertPdfToExcelJobAdvance` API.
To use a file URL, call the `SubmitConvertPdfToExcelJob` API.
Request parameters
Name | Type | Required | Description | Example |
FileUrl | string | Yes | The URL of a single document. PDF files with more than 1,000 pages or larger than 100 MB are not supported. To upload a local file, the SDK provides a separate request parameter to support file stream uploads. | https://example.com/example.pdf |
FileName | string | No | The file name, including the file extension. This API only supports PDF files. | example.pdf |
ForceMergeExcel | bool | No | Specifies whether to force merge all content into a single sheet. The default value is false. | false |
OssBucket | string | No | The name of your 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 |
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 result with a subsequent API call. | docmind-20220712-b15f**** |
Code | string | The status code. | 200 |
Message | string | The detailed message. | Message |
Examples
You can call this API by uploading a local file or using a file URL.
Upload a local file: The following Java SDK code provides an example of how to upload a local document. You can call the `SubmitConvertPdfToExcelJobAdvance` API and use the `fileUrlObject` parameter to upload the local file.
NoteTo learn 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; import com.alibaba.fastjson.JSON; 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 RuntimeObject instance and set runtime parameters. RuntimeOptions runtime = new RuntimeOptions(); SubmitConvertPdfToExcelJobAdvanceRequest advanceRequest = new SubmitConvertPdfToExcelJobAdvanceRequest(); File file = new File("D:\\example.pdf"); advanceRequest.fileUrlObject = new FileInputStream(file); advanceRequest.fileName = "example.pdf"; // 4. Send the request and handle the response or exceptions. SubmitConvertPdfToExcelJobResponse response = client.submitConvertPdfToExcelJobAdvance(advanceRequest, runtime); System.out.println(JSON.toJSON(response.getBody())); }const Client = require('@alicloud/docmind-api20220711'); const Credential = require('@alicloud/credentials'); 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.SubmitConvertPdfToExcelJobAdvanceRequest(); const file = fs.createReadStream('./example.pdf'); advanceRequest.fileUrlObject = file; advanceRequest.fileName = 'example.pdf'; const runtimeObject = new Util.RuntimeOptions({}); const response = await client.submitConvertPdfToExcelJobAdvance(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.SubmitConvertPdfToExcelJobAdvanceRequest( # file_url_object: The local file stream. file_url_object=open("./example.pdf", "rb"), # file_name: The file name. The name must include the file extension. file_name='123.pdf', ) runtime = util_models.RuntimeOptions() try: # If you copy the code, print the API return value. response = client.submit_convert_pdf_to_excel_job_advance(request, runtime) # The API returns data in the format of body -> data -> specific properties. 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.SubmitConvertPdfToExcelJobAdvanceRequest request = new AlibabaCloud.SDK.Docmind_api20220711.Models.SubmitConvertPdfToExcelJobAdvanceRequest { FileUrlObject = bodySyream, FileName = "example.pdf" }; AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); try { // If you copy the code, print the API return value. client.SubmitConvertPdfToExcelJobAdvance(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.SubmitConvertPdfToExcelJobAdvanceRequest{ FileName: &filename, FileUrlObject: f, } // Create a RuntimeObject instance and set runtime parameters. options := service.RuntimeOptions{} response, err := cli.SubmitConvertPdfToExcelJobAdvance(&request, &options) if err != nil { panic(err) } // Print the result. fmt.Println(response.Body.String()) }Upload a file from a URL: The following Java SDK code provides an example of how to call the API using a document URL. You can call the `SubmitConvertPdfToExcelJob` API and use the `fileUrl` parameter to specify the document URL. Note that the URL must be publicly accessible for download, have no cross-domain restrictions, and contain no special escape characters.
NoteTo learn 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.alibaba.fastjson.JSON; 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); SubmitConvertPdfToExcelJobRequest request = new SubmitConvertPdfToExcelJobRequest(); request.fileName = "example.pdf"; request.fileUrl = "https://example.com/example.pdf"; SubmitConvertPdfToExcelJobResponse response = client.submitConvertPdfToExcelJob(request); System.out.println(JSON.toJSON(response.getBody())); }const Client = require('@alicloud/docmind-api20220711'); const Credential = require('@alicloud/credentials'); 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.SubmitConvertPdfToExcelJobRequest(); request.fileName = 'example.pdf'; request.fileUrl = 'https://example.com/example.pdf'; const response = await client.submitConvertPdfToExcelJob(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.SubmitConvertPdfToExcelJobRequest( # file_url: The URL of the file. file_url='https://example.com/example.pdf', # file_name: The file name. The name must include the file extension. file_name='123.pdf', ) try: # If you copy the code, print the API return value. response = client.submit_convert_pdf_to_excel_job(request) # The API returns data in the format of body -> data -> specific properties. 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.SubmitConvertPdfToExcelJobRequest request = new AlibabaCloud.SDK.Docmind_api20220711.Models.SubmitConvertPdfToExcelJobRequest { FileUrl = "https://example.pdf", FileName = "example.pdf" }; try { // If you copy the code, print the API return value. client.SubmitConvertPdfToExcelJob(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.SubmitConvertPdfToExcelJobRequest{ FileUrl: &fileURL, FileName: &fileName, } response, err := cli.SubmitConvertPdfToExcelJob(&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\SubmitConvertPdfToExcelJobRequest; 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 SubmitConvertPdfToExcelJobRequest(); $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->submitConvertPdfToExcelJob($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 conversion result
The `Id` request parameter for the query API is the `Id` that is returned by the asynchronous task submission API. The query result can be one of three statuses: processing, successful, or failed.
Request parameters
Name | Type | Required | Description | Example value |
Id | string | Yes | The business order ID to query. Obtain this ID from the response of the submission API. | 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. `false` means the task is still processing. `true` means the task is complete. | true |
Status | string | The final status of the completed asynchronous task. `Success` indicates the task was successful. `Fail` indicates the task failed. | Success |
Data | object | The result of the document conversion. This includes the URL of the converted destination document. | A list of objects. |
Code | string | The status code. | 200 |
Message | string | The detailed message. | message |
Url | String | The URL of the converted file. | https://example.com/example.xlsx |
Size | Integer | The size of the converted file in bytes. | 1345488 |
Type | String | The file extension of the converted file. For example, the extension is `docx` for PDF-to-Word conversion. | xlsx |
Md5 | String | The MD5 hash of the converted file. You can use this value for verification. | 2d49eb7705f9f93ed857874db247**** |
Examples
The following Java SDK code provides an example of how to query the result. You can call the `getDocumentConvertResult` API and pass the task ID.
To learn 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.alibaba.fastjson.JSON;
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 Credential = require('@alicloud/credentials');
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, print the API return value.
response = client.get_document_convert_result(request)
# The API returns data in the format of body -> data -> specific properties. 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.
print(response.body.completed)
# Get the return result. 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, print the API return value.
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.
// 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());
}Response
The response indicates one of three statuses: processing, successful, or failed. The following examples show a response for each status.
The response for an in-progress operation is as follows:
{ "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 still processing, the value of `Completed` is `false`. In this case, you must continue to poll for the result until `Completed` returns `true` or the maximum polling time is exceeded.
The following response indicates that the task failed:
{ "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 fails, 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 response indicates that the task was successful:
{ "Status": "Success", "RequestId": "73134E1A-E281-1B2C-A105-D0ECFE2D****", "Completed": true, "Data": [ { "Type": "xlsx", "Size": 7940, "Url": "http://docmind-api-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/convert/docmind-20220902-57de****/example.xlsx?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 result is in the `Data` node. The `Data` node is a list that contains a single element. The following list describes the parameters in the `Data` element:
Type: The format of the converted document. For example, converting a PDF file to Word produces 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 it expires, you must call the query API again to obtain a new URL.
`Size`: The size of the converted document in bytes. You can use this value to verify the integrity of the downloaded file by comparing the file size with this value.
`Md5`: The MD5 hash of the converted document. You can use this value to verify the integrity of the downloaded file by comparing the MD5 hash of the file with this value.