Bekerja dengan Properti Dokumen

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()) pada DocumentProperty.Value alih-alih meng-cast nilai object yang tidak bertipe secara langsung, karena tipe penyimpanan dasar dapat bervariasi menurut PropertyType.
  • Periksa Contains(name) sebelum mengindeks ke salah satu koleksi properti berdasarkan nama (misalnya properties[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.Security untuk memeriksa status perlindungan yang dinyatakan pada dokumen sebelum memutuskan apakah pemrosesan lebih lanjut terkait perlindungan diperlukan.

Masalah Umum

MasalahPenyebabPerbaikan
Mengindeks koleksi CustomDocumentProperties berdasarkan nama tidak menghasilkan apa pun yang dapat digunakanProperti tidak ada dalam dokumen iniPanggil Contains(name) terlebih dahulu, atau tambahkan properti dengan overload Add(name, value) yang sesuai
Membaca nilai properti khusus menghasilkan tipe yang salahDocumentProperty.Value tidak bertipe object; pemanggil mengasumsikan tipe yang tidak cocok dengan TypeGunakan accessor bertipe yang sesuai (ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray()) berdasarkan DocumentProperty.Type
Nilai properti khusus yang ditautkan tampak usangProperti tersebut ditautkan melalui AddLinkToContent, dan konten yang ditautkan berubah tanpa dokumen diperbarui secara tepatPastikan rentang linkSource yang ditandai masih mencerminkan konten yang dimaksud
Statistik kata (Words, Pages, dan seterusnya) tidak cocok dengan konten aktual dokumen saat iniStatistik bawaan mencerminkan metadata yang disimpan, bukan penghitungan ulang secara langsungHitung 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/MetodeDeskripsi
Document.BuiltInDocumentPropertiesBidang metadata standar Word (penulis, judul, statistik, keamanan, dan sebagainya)
Document.CustomDocumentPropertiesProperti 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
DocumentPropertyCollectionBasis abstrak bersama untuk kedua koleksi properti
DocumentPropertyNama properti tunggal, nilai yang tidak bertipe, dan PropertyType
DocumentProperty.ToInt() / ToDouble() / ToDateTime() / ToBool()Accessor bertipe untuk nilai properti
PropertyTypeEnum yang menggambarkan tipe nilai DocumentProperty
DocumentSecurityEnum yang menggambarkan status perlindungan dokumen, melalui BuiltInDocumentProperties.Security

Lihat Juga

 Bahasa Indonesia