全部产品
Search
文档中心

Object Storage Service:WebOffice online preview

更新时间:Nov 09, 2025

WebOffice memungkinkan Anda mempratinjau dokumen Word, PPT, dan Excel langsung di browser tanpa perlu mengunduh file.

Skenario

  • Basis pengetahuan perusahaan atau sistem manajemen dokumen: Karyawan dapat mengunggah file dan mengonversinya ke format web untuk dilihat dengan cepat. Ini meningkatkan efisiensi dan keamanan akses informasi.

  • Platform pendidikan online: Guru dan siswa dapat melihat materi kursus, catatan kuliah, dan tugas secara real time. Ini meningkatkan interaksi dan pengalaman belajar.

  • Alat kolaborasi dan manajemen proyek: Anggota tim dapat melihat rencana kerja bersama, draf desain, dan laporan langsung di browser. Ini 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

PDF

pdf

Cara menggunakan

Prasyarat

Dapatkan URL untuk mengaktifkan pratinjau

Java

Gunakan Java SDK 3.17.4 atau yang 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 diatur.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Tentukan jalur lengkap objek. Jika objek tidak berada di direktori root bucket, Anda harus menentukan jalur lengkapnya.
        String objectName = "exampledir/exampleobject.docx";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Wilayah ke cn-hangzhou.
        String region = "cn-hangzhou";
        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepaskan sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        // Catatan: Atur nilai menjadi 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/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("Tangkap OSSException, yang berarti permintaan Anda sampai di 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 2.18.4 atau yang 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 diatur.
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 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 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 3.0.2 atau yang 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(&region, "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 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. Contoh: 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/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("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. 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 8.0 atau yang 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 diatur.
    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), atur Wilayah 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 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 2.7.0 atau yang 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 diatur.
$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 jalur 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 tersebut valid selama 3600 detik dan dapat diakses langsung di browser.
$timeout = 3600;

