Cara Menambahkan Bentuk Gambar ke Dokumen Word di .NET

Cara Menambahkan Bentuk Gambar ke Dokumen Word di .NET

Panduan ini menunjukkan cara menambahkan konten ke lapisan gambar dari dokumen Word dengan Aspose.Words FOSS untuk .NET: menyisipkan AutoShape, menambahkan gambar, memposisikannya dan membungkus teks di sekitarnya, mengisi dan memberi gaya, mengelompokkan beberapa bentuk, serta mengatur watermark. Aspose.Words FOSS untuk .NET tersedia melalui NuGet atau dengan membangun dari sumber.

Panduan Langkah-demi-Langkah

Langkah 1: Dapatkan Perpustakaan

Klon repositori dan bangun Aspose.Words.sln dalam konfigurasi Release, lalu tambahkan referensi proyek ke Aspose.Words.csproj dari proyek .NET Anda sendiri, seperti yang dijelaskan dalam Panduan Instalasi. Tambahkan using Aspose.Words; and using Aspose.Words.Drawing; di bagian atas file apa pun yang bekerja dengan bentuk.


Langkah 2: Tambahkan AutoShape

Bangun sebuah bentuk secara langsung dengan new Shape(doc, shapeType), di mana shapeType adalah nilai ShapeType seperti Rectangle, Ellipse, Star, atau TextBox, kemudian sisipkan ke dalam pohon dengan DocumentBuilder.InsertNode(node). Shape adalah kelas konkret yang sealed yang Anda bangun dan konfigurasikan; kelas ini diturunkan dari ShapeBase yang abstrak, yang mendefinisikan posisi (Left, Top, Width, Height, Rotation) dan sub-objek pemformatan (Fill, Stroke, ShadowFormat, Glow, Reflection) yang dibagikan dengan GroupShape.


Langkah 3: Tambahkan Gambar

DocumentBuilder.InsertImage adalah jalur langsung untuk gambar: overload menerima Image, jalur file, Stream, atau array byte mentah, dengan overload tambahan yang menerima width/height secara eksplisit atau argumen penempatan lengkap (horzPos, left, vertPos, top, width, height, wrapType). Properti ImageData dari Shape yang dihasilkan menyimpan data gambar — panggil ImageData.SetImage(...) untuk mengganti gambar, dan gunakan CropTop/CropBottom/CropLeft/CropRight, Brightness, Contrast, dan GrayScale untuk penyesuaian dasar.


Langkah 4: Posisikan Bentuk dan Bungkus Teks

Bentuk inline (hasil default dari InsertImage) mengalir bersama teks di sekitarnya dan mengabaikan properti penempatan sampai ia mengambang — periksa IsInline untuk memastikan mode bentuk tersebut. Untuk mengambangkan sebuah bentuk, setel WrapType ke nilai non-inline dan atur RelativeHorizontalPosition / RelativeVerticalPosition (masing-masing relatif terhadap Page, Margin, Column, atau jangkar serupa) bersama dengan offset Left/Top. WrapSide mengontrol pembungkus spesifik sisi, dan HorizontalAlignment / VerticalAlignment menangani perataan relatif sederhana alih-alih offset eksplisit.


Langkah 5: Isi dan Gaya Bentuk

Shape.Fill (sebuah objek Fill) melukis interior bentuk: Fill.Solid(color) untuk warna datar, Fill.OneColorGradient(...) / Fill.TwoColorGradient(...) untuk gradien, Fill.Patterned(patternType) untuk pola, dan Fill.SetImage(...) untuk isian gambar — FillType melaporkan mana yang saat ini aktif. Garis tepi berasal dari properti Stroke. Untuk efek, ShadowFormat, Glow (GlowFormat), Reflection (ReflectionFormat), dan SoftEdge (SoftEdgeFormat) masing-masing menampilkan pengaturan mereka sendiri dan metode Remove() yang menghapus efek kembali ke tidak ada.


