O3O DocBuilder và chuyển đổi
Ma trận định dạng
Định dạng vào và ra của chuyển đổi, dựng tài liệu, điền mẫu và trích xuất; GET /v1/formats trả cùng ma trận này dưới dạng JSON.
Trong trang này
DocBuilder chia định dạng thành ba họ: văn bản (text), bảng tính (sheet) và trình chiếu (slide). Chuyển đổi chỉ diễn ra trong cùng một họ. Endpoint dưới đây trả ma trận hiện hành để chương trình của bạn kiểm tra trước khi gửi việc.
/v1/formatsMa trận định dạng vào và ra của chuyển đổi, dựng tài liệu và điền mẫu.
Tham số
Authorizationheaderbắt buộcBearer <khoá API hoặc JWT>.
curl -sS http://localhost:8080/v1/formats \
-H "Authorization: Bearer O3O_DEMO_KEY"const BASE_URL = "http://localhost:8080";
const HEADERS = { Authorization: "Bearer O3O_DEMO_KEY" };
const res = await fetch(`${BASE_URL}/v1/formats`, { headers: HEADERS });
if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);
console.log(await res.json());import requests
BASE_URL = "http://localhost:8080"
HEADERS = {"Authorization": "Bearer O3O_DEMO_KEY"}
r = requests.get(f"{BASE_URL}/v1/formats", headers=HEADERS, timeout=30)
if not r.ok:
raise RuntimeError(f"{r.status_code}: {r.text}")
print(r.json())<?php
$ch = curl_init("http://localhost:8080/v1/formats");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["Authorization: Bearer O3O_DEMO_KEY"],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
if ($body === false || $status >= 400) {
throw new RuntimeException("HTTP $status: " . ($body === false ? curl_error($ch) : $body));
}
print_r(json_decode($body, true));using System.Net.Http.Headers;
using var http = new HttpClient { Timeout = TimeSpan.FromSeconds(30) };
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "O3O_DEMO_KEY");
using var res = await http.GetAsync("http://localhost:8080/v1/formats");
if (!res.IsSuccessStatusCode)
throw new HttpRequestException($"{(int)res.StatusCode}: {await res.Content.ReadAsStringAsync()}");
Console.WriteLine(await res.Content.ReadAsStringAsync());families cho chuyển đổi, build theo type của kịch bản, template cho điền mẫu.{
"families": {
"text": {
"inputs": [
"docx",
"doc",
"odt",
"rtf",
"txt",
"html"
],
"outputs": [
"docx",
"odt",
"rtf",
"txt",
"html",
"pdf",
"png",
"jpg"
]
},
"sheet": {
"inputs": [
"xlsx",
"xls",
"ods",
"csv"
],
"outputs": [
"xlsx",
"ods",
"csv",
"html",
"pdf",
"png",
"jpg"
]
},
"slide": {
"inputs": [
"pptx",
"ppt",
"odp"
],
"outputs": [
"pptx",
"odp",
"pdf",
"png",
"jpg"
]
}
},
"build": {
"text": [
"docx",
"odt",
"pdf"
],
"sheet": [
"xlsx",
"ods",
"pdf"
],
"slides": [
"pptx",
"odp",
"pdf"
]
},
"template": {
"inputs": [
"docx",
"odt"
],
"outputs": [
"docx",
"odt",
"pdf"
]
}
}Yêu cầu GET không bị tính vào hạn mức và dùng được ở cả hai gói. Lỗi thường gặp: 401 unauthorized.
Chuyển đổi: nguồn và đích#
Hàng là định dạng nguồn, cột là định dạng đích của POST /v1/convert. Ô có dấu ✓ là cặp được hỗ trợ; cặp đánh dấu — trả 415 unsupported_format.
| Nguồn | docx | odt | rtf | txt | html | pdf | xlsx | ods | csv | pptx | odp | png | jpg |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
docx | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — | — | — | — | — | ✓ | ✓ |
doc | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — | — | — | — | — | ✓ | ✓ |
odt | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — | — | — | — | — | ✓ | ✓ |
rtf | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — | — | — | — | — | ✓ | ✓ |
txt | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — | — | — | — | — | ✓ | ✓ |
html | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — | — | — | — | — | ✓ | ✓ |
xlsx | — | — | — | — | ✓ | ✓ | ✓ | ✓ | ✓ | — | — | ✓ | ✓ |
xls | — | — | — | — | ✓ | ✓ | ✓ | ✓ | ✓ | — | — | ✓ | ✓ |
ods | — | — | — | — | ✓ | ✓ | ✓ | ✓ | ✓ | — | — | ✓ | ✓ |
csv | — | — | — | — | ✓ | ✓ | ✓ | ✓ | ✓ | — | — | ✓ | ✓ |
pptx | — | — | — | — | — | ✓ | — | — | — | ✓ | ✓ | ✓ | ✓ |
ppt | — | — | — | — | — | ✓ | — | — | — | ✓ | ✓ | ✓ | ✓ |
odp | — | — | — | — | — | ✓ | — | — | — | ✓ | ✓ | ✓ | ✓ |
| Họ | Nguồn | Đích |
|---|---|---|
text | docx, doc, odt, rtf, txt, html | docx, odt, rtf, txt, html, pdf, png, jpg |
sheet | xlsx, xls, ods, csv | xlsx, ods, csv, html, pdf, png, jpg |
slide | pptx, ppt, odp | pptx, odp, pdf, png, jpg |
Dựng tài liệu#
type của kịch bản | Định dạng lưu được |
|---|---|
text | docx, odt, pdf |
sheet | xlsx, ods, pdf |
slides | pptx, odp, pdf |
Điền mẫu#
| Mẫu vào | Đích |
|---|---|
| docx, odt | docx, odt, pdf; mặc định là định dạng của chính mẫu |
Trích xuất#
Ba endpoint /v1/extract/text, /v1/extract/meta và /v1/extract/thumbnail nhận mọi định dạng nguồn trong bảng trên. Trích văn bản và ảnh thu nhỏ đi qua PDF trung gian, nên chọn được trang bất kỳ ở cả ba họ.
Cách nhận biết định dạng nguồn#
DocBuilder lấy định dạng nguồn từ tham số from; nếu không có thì từ đuôi của filename hoặc của tên tệp tải lên.
Font có sẵn#
Image DocBuilder v1 cài các font: Liberation Sans, Liberation Serif, Liberation Mono, Carlito, Caladea, DejaVu Sans, Noto Sans, Noto Serif. Carlito và Caladea có số đo chữ tương thích với Calibri và Cambria; Liberation Sans và Liberation Serif tương thích với Arial và Times New Roman, nên bố cục tài liệu Office thường giữ được. Tiếng Việt hiển thị đủ dấu với các font này.