Informasi Dokumen
Informasi Dokumen
Panduan ini menunjukkan cara membaca dan menulis metadata dokumen dengan Aspose.Words FOSS untuk .NET. Setiap Document yang dimuat atau baru dibuat membawa dua jenis metadata di samping isinya: satu set properti bawaan yang tetap (penulis, judul, jumlah kata, dan sejenisnya) dan satu set properti khusus yang terbuka yang dapat Anda definisikan sendiri. Aspose.Words FOSS untuk .NET juga mengimplementasikan bidang Word yang menampilkan metadata ini di dalam isi dokumen — AUTHOR, COMMENTS, dan DOCPROPERTY — sehingga nilai properti dapat muncul sebagai teks yang hidup dan dapat diperbarui.
Properti Dokumen Bawaan
Document.BuiltInDocumentProperties mengembalikan koleksi BuiltInDocumentProperties dengan satu properti untuk setiap bidang metadata standar Word: Author, Title, Subject, Comments, Category, Company, Manager, Keywords, CreatedTime, LastSavedTime, LastSavedBy, LastPrinted, RevisionNumber, TotalEditingTime, dan statistik seperti Pages, Words, Characters, CharactersWithSpaces, Paragraphs, serta Lines. Karena BuiltInDocumentProperties diturunkan dari DocumentPropertyCollection, ia juga mendukung pencarian berdasarkan nama melalui indeksornya, Contains(), IndexOf(), dan enumerasi melalui GetEnumerator(). Koleksi yang sama tersedia pada PlainTextDocument.BuiltInDocumentProperties saat bekerja dengan masukan teks biasa.
Properti Dokumen Kustom
Document.CustomDocumentProperties mengembalikan koleksi CustomDocumentProperties untuk properti yang didefinisikan sendiri oleh aplikasi — pasangan nama/nilai sewenang-wenang yang disimpan Word bersama dengan set bawaan. Tambahkan properti dengan Add(name, value), yang di-overload di seluruh CustomDocumentProperties untuk tipe nilai yang dapat dimiliki properti; ambil satu berdasarkan nama dengan indeksornya, misalnya properties[name]; dan hapus entri dengan Remove(name), RemoveAt(index), atau Clear(). AddLinkToContent(name, linkSource) membuat properti yang nilainya terhubung ke bookmark atau rentang di dalam dokumen alih-alih disimpan sebagai nilai tetap.
Setiap entri dalam salah satu koleksi — bawaan atau kustom — adalah DocumentProperty, yang menampilkan Name, Value, dan Type (nilai PropertyType: String, Number, Double, Boolean, DateTime, StringArray, ObjectArray, ByteArray, atau Other), serta IsLinkToContent dan LinkSource untuk properti yang ditautkan. DocumentProperty menyediakan pembantu konversi seperti ToString(), ToInt(), ToDouble(), ToDateTime(), ToBool(), dan ToByteArray() untuk mengambil nilai yang mendasari dalam tipe .NET yang diinginkan.
Bidang Informasi Dokumen
Tiga subclass Field menampilkan metadata dokumen sebagai bidang di dalam isi dokumen itu sendiri: FieldAuthor (bidang AUTHOR, dengan properti AuthorName), FieldComments (bidang COMMENTS, dengan properti Text), dan FieldDocProperty (bidang DOCPROPERTY, yang membaca properti dokumen bernama — bawaan atau khusus — ke dalam dokumen). Seperti setiap Field, ketiga ini berbagi siklus hidup dasar Field: GetFieldCode() untuk membaca kode bidang yang mendasari, Result / DisplayResult untuk membaca nilai yang terakhir dihitung, Update() untuk menghitung ulang nilai, Unlink() untuk mengganti bidang dengan hasil statisnya, dan Remove() untuk menghapusnya. Sisipkan bidang informasi dokumen dengan DocumentBuilder.InsertField(fieldCode) — misalnya kode bidang AUTHOR atau DOCPROPERTY "Company" — atau dengan overload InsertField(fieldType, updateField) menggunakan nilai FieldType seperti FieldType.FieldAuthor, FieldType.FieldComments, atau FieldType.FieldDocProperty.
Karena FieldDocProperty membaca properti dokumen apa pun yang terikat padanya, mengubah nilai BuiltInDocumentProperties atau CustomDocumentProperties yang mendasari dan kemudian memanggil Update() — atau Document.UpdateFields() untuk menyegarkan semua bidang dalam dokumen sekaligus — akan menyebarkan nilai baru ke dalam hasil yang ditampilkan oleh bidang.
Tips dan Praktik Terbaik
- Atur properti bawaan seperti
Title,Author, danSubjectsebelum menyimpan — Word dan konsumen lainnya membaca ini dariBuiltInDocumentPropertiesuntuk daftar dokumen dan pengindeksan pencarian. - Gunakan
DocumentProperty.Typeuntuk memeriksaPropertyTypesebuah properti sebelum memanggil pembantu konversi tertentu (ToInt(),ToDateTime(), dll.) untuk menghindari ketidakcocokan konversi pada properti yang tidak Anda buat sendiri. AddLinkToContent()menjaga properti khusus tetap sinkron dengan konten dokumen (seperti rentang yang ditandai) alih-alih nilai tetap — gunakan ketika properti harus selalu mencerminkan apa yang saat ini ada di dokumen.- Panggil
Document.UpdateFields()setelah mengubah properti dokumen sehingga bidangFieldDocProperty,FieldAuthor, atauFieldCommentsyang sudah ada di dalam isi dokumen mengambil nilai baru. BuiltInDocumentPropertiesdanCustomDocumentPropertieskeduanya tersedia diPlainTextDocumentsertaDocument, sehingga metadata dapat dipertukarkan bahkan ketika konten yang dimuat berupa teks biasa.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
Indexer mengembalikan null untuk properti khusus | Properti belum ditambahkan | Panggil CustomDocumentProperties.Add(name, value) terlebih dahulu, atau periksa Contains(name) sebelum membaca |
FieldDocProperty menunjukkan nilai usang setelah mengubah properti | Field tidak diperbarui | Panggil Update() pada field, atau Document.UpdateFields() untuk menyegarkan setiap field dalam dokumen |
DocumentProperty.ToInt() / ToDateTime() melempar | Nilai Type aktual properti tidak cocok dengan konversi yang diminta | Periksa DocumentProperty.Type sebelum memilih helper konversi yang akan dipanggil |
FAQ
Apa perbedaan antara properti dokumen bawaan dan properti khusus?
Properti bawaan (Document.BuiltInDocumentProperties) adalah kumpulan tetap yang didefinisikan oleh format OOXML — Author, Title, Pages, dan serupa. Properti khusus (Document.CustomDocumentProperties) adalah kumpulan pasangan nama/nilai yang tidak terbatas, didefinisikan oleh aplikasi, yang ditambahkan dengan Add().
Bagaimana cara membuat properti khusus melacak konten dokumen alih-alih nilai tetap?
Gunakan CustomDocumentProperties.AddLinkToContent(name, linkSource), yang menautkan nilai properti ke bookmark atau rentang dalam dokumen alih-alih menyimpan nilai statis.
Apakah memperbarui properti dokumen secara otomatis memperbarui bidang yang menampilkannya?
Tidak — panggil Update() pada bidang tertentu atau Document.UpdateFields() untuk menghitung ulang setiap bidang dalam dokumen, termasuk contoh FieldDocProperty, FieldAuthor, dan FieldComments.
Apakah saya dapat membaca properti dokumen dari dokumen teks biasa?
Ya. PlainTextDocument mengekspos properti BuiltInDocumentProperties dan CustomDocumentProperties yang sama seperti Document.
Ringkasan API Reference
| Kelas / Metode | Deskripsi |
|---|---|
Document.BuiltInDocumentProperties | Koleksi metadata OOXML standar (Author, Title, Pages, dll.) |
Document.CustomDocumentProperties | Koleksi properti nama/nilai yang ditentukan aplikasi |
CustomDocumentProperties.Add() / pengindeks berdasarkan nama / AddLinkToContent() | Menambahkan, mengambil, atau menautkan konten properti khusus |
DocumentProperty | Entri properti tunggal; Value, Type, dan ToString()/ToInt()/ToDouble()/ToDateTime()/ToBool()/ToByteArray() pembantu konversi |
FieldAuthor / FieldComments / FieldDocProperty | AUTHOR, COMMENTS, dan DOCPROPERTY bidang; Update(), Result, GetFieldCode() |
DocumentBuilder.InsertField() | Menyisipkan bidang dengan kode bidang atau FieldType |