WebOffice memungkinkan Anda melihat pratinjau dokumen Word, PPT, dan Excel langsung di browser tanpa perlu mengunduh file tersebut.
Skenario
-
Basis pengetahuan perusahaan atau sistem manajemen dokumen: Karyawan dapat mengunggah file dan mengonversinya ke format web untuk dilihat secara cepat, sehingga meningkatkan efisiensi dan keamanan akses informasi.
-
Platform pendidikan daring: Guru dan siswa dapat melihat materi kursus, catatan kuliah, dan tugas secara real time, sehingga meningkatkan interaksi dan pengalaman belajar.
-
Alat kolaborasi dan manajemen proyek: Anggota tim dapat melihat rencana kerja bersama, draf desain, dan laporan langsung di browser, sehingga meningkatkan kolaborasi tim.
Jenis file yang didukung
|
Jenis file |
Ekstensi file |
|
Word |
doc, .dot, .wps, .wpt, .docx, .dotx, .docm, .dotm, .rtf |
|
PPT |
ppt, .pptx, .pptm, .ppsx, .ppsm, .pps, .potx, .potm, .dpt, .dps |
|
Excel |
xls, .xlt, .et, .xlsx, .xltx, .csv, .xlsm, .xltm |
|
|
|
Catatan penggunaan
Akses lintas-wilayah ke objek OSS tidak disarankan. Misalnya, melakukan pratinjau objek di bucket Singapura dari Tiongkok daratan dapat menyebabkan latensi tinggi, kegagalan pratinjau, atau koneksi tidak stabil akibat masalah jaringan lintas batas. Untuk performa dan stabilitas terbaik, akses bucket dari dalam wilayah yang sama.
Pratinjau online WebOffice hanya mendukung pemrosesan sinkron menggunakan parameter
x-oss-process.
Cara menggunakan
Prasyarat
-
Di OSS, buat bucket, unggah dokumen Office 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. File hanya dapat dipratinjau saat diakses melalui nama domain kustom.
CatatanJika Anda menerima prompt bahwa nama domain belum dikonfigurasi dalam daftar putih WebView program mini, hubungi helpdesk Intelligent Media Management melalui grup DingTalk (ID: 88490020073). Helpdesk akan mengonfigurasi daftar putih berdasarkan file validasi domain tepercaya WeChat yang Anda berikan.
Buat URL pratinjau
Java
Gunakan Java SDK versi 3.17.4 atau lebih baru. Untuk instruksi instalasi, 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. Contoh: 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 disetel.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket. Contoh: examplebucket.
String bucketName = "examplebucket";
// Tentukan path lengkap objek. Jika objek tidak berada di direktori root bucket, Anda harus menentukan path lengkapnya.
String objectName = "exampledir/exampleobject.docx";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel Region ke cn-hangzhou.
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Setelah instance OSSClient tidak digunakan lagi, panggil metode shutdown untuk melepaskan sumber daya.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
// Catatan: Setel nilai ke true untuk mengaktifkan opsi CNAME.
clientBuilderConfiguration.setSupportCname(true);
// Secara eksplisit deklarasikan penggunaan algoritma signature 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/preview,export_1,print_1/watermark,text_5YaF6YOo6LWE5paZ,size_30,t_60";
// Atur waktu kedaluwarsa URL yang ditandatangani menjadi 3600 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("Terjadi OSSException, artinya permintaan Anda sampai ke OSS, "
+ "tetapi ditolak dengan tanggapan error karena suatu alasan.");
System.out.println("Pesan Error:" + oe.getErrorMessage());
System.out.println("Kode Error:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Terjadi ClientException, artinya klien mengalami "
+ "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
+ "misalnya tidak dapat mengakses jaringan.");
System.out.println("Pesan Error:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
Python
Gunakan Python SDK versi 2.18.4 atau lebih baru. Untuk instruksi instalasi, 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 disetel.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan nama bucket.
bucket = 'examplebucket'
# Tentukan nama domain kustom Anda. Contoh: https://static.example.com.
endpoint = 'https://static.example.com'
# Tentukan ID wilayah Alibaba Cloud umum.
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
# Buat instruksi pemrosesan untuk pratinjau online.
image_process = 'doc/preview,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 instruksi instalasi, 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() {
// Parsing parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket kosong.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
}
// Periksa apakah wilayah kosong.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah wajib diisi")
}
// Periksa apakah nama objek kosong.
if len(objectName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama objek wajib diisi")
}
// Muat konfigurasi default dan atur penyedia kredensial serta wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region).
// Tentukan nama domain kustom Anda. Contoh: http://static.example.com.
WithEndpoint("http://static.example.com").
WithUseCName(true)
// Buat klien OSS.
client := oss.NewClient(cfg)
// Hasilkan URL yang telah ditandatangani sebelumnya 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/preview,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("waktu kedaluwarsa permintaan:%v\n", result.Expiration)
log.Printf("URL permintaan:%v\n", result.URL)
if len(result.SignedHeaders) > 0 {
// Jika hasil yang dikembalikan berisi header yang ditandatangani, sertakan header permintaan yang sesuai saat Anda mengirim permintaan GET menggunakan URL yang ditandatangani. Hal ini mencegah ketidaksesuaian yang dapat menyebabkan kegagalan permintaan dan kesalahan signature.
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 instruksi instalasi, 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. Contoh: 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 disetel.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
bucket: 'examplebucket',
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel 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 berdasarkan permintaan aktual yang Anda kirim.
queries: {
"x-oss-process": "doc/preview,export_1,print_1/watermark,text_5YaF6YOo6LWE5paZ,size_30,t_60" // Tambahkan parameter pemrosesan dokumen.
}
}, fileName);
}
// Panggil fungsi dan berikan nama file.
generateSignatureUrl('yourFileName').then(url => {
console.log('URL Signature yang Dihasilkan:', url);
}).catch(err => {
console.error('Kesalahan saat menghasilkan URL signature:', err);
});
PHP
Gunakan PHP SDK versi 2.7.0 atau lebih baru. Untuk instruksi instalasi, 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 disetel.
$provider = new EnvironmentVariableCredentialsProvider();
// Tentukan nama domain kustom Anda. Contoh: http://static.example.com.
$endpoint = "http://static.example.com";
// Tentukan nama bucket. Contoh: examplebucket.
$bucket= "examplebucket";
// Jika dokumen berada di direktori root bucket, tentukan nama dokumen. Jika dokumen tidak berada di direktori root, tentukan path lengkap dokumen. Contoh: 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 yang mencakup parameter pemrosesan. URL ini berlaku selama 3600 detik dan dapat diakses langsung di browser.
$timeout = 3600;
$options = array(
// Buat instruksi pemrosesan untuk pratinjau online.
OssClient::OSS_PROCESS => "doc/preview,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%2Fpreview%2Cexport_1%2Cprint_1%2Fwatermark%2Ctext_5YaF6YOo6LWE5paZ%2Csize_30%2Ct_60&x-oss-date=20250122T020741Z&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, lalu tekan Enter untuk melihat pratinjau dokumen WebOffice.
Parameter
Aksi: doc/preview
Tabel berikut menjelaskan parameter-parameter tersebut.
|
Parameter |
Type |
Wajib |
Deskripsi |
|
|
int |
Tidak |
Menentukan apakah pencetakan diizinkan. Nilai yang valid:
|
|
copy |
int |
Tidak |
Menentukan apakah penyalinan diizinkan. Nilai yang valid:
|
|
export |
int |
Tidak |
Menentukan apakah ekspor ke PDF diizinkan. Nilai yang valid:
|
|
maxpage |
int |
Tidak |
Jumlah maksimum halaman yang dirender. Nilainya harus berupa bilangan bulat lebih besar dari 0. |
|
watermark |
string |
Tidak |
Parameter watermark. |
|
text |
string |
Tidak |
Teks watermark. Teks harus dikodekan dalam Base64 yang aman untuk URL. Untuk informasi lebih lanjut, lihat Pengkodean watermark. Kami menyarankan 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 (buram penuh). Node induk: watermark |
|
color |
string |
Tidak |
Warna teks watermark. Nilainya merupakan nilai warna RGB. Nilai default: #FFFFFF. Contoh: #000000 menunjukkan hitam, dan #FFFFFF menunjukkan putih. Node induk: watermark |
|
rotate |
int |
Tidak |
Sudut rotasi searah jarum jam teks. Nilai yang valid: 0 hingga 360. Nilai default: 0 (tanpa rotasi). Node induk: watermark |
|
type |
string |
Tidak |
Font watermark teks. Font harus dikodekan dalam Base64 yang aman untuk URL. Untuk informasi lebih lanjut, lihat Pengkodean watermark. Kami menyarankan Anda menggunakan penyandi base64url untuk pengkodean. Font berikut didukung:
Node induk: watermark |
Operasi API terkait
Operasi yang dijelaskan sebelumnya didasarkan pada operasi API. Jika program Anda memerlukan kustomisasi tingkat tinggi, Anda dapat langsung mengirim permintaan REST API. Untuk melakukannya, Anda harus menulis kode secara manual untuk menghitung signature. Untuk informasi lebih lanjut tentang cara menghitung header permintaan umum Authorization, lihat Signature V4 (disarankan).
Informasi pratinjau
-
Dokumen yang akan dipratinjau: example.docx
-
Halaman yang dipratinjau: 3 halaman pertama dokumen
-
Informasi watermark untuk halaman pratinjau:
-
Jenis watermark: Watermark teks
-
Teks watermark: Internal Material
-
Ukuran font: 30
-
Transparansi: 60
-
-
Izin untuk halaman pratinjau: Mengizinkan pengguna menyalin, mengekspor, dan mencetak
Contoh pemrosesan
GET /example.docx?x-oss-process=doc/preview,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: SignatureValue
Izin
Secara default, Akun Alibaba Cloud memiliki semua izin. Sebaliknya, Pengguna Resource Access Management (RAM) atau Peran RAM yang terkait dengan Akun Alibaba Cloud tidak memiliki izin apa pun secara default. Pemilik Akun Alibaba Cloud atau administrator harus memberikan izin kepada Pengguna RAM atau Peran RAM tersebut menggunakan kebijakan RAM atau kebijakan bucket.
|
Operasi 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. |
|
Operasi API |
Aksi |
Deskripsi |
|
GenerateWebofficeToken |
|
Digunakan untuk mendapatkan kredensial Weboffice. |
|
RefreshWebofficeToken |
|
Digunakan untuk memperbarui kredensial Weboffice. |
Penagihan
Fitur pratinjau online WebOffice dikenai biaya untuk item yang dapat ditagih berikut. Untuk informasi lebih lanjut tentang harga, lihat Harga OSS dan Item yang dapat ditagih.
|
API |
Item yang dapat ditagih |
Deskripsi |
|
GetObject |
Permintaan GET |
Anda dikenai biaya permintaan berdasarkan jumlah permintaan yang berhasil. |
|
Lalu lintas keluar melalui Internet |
Jika Anda memanggil operasi GetObject menggunakan titik akhir publik, seperti oss-cn-hangzhou.aliyuncs.com, atau titik akhir percepatan, seperti oss-accelerate.aliyuncs.com, Anda dikenai biaya lalu lintas keluar melalui Internet berdasarkan ukuran data. |
|
|
Pengambilan data objek IA |
Jika objek IA diambil, Anda dikenai biaya pengambilan data IA berdasarkan ukuran data IA yang diambil. |
|
|
Pengambilan objek Archive di bucket yang diaktifkan akses real-time |
Jika Anda mengambil objek Archive di bucket yang diaktifkan akses real-time, Anda dikenai biaya pengambilan data Archive berdasarkan ukuran objek Archive yang diambil. |
|
|
Biaya akselerasi transfer |
Jika Anda mengaktifkan akselerasi transfer dan menggunakan titik akhir percepatan untuk mengakses bucket Anda, Anda dikenai biaya akselerasi transfer berdasarkan ukuran data. |
|
API |
Item yang dapat ditagih |
Deskripsi |
|
GenerateWebofficeToken |
DocumentWebofficePreview |
Anda dikenai biaya pemrosesan dokumen berdasarkan jumlah panggilan API. Penting
Anda dikenai biaya untuk pratinjau dokumen online 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 |
FAQ
Apakah saya dapat melihat pratinjau animasi dan video di PPT dinamis?
Ya, Anda bisa. Namun, fitur pratinjau online mendukung dokumen hingga 200 MB. Dokumen yang melebihi batas ukuran ini tidak dapat diakses.
Apakah saya dapat melihat pratinjau file gambar?
Tidak didukung.
Setelah saya mengaktifkan CDN, muncul error saat menghasilkan URL yang ditandatangani untuk dokumen: Either the Signature query string parameter or the Authorization header should be specified, not both.
Jika Anda mengaktifkan pengambilan asal untuk bucket privat lalu menggunakan nama domain CDN untuk mengakses file di bucket yang telah disambungkan ke proyek IMM, Anda tidak perlu memberikan informasi signature tambahan. Untuk mengatasi masalah ini, konfigurasikan pengaturan sebagai berikut:
-
Anda harus memberikan izin
oss:ProcessImm,imm:GenerateWebofficeToken, danimm:RefreshWebofficeTokenkepada peran CDN defaultAliyunCDNAccessingPrivateOSSRole. -
Akses resource menggunakan URL yang tidak mengandung informasi signature.
Sebagai contoh, Anda dapat menggunakan URL dalam format berikut untuk menggunakan fitur pratinjau dokumen online: http://cdn.example.info/demo.ppt?x-oss-process=doc/preview,export_1,print_1