Cara Bekerja dengan Properti Dokumen di .NET
Cara Bekerja dengan Properti Dokumen di .NET
Setiap dokumen Word memiliki dua kategori metadata — bidang standar yang dilacak Word untuk setiap file, dan nilai yang ditentukan aplikasi yang ditambahkan program. Panduan ini menunjukkan cara membaca dan mengatur keduanya dengan Aspose.Words FOSS untuk .NET, menggunakan Document.BuiltInDocumentProperties dan Document.CustomDocumentProperties, yang keduanya pada akhirnya dibangun di atas representasi DocumentProperty yang sama.
Panduan Langkah demi Langkah
Langkah 1: Baca dan Atur Properti Dokumen Bawaan
Document.BuiltInDocumentProperties mengembalikan koleksi BuiltInDocumentProperties. Karena ini adalah kumpulan properti yang tetap dan dikenal, nilai dibaca dan ditulis sebagai anggota biasa bukan dicari berdasarkan nama — misalnya BuiltInDocumentProperties.Author, .Title, .Subject, .Manager, .Company, .Category, .Keywords, dan .Comments untuk bidang deskriptif, atau .CreatedTime, .LastSavedTime, .LastPrinted, dan .LastSavedBy untuk cap waktu. Statistik seperti .Characters, .CharactersWithSpaces, .Lines, dan .Bytes juga disajikan dengan cara ini, bersama dengan .Template dan .HyperlinkBase.
Langkah 2: Tambahkan Properti Dokumen Kustom
Document.CustomDocumentProperties mengembalikan koleksi CustomDocumentProperties untuk metadata yang ditentukan aplikasi yang tidak termasuk dalam set bawaan Word. Panggil salah satu overload Add(name, value) dengan nama dan nilai bertipe — string, number, boolean, atau date, tergantung overload mana yang cocok dengan tipe nilai — untuk membuat properti baru.
Langkah 3: Tautkan Properti Kustom ke Konten Dokumen
Alih-alih nilai statis, properti kustom dapat melacak rentang konten yang ditandai sehingga nilainya tetap selaras dengan konten tersebut. Panggil CustomDocumentProperties.AddLinkToContent(name, linkSource), dengan mengirimkan nama bookmark sebagai linkSource, alih-alih secara manual menyinkronkan ulang properti statis setiap kali konten yang ditautkan berubah.
Langkah 4: Cari, Periksa, dan Hapus Properti
Baik BuiltInDocumentProperties maupun CustomDocumentProperties diturunkan dari DocumentPropertyCollection abstrak, sehingga mereka diperiksa dengan cara yang sama: mengindeks berdasarkan nama (misalnya properties[name]) mengambil sebuah properti, Contains(name) memeriksa apakah properti tersebut ada, IndexOf(name) mengembalikan posisinya, dan Count melaporkan berapa banyak properti yang dimiliki koleksi. Panggil Contains(name) sebelum mengindeks berdasarkan nama ketika properti kustom mungkin tidak ada, untuk menghindari penanganan properti yang hilang sebagai jalur pengecualian. Hapus sebuah properti dengan Remove(name) atau RemoveAt(index), atau bersihkan semua properti dalam koleksi dengan Clear().
Langkah 5: Baca Nilai Properti Kustom Tanpa Mengetahui Tipe-nya Lebih Dulu
Sebuah DocumentProperty memiliki Name, sebuah Value yang tidak bertipe, dan sebuah Type — sebuah nilai enum PropertyType: Boolean, DateTime, Double, Number, String, StringArray, ObjectArray, ByteArray, atau Other. Karena Value tidak bertipe, gunakan accessor bertipe yang sesuai alih-alih casting langsung: ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray(), atau ToString(). Periksa IsLinkToContent dan LinkSource untuk mengetahui apakah sebuah properti ditautkan ke konten dokumen (lihat Langkah 3) alih-alih menyimpan nilai statis.
Langkah 6: Periksa Status Perlindungan Dokumen
BuiltInDocumentProperties.Security melaporkan nilai DocumentSecurity yang menggambarkan metadata perlindungan yang disimpan pada dokumen: None, PasswordProtected, ReadOnlyRecommended, ReadOnlyEnforced, atau ReadOnlyExceptAnnotations. Baca properti ini sebelum memutuskan apakah pemrosesan lanjutan terkait perlindungan diperlukan pada dokumen yang dimuat.
Masalah Umum dan Solusinya
Mengindeks sebuah CustomDocumentProperties koleksi berdasarkan nama tidak mengembalikan apa pun yang dapat digunakan. Properti tidak ada dalam dokumen ini. Panggil Contains(name) terlebih dahulu, atau tambahkan properti dengan yang sesuai Add(name, value) overload.
Membaca nilai properti khusus memberikan tipe yang salah. DocumentProperty.Value tidak bertipe object; pemanggil mengasumsikan tipe yang tidak cocok Type. Gunakan accessor bertipe yang sesuai (ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray()) berdasarkan DocumentProperty.Type.
Nilai properti kustom yang ditautkan tampak usang. Properti ditautkan melalui AddLinkToContent, dan konten yang ditandai berubah. Konfirmasikan linkSource penanda masih menandai rentang yang harus memasok nilai properti.
Statistik kata seperti Characters or Lines tidak cocok dengan konten aktual dokumen saat ini. Statistik bawaan mencerminkan metadata yang disimpan, bukan perhitungan langsung. Hitung ulang dan perbarui yang relevan BuiltInDocumentProperties nilai jika diperlukan hitungan terbaru.
Pertanyaan yang Sering Diajukan
Bagaimana cara membaca atau mengatur penulis dan judul dokumen?
Gunakan Document.BuiltInDocumentProperties.Author dan .Title secara langsung — mereka adalah properti string biasa pada koleksi BuiltInDocumentProperties yang diakses dari Document.BuiltInDocumentProperties.
Bagaimana cara menambahkan metadata khusus aplikasi yang bukan properti standar Word?
Gunakan Document.CustomDocumentProperties.Add(name, value) dengan nama dan nilai properti; overload Add yang cocok dipilih berdasarkan tipe nilai.
Apa perbedaan antara BuiltInDocumentProperties dan CustomDocumentProperties?
BuiltInDocumentProperties adalah kumpulan tetap bidang metadata standar Word, diakses sebagai anggota bernama. CustomDocumentProperties adalah koleksi terbuka, bernama, dari nilai DocumentProperty untuk metadata yang didefinisikan aplikasi, diakses berdasarkan nama melalui indeks (misalnya properties[name]) dan Contains.
Bagaimana cara membuat properti khusus melacak bagian konten dokumen alih-alih nilai statis?
Gunakan CustomDocumentProperties.AddLinkToContent(name, linkSource), dengan memberi nama bookmark sebagai linkSource; nilai properti kemudian mencerminkan konten bookmark tersebut.
Bagaimana cara memeriksa apakah dokumen dilindungi kata sandi?
Baca Document.BuiltInDocumentProperties.Security, nilai DocumentSecurity; PasswordProtected menunjukkan metadata yang disimpan pada dokumen menyatakan perlindungan password.