PDF 转文档
PDF 转 Word、PPT、Excel、文本等格式,包含 OCR 与版面相关参数。
概述
使用流程
由于转换需要时间,文件越大页数越多,转换越久,故默认采用异步的方式获得转换结果。即调用转换接口后会获得token,随后有2种方式查询转换结果:
调用转换接口
v1和v2接口功能相同,调用方式不一样。v2支持同步转换,v1不支持,推荐用v2接口。
v2接口统一为HTTP POST JSON:
v1接口包括2种转换方式:
- 文档是一个下载链接,用HTTP GET方式,见:文档转换GET_v1
- 文档二进制POST到服务器,用HTTP POST方式,见:文档转换POST_v1
调用转换API需要签名,详细见文档附录:阿里签名 调用查询结果API无需签名。
阿里云支持从OSS内网直接下载文件,节约流量,见:阿里云独有部分
文档转换_v2
异步url:
https://pdf2doc.market.alicloudapi.com/v2/convert_async
同步url:
https://pdf2doc.market.alicloudapi.com/v2/convert_sync
HTTP方式: POST
Header中的Content-Type传入application/json
Body是JSON格式,支持以下2种输入源文件的方法:
方法1: 文件url,最大1500M,转word文件type传docx:
{"input": "http://xxx.pdf", "type": "docx"}
方法2: 文件Base64字符串,Base64字符串最大8M:
{"input": "base64字符串", "type": "docx"}
必须签名才能调用成功,签名见阿里签名规则:
https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/use-cases/call-apis
支持转换为以下文件格式:
| 类型 | 扩展名(type取值) |
|---|---|
| 微软Office文档 | doc, docx, pptx, xlsx |
| 开放版式文档 | ofd |
| 文本文件 | txt, rtf |
| Markdown | md |
| CAD 图纸 | dwg, dxf |
PDF 转 DWG/DXF 支持单页或多页,仅适用于包含线条或文字等矢量内容的 PDF。扫描件和纯图片页不会自动矢量化。OCR、纠偏、背景清理等图片识别参数不生效。所选页全部无矢量内容时会明确返回失败,而不是生成仅引用临时图片的 CAD 文件;多页中仅部分页无矢量时,这些页生成空 Layout,其余页正常转换。
单页结果在模型空间。多页为单个 CAD 文件,每个 PDF 页对应一个 Layout(图纸空间),名称如 page-1。多页 DXF 以 zip 包返回(内含一个 dxf 文件);单页 DXF 和 DWG 直接返回对应文件。
自定义参数:
| 参数 | 类型 | 备注 | 默认值 |
| type | string | 小写,输出文件类型,例如docx | 必须发送 |
| 输出文件相关 | |||
| ocr | int | 对于扫描的PDF,是否做OCR: 0:不做OCR 1:自动OCR 2:强力OCR:针对有些加密或编码不正确导致的乱码,叠字,未OCR文字等问题 默认1,建议:不需要OCR选择0,一般情况选择1,出现乱码等问题选择2 |
1 |
| language | int | OCR识别语言选项,默认2简体中文: 1:英语 2:简体中文 3:繁体中文 4:法语 5:德语 6:意大利语 7:俄语 8:日文 9:韩文 10:西班牙语 11:葡萄牙语 12:丹麦语 13:荷兰语 14:芬兰语 15:挪威语 16:瑞典语 17:土耳其语 |
2 |
| pageindexes | string | 要转换的PDF页数。非CAD文件不传时转换全部页。可传列表或范围,例如:1,3,5-7。输出 DWG/DXF 时不传则转换第 1 页,需要全部页时可传 1- | 空 |
| outfilename | string | 生成的文件的文件名,默认随机 | 空 |
| 输出Office文件相关 | |||
| wordnoimage | int | 如果转为Word文件,默认0:需要图片;1:不需要图片 | 0 |
| wordabsolutelayout | int | 如果转为Word文件,默认0:流式布局;1:绝对布局(位置精准,浏览方便,但是编辑方式非流式不利于编辑) | 0 |
| excelonesheet | int | 如果转为Excel文件,默认0:PDF特定页数以内为一个工作表,否则每页一个工作表;1:一个工作表(如果PDF页数太多,有失败可能);2:每页一个工作表 | 0 |
| 输出文本文件相关 | |||
| textnoformat | int | 如果转为Txt文本,默认0: 保持原有布局,1:无需布局 | 0 |
| textperpage | int | 如果转为Txt文本,默认0:所有页转为单个txt文件,1:每一页转为一个txt文件,并且打包为一个zip包 | 0 |
| 其他 | |||
| imagepdfocroption | int | 如果是扫描版PDF,根据ocr参数做ocr。 如果是非扫描版PDF,根据该值做ocr。 默认0:不启用; 1-2:启用,非扫描版对应ocr:1-2 100:启用,非扫描版不做ocr 比如ocr传2,imagepdfocroption传1 那么:扫描版PDF用ocr:2做ocr 非扫描版用ocr:1做ocr |
0 |
| password | string | PDF文件的密码,没有密码可以不传或传空 | 空 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,详细见 回调URL | 空 |
请求示例:
- 例1: 把PDF文件转为word
{"input": "http://xxx.pdf", "type": "docx"}
- 例2: 把PDF每一页转为一个txt文件
{"input": "http://xxx.pdf", "type": "txt", "textperpage": 1}
- 例3: 只把PDF的1,3,5页转为Excel,并放在一个工作表里
{"input": "http://xxx.pdf", "type": "xlsx", "excelonesheet": 1, "pageindexes": "1,3,5"}
- 例4: 把 PDF 第 2 页的矢量内容转为 DWG
{"input": "http://xxx.pdf", "type": "dwg", "pageindexes": "2"}
- 例5: 把 PDF 第 1、3、5-7 页转为 DWG(每个 PDF 页对应一个 Layout)
{"input": "http://xxx.pdf", "type": "dwg", "pageindexes": "1,3,5-7"}
返回数据结构【异步】:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| code | number | 是 | 10000:请求成功 |
| msg | string | 是 | |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| token | string | 是 | 用于查询结果接口 |
返回示例(成功状态)【异步】:
{
"code":10000,
"msg":"",
"result":{"token":"YOUR_CREDENTIAL"}
}
返回示例(失败状态)【异步】:
{
"code":40001,
"msg":"ParmNotRight"
}
同步调用
同步调用的最大返回时间是60秒,如果60秒内转换结束则直接返回结果。否则会返回token,之后和异步方式一样可以调用查询结果接口查询该token的转换结果。所以同步调用如果传入的文件过大,无法保证在60秒内结束,则转为异步流程。
返回数据结构【同步】:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| code | number | 是 | 10000:请求成功 |
| msg | string | 是 | |
| token | string | 是 | 请求的token |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| fileurl | 输出文件地址 | string | 否(status为Done时返回) | 转换出来的文件地址,http和https都支持 |
| count | 输入PDF的页数 | integer | 否(status为Done时返回) | PDF页面总数 |
| filesize | 文件大小 | integer | 否(status为Done时返回) | 输出文件大小 |
| status | 状态 | string | 是 | Done:转换成功 Failed:转换失败 |
返回示例(成功状态)【同步】:
{
"code": 10000,
"msg": "",
"result": {
"count": 1,
"filesize": 17747,
"fileurl": "https://file.duhuitech.com/o/xxx/xxx.docx",
"status": "Done"
},
"token": "YOUR_CREDENTIAL"
}
返回示例(超时状态)【同步】:
{
"code": 40500,
"msg": "Timeout, query token later",
"token": "YOUR_CREDENTIAL"
}
查询结果
请求参数:
| 参数 | 类型 | 备注 | 是否必须发送 |
|---|---|---|---|
| token | string | 调用转换接口拿到的token | 是 |
请求示例:
https://api.duhuitech.com/q?token=YOUR_TOKEN
无需签名,无调用次数限制
由于转换需要时间,文件越大页数越多,转换越久,故需要轮询查询接口来获得结果。查询频率可以是1s一次,也可以更长一些。 查询后先看status,如果是Done或Failed,则转换结束,停止轮询。如果是Doing或Pending,则继续轮询。
返回数据结构:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| code | number | 是 | 10000:请求成功 |
| msg | string | 是 | |
| token | string | 是 | 请求的token |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| status | 状态 | string | 是 | Pending:还未开始 Doing:正在转换 Done:转换成功 Failed:转换失败 |
| progress | 进度 | number | 否(status为Doing时返回) | 范围:0.00 - 1.00, 比如0.88表示88% |
| fileurl | 输出文件地址 | string | 否(status为Done时返回) | 转换出来的文件地址,http和https都支持 |
| count | 输入PDF的页数 | integer | 否(status为Done时返回) | PDF页面总数 |
| filesize | 文件大小 | integer | 否(status为Done时返回) | 输出文件大小 |
| reason | 失败原因 | string | 否(status为Failed时可能返回) | 转换失败的原因 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"token":"YOUR_CREDENTIAL",
"result":
{
"progress":0.02,
"status":"Doing"
}
}
{
"code":10000,
"msg":"",
"token":"YOUR_CREDENTIAL",
"result":
{
"status":"Done",
"fileurl":"https://file.duhuitech.com/o/xxx/xxx.docx",
"filesize":17747,
"count":1
}
}
返回示例(失败状态):
{
"code":40000,
"msg":"No such token"
}
备注:
- 文件url方式支持文件大小 1500M。
- 最大转换时长:1小时,超过时间未完成则自动失败。
- 转换完成后,下载链接有效时间:1小时。
上述最后2项有延长需求请联系客服:

