完整示例
本页提供一套最短可运行的 PDF 转 Word 同步请求示例,覆盖从 Public Key 复制到拿到 downloadUrl 下载结果的全部步骤。
示例目标:把本地的
sample.pdf通过同步接口转成 Word,并下载结果文件。
调用流程
请求说明
| 项目 | 值 |
|---|---|
| 请求地址(Global) | https://api-server.compdf.com/server/v2/process/pdf/convertType |
| 请求地址(中国大陆) | https://api-server.compdf.cn/server/v2/process/pdf/convertType |
| Auth Header | x-api-key: YOUR_PUBLIC_KEY |
| 请求方式 | POST |
| 传参方式 | multipart/form-data |
| 调用方式 | 同步 |
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
file | File | 是 | 待转换的 PDF 文件(同步接口仅支持 1 个文件,合并功能除外)。 |
parameter | String(JSON) | 否 | 功能参数,PDF→Word 的常用项见下方示例(如 outputFormat、pageRange)。 |
请求示例
bash
curl -X POST "https://api-server.compdf.com/server/v2/process/pdf/convertType" \
-H "x-api-key: YOUR_PUBLIC_KEY" \
-F "file=@./sample.pdf" \
-F 'parameter={"outputFormat":"docx","pageRange":"all"}'python
import requests
url = "https://api-server.compdf.com/server/v2/process/pdf/convertType"
headers = {"x-api-key": "YOUR_PUBLIC_KEY"}
files = {"file": open("sample.pdf", "rb")}
data = {"parameter": '{"outputFormat":"docx","pageRange":"all"}'}
resp = requests.post(url, headers=headers, files=files, data=data, timeout=120)
result = resp.json()
print(result)
if result.get("code") == "200" and result.get("data", {}).get("downloadUrl"):
download = requests.get(result["data"]["downloadUrl"], timeout=120)
open("sample.docx", "wb").write(download.content)java
OkHttpClient client = new OkHttpClient();
RequestBody body = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", "sample.pdf",
RequestBody.create(new File("sample.pdf"),
MediaType.parse("application/pdf")))
.addFormDataPart("parameter",
"{\"outputFormat\":\"docx\",\"pageRange\":\"all\"}")
.build();
Request request = new Request.Builder()
.url("https://api-server.compdf.com/server/v2/process/pdf/convertType")
.addHeader("x-api-key", "YOUR_PUBLIC_KEY")
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
System.out.println(response.body().string());
}javascript
import fs from 'node:fs'
import FormData from 'form-data'
import axios from 'axios'
const form = new FormData()
form.append('file', fs.createReadStream('./sample.pdf'))
form.append('parameter', JSON.stringify({ outputFormat: 'docx', pageRange: 'all' }))
const { data } = await axios.post(
'https://api-server.compdf.com/server/v2/process/pdf/convertType',
form,
{ headers: { 'x-api-key': 'YOUR_PUBLIC_KEY', ...form.getHeaders() }, timeout: 120_000 }
)
console.log(data)成功响应
json
{
"code": "200",
"msg": "success",
"data": {
"taskId": "9f1b3a2e8c0d4f7e9a1b2c3d4e5f6789",
"status": "TaskFinish",
"fileName": "sample.pdf",
"outputFileName": "sample.docx",
"downloadUrl": "https://download.compdf.com/xxxx/sample.docx",
"expireTime": "2026-05-09T08:00:00Z"
}
}字段简要:
| 字段 | 说明 |
|---|---|
code | 业务码,"200" 表示成功,其它详见错误码页。 |
data.taskId | 任务 ID,可用于事后查询或关闭任务。 |
data.status | 任务状态,TaskFinish 表示已完成。 |
data.downloadUrl | 结果文件下载地址,有有效期,请尽快下载。 |
data.expireTime | 下载链接过期时间(UTC)。 |
失败提醒
HTTP 200 ≠ 业务成功
HTTP 状态码 200 仅表示请求送达,业务结果以响应中的 code 字段为准。
code != "200"→ 请按msg/ 错误码 排查。- 鉴权失败常见为
401 / 403:确认x-api-key是否正确、是否启用、地区是否对应(compdf.com/compdf.cn)。 - 文件过大(默认 50MB)会触发
413。
下一步
- 想换其它格式?参见 API 工具列表。
- 大文件 / 批量场景:使用 请求模式说明 中的 异步 或 预签名 模式。
- 需要在任务回调通知:参见 Webhook 事件。