Belge Özellikleriyle Çalışma
Belge Özellikleriyle Çalışma
Bu kılavuz, bir Word belgesinin meta verilerini — Word’ün Bilgi/Özellikler panelinde görülen özellikler ve uygulama tanımlı özel değerler — nasıl okuyup yöneteceğinizi gösterir. Document.BuiltInDocumentProperties ve Document.CustomDocumentProperties bu iki kategoriyi ortaya çıkarır, her ikisi de nihayetinde aynı temel DocumentProperty temsiline dayanır.
Yerleşik Belge Özellikleri
Document.BuiltInDocumentProperties, her belge için Word’ün izlediği standart meta verileri kapsayan bir BuiltInDocumentProperties koleksiyonu döndürür: Title, Subject, Author, Manager, Company, Category, Keywords ve Comments gibi tanımlayıcı alanlar; CreatedTime, LastSavedTime ve LastPrinted gibi zaman damgaları, ayrıca LastSavedBy ve RevisionNumber; ve Words, Characters, CharactersWithSpaces, Lines, Paragraphs ve Pages gibi istatistikler. Security, belgenin koruma durumunu bir DocumentSecurity değeri olarak raporlar ve Template, NameOfApplication ve TotalEditingTime yazar ortamını tanımlar. BuiltInDocumentProperties sabit ve bilinen bir özellik kümesi olduğu için, bireysel değerler adla aranmak yerine sıradan özellikler (BuiltInDocumentProperties.Author = "...") olarak okunur ve yazılır.
Özel Belge Özellikleri
Document.CustomDocumentProperties, Word’ün yerleşik kümesinin bir parçası olmayan uygulama tanımlı meta veriler için bir CustomDocumentProperties koleksiyonu döndürür. Çeşitli Add(name, value) aşırı yüklemeleri, bir ad ve tiplenmiş bir değer (dize, sayı, boolean veya tarih, aşırı yüklemeye bağlı olarak) ile yeni bir özellik oluşturur ve AddLinkToContent(name, linkSource), değeri statik bir değer tutmak yerine belge içinde yer işaretiyle işaretlenmiş bir içerik aralığına bağlı ve onu izleyen bir özellik oluşturur. İsme göre indeksleme (ör. properties[name]) ve Contains(name) bir özelliği arar, IndexOf(name) konumunu döndürür ve Remove(name)/RemoveAt(index) birini siler.
The DocumentProperty Nesnesi ve Paylaşılan Koleksiyon Tabanı
Hem BuiltInDocumentProperties hem de CustomDocumentProperties, ad, GetEnumerator(), Contains(name), IndexOf(name) ve Count tarafından bir indeksleyici tanımlayan soyut DocumentPropertyCollection sınıfından türetilir — böylece yerleşik özellikler sabit ve özel özellikler açık uçlu olsa da iki koleksiyon aynı şekilde incelenir. Tek tek, bir DocumentProperty bir Name, tip tanımlaması olmayan bir Value ve bir Type (bir PropertyType enum değeri: Boolean, DateTime, Double, Number, String, StringArray, ObjectArray, ByteArray veya Other) içerir. IsLinkToContent ve LinkSource, özelliğin sabit bir değer tutmak yerine belge içeriğine bağlı olup olmadığını rapor eder (yukarıdaki AddLinkToContent bölümüne bakın). Value tip tanımlaması olmadığı için, DocumentProperty tipli erişimciler — ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray() ve ToString() — sağlar; böylece açık bir dönüşüm yapmadan belirli bir tip olarak okunabilir.
Belge Güvenliği
BuiltInDocumentProperties.Security belgenin koruma durumunu tanımlayan bir DocumentSecurity değeri rapor eder: None, PasswordProtected, ReadOnlyRecommended, ReadOnlyEnforced veya ReadOnlyExceptAnnotations. Bu, dosyanın özelliklerinden okunan belgenin depolanmış koruma üst verilerini yansıtır.
İpuçları ve En İyi Uygulamalar
- Tiplenmiş erişicileri (
ToInt(),ToDouble(),ToDateTime(),ToBool())DocumentProperty.Valueüzerinde kullanın, tiplenmemişobjectdeğerini doğrudan dönüştürmek yerine, çünkü temel depolama tipiPropertyTypegöre değişebilir. - Bir özelliğin mevcut olmayabileceği durumlarda, eksik özellik durumunu bir istisna yolu olarak ele almaktan kaçınmak için, adıyla (ör.
properties[name]) herhangi bir özellik koleksiyonuna indekslemeden önceContains(name)kontrol edin. - Belgenin yer imli bir bölümünü her zaman yansıtması gereken bir özel özelliğin değeri için, bu içeriğin değiştiğinde statik bir özel özelliği manuel olarak yeniden eşitlemek yerine
CustomDocumentProperties.AddLinkToContent(name, linkSource)kullanın. BuiltInDocumentPropertiesistatistiklerini (Words,Characters,Pagesve benzerlerini) dosyanın meta verilerinde saklanan değerler olarak ele al, her zaman canlı hesaplanan sayılar yerine — belge son yazılmasından bu yana değişmişse, bunları açıkça yenile.- Ek koruma ile ilgili ek işlemlerin gerekli olup olmayacağına karar vermeden önce belgenin bildirilen koruma durumunu kontrol etmek için
BuiltInDocumentProperties.Securityokuyun.
Yaygın Sorunlar
| Sorun | Neden | Düzeltme |
|---|---|---|
İsme göre bir CustomDocumentProperties koleksiyonunu indekslemek, kullanılabilir bir şey döndürmez | Bu belgede özellik mevcut değil | Önce Contains(name) çağırın, ya da ilgili Add(name, value) aşırı yüklemesiyle özelliği ekleyin |
| Özel bir özelliğin değerini okurken yanlış tip elde ediliyor | DocumentProperty.Value tip belirtilmemiş object; çağıran, Type ile eşleşmeyen bir tür varsaydı | İlgili tipli erişicileri (ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray()), DocumentProperty.Type temelinde kullanın |
| Bağlantılı özel bir özelliğin değeri eski gibi görünüyor | Özellik, AddLinkToContent aracılığıyla bağlanmış ve bağlanan içerik, belge uygun şekilde güncellenmeden değişmiş | Yer imli linkSource aralığının hâlâ hedeflenen içeriği yansıtıp yansıtmadığını doğrulayın |
Kelime istatistikleri (Words, Pages vb.) belgenin gerçek mevcut içeriğiyle eşleşmiyor | Yerleşik istatistikler, depolanan meta verileri yansıtır, gerçek zamanlı bir yeniden sayım değildir | Güncel bir sayım gerekliyse, ilgili BuiltInDocumentProperties değerlerini yeniden hesaplayın ve güncelleyin |
FAQ
Belgenin yazarını ve başlığını nasıl okur veya ayarlarım?
Doğrudan Document.BuiltInDocumentProperties.Author ve .Title kullanın — bunlar, Document.BuiltInDocumentProperties üzerinden ulaşılabilen BuiltInDocumentProperties koleksiyonundaki sıradan dize özellikleridir.
Standart Word özelliği olmayan uygulamaya özel meta verileri nasıl eklerim?
Document.CustomDocumentProperties.Add(name, value)‘ı özelliğin adı ve değeriyle kullanın; uygun Add aşırı yüklemesi değerin türüne göre seçilir.
BuiltInDocumentProperties ile CustomDocumentProperties arasındaki fark nedir?
BuiltInDocumentProperties Word’ün sabit standart meta veri alanları kümesidir (yazar, başlık, istatistikler vb.), adlandırılmış özellikler olarak erişilir. CustomDocumentProperties uygulama tanımlı meta veri için DocumentProperty değerlerinden oluşan açık uçlu, adlandırılmış bir koleksiyondur, isimle (ör. properties[name]) ve Contains aracılığıyla erişilir.
Önceden kesin depolanmış tipini bilmeden özel bir özelliği nasıl okuyabilirim?
Koleksiyonu indeksleyerek DocumentProperty‘ı alın (ör. properties[name]), onun Type‘sini (bir PropertyType değeri) kontrol edin ve Value üzerinde ToInt(), ToDouble(), ToDateTime() veya ToBool() gibi uygun tipteki erişiciyi kullanın.
Özel bir özelliğin belge içeriğinin bir parçasını izlemesini nasıl sağlayabilirim?
CustomDocumentProperties.AddLinkToContent(name, linkSource)‘ı kullanın, bir yer işareti adını linkSource olarak geçirin; böylece özelliğin değeri statik bir değer yerine o yer işaretli içeriği yansıtır.
API Reference Özeti
| Sınıf/Yöntem | Açıklama |
|---|---|
Document.BuiltInDocumentProperties | Word’ün standart meta veri alanları (yazar, başlık, istatistikler, güvenlik vb.) |
Document.CustomDocumentProperties | Uygulama tanımlı adlandırılmış meta veri özellikleri |
CustomDocumentProperties.Add(name, value) | Adı ve tiplenmiş bir değerden özel bir özellik ekle |
CustomDocumentProperties.AddLinkToContent(name, linkSource) | Yer imli belge içeriğine bağlanan özel bir özellik ekleyin |
DocumentPropertyCollection | Her iki özellik koleksiyonu için paylaşılan soyut temel |
DocumentProperty | Tek bir özelliğin adı, tiplenmemiş değeri ve PropertyType |
DocumentProperty.ToInt() / ToDouble() / ToDateTime() / ToBool() | Bir özelliğin değeri için tiplenmiş erişimciler |
PropertyType | Bir DocumentProperty‘ın değer tipini tanımlayan enum |
DocumentSecurity | Bir belgenin koruma durumunu tanımlayan enum, BuiltInDocumentProperties.Security üzerinden |