Gunakan fitur Pengeditan Daring WebOffice untuk mengedit dokumen Word, presentasi PowerPoint, dan spreadsheet Excel secara langsung.
Skenario
Platform kolaborasi kantor: Memungkinkan beberapa pengguna mengedit dokumen yang sama secara real-time.
Sistem manajemen konten: Menyediakan kemampuan pengeditan dokumen daring untuk membuat, membaca, memperbarui, dan menghapus dokumen langsung di dalam sistem.
Platform pendidikan: Memungkinkan siswa mengirimkan tugas dan guru membuat materi ajar. Dokumen disimpan di cloud untuk kemudahan akses dan berbagi.
Jenis file yang didukung
Jenis file | Ekstensi file |
Word | doc, .dot, .wps, .wpt, .docx, .dotx, .docm, .dotm |
PPT | ppt, .pptx, .pptm, .ppsx, .ppsm, .pps, .potx, .potm, .dpt, .dps |
Excel | xls, .xlt, .et, .xlsx, .xltx, .xlsm, .xltm |
Cara menggunakan
Prasyarat
Buat bucket di Layanan Penyimpanan Objek (OSS), unggah dokumen Office yang ingin Anda edit ke bucket tersebut, dan sambungkan proyek Intelligent Media Management (IMM) ke bucket tersebut. Proyek IMM harus berada di wilayah yang sama dengan bucket.
Sambungkan nama domain kustom ke nama domain default bucket. Anda harus mengakses file melalui nama domain kustom untuk membuka dan mengeditnya.
CatatanJika muncul pesan bahwa nama domain belum ditambahkan ke daftar putih WebView miniapp, hubungi helpdesk Intelligent Media Management melalui grup DingTalk (ID: 88490020073). Helpdesk akan menambahkan nama domain ke daftar putih berdasarkan file validasi domain WeChat tepercaya yang Anda berikan.
Dapatkan URL untuk mengedit
Java
Gunakan Java SDK versi 3.17.4 atau lebih baru. Untuk informasi lebih lanjut tentang cara menginstal Java SDK, lihat Instalasi.
package com.aliyun.oss.demo;
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.GeneratePresignedUrlRequest;
import java.net.URL;
import java.util.Date;
public class Demo {
public static void main(String[] args) throws Throwable {
// Tentukan nama domain kustom Anda. Contohnya, http://static.example.com.
String endpoint = "http://static.example.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket. Contohnya, examplebucket.
String bucketName = "examplebucket";
// Tentukan jalur lengkap objek. Jika objek tidak berada di direktori root bucket, Anda harus menyertakan jalur lengkap.
String objectName = "exampledir/exampleobject.docx";
// Tentukan wilayah tempat bucket berada. Contohnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke cn-hangzhou.
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Saat instance OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepaskan sumber daya.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
// Catatan: Atur parameter ini ke true untuk mengaktifkan opsi CNAME.
clientBuilderConfiguration.setSupportCname(true);
// Nyatakan secara eksplisit penggunaan algoritma tanda tangan V4.
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Parameter pemrosesan dokumen.
String style = "doc/edit,export_1,print_1/watermark,text_5YaF6YOo6LWE5paZ,size_30,t_60";
// Atur waktu kedaluwarsa URL yang ditandatangani menjadi 3.600 detik.
Date expiration = new Date(new Date().getTime() + 3600 * 1000L );
GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);
req.setExpiration(expiration);
req.setProcess(style);
URL signedUrl = ossClient.generatePresignedUrl(req);
System.out.println(signedUrl);
} catch (OSSException oe) {
System.out.println("Tangkap OSSException, yang berarti permintaan Anda sampai ke OSS, "
+ "tetapi ditolak dengan respons kesalahan karena suatu alasan.");
System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
System.out.println("Kode Kesalahan:" + oe.getErrorCode());
System.out.println("ID Permintaan:" + oe.getRequestId());
System.out.println("ID Host:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Tangkap ClientException, yang berarti klien mengalami "
+ "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
+ "seperti tidak dapat mengakses jaringan.");
System.out.println("Pesan Kesalahan:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}Python
Gunakan Python SDK versi 2.18.4 atau lebih baru. Untuk informasi lebih lanjut tentang cara menginstal Python SDK, lihat Instalasi (Python SDK V1).
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan nama bucket.
bucket = 'examplebucket'
# Tentukan nama domain kustom Anda. Contohnya, https://static.example.com.
endpoint = 'https://static.example.com'
# Tentukan ID wilayah umum Alibaba Cloud.
region = 'cn-hangzhou'
# Gunakan nama domain kustom untuk menginisialisasi bucket.
bucket = oss2.Bucket(auth, endpoint, bucket, is_cname=True, region=region)
# Tentukan file yang akan diproses.
key = 'example.docx'
# Tentukan waktu kedaluwarsa dalam detik.
expire_time = 3600
# Konstruksi instruksi pemrosesan untuk pengeditan daring.
image_process = 'doc/edit,export_1,print_1/watermark,text_5YaF6YOo6LWE5paZ,size_30,t_60'
# Hasilkan URL yang ditandatangani dengan parameter pemrosesan.
url = bucket.sign_url('GET', key, expire_time, params={'x-oss-process': image_process}, slash_safe=True)
# Cetak URL yang ditandatangani.
print(url)Go
Gunakan Go SDK versi 3.0.2 atau lebih baru. Untuk informasi lebih lanjut tentang cara menginstal Go SDK, lihat Instal OSS Go SDK.
package main
import (
"context"
"flag"
"log"
"time"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Definisikan variabel global.
var (
region string // Wilayah penyimpanan.
bucketName string // Nama bucket.
objectName string // Nama objek.
)
// Fungsi init digunakan untuk menginisialisasi parameter baris perintah.
func init() {
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
flag.StringVar(&objectName, "object", "", "Nama objek.")
}
func main() {
// Parse parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket kosong.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan")
}
// Periksa apakah wilayah kosong.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
// Periksa apakah nama objek kosong.
if len(objectName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama objek diperlukan")
}
// Muat konfigurasi default dan atur penyedia kredensial dan wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region).
// Tentukan nama domain kustom Anda. Contohnya, http://static.example.com.
WithEndpoint("http://static.example.com").
WithUseCName(true)
// Buat klien OSS.
client := oss.NewClient(cfg)
// Hasilkan URL pra-tandatangani untuk GetObject.
result, err := client.Presign(context.TODO(), &oss.GetObjectRequest{
Bucket: oss.Ptr(bucketName),
Key: oss.Ptr(objectName),
// Atur parameter pemrosesan dokumen.
Process: oss.Ptr("doc/edit,export_1,print_1/watermark,text_5YaF6YOo6LWE5paZ,size_30,t_60"),
}, oss.PresignExpires(10*time.Minute))
if err != nil {
log.Fatalf("gagal mendapatkan presign objek %v", err)
}
log.Printf("metode permintaan:%v\n", result.Method)
log.Printf("kedaluwarsa permintaan:%v\n", result.Expiration)
log.Printf("URL permintaan:%v\n", result.URL)
if len(result.SignedHeaders) > 0 {
// Jika hasil mencakup header yang ditandatangani, sertakan header permintaan yang sesuai saat Anda mengirim permintaan GET menggunakan URL yang ditandatangani. Ini mencegah ketidaksesuaian yang dapat menyebabkan kegagalan permintaan dan kesalahan tanda tangan.
log.Printf("header yang ditandatangani:\n")
for k, v := range result.SignedHeaders {
log.Printf("%v: %v\n", k, v)
}
}
}Node.js
Gunakan Node.js SDK versi 8.0 atau lebih baru. Untuk informasi lebih lanjut tentang cara menginstal Node.js SDK, lihat Instalasi.
const OSS = require("ali-oss");
// Definisikan fungsi untuk menghasilkan URL yang ditandatangani.
async function generateSignatureUrl(fileName) {
// Dapatkan URL yang ditandatangani.
const client = await new OSS({
// Tentukan nama domain kustom Anda. Contohnya, http://static.example.com.
endpoint: 'http://static.example.com',
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
bucket: 'examplebucket',
// Tentukan wilayah tempat bucket berada. Contohnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke oss-cn-hangzhou.
region: 'oss-cn-hangzhou',
authorizationV4: true,
cname: true
});
// Hasilkan URL yang ditandatangani yang mencakup parameter pemrosesan dokumen.
return await client.signatureUrlV4('GET', 3600, {
headers: {}, // Atur header permintaan di sini berdasarkan header permintaan aktual yang Anda kirim.
queries: {
"x-oss-process": "doc/edit,export_1,print_1/watermark,text_5YaF6YOo6LWE5paZ,size_30,t_60" // Tambahkan parameter pemrosesan dokumen.
}
}, fileName);
}
// Panggil fungsi dan teruskan nama file.
generateSignatureUrl('yourFileName').then(url => {
console.log('Generated Signature URL:', url);
}).catch(err => {
console.error('Error generating signature URL:', err);
});
PHP
Gunakan PHP SDK versi 2.7.0 atau lebih baru. Untuk informasi lebih lanjut tentang cara menginstal PHP SDK, lihat Instalasi.
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\OssClient;
use OSS\Core\OssException;
use OSS\Http\RequestCore;
use OSS\Http\ResponseCore;
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
$provider = new EnvironmentVariableCredentialsProvider();
// Tentukan nama domain kustom Anda. Contohnya, http://static.example.com.
$endpoint = "http://static.example.com";
// Tentukan nama bucket. Contohnya, examplebucket.
$bucket = "examplebucket";
// Jika dokumen berada di direktori root bucket, tentukan nama dokumen. Jika dokumen tidak berada di direktori root, Anda harus menyertakan jalur lengkap dokumen, seperti exampledir/example.docx.
$object = 'example.docx';
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"cname" => true,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
// Hasilkan URL yang ditandatangani dengan parameter pemrosesan. URL tersebut valid selama 3.600 detik dan dapat diakses langsung di browser.
$timeout = 3600;
$options = array(
// Konstruksi instruksi pemrosesan untuk pratinjau daring.
OssClient::OSS_PROCESS => "doc/edit,export_1,print_1/watermark,text_5YaF6YOo6LWE5paZ,size_30,t_60");
$signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "GET", $options);
print("url: \n" . $signedUrl);Berikut adalah contoh URL yang ditandatangani yang dihasilkan:
http://static.example.com/example.docx?x-oss-process=doc%2Fedit%2Cexport_1%2Cprint_1%2Fwatermark%2Ctext_5YaF6YOo6LWE5paZ%2Csize_30%2Ct_60&x-oss-date=20250220T095032Z&x-oss-expires=3600&x-oss-signature-version=OSS4-HMAC-SHA256&x-oss-credential=LTAI********************%2F20250122%2Fcn-hangzhou%2Foss%2Faliyun_v4_request&x-oss-signature=514ed93accdb80921c4b2897c6147fdb1599308c6457f68ee0ac2f771c7d0312Salin URL yang dihasilkan, tempelkan ke bilah alamat browser Anda, dan tekan Enter untuk mulai mengedit dokumen WebOffice.
Deskripsi parameter
Aksi: doc/edit
Tabel berikut menjelaskan parameter yang digunakan.
Parameter | Tipe | Diperlukan | Deskripsi |
int | Tidak | Menentukan apakah pencetakan diizinkan. Nilai yang valid:
| |
export | int | Tidak | Menentukan apakah ekspor dokumen sebagai file PDF diizinkan. Nilai yang valid:
|
watermark | string | Tidak | Parameter watermark. |
text | string | Tidak | Teks watermark. Teks tersebut harus dikodekan dalam format Base64 yang aman untuk URL. Untuk informasi lebih lanjut, lihat Pengkodean watermark. Kami merekomendasikan Anda menggunakan penyandi base64url untuk pengkodean. Node induk: watermark |
size | int | Tidak | Ukuran font teks watermark. Nilainya harus berupa bilangan bulat lebih besar dari 0. Node induk: watermark |
t | int | Tidak | Transparansi teks watermark. Nilai yang valid: 0 hingga 100. Nilai default: 100. Nilai 100 menunjukkan bahwa watermark tidak transparan. Node induk: watermark |
color | string | Tidak | Warna teks watermark. Tentukan warna dalam format RGB. Nilai default: #FFFFFF. Contohnya, #000000 menunjukkan hitam, dan #FFFFFF menunjukkan putih. Node induk: watermark |
rotate | int | Tidak | Sudut rotasi searah jarum jam untuk teks. Nilai yang valid: 0 hingga 360. Nilai default: 0. Nilai 0 menunjukkan bahwa teks tidak dirotasi. Node induk: watermark |
type | string | Tidak | Font teks watermark. Font tersebut harus dikodekan dalam format Base64 yang aman untuk URL. Untuk informasi lebih lanjut, lihat Pengkodean watermark. Kami merekomendasikan Anda menggunakan penyandi base64url untuk pengkodean. Font berikut didukung:
Node induk: watermark |
Operasi API terkait
Operasi sebelumnya didasarkan pada operasi API. Untuk penyesuaian lanjutan, Anda dapat langsung mengirim permintaan REST API. Ini memerlukan Anda menulis kode secara manual untuk menghitung tanda tangan. Untuk informasi lebih lanjut tentang menghitung tanda tangan untuk header permintaan Authorization umum, lihat Signature V4 (disarankan).
Informasi pengeditan
Dokumen yang akan diedit: example.docx
Pengaturan watermark:
Jenis watermark: Watermark teks
Teks watermark: Internal Material
Ukuran font watermark: 30
Transparansi watermark: 60
Izin halaman pengeditan: Mengizinkan pengguna mengekspor dan mencetak
Contoh pemrosesan
GET /example.docx?x-oss-process=doc/edit,export_1,print_1/watermark,text_5YaF6YOo6LWE5paZ,size_30,t_60 HTTP/1.1
Host: doc-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: SignatureValueIzin
Secara default, akun Alibaba Cloud memiliki semua izin, sedangkan Pengguna RAM atau Peran RAM tidak memiliki izin. Untuk memberikan izin kepada Pengguna RAM atau Peran RAM, pemilik akun Alibaba Cloud atau administrator harus menggunakan Kebijakan RAM atau Kebijakan bucket.
API | Aksi | Deskripsi |
GetObject |
| Mengunduh objek. |
| Jika Anda menentukan versi objek menggunakan versionId saat mengunduh objek, Anda harus memiliki izin untuk aksi ini. | |
| Jika metadata objek berisi X-Oss-Server-Side-Encryption: KMS saat Anda mengunduh objek, Anda harus memiliki izin untuk aksi ini. |
Operasi API | Aksi | Deskripsi |
Tidak ada |
| Izin untuk menggunakan IMM melalui OSS untuk pemrosesan data. |
API | Aksi | Deskripsi |
GenerateWebofficeToken |
| Digunakan untuk mendapatkan kredensial Weboffice. |
RefreshWebofficeToken |
| Digunakan untuk menyegarkan kredensial Weboffice. |
Penagihan
Pengeditan daring WebOffice mengakibatkan item yang dapat ditagih berikut. Untuk informasi lebih lanjut tentang harga item yang dapat ditagih, lihat Harga OSS dan Item yang dapat ditagih.
API | Item yang dapat ditagih | Deskripsi |
GetObject | Permintaan GET | Anda dikenakan biaya permintaan berdasarkan jumlah permintaan yang berhasil. |
Lalu lintas keluar Internet | Jika Anda memanggil operasi GetObject menggunakan endpoint publik, seperti oss-cn-hangzhou.aliyuncs.com, atau endpoint percepatan, seperti oss-accelerate.aliyuncs.com, Anda dikenakan biaya lalu lintas keluar Internet berdasarkan ukuran data. | |
Pengambilan objek IA | Jika objek IA diambil, Anda dikenakan biaya pengambilan data IA berdasarkan ukuran data IA yang diambil. | |
Pengambilan objek Arsip dalam bucket tempat akses real-time diaktifkan | Jika Anda mengambil objek Arsip dalam bucket tempat akses real-time diaktifkan, Anda dikenakan biaya pengambilan data Arsip berdasarkan ukuran objek Arsip yang diambil. | |
Biaya percepatan transfer | Jika Anda mengaktifkan percepatan transfer dan menggunakan endpoint percepatan untuk mengakses bucket Anda, Anda dikenakan biaya percepatan transfer berdasarkan ukuran data. |
API | Item yang dapat ditagih | Deskripsi |
GenerateWebofficeToken | DocumentWebofficeEdit | Anda dikenakan biaya pemrosesan dokumen berdasarkan jumlah panggilan API. Penting Anda dikenakan biaya untuk mengedit dokumen daring berdasarkan jumlah kali dokumen dibuka untuk proyek yang dibuat sebelum 1 Desember 2023, dan berdasarkan jumlah panggilan API untuk proyek yang dibuat pada atau setelah tanggal tersebut. |
RefreshWebofficeToken |
Catatan
Pengeditan daring WebOffice hanya mendukung pemrosesan sinkron (menggunakan parameter x-oss-process).