Langkah 6: Kelompokkan Beberapa Bentuk

Gabungkan beberapa bentuk menjadi satu unit dengan DocumentBuilder.InsertGroupShape(shapes), yang mengembalikan GroupShape. GroupShape sendiri adalah ShapeBase, sehingga ia memiliki Fill, ShadowFormat, Glow, dan Reflection miliknya yang diterapkan pada grup secara keseluruhan; pindahkan atau ubah ukuran GroupShape alih-alih anak-anak individualnya agar transformasi koordinat grup tetap konsisten. Untuk bentuk yang membawa teks, Shape.TextBox (sebuah objek TextBox) mengontrol padding (InternalMarginLeft/Right/Top/Bottom), ukuran otomatis (FitShapeToText), arah teks (LayoutFlow), dan perataan vertikal (VerticalAnchor).


Langkah 7: Tambahkan Watermark

Document.Watermark mengelola satu watermark seluruh dokumen yang independen dari bentuk apa pun yang Anda sisipkan secara manual. Panggil Watermark.SetText(text) atau SetText(text, options) untuk watermark teks, atau SetImage(...) untuk watermark gambar; Watermark.Remove() menghapusnya, dan Watermark.Type melaporkan WatermarkType saat ini (Text, Image, atau None). TextWatermarkOptions mengatur FontFamily, FontSize, Color, dan Layout (WatermarkLayout.Horizontal atau Diagonal); ImageWatermarkOptions mengatur Scale dan IsWashout.

Masalah Umum dan Solusi

Setting Left/Top pada sebuah bentuk tidak memberikan efek yang terlihat. Bentuk masih inline (IsInline == true). Atur WrapType menjadi nilai mengambang dan atur RelativeHorizontalPosition/RelativeVerticalPosition agar properti offset berfungsi.

Shape.ImageData melempar atau tidak mengembalikan apa pun. Bentuk bukan bentuk gambar. Periksa Shape.HasImage sebelum membaca ImageData.

Bentuk anak grup tidak bergerak bersama. Anak-anak dipindahkan secara individual alih-alih melalui grup. Pindahkan atau ubah ukuran GroupShape sendiri sehingga transformasi koordinatnya berlaku untuk setiap anak.

Teks watermark tidak menggunakan font yang diminta. Tidak TextWatermarkOptions telah dilewatkan. Panggil Watermark.SetText(text, options) dengan sebuah TextWatermarkOptions instansi yang FontFamily diatur.

Pertanyaan yang Sering Diajukan

Apa perbedaan antara Shape dan ShapeBase?

ShapeBase adalah kelas dasar abstrak yang dibagi oleh Shape dan GroupShape. Tulis kode terhadap ShapeBase ketika harus menangani kedua jenis secara seragam; gunakan Shape secara langsung untuk anggota yang khusus bagi satu objek gambar, seperti ImageData.

Bagaimana cara saya menyisipkan gambar dengan ukuran tertentu?

Gunakan overload DocumentBuilder.InsertImage yang menerima argumen width dan height secara eksplisit, bersama dengan sumber gambar (sebuah Image, jalur file, Stream, atau array byte).

Bagaimana cara membuat bentuk mengambang alih-alih berada inline dengan teks?

Setel WrapType ke nilai non-inline dan setel RelativeHorizontalPosition / RelativeVerticalPosition sehingga offset Left/Top diinterpretasikan relatif terhadap halaman, margin, atau kolom.

Apakah sebuah dokumen dapat memiliki watermark teks dan gambar sekaligus?

No. Document.Watermark.Type melaporkan tipe watermark saat ini; memanggil SetText atau SetImage lagi akan menggantikan watermark apa pun yang sebelumnya diatur.

Bagaimana cara menghapus bayangan atau refleksi dari sebuah bentuk?

Panggil Remove() pada objek pemformatan yang sesuai — Shape.ShadowFormat.Remove() atau Shape.Reflection.Remove().

Lihat Juga

 Bahasa Indonesia