PDF翻译服务 API文档

这是一个PDF文件翻译服务,用户上传PDF文件并指定源语言和目标语言,系统会自动将PDF翻译成目标语言的PDF文件。

功能特性

  • 支持PDF文件上传
  • 支持使用远程PDF
  • 支持多种语言互译
  • 翻译后的PDF高保真还原
  • RESTful API接口

申请API Key

在使用API之前,您需要先申请API Key:

http://manage.ltranslate.cn/

API接口

1. 上传PDF文件

接口地址: POST http://ltranslate.cn/translate-pdf/api/v1/upload

请求参数:

参数名 类型 必填 说明
file File PDF文件(表单文件)
source-lang String 源语言代码(支持的语言列表
target-lang String 目标语言代码(支持的语言列表
apikey String 创建项目时生成的API Key
url String 创建项目时填写的网站域名

响应示例:

{
  "code": 200,
  "message": "文件上传成功,翻译任务已创建",
  "data": {
    "task_id": 123
  }
}

2. 远程下载PDF文件

接口地址: POST http://ltranslate.cn/translate-pdf/api/v1/remote-pdf

请求参数:

参数名 类型 必填 说明
source-lang String 源语言代码
target-lang String 目标语言代码
apikey String API密钥
pdf_url String 远程PDF文件的URL地址

请求示例:

curl -X POST "http://ltranslate.cn/translate-pdf/api/v1/remote-pdf" \
  -F "source-lang=en" \
  -F "target-lang=zh-cn" \
  -F "pdf_url=https://example.com/document.pdf" \
  -F "apikey=your-api-key"

成功响应:

{
  "code": 200,
  "message": "远程PDF文件下载成功,翻译任务已创建",
  "data": {
    "task_id": 12345
  }
}

错误响应:

{
  "code": 400,
  "message": "下载PDF文件失败: 网络错误"
}

3. 查询任务状态

接口地址: GET http://ltranslate.cn/translate-pdf/api/v1/task/{id}

请求头:

  • apikey: 用户API Key(必需)

成功响应示例:

{
  "code": 200,
  "message": "获取成功",
  "data": {
    "task_id": 123,
    "filename": "document.pdf",
    "status": 2,
    "source_lang": "zh-cn",
    "target_lang": "en",
    "create_time": 1703123456,
    "result": "http://ltranslate.cn/translate-pdf/uploads/document_translated_20231221123456.pdf"
  }
}

失败响应示例(HTTP 500):

{
  "code": 500,
  "message": "PDF转HTML失败: 转换超时",
  "data": {
    "task_id": 123,
    "filename": "document.pdf",
    "status": 3,
    "source_lang": "zh-cn",
    "target_lang": "en",
    "create_time": 1703123456
  }
}

状态说明:

  • 0: 等待中
  • 1: 进行中
  • 2: 转换成功
  • 3: 转换失败

4. 获取用户任务列表

接口地址: GET http://ltranslate.cn/translate-pdf/api/v1/tasks

请求头:

  • apikey: 用户API Key(必需)

请求参数:

参数名 类型 默认值 说明
page Integer 1 页码
page_size Integer 10 每页数量(最大100)

使用Web界面演示

启动服务后,访问以下地址打开Web演示界面:

访问地址: http://ltranslate.cn/assets/translate-pdf.html

Web界面功能:

  • 📁 文件上传:支持PDF文件拖拽上传
  • 🌍 语言选择:支持多种语言互译
  • 🔑 API Key配置:可配置和管理API密钥
  • 📊 实时进度:显示翻译处理进度
  • 📥 一键下载:完成后直接下载翻译结果

下载翻译结果

任务完成后,result字段会返回完整的下载URL,用户可以直接通过该URL下载翻译后的PDF文件。

示例下载:

curl -O http://ltranslate.cn/translate-pdf/uploads/document_translated_20231221123456.pdf

代码示例

# 上传PDF文件
curl -X POST "http://ltranslate.cn/translate-pdf/api/v1/upload" \
  -F "file=@document.pdf" \
  -F "source-lang=zh-cn" \
  -F "target-lang=en" \
  -F "apikey=your-api-key" \
  -F "url=http://your-domain.com"

# 查询任务状态
curl -X GET "http://ltranslate.cn/translate-pdf/api/v1/task/123" \
  -H "apikey: your-api-key"
<?php
// 上传PDF文件
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://ltranslate.cn/translate-pdf/api/v1/upload');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$postData = [
    'file' => new CURLFile('document.pdf'),
    'source-lang' => 'zh-cn',
    'target-lang' => 'en',
    'apikey' => 'your-api-key',
    'url' => 'http://your-domain.com'
];

curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response, true);
if ($result['code'] == 200) {
    $taskId = $result['data']['task_id'];
    echo "任务创建成功,任务ID: " . $taskId;
}
?>
package main

