Dengan fitur konversi format dokumen, Anda dapat mengonversi berbagai jenis dokumen ke format target dan menyimpan hasilnya di jalur OSS yang ditentukan.
Skenario
Optimasi pratinjau online: Setelah mengunggah dokumen PDF, Word, Excel, PPT, dan lainnya ke OSS, Anda dapat memanggil antarmuka konversi dokumen untuk mengonversi dokumen menjadi gambar guna mendukung pratinjau langsung di web atau perangkat seluler tanpa perlu mengunduh.
Kompatibilitas lintas platform: Melalui layanan konversi dokumen, pengguna dengan perangkat dan sistem operasi berbeda dapat melihat dokumen secara mulus.
Jenis file input yang didukung
Tipe file | Ekstensi file |
Word | doc, docx, wps, wpss, docm, dotm, dot, dotx, html |
PPT | pptx, ppt, pot, potx, pps, ppsx, dps, dpt, pptm, potm, ppsm, dpss |
Excel | xls, xlt, et, ett, xlsx, xltx, csv, xlsb, xlsm, xltm, ets |
Cara menggunakan
Prasyarat
Buat bucket di OSS, unggah dokumen yang akan dikonversi ke bucket, dan ikat Proyek Intelligent Media Management (IMM) ke bucket. Proyek IMM harus berada di wilayah yang sama dengan bucket.
Anda harus memiliki izin terkait yang diperlukan untuk pemrosesan IMM.
Konversi format dokumen
Anda dapat menggunakan SDK untuk memanggil antarmuka konversi dokumen dan menyimpan file hasil pemrosesan ke bucket yang ditentukan. Anda hanya dapat menggunakan SDK OSS untuk Java, Python, atau Go dalam melakukan konversi dokumen.
Java
OSS SDK for Java V3.17.4 atau lebih baru diperlukan.
import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.AsyncProcessObjectRequest;
import com.aliyun.oss.model.AsyncProcessObjectResult;
import com.aliyuncs.exceptions.ClientException;
import java.util.Base64;
public class Demo1 {
public static void main(String[] args) throws ClientException {
// Tentukan endpoint wilayah tempat bucket berada.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan ID wilayah Alibaba Cloud tempat bucket berada. Contoh: cn-hangzhou.
String region = "cn-hangzhou";
// Dapatkan kredensial dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket.
String bucketName = "examplebucket";
// Tentukan nama objek keluaran.
String targetKey = "dest.png";
// Tentukan nama dokumen sumber.
String sourceKey = "src.docx";
// Buat instance OSSClient.
// Saat instance OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepaskan sumber daya.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Buat variabel gaya bertipe string untuk menyimpan parameter konversi dokumen.
String style = String.format("doc/convert,target_png,source_docx");
// Buat instruksi pemrosesan asinkron.
String bucketEncoded = Base64.getUrlEncoder().withoutPadding().encodeToString(bucketName.getBytes());
String targetEncoded = Base64.getUrlEncoder().withoutPadding().encodeToString(targetKey.getBytes());
String process = String.format("%s|sys/saveas,b_%s,o_%s", style, bucketEncoded, targetEncoded);
// Buat objek AsyncProcessObjectRequest.
AsyncProcessObjectRequest request = new AsyncProcessObjectRequest(bucketName, sourceKey, process);
// Jalankan tugas pemrosesan asinkron.
AsyncProcessObjectResult response = ossClient.asyncProcessObject(request);
System.out.println("EventId: " + response.getEventId());
System.out.println("RequestId: " + response.getRequestId());
System.out.println("TaskId: " + response.getTaskId());
} finally {
// Tutup OSSClient Anda.
ossClient.shutdown();
}
}
}Python
OSS SDK for Python 2.18.4 atau lebih baru diperlukan.
# -*- coding: utf-8 -*-
import base64
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
def main():
# Dapatkan kredensial akses sementara dari variabel lingkungan. Sebelum mengeksekusi kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan endpoint untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Tentukan ID wilayah Alibaba Cloud tempat bucket berada. Contoh: cn-hangzhou.
region = 'cn-hangzhou'
# Tentukan nama bucket. Contoh: examplebucket.
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)
# Tentukan nama dokumen sumber.
source_key = 'src.docx'
# Tentukan nama objek keluaran.
target_key = 'dest.png'
# Buat variabel gaya bertipe string untuk menyimpan parameter konversi dokumen.
animation_style = 'doc/convert,target_png,source_docx'
# Buat instruksi pemrosesan, di mana nama bucket dan nama objek keluaran dienkripsi dalam Base64.
bucket_name_encoded = base64.urlsafe_b64encode('examplebucket'.encode()).decode().rstrip('=')
target_key_encoded = base64.urlsafe_b64encode(target_key.encode()).decode().rstrip('=')
process = f"{animation_style}|sys/saveas,b_{bucket_name_encoded},o_{target_key_encoded}"
try:
# Jalankan tugas pemrosesan asinkron.
result = bucket.async_process_object(source_key, process)
print(f"EventId: {result.event_id}")
print(f"RequestId: {result.request_id}")
print(f"TaskId: {result.task_id}")
except Exception as e:
print(f"Error: {e}")
if __name__ == "__main__":
main()Go
OSS SDK for Go 3.0.2 atau lebih baru diperlukan.
package main
import (
"encoding/base64"
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"log"
)
func main() {
// Dapatkan kredensial akses sementara dari variabel lingkungan. Sebelum mengeksekusi kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Buat instance OSSClient.
// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Tentukan endpoint aktual Anda.
// Tentukan ID wilayah Alibaba Cloud tempat bucket berada. Contoh: cn-hangzhou.
client, err := oss.New("https://oss-cn-hangzhou.aliyuncs.com", "", "", oss.SetCredentialsProvider(&provider), oss.AuthVersion(oss.AuthV4), oss.Region("cn-hangzhou"))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Tentukan nama bucket. Contoh: examplebucket.
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Tentukan nama dokumen sumber.
sourceKey := "src.docx"
// Tentukan nama objek keluaran.
targetKey := "dest.png"
// Buat variabel gaya bertipe string untuk menyimpan parameter konversi dokumen.
animationStyle := "doc/convert,target_png,source_docx"
// Buat instruksi pemrosesan, di mana nama bucket dan nama objek keluaran dienkripsi dalam Base64.
bucketNameEncoded := base64.URLEncoding.EncodeToString([]byte(bucketName))
targetKeyEncoded := base64.URLEncoding.EncodeToString([]byte(targetKey))
process := fmt.Sprintf("%s|sys/saveas,b_%v,o_%v", animationStyle, bucketNameEncoded, targetKeyEncoded)
// Jalankan tugas pemrosesan asinkron.
result, err := bucket.AsyncProcessObject(sourceKey, process)
if err != nil {
log.Fatalf("Gagal memproses objek secara asinkron: %s", err)
}
fmt.Printf("EventId: %s\n", result.EventId)
fmt.Printf("RequestId: %s\n", result.RequestId)
fmt.Printf("TaskId: %s\n", result.TaskId)
}Deskripsi parameter
Aksi: doc/convert
Tabel berikut menjelaskan parameter untuk konversi dokumen.
Nama parameter | Tipe | Diperlukan | Deskripsi |
target | string | Ya | Format objek keluaran. Nilai valid:
|
source | string | Tidak | Format file sumber. Secara default, ekstensi nama objek digunakan. Nilai valid:
|
pages | string | Tidak | Nomor halaman yang akan dikonversi. Contohnya: |
Anda perlu menggunakan parameter sys/saveas untuk menyimpan dokumen yang dikonversi di bucket yang ditentukan. Untuk informasi lebih lanjut, lihat Simpan Sebagai. Jika Anda perlu mendapatkan hasil pemrosesan tugas konversi, Anda perlu menggunakan parameter notify. Untuk informasi lebih lanjut, lihat Notifikasi.
Lebih banyak skenario
Konversi format dokumen diajukan sebagai permintaan asinkron, yang berarti Anda tidak dapat langsung mendapatkan hasil konversi dokumen (seperti informasi keberhasilan atau kegagalan pemrosesan) saat hasil pemrosesan dikembalikan. Jika Anda perlu mendapatkan hasil pemrosesan, kami sarankan Anda mengonfigurasi notifikasi acara dengan Simple Message Queue (SMQ, sebelumnya MNS) untuk menerima notifikasi instan setelah pemrosesan selesai, tanpa perlu memeriksa status tugas berulang kali.
Konfigurasikan notifikasi acara
API terkait
Jika bisnis Anda memerlukan tingkat penyesuaian yang tinggi, Anda dapat langsung memanggil API RESTful. Untuk memanggil API RESTful secara langsung, Anda harus menyertakan perhitungan tanda tangan dalam kode Anda. Untuk informasi tentang cara menghitung Header Authorization, lihat Versi Tanda Tangan 4 (Direkomendasikan).
Konversi format dokumen
Objek Sumber
Format Dokumen: DOCX
Nama Dokumen: example.docx
Objek Tujuan
Format Objek: PNG
Jalur Penyimpanan: oss://test-bucket/doc_images/{index}.png
b_dGVzdC1idWNrZXQ=: Setelah konversi selesai, simpan ke bucket bernama test-bucket (
dGVzdC1idWNrZXQ=adalah nilai terenkripsi Base64 daritest-bucket).o_ZG9jX2ltYWdlcy97aW5kZXh9LnBuZw==: Objek menggunakan variabel {index} untuk menyimpan gambar dengan nomor halaman example.docx sebagai nama file ke direktori doc_images (
ZG9jX2ltYWdlcy97aW5kZXh9LnBuZw==adalah nilai terenkripsi Base64 daridoc_images/{index}.png).
Notifikasi Penyelesaian Konversi: Kirim ke topik Simple Message Queue (SMQ, sebelumnya MNS) bernama
test-topic
Contoh pemrosesan
// Konversi file example.docx menjadi file gambar format PNG.
POST /example.docx?x-oss-async-process HTTP/1.1
Host: doc-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: SignatureValue
x-oss-async-process=doc/convert,target_png,source_docx|sys/saveas,b_dGVzdC1idWNrZXQ=,o_ZG9jX2ltYWdlcy97aW5kZXh9LnBuZw==/notify,topic_dGVzdC10b3BpYwCatatan
Konversi dokumen hanya mendukung pemrosesan asinkron (x-oss-async-process).
Akses anonim tidak didukung.
Ukuran file maksimum yang didukung untuk konversi format dokumen adalah 200 MB, yang tidak dapat diubah.
FAQ
Apakah konversi dokumen OSS mendukung penentuan konten dari lembar kerja Excel?
Tidak, tidak mendukung. Konversi dokumen OSS hanya mendukung mengonversi semua lembar kerja dalam file Excel. Jika Anda perlu mengonversi lembar kerja tertentu, kami sarankan memanggil antarmuka CreateOfficeConversionTask - Buat Tugas Konversi Dokumen IMM dan menyetel parameter SheetIndex.
Referensi
Untuk informasi lebih lanjut, lihat Konversi Format Dokumen.