BilgiTeknoloji.net    
b i l g i   t e k n o l o j i   y a z ı l ı m

Ana Sayfa

Marjinal XML Access Pratik Uygulamalar Projeler Ekonometri Dilimiz Çetrefil İletişim
 

Office Belge Özelliklerini Düzenlemek

Office belgeleri kendilerini tanıtan özet bilgiler depolayabilirler. Bunlar, yazara, belgenin kendisine ait bilgiler veya belgenin küçük resmi (thumbnail) olabilir. Microsoft'un çıkardığı DSOleFile kitaplığını kullanarak bu bilgileri okumak ve değiştirmek mümkün.

  • Explorer'da Dosya Özellikleri
  • DSOLEFILE ile Belge Özelliklerine Erişmek


WİNDOWS GEZGİNİNDE (EXPLORER) DOSYA ÖZELLİKLERİ

Geçen aylardaki ActiveX Özel yazısını inceleyen okurlarımız Property Sheet Handler uygulamalarının, dosya özellikleri kurusunda yeni özellik sayfalarının oluşturulabileceğinden bahsettiğimizi hatırlayacaklardır.

Bu ay buna ek olarak Thumbnail Image Handler adlı bir uygulama karşımıza çıkıyor. Explorer'da dosyaların küçük resim görünümü aktif edildiğinde Registry'de kayıtlı önişleyici DLL komutları devreye giriyor. Her dosya türü için farklı olacak şekilde, varsa ilgili DLL dosyaları çalıştırılıp küçük resimler elde ediliyor.

Bu dosyalar resimleri, video görüntülerini küçültüp gösterebilirler. Bununla birlikte Microsoft Office belgeleri için de küçük resim görünümü elde edilebilir.

Küçük resim önişleyicileri her belge türünün resmini doğrudan çıkaracak kadar akıllı değildir. MS Office programlarında belgenin küçük resminin kaydedilmesini sağlayan bir seçenek mevcuttur.



File / Properties (Dosya / Özellikler) menüsü ile açılan Özellikler diyalog kutusunda Save Preview Picture özelliği aktif edildikten sonra kayıt esnasında ilk sayfanın küçük resmi dosyaya eklenir. Sonrasında Windows Explorer'da thumbnail (küçük resim) görünümü aktif edildiğinde bu resim görüntülenir. Tabii bu işi, belge türü için kayıt edilmiş Thumbnail Image Handler özelliğindeki DLL dosyası yapar. Resimde küçük resim eklenmiş ve eklenmemiş olan iki word dosyası görünüyor. View / Thumbnails menüsünün aktif edildiğine dikkat edin.



Belge özelliklerini Explorer'daki sağ tuş menüsünde çıkan Properties (Özellikler) komutu ile de görüntülemek ve değiştirmek mümkündür.




DSOLEFILE İLE BELGE ÖZELLİKLERİNE ERİŞMEK

Office belgelerinin özelliklerini okumak için, Microsoft'un geliştirdiği DSOLEFile kütüphanesi kullanışlı bir araç. Microsoft.com sitesinden ücretsiz yükleyebileceğiniz DSOLEFILE.EXE dosyasını kurduğunuzda sisteme DSOleFile.PropertyReader adlı ActiveX nesnesi yüklenir. (Yüklü değilse Başlat / Çalıştır komut satırında regsvr32 c:\...\dsolefile.dll komutunu çalıştırın.)

Aslında Office kütüphanelerini kullanarak belgenin özelliklerine erişmek mümkündür. Tabii her Office uygulaması kendi türündeki belgelerin özelliklerine ulaşmayı sağlar.

Aşağıdaki kod Word içinde iken aktif dosyanın özelliklerini Debug penceresinde listeliyor. (Immediate Window, Ctrl+G)

On Error Resume Next
Dim p
For Each p In ThisDocument.BuiltInDocumentProperties
  Debug.Print p.Name & " = " & p.Value
Next

Powerpoint açıkken aktif dosyanın özelliklerini listelemek için aşağıdaki kodu Visual Basic Editor'de çalıştırmak yeterli. Word makrosundaki ThisDocument'in yerini PowerPoint'te ActivePresentation alıyor. Bunun Excel'deki karşılığı ise ThisWorkbook.

On Error Resume Next
Dim p
For Each p In ActivePresentation.BuiltInDocumentProperties
  Debug.Print p.Name & " = " & p.Value
Next

Bu bilgilere dışarıdan erişmek, her uygulama için bir Application nesnesi açıp dosyaları yükledikten sonra BuiltInDocumentProperties ve CustomDocumentProperties listelerini almak yoluyla mümkündür.

Dsolefile ise tüm Office belgelerinin özelliklerine daha kolay erişmeyi sağlıyor. Aslında bununla kalmıyor, resim dosyalarının, exe dosyalarının, kısası Windows Explorer'da Özellikler sayfasında özet bilgileri görüntülenebilen her dosyanın özet bilgilerine ulaşmak ve bunları değiştirmek Dsofile'nin özelliği.