回调URL:
用途: 客户可以自行部署服务器,系统转换结束后会调用客户提供的回调URL,直接发送转换结果,从而无需再轮询查询结果。
当设置了回调URL,转换结束后(无论成功失败),系统都会尝试调用该URL,具体如下:
以POST方式调用该URL,Header头中Content-Type: application/json
Body为JSON格式,内容和查询结果的结果相同,例如:
{
"code":10000,
"msg":"",
"token":"YOUR_CREDENTIAL",
"result":
{
"status":"Done",
"fileurl":"https://file.duhuitech.com/o/xxx/xxx.docx",
"filesize":17747,
"count":1
}
}
服务端收到该POST后需在10秒内返回HTTP STATUS CODE 200,视为调用成功,否则系统认为回调失败,会再次尝试。规则如下:
系统共计最多会调用3次回调URL,如果第一次失败,则等待3秒后尝试第二次,如果第二次失败,则等待5秒后尝试第三次,如果第三次失败,则不再尝试。
回调URL超时时间10秒。
关于下载转换后的文件需支持302跳转
接口返回的下载地址(如 fileurl / fileurls)会经 HTTP 302 跳转到实际文件。浏览器会自动跟随。
以下方式默认会跟随跳转,一般无需额外配置:
wget、Python requests / urllib、Node.js axios / got / fetch、Java OkHttp / HttpURLConnection、Go net/http、C# HttpClient、PHP file_get_contents、Objective-C / Swift NSURLSession / URLSession(含 Alamofire)
少数默认不跟随,需手动打开:
curl:加-L,如curl -L -o out.bin "下载地址"- Java
java.net.http.HttpClient:设置.followRedirects(HttpClient.Redirect.NORMAL) - PHP
curl扩展:设置CURLOPT_FOLLOWLOCATION => true
若只拿到 302 响应、本地没有文件内容,多半是未跟随跳转,按上面说明打开对应选项即可。
阿里云独有部分:
支持从阿里云OSS内网直接下载文件,目前支持的是上海地区的阿里云OSS内网:
oss-cn-shanghai-internal.aliyuncs.com
文档转换GET或多张图片转换POST里的url地址包含上述域名则自动支持
错误码表:
返回的code如果是10000,代表成功,其余是失败
| JSON里返回的code | 错误信息 |
|---|---|
| 40000 | 通用错误 |
| 40001 | 参数错误 |
| 40002 | 参数不符合规范 |
| 40500 | 同步调用超时 |
附录:阿里签名方式
参考链接:
https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/use-cases/call-apis
在调用API商品时,首先您需要了解采用哪种API认证方式,云市场API商品的认证方式主要有以下两种方式。两种方式可同时使用,您可以根据不同情况来选择。
简单身份认证(AppCode)
签名认证
简单身份认证(AppCode)
简单认证(AppCode)调用API,有两种方式,一种是将AppCode放在Header中进行调用,一种是将AppCode放在Query参数中进行调用。
方式一:将AppCode放在Header中
在请求Header中添加一个Authorization参数。
Authorization字段的值的格式为APPCODE + 半角空格 +APPCODE值。格式如下:
Authorization:APPCODE AppCode值
示例:
Authorization:APPCODE YOUR_CREDENTIAL
方式二:将AppCode放在Query中
在请求Query中添加AppCode参数(同时支持appcode , appCode , APPCODE , APPCode四种写法)。
AppCode参数的值为AppCode的值。
示例:
http://www.aliyum.com?AppCode=YOUR_CREDENTIAL
签名认证
比较复杂,推荐用阿里自己的SDK来调用,参考链接:https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/user-guide/use-digest-authentication-to-call-an-api
附录:旧v1接口
文档转换GET_v1
将单个PDF下载链接转换为目标格式,type是目标文档的type,比如要把pdf转为docx,type就是docx
请求参数:
| 参数 | 类型 | 备注 | 是否必须发送 |
|---|---|---|---|
| url | string | 文件url,必须http(s),ftp开头,需要URL Encoding | 是 |
| type | string | 小写,转出文件类型,例如docx | 是 |
| ocr | int | 对于扫描的PDF,是否做OCR: 0:不做OCR 1:自动OCR 2:强力OCR:针对有些加密或编码不正确导致的乱码,叠字,未OCR文字等问题 默认1,建议:不需要OCR选择0,一般情况选择1,出现乱码等问题选择2 |
否 |
| language | int | OCR识别语言选项,默认2简体中文: 1:英语 2:简体中文 3:繁体中文 4:法语 5:德语 6:意大利语 7:俄语 8:日文 9:韩文 10:西班牙语 11:葡萄牙语 12:丹麦语 13:荷兰语 14:芬兰语 15:挪威语 16:瑞典语 17:土耳其语 |
否 |
| excelonesheet | int | 如果转为Excel文件,默认0:PDF特定页数以内为一个工作表,否则每页一个工作表;1:一个工作表(如果PDF页数太多,有失败可能);2:每页一个工作表 | 否 |
| wordnoimage | int | 如果转为Word文件,默认0:需要图片;1:不需要图片 | 否 |
| wordabsolutelayout | int | 如果转为Word文件,默认0:流式布局;1:绝对布局(位置精准,浏览方便,但是编辑方式非流式不利于编辑) | 否 |
| textnoformat | int | 如果转为Txt文本,默认0: 保持原有布局,1:无需布局 | 否 |
| textperpage | int | 如果转为Txt文本,默认0:所有页转为单个txt文件,1:每一页转为一个txt文件,并且打包为一个zip包 | 否 |
| imagepdfocroption | int | 如果是扫描版PDF,根据ocr参数做ocr。 如果是非扫描版PDF,根据该值做ocr。 默认0:不启用; 1-2:启用,非扫描版对应ocr:1-2 100:启用,非扫描版不做ocr 比如ocr传2,imagepdfocroption传1 那么:扫描版PDF用ocr:2做ocr 非扫描版用ocr:1做ocr |
否 |
| password | string | PDF文件的密码,没有密码可以不传或传空 | 否 |
| pageindexes | string | 要转换的PDF页数。非CAD文件不传时转换全部页。可传列表或范围,例如:1,3,5-7。输出 DWG/DXF 时不传则转换第 1 页,需要全部页时可传 1- | 否 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,需要URL Encoding,详细见 回调URL | 否 |
请求示例:
https://pdf2doc.market.alicloudapi.com/v1/convert?url=https%3a%2f%2fxxx%2fxxx.pdf&type=docx&ocr=0
将所在url地址的pdf文件转为docx,type就是需转换为的文件类型,这个例子里就是docx
输出文件类型type可取值: doc, docx, pptx, xlsx, rtf, txt, ofd, md, dwg, dxf
必须签名才能调用成功,签名见阿里签名规则:
https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/use-cases/call-apis
返回数据结构:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| code | number | 是 | 10000:请求成功 |
| msg | string | 是 | |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| token | string | 是 | 用于查询结果接口 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"result":{"token":"YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code":40001,
"msg":"ParmNotRight"
}
文档转换POST_v1
直接将单个文档POST到服务器,大小限制8M
请求参数:
| 参数 | 类型 | 备注 | 是否必须发送 |
|---|---|---|---|
| file | file | 要转换的文档,Content-Type使用multipart/form-data,最大8M | 是 |
| type | string | 小写,需转换为的文件类型,例如docx | 是 |
| ocr | int | 对于扫描的PDF,是否做OCR: 0:不做OCR 1:自动OCR 2:强力OCR:针对有些加密或编码不正确导致的乱码,叠字,未OCR文字等问题 默认1,建议:不需要OCR选择0,一般情况选择1,出现乱码等问题选择2 |
否 |
| language | int | OCR识别语言选项,默认2简体中文,值同GET方法 | 否 |
| excelonesheet | int | 如果转为Excel文件,默认0:PDF特定页数以内为一个工作表,否则每页一个工作表;1:一个工作表(如果PDF页数太多,有失败可能);2:每页一个工作表 | 否 |
| wordnoimage | int | 如果转为Word文件,默认0:需要图片;1:不需要图片 | 否 |
| wordabsolutelayout | int | 如果转为Word文件,默认0:流式布局;1:绝对布局(位置精准,浏览方便,但是编辑方式非流式不利于编辑) | 否 |
| textnoformat | int | 如果转为Txt文本,默认0: 保持原有布局,1:无需布局 | 否 |
| textperpage | int | 如果转为Txt文本,默认0:所有页转为单个txt文件,1:每一页转为一个txt文件,并且打包为一个zip包 | 否 |
| imagepdfocroption | int | 如果是扫描版PDF,根据ocr参数做ocr。 如果是非扫描版PDF,根据该值做ocr。 默认0:不启用; 1-2:启用,非扫描版对应ocr:1-2 100:启用,非扫描版不做ocr 比如ocr传2,imagepdfocroption传1 那么:扫描版PDF用ocr:2做ocr 非扫描版用ocr:1做ocr |
否 |
| password | string | PDF文件的密码,没有密码可以不传或传空 | 否 |
| pageindexes | string | 要转换的PDF页数。非CAD文件不传时转换全部页。可传列表或范围,例如:1,3,5-7。输出 DWG/DXF 时不传则转换第 1 页,需要全部页时可传 1- | 否 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,详细见 回调URL | 否 |
请求示例:
https://pdf2doc.market.alicloudapi.com/v1/convert
Header中的Content-Type必须是multipart/form-data
输出文件类型type可取值:doc, docx, pptx, xlsx, rtf, txt, ofd, md, dwg, dxf
必须签名才能调用成功,签名见阿里签名规则:
https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/use-cases/call-apis
返回数据结构:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| code | number | 是 | 10000:请求成功 |
| msg | string | 是 | |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| token | string | 是 | 用于查询结果接口 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"result":{"token":"YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code":40001,
"msg":"ParmNotRight"
}
概述
1种转换方式
- 单文档转换,文档是一个下载链接,用HTTP GET方式,见:文档转换GET
基本用法
由于转换需要时间,文件越大页数越多,转换越久,故系统采用异步的方式获得转换结果。调用转换接口后会获得token,随后有2种方式查询转换结果:
API调用需要签名,详细见文档附录:百度签名
文档转换GET
将单个PDF下载链接转换为其他格式,type是目标文档的type,比如要把pdf转为docx,type就是docx
请求参数:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| url | string | 文件url,必须http(s),ftp开头,需要URL Encoding | 是 |
| type | string | 小写,需转换为的文件类型,例如docx | 是 |
| ocr | int | 对于扫描的PDF,是否做OCR,1:做OCR,0:不做OCR。默认1 | 否 |
| language | int | OCR识别语言选项,默认2简体中文: 1:英语 2:简体中文 3:繁体中文 4:法语 5:德语 6:意大利语 7:俄语 8:日文 9:韩文 10:西班牙语 11:葡萄牙语 12:丹麦语 13:荷兰语 14:芬兰语 15:挪威语 16:瑞典语 17:土耳其语 |
否 |
| excelonesheet | int | 如果转为Excel文件,默认0:PDF特定页数以内为一个工作表,否则每页一个工作表;1:一个工作表(如果PDF页数太多,有失败可能);2:每页一个工作表 | 否 |
| wordnoimage | int | 如果转为Word文件,默认0:需要图片;1:不需要图片 | 否 |
| password | string | PDF文件的密码,没有密码可以不传或传空 | 否 |
| pageindexes | string | 要转换的PDF页数。非CAD文件不传时转换全部页。可传列表或范围,例如:1,3,5-7。输出 DWG/DXF 时不传则转换第 1 页,需要全部页时可传 1- | 否 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,需要URL Encoding,详细见回调URL | 否 |
请求示例:
https://pdf2doc.api.bdymkt.com/v1/convert?url=https%3a%2f%2fxxx%2fxxx.pdf&type=docx&ocr=0
将所在url地址的pdf文件转为docx,type就是需转换为的文件类型,这个例子里就是docx
支持转换为以下文件格式:
| 类型 | 扩展名(type取值) |
|---|---|
| 微软Office文档 | doc, docx, pptx, xlsx |
| 开放版式文档 | ofd |
| 文本文件 | txt, rtf |
| Markdown | md |
| CAD 图纸 | dwg, dxf |
PDF 转 DWG/DXF 支持单页或多页,仅适用于包含线条或文字等矢量内容的 PDF。扫描件和纯图片页不会自动矢量化。OCR、纠偏、背景清理等图片识别参数不生效。所选页全部无矢量内容时会明确返回失败,而不是生成仅引用临时图片的 CAD 文件;多页中仅部分页无矢量时,这些页生成空 Layout,其余页正常转换。
单页结果在模型空间。多页为单个 CAD 文件,每个 PDF 页对应一个 Layout(图纸空间),名称如 page-1。多页 DXF 以 zip 包返回(内含一个 dxf 文件);单页 DXF 和 DWG 直接返回对应文件。
OCR 参数 ocr 可取值 0、1。
必须签名才能调用成功,签名见百度签名规则:
https://cloud.baidu.com/doc/APIGW/s/Ljx2m1qc4
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| token | string | 是 | 用于query接口 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"result":{"token":"YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code":40001,
"msg":"ParmNotRight"
}
查询 QUERY
请求参数:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| token | string | 是 |
请求示例:
https://api.duhuitech.com/q?token=YOUR_TOKEN
无需签名,无调用次数限制
由于转换需要时间,文件越大页数越多,转换越久,故需要轮询查询接口来获得结果。查询频率可以是1s一次,也可以更长一些。查询后先看status,如果是Done或Failed,则转换结束,停止轮询。如果是Doing或Pending,则继续轮询。
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| token | string | 是 | 请求的token | |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| status | 状态 | string | 是 | Pending:还未开始 Doing:正在转换 Done:转换成功 Failed:转换失败 |
| progress | 进度 | number(0.00 - 1.00) | 否(status为Doing时返回) | 比如0.88表示88% |
| fileurl | 文件地址 | string | 否(status为Done时返回) | 转换出来的文件地址,http和https都支持 |
| reason | 失败原因 | string | 否(status为Failed时可能返回) | 转换失败的原因 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"token":"YOUR_CREDENTIAL",
"result":
{
"progress":0.02,
"status":"Doing"
}
}
{
"code":10000,
"msg":"",
"token":"YOUR_CREDENTIAL",
"result":
{
"status":"Done",
"fileurl":"https://file.duhuitech.com/o/xxx/xxx.docx"
}
}
返回示例(失败状态):
{
"code":40000,
"msg":"No such token"
}
注意:
- 上传文件大小不能超过1500M。
- 最大转换时长:1小时,超过时间未完成则自动失败。
- 转换完成后,下载链接有效时间:1小时。
回调URL:
用途:客户可以自行部署服务器,系统转换结束后会调用客户提供的回调URL,直接发送转换结果,从而无需再轮询Query。
当设置了回调URL,转换结束后(无论成功失败),系统都会尝试调用该URL,具体如下:
以POST方式调用该URL,Header头中Content-Type: application/json
Body为JSON格式,内容和Query的结果相同,例如:
{"code":10000,"msg":"","token":"YOUR_CREDENTIAL","result":{"status":"Done","fileurl":"https://file.duhuitech.com/o/xxx/xxx.docx"}}
服务端收到该POST后需在10秒内返回HTTP STATUS CODE 200,视为调用成功,否则系统认为回调失败,会再次尝试。规则如下:
系统共计最多会调用3次回调URL,如果第一次失败,则等待3秒后尝试第二次,如果第二次失败,则等待5秒后尝试第三次,如果第三次失败,则不再尝试。
回调URL超时时间10秒。
关于下载转换后的文件需支持302跳转
接口返回的下载地址(如 fileurl / fileurls)会经 HTTP 302 跳转到实际文件。浏览器会自动跟随。
以下方式默认会跟随跳转,一般无需额外配置:
wget、Python requests / urllib、Node.js axios / got / fetch、Java OkHttp / HttpURLConnection、Go net/http、C# HttpClient、PHP file_get_contents、Objective-C / Swift NSURLSession / URLSession(含 Alamofire)
少数默认不跟随,需手动打开:
curl:加-L,如curl -L -o out.bin "下载地址"- Java
java.net.http.HttpClient:设置.followRedirects(HttpClient.Redirect.NORMAL) - PHP
curl扩展:设置CURLOPT_FOLLOWLOCATION => true
若只拿到 302 响应、本地没有文件内容,多半是未跟随跳转,按上面说明打开对应选项即可。
错误码表:
| JSON里返回的code | 错误信息 |
|---|---|
| 40000 | 通用错误 |
| 40001 | 参数错误 |
| 40002 | 参数不符合规范 |
附录:百度签名方式
参考链接:
https://cloud.baidu.com/doc/APIGW/s/Ljx2m1qc4
在调用API商品时,首先您需要了解采用哪种API认证方式,云市场API商品的认证方式主要有以下两种方式。两种方式可同时使用,您可以根据不同情况来选择。
- 简单身份认证(AppCode)
- 签名认证
简单身份认证(AppCode)
简单认证(AppCode)调用API,将AppCode放在Header中
在请求Header中添加一个X-Bce-Signature参数。
示例:
X-Bce-Signature: AppCode/YOUR_APPCODE
签名认证
比较复杂,推荐用百度自己的SDK来调用,参考链接:https://cloud.baidu.com/doc/Reference/s/njwvz1yfu
概述
2种转换方式
基本用法
由于转换需要时间,文件越大页数越多,转换越久,故系统采用异步的方式获得转换结果。调用转换接口后会获得token,随后有2种方式查询转换结果:
API调用需要签名,详细见华为官方签名:
https://support.huaweicloud.com/usermanual-apig/apig-ug-0011.html
文档转换GET
将单个PDF下载链接转换为其他格式,type是目标文档的type,比如要把pdf转为docx,type就是docx
请求参数:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| url | string | 文件url,必须http(s),ftp开头,需要URL Encoding | 是 |
| type | string | 小写,需转换为的文件类型,例如docx | 是 |
| ocr | int | 对于扫描的PDF,是否做OCR,1:做OCR,0:不做OCR。默认1 | 否 |
| language | int | OCR识别语言选项,默认2简体中文: 1:英语 2:简体中文 3:繁体中文 4:法语 5:德语 6:意大利语 7:俄语 8:日文 9:韩文 10:西班牙语 11:葡萄牙语 12:丹麦语 13:荷兰语 14:芬兰语 15:挪威语 16:瑞典语 17:土耳其语 |
否 |
| excelonesheet | int | 如果转为Excel文件,默认0:PDF特定页数以内为一个工作表,否则每页一个工作表;1:一个工作表(如果PDF页数太多,有失败可能);2:每页一个工作表 | 否 |
| pageindexes | string | 要转换的PDF页数。非CAD文件不传时转换全部页。可传列表或范围,例如:1,3,5-7。输出 DWG/DXF 时不传则转换第 1 页,需要全部页时可传 1- | 否 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,需要URL Encoding,详细见回调URL | 否 |
请求示例:
http://pdf2doc.apistore.huaweicloud.com/v1/convert?url=https%3a%2f%2fxxx%2fxxx.pdf&type=docx&ocr=0
将所在url地址的pdf文件转为docx,type就是需转换为的文件类型,这个例子里就是docx
支持转换为以下文件格式:
| 类型 | 扩展名(type取值) |
|---|---|
| 微软Office文档 | doc, docx, pptx, xlsx |
| 开放版式文档 | ofd |
| 文本文件 | txt, rtf |
| Markdown | md |
| CAD 图纸 | dwg, dxf |
PDF 转 DWG/DXF 支持单页或多页,仅适用于包含线条或文字等矢量内容的 PDF。扫描件和纯图片页不会自动矢量化。OCR、纠偏、背景清理等图片识别参数不生效。所选页全部无矢量内容时会明确返回失败,而不是生成仅引用临时图片的 CAD 文件;多页中仅部分页无矢量时,这些页生成空 Layout,其余页正常转换。
单页结果在模型空间。多页为单个 CAD 文件,每个 PDF 页对应一个 Layout(图纸空间),名称如 page-1。多页 DXF 以 zip 包返回(内含一个 dxf 文件);单页 DXF 和 DWG 直接返回对应文件。
OCR 参数 ocr 可取值 0、1。
必须签名才能调用成功,签名见华为签名规则:
https://support.huaweicloud.com/usermanual-apig/apig-ug-0011.html
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| token | string | 是 | 用于query接口 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"result":{"token":"YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code":40001,
"msg":"ParmNotRight"
}
文档转换POST
直接将单个文档POST到服务器,大小限制12M
请求参数:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| file | file | 要转换的文档,Content-Type使用multipart/form-data,最大12M | 是 |
| type | string | 小写,需转换为的文件类型,例如docx | 是 |
| ocr | int | 对于扫描的PDF,是否做OCR,1:做OCR,0:不做OCR。默认1 | 否 |
| language | int | OCR识别语言选项,默认2简体中文,值同GET方法 | 否 |
| excelonesheet | int | 如果转为Excel文件,默认0:PDF特定页数以内为一个工作表,否则每页一个工作表;1:一个工作表(如果PDF页数太多,有失败可能);2:每页一个工作表 | 否 |
| pageindexes | string | 要转换的PDF页数。非CAD文件不传时转换全部页。可传列表或范围,例如:1,3,5-7。输出 DWG/DXF 时不传则转换第 1 页,需要全部页时可传 1- | 否 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,详细见回调URL | 否 |
请求示例:
http://pdf2doc.apistore.huaweicloud.com/v1/convert
Header中的Content-Type必须是multipart/form-data
支持转换为以下文件格式:
| 类型 | 扩展名(type取值) |
|---|---|
| 微软Office文档 | doc, docx, pptx, xlsx |
| 开放版式文档 | ofd |
| 文本文件 | txt, rtf |
| Markdown | md |
| CAD 图纸 | dwg, dxf |
PDF 转 DWG/DXF 支持单页或多页,仅适用于包含线条或文字等矢量内容的 PDF。扫描件和纯图片页不会自动矢量化。OCR、纠偏、背景清理等图片识别参数不生效。所选页全部无矢量内容时会明确返回失败,而不是生成仅引用临时图片的 CAD 文件;多页中仅部分页无矢量时,这些页生成空 Layout,其余页正常转换。
单页结果在模型空间。多页为单个 CAD 文件,每个 PDF 页对应一个 Layout(图纸空间),名称如 page-1。多页 DXF 以 zip 包返回(内含一个 dxf 文件);单页 DXF 和 DWG 直接返回对应文件。
OCR 参数 ocr 可取值 0、1。
必须签名才能调用成功,签名见华为签名规则:
https://support.huaweicloud.com/usermanual-apig/apig-ug-0011.html
curl示例:
curl -v -X POST \
http://pdf2doc.hw.duhuitech.com/v1/convert \
-H "X-Apig-AppCode: YOUR_APPCODE" \
-H 'content-type: multipart/form-data' \
-F file=@/xxx/本地文件路径.pdf \
-F type=docx \
-F outfilename=example \
-F ocr=1
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| token | string | 是 | 用于query接口 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"result":{"token":"YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code":40001,
"msg":"ParmNotRight"
}
查询 QUERY
请求参数:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| token | string | 是 |
请求示例:
https://api.duhuitech.com/q?token=YOUR_TOKEN
无需签名,无调用次数限制
由于转换需要时间,文件越大页数越多,转换越久,故需要轮询查询接口来获得结果。查询频率可以是1s一次,也可以更长一些。查询后先看status,如果是Done或Failed,则转换结束,停止轮询。如果是Doing或Pending,则继续轮询。
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| token | string | 是 | 请求的token | |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| status | 状态 | string | 是 | Pending:还未开始 Doing:正在转换 Done:转换成功 Failed:转换失败 |
| progress | 进度 | number(0.00 - 1.00) | 否(status为Doing时返回) | 比如0.88表示88% |
| fileurl | 文件地址 | string | 否(status为Done时返回) | 转换出来的文件地址,http和https都支持 |
| reason | 失败原因 | string | 否(status为Failed时可能返回) | 转换失败的原因 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"token":"YOUR_CREDENTIAL",
"result":
{
"progress":0.02,
"status":"Doing"
}
}
{
"code":10000,
"msg":"",
"token":"YOUR_CREDENTIAL",
"result":
{
"status":"Done",
"fileurl":"https://file.duhuitech.com/o/xxx/xxx.docx"
}
}
返回示例(失败状态):
{
"code":40000,
"msg":"No such token"
}
注意:
- 上传文件大小不能超过1500M。
- 最大转换时长:1小时,超过时间未完成则自动失败。
- 转换完成后,下载链接有效时间:1小时。
回调URL:
用途:客户可以自行部署服务器,系统转换结束后会调用客户提供的回调URL,直接发送转换结果,从而无需再轮询Query。
当设置了回调URL,转换结束后(无论成功失败),系统都会尝试调用该URL,具体如下:
以POST方式调用该URL,Header头中Content-Type: application/json
Body为JSON格式,内容和Query的结果相同,例如:
{"code":10000,"msg":"","token":"YOUR_CREDENTIAL","result":{"status":"Done","fileurl":"https://file.duhuitech.com/o/xxx/xxx.docx"}}
服务端收到该POST后需在10秒内返回HTTP STATUS CODE 200,视为调用成功,否则系统认为回调失败,会再次尝试。规则如下:
系统共计最多会调用3次回调URL,如果第一次失败,则等待3秒后尝试第二次,如果第二次失败,则等待5秒后尝试第三次,如果第三次失败,则不再尝试。
回调URL超时时间10秒。
关于下载转换后的文件需支持302跳转
接口返回的下载地址(如 fileurl / fileurls)会经 HTTP 302 跳转到实际文件。浏览器会自动跟随。
以下方式默认会跟随跳转,一般无需额外配置:
wget、Python requests / urllib、Node.js axios / got / fetch、Java OkHttp / HttpURLConnection、Go net/http、C# HttpClient、PHP file_get_contents、Objective-C / Swift NSURLSession / URLSession(含 Alamofire)
少数默认不跟随,需手动打开:
curl:加-L,如curl -L -o out.bin "下载地址"- Java
java.net.http.HttpClient:设置.followRedirects(HttpClient.Redirect.NORMAL) - PHP
curl扩展:设置CURLOPT_FOLLOWLOCATION => true
若只拿到 302 响应、本地没有文件内容,多半是未跟随跳转,按上面说明打开对应选项即可。
错误码表:
| JSON里返回的code | 错误信息 |
|---|---|
| 40000 | 通用错误 |
| 40001 | 参数错误 |
| 40002 | 参数不符合规范 |
概述
2种转换方式
基本用法
由于转换需要时间,文件越大页数越多,转换越久,故系统采用异步的方式获得转换结果。调用转换接口后会获得token,随后有2种方式查询转换结果:
API调用需要签名,详细见文档附录:腾讯签名规则
由于腾讯云网关迁移的关系,故新老用户拿到的 SecretID 不同,老用户SecretID以AKID开头的,请使用V1域名和签名。新用户使用v2域名和签名。注意:v1和v2调用api的域名不一样。
文档转换GET
将单个PDF下载链接转换为其他格式,type是目标文档的type,比如要把pdf转为docx,type就是docx
请求参数:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| url | string | 文件url,必须http(s),ftp开头,需要URL Encoding | 是 |
| type | string | 小写,需转换为的文件类型,例如docx | 是 |
| language | int | OCR识别语言选项,默认2简体中文: 1:英语 2:简体中文 3:繁体中文 4:法语 5:德语 6:意大利语 7:俄语 8:日文 9:韩文 10:西班牙语 11:葡萄牙语 12:丹麦语 13:荷兰语 14:芬兰语 15:挪威语 16:瑞典语 17:土耳其语 |
否 |
| excelonesheet | int | 如果转为Excel文件,默认0:PDF特定页数以内为一个工作表,否则每页一个工作表;1:一个工作表(如果PDF页数太多,有失败可能);2:每页一个工作表 | 否 |
| wordnoimage | int | 如果转为Word文件,默认0:需要图片;1:不需要图片 | 否 |
| wordabsolutelayout | int | 如果转为Word文件,默认0:流式布局;1:绝对布局(位置精准,浏览方便,但是编辑方式非流式不利于编辑) | 否 |
| forceocr | int | 本产品默认就有OCR功能,但是针对有些加密或编码不正确导致的结果乱码或白页,本参数提供强力OCR功能。 0:不做强力OCR(默认) 1:强力OCR -1,不做OCR |
否 |
| imagepdfocroption | int | 如果是扫描版PDF,根据forceocr参数做ocr。 如果是非扫描版PDF,根据该值做ocr。 默认0:此参数不生效; 1-2:启用,非扫描版对应forceocr:0-1 100:启用,非扫描版不做ocr 比如forceocr传1,imagepdfocroption传1 那么:扫描版PDF用forceocr:1做ocr 非扫描版用forceocr:0做ocr |
否 |
| password | string | PDF文件的密码,没有密码可以不传或传空 | 否 |
| pageindexes | string | 要转换的PDF页数。非CAD文件不传时转换全部页。可传列表或范围,例如:1,3,5-7。输出 DWG/DXF 时不传则转换第 1 页,需要全部页时可传 1- | 否 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,需要URL Encoding,详细见回调URL | 否 |
请求示例:
v2域名:
https://ap-shanghai.cloudmarket-apigw.com/service-igmx7z3h/v1/pdf2doc?url=https%3a%2f%2fxxx%2fxxx.pdf&type=docx
v1域名:
https://service-igmx7z3h-1256652084.sh.apigw.tencentcs.com/release/v1/pdf2doc?url=https%3a%2f%2fxxx%2fxxx.pdf&type=docx
将所在url地址的pdf文件转为docx,type就是需转换为的文件类型,这个例子里就是docx
支持转换为以下文件格式:
| 类型 | 扩展名(type取值) |
|---|---|
| 微软Office文档 | doc, docx, pptx, xlsx |
| 开放版式文档 | ofd |
| 文本文件 | txt, rtf |
| Markdown | md |
| CAD 图纸 | dwg, dxf |
PDF 转 DWG/DXF 支持单页或多页,仅适用于包含线条或文字等矢量内容的 PDF。扫描件和纯图片页不会自动矢量化。OCR、纠偏、背景清理等图片识别参数不生效。所选页全部无矢量内容时会明确返回失败,而不是生成仅引用临时图片的 CAD 文件;多页中仅部分页无矢量时,这些页生成空 Layout,其余页正常转换。
单页结果在模型空间。多页为单个 CAD 文件,每个 PDF 页对应一个 Layout(图纸空间),名称如 page-1。多页 DXF 以 zip 包返回(内含一个 dxf 文件);单页 DXF 和 DWG 直接返回对应文件。
ocr可取值 0、1。
必须签名才能调用成功,签名见腾讯签名规则:
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| token | string | 是 | 用于query接口 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"result":{"token":"YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code":40001,
"msg":"ParmNotRight"
}
文档转换POST
直接将单个文档POST到服务器,大小限制10M
请求参数:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| file | file | 要转换的文档,Content-Type使用multipart/form-data,最大10M | 是 |
| type | string | 小写,需转换为的文件类型,例如docx | 是 |
| language | int | OCR识别语言选项,默认2简体中文,值同GET方法 | 否 |
| excelonesheet | int | 如果转为Excel文件,默认0:PDF特定页数以内为一个工作表,否则每页一个工作表;1:一个工作表(如果PDF页数太多,有失败可能);2:每页一个工作表 | 否 |
| wordnoimage | int | 如果转为Word文件,默认0:需要图片;1:不需要图片 | 否 |
| wordabsolutelayout | int | 如果转为Word文件,默认0:流式布局;1:绝对布局(位置精准,浏览方便,但是编辑方式非流式不利于编辑) | 否 |
| forceocr | int | 是否强力OCR,值同GET方法 | 否 |
| imagepdfocroption | int | 同GET方法 | 否 |
| password | string | PDF文件的密码,没有密码可以不传或传空 | 否 |
| pageindexes | string | 要转换的PDF页数。非CAD文件不传时转换全部页。可传列表或范围,例如:1,3,5-7。输出 DWG/DXF 时不传则转换第 1 页,需要全部页时可传 1- | 否 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,详细见回调URL | 否 |
请求示例:
v2域名:
https://ap-shanghai.cloudmarket-apigw.com/service-igmx7z3h/v1/pdf2doc
v1域名:
https://service-igmx7z3h-1256652084.sh.apigw.tencentcs.com/release/v1/pdf2doc
Header中的Content-Type必须是multipart/form-data
支持转换为以下文件格式:
| 类型 | 扩展名(type取值) |
|---|---|
| 微软Office文档 | doc, docx, pptx, xlsx |
| 开放版式文档 | ofd |
| 文本文件 | txt, rtf |
| Markdown | md |
| CAD 图纸 | dwg, dxf |
PDF 转 DWG/DXF 支持单页或多页,仅适用于包含线条或文字等矢量内容的 PDF。扫描件和纯图片页不会自动矢量化。OCR、纠偏、背景清理等图片识别参数不生效。所选页全部无矢量内容时会明确返回失败,而不是生成仅引用临时图片的 CAD 文件;多页中仅部分页无矢量时,这些页生成空 Layout,其余页正常转换。
单页结果在模型空间。多页为单个 CAD 文件,每个 PDF 页对应一个 Layout(图纸空间),名称如 page-1。多页 DXF 以 zip 包返回(内含一个 dxf 文件);单页 DXF 和 DWG 直接返回对应文件。
ocr可取值 0、1。
必须签名才能调用成功,签名见腾讯签名规则:
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| token | string | 是 | 用于query接口 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"result":{"token":"YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code":40001,
"msg":"ParmNotRight"
}
查询 QUERY
请求参数:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| token | string | 是 |
请求示例:
https://api.duhuitech.com/q?token=YOUR_TOKEN
无需签名,无调用次数限制
由于转换需要时间,文件越大页数越多,转换越久,故需要轮询查询接口来获得结果。查询频率可以是1s一次,也可以更长一些。查询后先看status,如果是Done或Failed,则转换结束,停止轮询。如果是Doing或Pending,则继续轮询。
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| token | string | 是 | 请求的token | |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| status | 状态 | string | 是 | Pending:还未开始 Doing:正在转换 Done:转换成功 Failed:转换失败 |
| progress | 进度 | number(0.00 - 1.00) | 否(status为Doing时返回) | 比如0.88表示88% |
| fileurl | 文件地址 | string | 否(status为Done时返回) | 转换出来的文件地址,http和https都支持 |
| reason | 失败原因 | string | 否(status为Failed时可能返回) | 转换失败的原因 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"token":"YOUR_CREDENTIAL",
"result":
{
"progress":0.02,
"status":"Doing"
}
}
{
"code":10000,
"msg":"",
"token":"YOUR_CREDENTIAL",
"result":
{
"status":"Done",
"fileurl":"https://file.duhuitech.com/o/xxx/xxx.docx"
}
}
返回示例(失败状态):
{
"code":40000,
"msg":"No such token"
}
注意:
- 上传文件大小不能超过1500M。
- 最大转换时长:1小时,超过时间未完成则自动失败。
- 转换完成后,下载链接有效时间:1小时。
回调URL:
用途:客户可以自行部署服务器,系统转换结束后会调用客户提供的回调URL,直接发送转换结果,从而无需再轮询Query。
当设置了回调URL,转换结束后(无论成功失败),系统都会尝试调用该URL,具体如下:
以POST方式调用该URL,Header头中Content-Type: application/json
Body为JSON格式,内容和Query的结果相同,例如:
{"code":10000,"msg":"","token":"YOUR_CREDENTIAL","result":{"status":"Done","fileurl":"https://file.duhuitech.com/o/xxx/xxx.docx"}}
服务端收到该POST后需在10秒内返回HTTP STATUS CODE 200,视为调用成功,否则系统认为回调失败,会再次尝试。规则如下:
系统共计最多会调用3次回调URL,如果第一次失败,则等待3秒后尝试第二次,如果第二次失败,则等待5秒后尝试第三次,如果第三次失败,则不再尝试。
回调URL超时时间10秒。
关于下载转换后的文件需支持302跳转
接口返回的下载地址(如 fileurl / fileurls)会经 HTTP 302 跳转到实际文件。浏览器会自动跟随。
以下方式默认会跟随跳转,一般无需额外配置:
wget、Python requests / urllib、Node.js axios / got / fetch、Java OkHttp / HttpURLConnection、Go net/http、C# HttpClient、PHP file_get_contents、Objective-C / Swift NSURLSession / URLSession(含 Alamofire)
少数默认不跟随,需手动打开:
curl:加-L,如curl -L -o out.bin "下载地址"- Java
java.net.http.HttpClient:设置.followRedirects(HttpClient.Redirect.NORMAL) - PHP
curl扩展:设置CURLOPT_FOLLOWLOCATION => true
若只拿到 302 响应、本地没有文件内容,多半是未跟随跳转,按上面说明打开对应选项即可。
错误码表:
| JSON里返回的code | 错误信息 |
|---|---|
| 40000 | 通用错误 |
| 40001 | 参数错误 |
| 40002 | 参数不符合规范 |
附录:腾讯签名方式
腾讯云市场接口分V1和V2
新老用户拿到的 SecretID 不同,老用户SecretID以AKID开头的,请使用V1对应签名。新用户使用V2对应签名。新购用户都是V2签名。
V2签名:
https://cloud.tencent.com/document/product/306/57449
建议使用腾讯提供的各种语言的SDK,例如Java:
https://cloud.tencent.com/document/product/306/57449#Java
V1签名:
参考链接:
https://cloud.tencent.com/document/product/628/11782
建议使用腾讯提供的各种语言的SDK,例如Java:
