Bekerja dengan Properti Dokumen
Bekerja dengan Properti Dokumen
Panduan ini menunjukkan cara membaca dan mengelola metadata dokumen Word — properti yang terlihat di panel Info/Properties Word, serta nilai khusus yang didefinisikan aplikasi. Document.BuiltInDocumentProperties dan Document.CustomDocumentProperties menampilkan dua kategori ini, keduanya pada akhirnya dibangun di atas representasi DocumentProperty yang sama.
Properti Dokumen Bawaan
Document.BuiltInDocumentProperties mengembalikan koleksi BuiltInDocumentProperties yang mencakup metadata standar yang dilacak Word untuk setiap dokumen: bidang deskriptif seperti Title, Subject, Author, Manager, Company, Category, Keywords, dan Comments; cap waktu seperti CreatedTime, LastSavedTime, dan LastPrinted, bersama dengan LastSavedBy dan RevisionNumber; serta statistik seperti Words, Characters, CharactersWithSpaces, Lines, Paragraphs, dan Pages. Security melaporkan status perlindungan dokumen sebagai nilai DocumentSecurity, dan Template, NameOfApplication, dan TotalEditingTime menggambarkan lingkungan penulisan. Karena BuiltInDocumentProperties merupakan seperangkat properti tetap yang diketahui, nilai individu dibaca dan ditulis sebagai properti biasa (BuiltInDocumentProperties.Author = "...") bukan dengan mencari berdasarkan nama.
Properti Dokumen Kustom
Document.CustomDocumentProperties mengembalikan koleksi CustomDocumentProperties untuk metadata yang didefinisikan aplikasi yang tidak termasuk dalam set bawaan Word. Beberapa overload Add(name, value) membuat properti baru dari nama dan nilai bertipe (string, number, boolean, atau date, tergantung overload), dan AddLinkToContent(name, linkSource) membuat properti yang nilainya terhubung ke dan melacak rentang konten yang ditandai dalam dokumen alih-alih menyimpan nilai statis. Pengindeksan berdasarkan nama (misalnya properties[name]) dan Contains(name) mencari properti, IndexOf(name) mengembalikan posisinya, dan Remove(name)/RemoveAt(index) menghapus satu.
Objek DocumentProperty dan Basis Koleksi Bersama
Baik BuiltInDocumentProperties maupun CustomDocumentProperties berasal dari DocumentPropertyCollection abstrak, yang mendefinisikan sebuah pengindeks dengan nama, GetEnumerator(), Contains(name), IndexOf(name), dan Count — sehingga kedua koleksi tersebut diperiksa dengan cara yang sama meskipun properti bawaan bersifat tetap dan properti khusus bersifat terbuka. Secara individual, sebuah DocumentProperty memiliki Name, sebuah Value yang tidak bertipe, dan sebuah Type (nilai enum PropertyType: Boolean, DateTime, Double, Number, String, StringArray, ObjectArray, ByteArray, atau Other). IsLinkToContent dan LinkSource melaporkan apakah properti tersebut terhubung ke konten dokumen alih-alih menyimpan nilai statis (lihat AddLinkToContent di atas). Karena Value tidak bertipe, DocumentProperty menyediakan accessor bertipe — ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray(), dan ToString() — untuk membacanya sebagai tipe tertentu tanpa cast eksplisit.
Keamanan Dokumen
BuiltInDocumentProperties.Security melaporkan nilai DocumentSecurity yang menggambarkan status perlindungan dokumen: None, PasswordProtected, ReadOnlyRecommended, ReadOnlyEnforced, atau ReadOnlyExceptAnnotations. Ini mencerminkan metadata perlindungan yang disimpan dalam dokumen sebagaimana dibaca dari properti file.
Tips dan Praktik Terbaik
- Gunakan accessor bertipe (
ToInt(),ToDouble(),ToDateTime(),ToBool()) padaDocumentProperty.Valuealih-alih meng-cast nilaiobjectyang tidak bertipe secara langsung, karena tipe penyimpanan dasar dapat bervariasi menurutPropertyType. - Periksa
Contains(name)sebelum mengindeks ke salah satu koleksi properti berdasarkan nama (misalnyaproperties[name]) ketika sebuah properti mungkin tidak ada, untuk menghindari penanganan kasus properti yang hilang sebagai jalur pengecualian. - Gunakan
CustomDocumentProperties.AddLinkToContent(name, linkSource)ketika nilai properti khusus harus selalu mencerminkan bagian dokumen yang ditandai, alih-alih secara manual menyinkronkan kembali properti khusus statis setiap kali konten tersebut berubah. - Anggap statistik
BuiltInDocumentProperties(Words,Characters,Pages, dan serupa) sebagai nilai yang disimpan dalam metadata file, bukan sebagai hitungan yang selalu hidup dihitung — segarkan secara eksplisit jika dokumen telah berubah sejak terakhir kali ditulis. - Baca
BuiltInDocumentProperties.Securityuntuk memeriksa status perlindungan yang dinyatakan pada dokumen sebelum memutuskan apakah pemrosesan lebih lanjut terkait perlindungan diperlukan.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
Mengindeks koleksi CustomDocumentProperties berdasarkan nama tidak menghasilkan apa pun yang dapat digunakan | Properti tidak ada dalam dokumen ini | Panggil Contains(name) terlebih dahulu, atau tambahkan properti dengan overload Add(name, value) yang sesuai |
| Membaca nilai properti khusus menghasilkan tipe yang salah | DocumentProperty.Value tidak bertipe object; pemanggil mengasumsikan tipe yang tidak cocok dengan Type | Gunakan accessor bertipe yang sesuai (ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray()) berdasarkan DocumentProperty.Type |
| Nilai properti khusus yang ditautkan tampak usang | Properti tersebut ditautkan melalui AddLinkToContent, dan konten yang ditautkan berubah tanpa dokumen diperbarui secara tepat | Pastikan rentang linkSource yang ditandai masih mencerminkan konten yang dimaksud |
Statistik kata (Words, Pages, dan seterusnya) tidak cocok dengan konten aktual dokumen saat ini | Statistik bawaan mencerminkan metadata yang disimpan, bukan penghitungan ulang secara langsung | Hitung ulang dan perbarui nilai BuiltInDocumentProperties yang relevan jika diperlukan hitungan yang terbaru |
FAQ
Bagaimana cara membaca atau mengatur penulis dan judul dokumen?
Gunakan Document.BuiltInDocumentProperties.Author dan .Title secara langsung — keduanya merupakan properti string biasa pada koleksi BuiltInDocumentProperties yang diakses dari Document.BuiltInDocumentProperties.
Bagaimana cara menambahkan metadata spesifik aplikasi yang bukan properti standar Word?
Gunakan Document.CustomDocumentProperties.Add(name, value) dengan nama dan nilai properti; overload Add yang tepat dipilih berdasarkan tipe nilai.
Apa perbedaan antara BuiltInDocumentProperties dan CustomDocumentProperties?
BuiltInDocumentProperties adalah kumpulan tetap bidang metadata standar Word (penulis, judul, statistik, dan sebagainya), diakses sebagai properti bernama. CustomDocumentProperties adalah koleksi terbuka, bernama, dari nilai DocumentProperty untuk metadata yang ditentukan aplikasi, diakses dengan nama melalui indeks (misalnya properties[name]) dan Contains.
Bagaimana cara saya membaca properti khusus tanpa mengetahui tipe penyimpanan yang tepat sebelumnya?
Ambil DocumentProperty dengan mengindeks koleksi (misalnya properties[name]), periksa Typenya (nilai PropertyType), dan gunakan accessor bertipe yang cocok seperti ToInt(), ToDouble(), ToDateTime(), atau ToBool() pada Valuenya.
Bagaimana cara membuat properti khusus melacak bagian konten dokumen?
Gunakan CustomDocumentProperties.AddLinkToContent(name, linkSource), dengan memberikan nama bookmark sebagai linkSource; nilai properti kemudian mencerminkan konten yang ditandai tersebut alih-alih nilai statis.
API Reference Ringkasan
| Kelas/Metode | Deskripsi |
|---|---|
Document.BuiltInDocumentProperties | Bidang metadata standar Word (penulis, judul, statistik, keamanan, dan sebagainya) |
Document.CustomDocumentProperties | Properti metadata bernama yang didefinisikan oleh aplikasi |
CustomDocumentProperties.Add(name, value) | Tambahkan properti khusus dari nama dan nilai yang bertipe |
CustomDocumentProperties.AddLinkToContent(name, linkSource) | Tambahkan properti khusus yang terhubung ke konten dokumen yang ditandai |
DocumentPropertyCollection | Basis abstrak bersama untuk kedua koleksi properti |
DocumentProperty | Nama properti tunggal, nilai yang tidak bertipe, dan PropertyType |
DocumentProperty.ToInt() / ToDouble() / ToDateTime() / ToBool() | Accessor bertipe untuk nilai properti |
PropertyType | Enum yang menggambarkan tipe nilai DocumentProperty |
DocumentSecurity | Enum yang menggambarkan status perlindungan dokumen, melalui BuiltInDocumentProperties.Security |