Bu kütüphanenin yapısını görmek için Visual Basic editörlerindeki References listesinde DS: OLE Document Properties 1.4 Object Library'nin seçili olduğundan emin olun ve Object Browser'da bunu görüntüleyin (F2 tuşu). References listesinde yoksa Browse komutu ile C:\DSOleFile\dsolefile.dll dosyasını yükleyin.



Belge özellikleri PropertyReader nesnesinin DocumentProperties listesinde yer alıyor. PropertyReader oluşturulduktan sonra gerekiyorsa Unicode dillerdeki dosyaların okunabilmesi için UseUnicodePropsets özelliği aktif edilmeli. Devamında dosyayı açıp bir DocumentProperties nesnesine bağlantı yapmak gerekiyor.

Dim pr As New DSOleFile.PropertyReader
Dim doc As DSOleFile.DocumentProperties

'unicode diller için
pr.UseUnicodePropSets = True

'dosyayı aç
Set doc = pr.GetDocumentProperties("c:\deneme.doc")

...
... işlemler burada yapılacak.
...
Set doc = Nothing
Set pr = Nothing

Belge bu şekilde açıldıktan sonra DocumentProperties (buradaki doc değişkeni) altında gerekli özelliklere ulaşılıyor. Tüm özelliklerin listesine Object Browser'dan ulaşabilirsiniz.

ozellikler = "DOSYA ÖZELLİKLERİ" & vbCr & vbCr & _
"Location= " & doc.Location & vbCr & _
"Name= " & doc.Name & vbCr & vbCr & _
"Author= " & doc.Author & vbCr & _
"CharacterCount= " & doc.CharacterCount & vbCr & _
"Comments= " & doc.Comments & vbCr & _
"DateCreated= " & doc.DateCreated & vbCr & _
"IsReadOnly= " & doc.IsReadOnly & vbCr & _
"Keywords= " & doc.Keywords & vbCr & _
"LineCount= " & doc.LineCount & vbCr & _
"Subject= " & doc.Subject & vbCr & _
"Title= " & doc.Title & vbCr & _
"WordCount= " & doc.WordCount & vbCr

MsgBox ozellikler


Dsolefile bazı özelliklerin değiştirilmesine olanak sağlıyor. Doc altındaki özelliklere doğrudan değer atamak mümkün. Değiştirilebilecek özellikler Author, Category, Comments, Company, Keywords, LastEditedBy, Manager, Subject, Title.

Değişikliklerin kaydedilmesi program bittikten sonra (yani nesne bellekten çıkarılırken) oluyor. Tabii sadece-okunur özellikteki bir dosyanın bilgilerini değiştirmek mümkün değil. Bu durumda IsReadOnly değerini kontrol etmek gerekiyor.

If doc.IsReadOnly = False Then
  doc.Subject = "Yeni başlık"
  doc.Author = "Yeni yazar adı"
End If

Belgelerin temel özellikleri dışında ek özellikler tanımlanamak olanaklıdır. Bu, Özellikler diyalog kutusunun Custom (Özel) sayfasında yapılabiliyor.



Tabii Dsolefile da ek özelliklerin tanımlanmasına ve değiştirilmesine izin verir.

'Yeni ekle
doc.CustomProperties.Add "Yayıncı web adresi", "www.chip.com.tr"

'Tümünü listele
Dim prop
For Each prop In doc.CustomProperties
Response.Write prop.Name & "= " & prop.Value & "<BR>"
Next

'Değiştir
doc.CustomProperties("Yayıncı web adresi").Value = "http://www.chip.com.tr"

'Sil
doc.CustomProperties("Yayıncı web adresi").Remove


Dsolefile.exe'yi kurduğunuzda C:\dsolefile altına VB için bir örnek uygulama yerleşir. Bu uygulamada thumbnail resimlerinin kolayca görüntülendiğini göreceksiniz.

Thumbnail bilgisi VB'deki ya da Office formlarındaki resim nesnesine doğrudan eşitlenebildiği için küçük resmi göstermek çok kolay.

Set UserForm1.Image1.Picture = doc.Thumbnail



PropertyReader nesnesini ASP'de kullanmak için yukarıdaki kodda Dim ile başlayan iki satır aşağıdaki şekilde değiştirilmeli.

Dim pr
set pr=createobject("DSOleFile.PropertyReader")

Dim doc

Delphi'de kullanmak ise biraz uğraştırıcı. Dsolefile.dll (activex dll) dosyasını yükleyip TLB dosyası oluşturmak gerekiyor.

Propect / Import Type Library menüsünden DLL yüklenmeli. Sonra dsolefile_tlb dosyası uses bloğuna eklenmeli.

uses
  dsolefile_tlb;
var
  pr: PropertyReader;
  doc: DocumentProperties;
begin
  pr := CoPropertyReader.Create;
  pr.UseUnicodePropSets := True;
  doc := pr.GetDocumentProperties('c:\deneme.doc');
  showmessage(doc.Subject);


Dosya özelliklerini okumak başka yollarla da mümkün. Geçen aylarda incelediğimiz Indexing Service, Office belgelerinin özelliklerini listeleyebiliyor ve bu belgelerin içeriğinde arama yapmamızı sağlıyordu.


Serkan ŞAHİNOĞLU
(Chip Dergisi, Temmuz 2002)


http://BilgiTeknoloji.net