Belge Bilgileri
Belge Bilgileri
Bu kılavuz, Aspose.Words FOSS for .NET ile belge üst verilerini nasıl okuyup yazacağınızı gösterir. Yüklenen veya yeni oluşturulan her Document, içeriğinin yanı sıra iki tür üst veri taşır: yerleşik özelliklerin (yazar, başlık, kelime sayısı ve benzeri) sabit bir kümesi ve kendinizin tanımlayabileceği açık uçlu bir özel özellik kümesi. Aspose.Words FOSS for .NET ayrıca bu üst verileri belge gövdesinde ortaya çıkaran Word alanlarını — AUTHOR, COMMENTS ve DOCPROPERTY — uygular; böylece özellik değerleri canlı, güncellenebilir metin olarak görünebilir.
Yerleşik Belge Özellikleri
Document.BuiltInDocumentProperties, her standart Word üst veri alanı için bir özellik içeren bir BuiltInDocumentProperties koleksiyonu döndürür: Author, Title, Subject, Comments, Category, Company, Manager, Keywords, CreatedTime, LastSavedTime, LastSavedBy, LastPrinted, RevisionNumber, TotalEditingTime ve Pages, Words, Characters, CharactersWithSpaces, Paragraphs ve Lines gibi istatistikler. BuiltInDocumentProperties, DocumentPropertyCollection’den türediği için, adla arama, indeksleyicisi Contains() aracılığıyla, IndexOf() ve GetEnumerator() üzerinden yineleme desteği de sağlar. Aynı koleksiyon, düz metin girişiyle çalışırken PlainTextDocument.BuiltInDocumentProperties üzerinde de sunulur.
Özel Belge Özellikleri
Document.CustomDocumentProperties, bir uygulamanın kendisinin tanımladığı özellikler için bir CustomDocumentProperties koleksiyonu döndürür — Word’ün yerleşik kümenin yanında sakladığı keyfi ad/değer çiftleri. Add(name, value) ile bir özellik ekleyin; bu metod, CustomDocumentProperties boyunca bir özelliğin tutabileceği değer tipleri için aşırı yüklenir; properties[name] gibi indeksleyiciyle adıyla birini alın; ve Remove(name), RemoveAt(index) veya Clear() ile girdileri kaldırın. AddLinkToContent(name, linkSource), değeri sabit bir değer olarak depolanmak yerine belge içindeki bir yer işareti veya aralıkla bağlantılı bir özellik oluşturur.
Her iki koleksiyondaki — yerleşik veya özel — her giriş bir DocumentProperty’dır; bu, Name, Value ve Type (bir PropertyType değeri: String, Number, Double, Boolean, DateTime, StringArray, ObjectArray, ByteArray veya Other) sunar; ayrıca bağlantılı özellikler için IsLinkToContent ve LinkSource. DocumentProperty, istenen .NET tipinde temel değeri almak için ToString(), ToInt(), ToDouble(), ToDateTime(), ToBool() ve ToByteArray() gibi dönüşüm yardımcılarını sağlar.
Belge-Bilgi Alanları
Üç Field alt sınıfı, belge meta verilerini doğrudan belge gövdesindeki alanlar olarak ortaya çıkarır: FieldAuthor (AUTHOR alanı, AuthorName özelliğiyle), FieldComments (COMMENTS alanı, Text özelliğiyle) ve FieldDocProperty (DOCPROPERTY alanı, adlandırılmış bir belge özelliğini — yerleşik ya da özel — belgeye okur). Her Field gibi, bu üçü temel Field yaşam döngüsünü paylaşır: GetFieldCode() alttaki alan kodunu okumak için, Result / DisplayResult son hesaplanmış değeri okumak için, Update() değeri yeniden hesaplamak için, Unlink() alanı statik sonucu ile değiştirmek için ve Remove() silmek için. Bir belge-bilgi alanını DocumentBuilder.InsertField(fieldCode) ile ekleyin — örneğin AUTHOR veya DOCPROPERTY "Company" alan kodu — ya da InsertField(fieldType, updateField) aşırı yüklemesini bir FieldType değeriyle, örneğin FieldType.FieldAuthor, FieldType.FieldComments veya FieldType.FieldDocProperty kullanarak ekleyin.
Çünkü FieldDocProperty, bağlandığı belge özelliğini okur, alttaki BuiltInDocumentProperties veya CustomDocumentProperties değerini değiştirip ardından Update() — ya da belge içindeki tüm alanları bir kerede yenilemek için Document.UpdateFields() — çağrıldığında, yeni değer alanın görüntülenen sonucuna yayılır.
İpuçları ve En İyi Uygulamalar
- Kaydetmeden önce
Title,AuthorveSubjectgibi yerleşik özellikleri ayarlayın — Word ve diğer tüketiciler, belge listeleri ve arama indekslemesi için bunlarıBuiltInDocumentPropertiesüzerinden okur. DocumentProperty.Typekullanarak bir özelliğinPropertyTypedeğerini kontrol edin, ardından belirli bir dönüşüm yardımcı programını (ToInt(),ToDateTime()vb.) çağırın; böylece kendiniz oluşturmadığınız bir özellikte dönüşüm uyumsuzluğundan kaçınmış olursunuz.AddLinkToContent(), özel bir özelliği sabit bir değer yerine belge içeriğiyle (örneğin yer işareti eklenmiş bir aralık gibi) senkronize tutar — özelliğin her zaman belgede şu anda bulunan şeyi yansıtması gerektiğinde kullanın.- Belge özelliklerini değiştirdikten sonra
Document.UpdateFields()çağırın; böylece belge gövdesinde zaten bulunanFieldDocProperty,FieldAuthorveyaFieldCommentsalanları yeni değerleri alır. BuiltInDocumentPropertiesveCustomDocumentProperties,PlainTextDocumentveDocumentüzerinde de mevcuttur, bu yüzden meta veriler, yüklenen içerik düz metin olduğunda bile aktarılır.
Yaygın Sorunlar
| Sorun | Neden | Düzeltme |
|---|---|---|
İndeksleyici, özel bir özellik için null döndürür | Özellik henüz eklenmedi | CustomDocumentProperties.Add(name, value)‘ı önce çağırın veya okumadan önce Contains(name)‘i kontrol edin |
FieldDocProperty, bir özelliği değiştirdikten sonra eski bir değer gösterir | Alan yenilenmedi | Alan üzerinde Update() çağırın, ya da belgedeki tüm alanları yenilemek için Document.UpdateFields() kullanın |
DocumentProperty.ToInt() / ToDateTime() istisna fırlatır | Özelliğin gerçek Type değeri, istenen dönüşümle eşleşmiyor | Hangi dönüşüm yardımcı fonksiyonunun çağrılacağını seçmeden önce DocumentProperty.Type kontrol edin |
FAQ
Yerleşik ve özel belge özellikleri arasındaki fark nedir?
Yerleşik özellikler (Document.BuiltInDocumentProperties), OOXML formatı tarafından tanımlanan sabit bir kümedir — Author, Title, Pages ve benzerleri. Özel özellikler (Document.CustomDocumentProperties) ise Add() ile eklenen, uygulama tarafından tanımlanan açık uçlu bir ad/değer çifti kümesidir.
Bir özel özelliği sabit bir değer yerine belge içeriğini izletecek şekilde nasıl ayarlarım?
Statik bir değer depolamak yerine, özelliğin değerini belgede bir yer imi veya aralığa bağlayan CustomDocumentProperties.AddLinkToContent(name, linkSource) kullanın.
Bir belge özelliğini güncellemek, onu gösteren alanları otomatik olarak günceller mi?
Hayır — belirli alanda Update() çağırın veya belgede her alanı, FieldDocProperty, FieldAuthor ve FieldComments örneklerini dahil ederek yeniden hesaplamak için Document.UpdateFields() kullanın.
Düz metin belgesinden belge özelliklerini okuyabilir miyim?
Evet. PlainTextDocument, Document ile aynı BuiltInDocumentProperties ve CustomDocumentProperties özelliklerini sunar.
API Reference Özeti
| Sınıf / Metot | Açıklama |
|---|---|
Document.BuiltInDocumentProperties | Standart OOXML meta veri koleksiyonu (Author, Title, Pages, vb.) |
Document.CustomDocumentProperties | Uygulama tarafından tanımlanan ad/değer özelliği koleksiyonu |
CustomDocumentProperties.Add() / isimle indeksleyici / AddLinkToContent() | Özel bir özelliği ekle, al veya içerik bağlantısı kur |
DocumentProperty | Tek özellik girişi; Value, Type, ve ToString()/ToInt()/ToDouble()/ToDateTime()/ToBool()/ToByteArray() dönüştürme yardımcıları |
FieldAuthor / FieldComments / FieldDocProperty | AUTHOR, COMMENTS ve DOCPROPERTY alanları; Update(), Result, GetFieldCode() |
DocumentBuilder.InsertField() | Bir alanı alan koduyla veya FieldType ekler |