$options = array(
    // Konstruksi 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=514ed93accdb80921c4b2897c6147fdb1599308c6457f68ee0ac2f771c7d0312

Salin URL yang dihasilkan, tempelkan ke bilah alamat browser Anda, dan tekan Enter untuk melihat pratinjau dokumen WebOffice.

Parameter

Action: doc/preview

Tabel berikut menjelaskan parameter.

Parameter

Tipe

Diperlukan

Deskripsi

print

int

Tidak

Menentukan apakah pencetakan diizinkan. Nilai yang valid:

  • 1: Diizinkan.

  • 0: Tidak diizinkan.

copy

int

Tidak

Menentukan apakah penyalinan diizinkan. Nilai yang valid:

  • 1: Diizinkan.

  • 0: Tidak diizinkan.

export

int

Tidak

Menentukan apakah ekspor ke PDF diizinkan. Nilai yang valid:

  • 1: Diizinkan.

  • 0: Tidak diizinkan.

maxpage

int

Tidak

Jumlah maksimum halaman yang akan dirender. Nilainya harus bilangan bulat lebih besar dari 0.

watermark

string

Tidak

Parameter watermark.

text

string

Tidak

Teks watermark. Teks tersebut harus dikodekan dalam format URL-safe Base64. 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 bilangan bulat lebih besar dari 0.

Node induk: watermark

t

int

Tidak

Transparansi teks watermark. Nilai yang valid: 0 hingga 100. Nilai default: 100 (tidak transparan).

Node induk: watermark

color

string

Tidak

Warna teks watermark. Nilainya adalah 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 teks watermark. Font tersebut harus dikodekan dalam format URL-safe Base64. Untuk informasi lebih lanjut, lihat Pengkodean watermark. Kami merekomendasikan Anda menggunakan penyandi base64url untuk pengkodean.

Berikut ini adalah font yang didukung:

  • Font Cina:

    • Song Ti (default)

    • Kai Ti

  • Font Inggris:

    • Arial

    • Georgia

    • Tahoma

    • Comic Sans MS

    • Times New Roman

    • Courier New, Verdana

Node induk: watermark

Operasi API terkait

Operasi yang dijelaskan sebelumnya didasarkan pada operasi API. Jika program Anda memerlukan tingkat kustomisasi yang tinggi, Anda dapat langsung menginisiasi permintaan REST API. Untuk melakukannya, Anda harus menulis kode secara manual untuk menghitung signature. Untuk informasi selengkapnya tentang cara menghitung header permintaan umum Authorization, lihat Signature V4 (direkomendasikan).

Informasi Pratinjau

  • Dokumen untuk pratinjau: example.docx

  • Halaman untuk pratinjau: 3 halaman pertama dari dokumen

  • Informasi watermark untuk halaman pratinjau:

    • Tipe 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, sebuah Akun Alibaba Cloud memiliki semua izin. Sebaliknya, Pengguna Resource Access Management (RAM) atau Peran RAM yang terkait dengan Akun Alibaba Cloud tidak memiliki izin secara default. Pemilik Akun Alibaba Cloud atau administrator harus memberikan izin kepada Pengguna RAM atau Peran RAM menggunakan Kebijakan RAM atau kebijakan bucket.

Operasi API

Action

Deskripsi

GetObject

oss:GetObject

Mengunduh sebuah objek.

oss:GetObjectVersion

Jika Anda menentukan versi objek menggunakan versionId saat mengunduh objek, Anda harus memiliki izin untuk aksi ini.

kms:Decrypt

Jika metadata dari sebuah 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

oss:ProcessImm

Izin untuk menggunakan IMM melalui OSS untuk pemrosesan data.

Operasi API

Aksi

Deskripsi

GenerateWebofficeToken

imm:GenerateWebofficeToken

Digunakan untuk memperoleh kredensial Weboffice.

RefreshWebofficeToken

imm:RefreshWebofficeToken

Digunakan untuk menyegarkan kredensial Weboffice.

Penagihan

Fitur pratinjau online WebOffice menghasilkan biaya untuk item-item berikut. Untuk informasi lebih lanjut tentang harga, lihat OSS Pricing dan Item yang Dapat Ditagih.

API

Item yang dapat ditagih

Deskripsi

GetObject

Permintaan GET

Anda akan dikenakan 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 akan dikenakan biaya lalu lintas keluar melalui Internet berdasarkan ukuran data.

Pengambilan objek IA

Jika objek IA diambil, Anda akan dikenakan biaya pengambilan data IA berdasarkan ukuran data IA yang diambil.

Pengambilan objek Arsip dalam bucket dengan akses real-time diaktifkan

Jika Anda mengambil objek Arsip dalam bucket dengan akses real-time diaktifkan, Anda akan dikenakan biaya pengambilan data Arsip berdasarkan ukuran objek Arsip yang diambil.

Biaya akselerasi transfer

Jika Anda mengaktifkan akselerasi transfer dan menggunakan titik akhir percepatan untuk mengakses bucket Anda, Anda akan dikenakan biaya akselerasi transfer berdasarkan ukuran data.

API

Item Tagihan

Deskripsi

GenerateWebofficeToken

DocumentWebofficePreview

Anda akan dikenakan biaya pemrosesan dokumen berdasarkan jumlah panggilan API.

Penting

Anda akan dikenakan 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

Catatan

Pratinjau online WebOffice hanya mendukung pemrosesan sinkron (metode x-oss-process).

FAQ

Apakah saya dapat melihat pratinjau animasi dan video dalam 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 citra?

Tidak didukung.

Setelah saya mengaktifkan CDN, sebuah kesalahan dilaporkan ketika saya membuat URL yang ditandatangani untuk sebuah dokumen: Parameter string kueri Signature atau Header Authorization harus ditentukan, bukan keduanya.

Jika Anda mengaktifkan pengambilan asal untuk bucket pribadi dan kemudian menggunakan nama domain CDN untuk mengakses file dalam bucket yang disambungkan ke proyek IMM, Anda tidak perlu memberikan informasi tanda tangan tambahan. Untuk menyelesaikan masalah ini, konfigurasikan pengaturan sebagai berikut:

  1. Anda harus memberikan izin oss:ProcessImm, imm:GenerateWebofficeToken, dan imm:RefreshWebofficeToken kepada peran CDN default AliyunCDNAccessingPrivateOSSRole.

  2. Akses sumber daya menggunakan URL yang tidak berisi informasi tanda tangan.

    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