import (
    "bytes"
    "fmt"
    "io/ioutil"
    "mime/multipart"
    "net/http"
    "os"
)

func uploadPDF() error {
    file, err := os.Open("document.pdf")
    if err != nil {
        return err
    }
    defer file.Close()

    var requestBody bytes.Buffer
    writer := multipart.NewWriter(&requestBody)

    writer.CreateFormFile("file", "document.pdf")
    _, err = writer.WriteField("source-lang", "zh-cn")
    if err != nil {
        return err
    }
    
    writer.WriteField("target-lang", "en")
    writer.WriteField("apikey", "your-api-key")
    writer.WriteField("url", "http://your-domain.com")
    writer.Close()

    req, err := http.NewRequest("POST", "http://ltranslate.cn/translate-pdf/api/v1/upload", &requestBody)
    if err != nil {
        return err
    }
    
    req.Header.Set("Content-Type", writer.FormDataContentType())

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        return err
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        return err
    }

    fmt.Println("Response:", string(body))
    return nil
}

func main() {
    err := uploadPDF()
    if err != nil {
        fmt.Println("Error:", err)
    }
}
import requests
import json

def upload_pdf():
    url = "http://ltranslate.cn/translate-pdf/api/v1/upload"
    
    files = {
        'file': open('document.pdf', 'rb')
    }
    
    data = {
        'source-lang': 'zh-cn',
        'target-lang': 'en',
        'apikey': 'your-api-key',
        'url': 'http://your-domain.com'
    }
    
    response = requests.post(url, files=files, data=data)
    result = response.json()
    
    if result['code'] == 200:
        task_id = result['data']['task_id']
        print(f"任务创建成功,任务ID: {task_id}")
        return task_id
    else:
        print(f"上传失败: {result['message']}")
        return None

def check_task_status(task_id):
    url = f"http://ltranslate.cn/translate-pdf/api/v1/task/{task_id}"
    headers = {
        'apikey': 'your-api-key'
    }
    
    response = requests.get(url, headers=headers)
    result = response.json()
    
    if result['code'] == 200:
        data = result['data']
        print(f"任务状态: {data['status']}")
        if data['status'] == 2:
            print(f"下载链接: {data['result']}")
        return data
    else:
        print(f"查询失败: {result['message']}")
        return None

if __name__ == "__main__":
    task_id = upload_pdf()
    if task_id:
        check_task_status(task_id)

注意事项

  • 文件大小限制:50MB
  • 支持的文件格式:PDF
  • API Key需要预先分配
  • 翻译过程可能需要几分钟时间

错误码说明

错误码 说明
200 成功
400 请求参数错误
401 API Key无效
403 无权限
404 资源不存在
500 服务器内部错误

常见问题

Q: 如何获取API Key?
A: 请访问 http://manage.ltranslate.cn/ 注册账号并创建项目后获取API Key。
Q: 支持哪些语言?
A: 支持多种语言互译,包括中文、英文、日文、韩文、法文、德文、西班牙文等主流语言,具体可查看(支持的语言列表)。
Q: 翻译一个PDF文件需要多长时间?
A: 翻译时间取决于文件大小和复杂程度,一般需要几分钟到十几分钟不等。
Q: 如何处理翻译失败的情况?
A: 可以通过查询任务状态接口获取失败原因,常见失败原因包括文件损坏、格式不支持等。
Q: 翻译后的文件会保存多久?
A: 翻译后的文件会保存7天,请及时下载保存。