|
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)
|