20 Aralık 2008

WPF Uygulamalarında DocumentViewer ile XPS Dokümanlarının Görüntülenmesi

XPS, Windows Vista ile birlikte kullanımı gittikçe yaygınlaşan bir dosya formatı. Word, Excel, Powerpoint dosyalarını XPS formatına çevirerek Office kurulu olmayan bir bilgisayarda dahi Internet Explorer 7 gibi bir tarayıcı üzerinde görüntüleyebiliyoruz. Bu yazıda kullanımı yaygınlaşan XPS formatınındaki dosyaları WPF(Windows Presentation Foundation) uygulamalarında DocumentViewer kontrolüyle nasıl görüntüleyebileceğimizi anlatmaya çalışacağım.

WPF ile gelen kontrollerimizden olan DocumentView üzerinde bir XPS dosyası görüntüleyebilmek için XpsDocument tipinden bir nesneye ihtiyacımız olacaktır. mscorlib.dll'de bulunmayan bu sınıf için ReachFramework.dll'i projemize eklememiz gerekiyor.

ReachFramework.dll'in Add Reference seçeneğinden seçilmesi
ReachFramework.dll'in proje referanslarına eklenmesi

İlgili dll dosyasını projemizin referanslarına ekledikten sonra artık uygulamamıza geçebiliriz. Yapacağımız işlem oldukça basit aslında; penceremize bir tane DocumentViewer kontrolü ekliyor ve pencerenin Loaded event'ine aşağıda gördüğünüz iki satırlık ifadeyi ekliyoruz.

Window1.xaml

<Window x:Class="WpfDocumentViewerXps.Window1"

   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   Title="DocumentViewer ile XPS Dosyalarının Görüntülemesi" Height="320" Width="600">

    <Grid>

        <DocumentViewer Name="documentViewer1" />

    </Grid>

</Window>

Window1.xaml.cs

...

using System.Windows.Xps.Packaging; //Gerekli isim alanı

namespace WpfDocumentViewerXps

{

    public partial class Window1 : Window

    {

        public Window1()

        {

            InitializeComponent();

        }

 

        private void Window_Loaded(object sender, RoutedEventArgs e)

        {

            //XpsDocument nesnesi belirtilen yoldaki dosya içeriğini

            //GetFixedDocumentSequence metodu ile kontrolümüze sunacaktır

            XpsDocument xps = new XpsDocument(@"D:\test.xps", System.IO.FileAccess.Read);

            documentViewer1.Document = xps.GetFixedDocumentSequence();

        }

    }

}

DocumentViewer ile XPS dokümanını görüntüledik
DocumentView'da görüntülenen XPS dokümanı

2 yorum:

Adsız dedi ki...

Microsoftun bir format dayatması daha. Pdf dururken ne gerek vardır ki Xps'e. Bu tip politikalar yüzünden hiç sevmiyorum microsoftu. Yapılanı taklit etmek yerine neden farklı alanlara yönelmeye çalışmazlar? Microsoftu Office ve .Net dışındaki ürünlerinde tutmuyorum ve ısrarlarını da gereksiz görüyorum.

Uğur UMUTLUOĞLU dedi ki...

Öncelikle adınızı neden yazmadınız diye sorsam :)

Bence yanlış düşünüyorsunuz. Nedendir bilinmez ama Microsoft her zaman bu tip eleştirilere maruz kalıyor. Çoğu kişi Microsoft'un tekelcilik yaptığını söyler durur ama aksine Microsoft piyasadaki tekelciliği kaldırıyor. ASP olmasaydı sadece PHP olacaktı, .NET olmasa sadece Java olacaktı, Silverlight olmasaydı sadece Flash olacaktı, yani piyasa sadece bir markanın elinde olacaktı. Microsoft'un hiçbir ürününün hayatımızı olumsuz yönde etkilediğine şahit olmadım, aksine burada saydığım tüm Microsoft ürünlerinin hayatımızda olması bir nevi devrim sayılır. Hayatı kolaylaştıran her türlü yeniliğe pozitif bakmaktan yanayım. Bu yeniliği Microsoft, Sun, IBM veya Adobe yapmış çokta önemli değil. Fanatikliğin hertürlüsü zararlı, sporda olsun siyasette olsun teknolojide olsun. Siz yine iyisiniz ama bazen Microsoft hakkında neler denildiğine şahit oluyoruz. Yanlı, kasıtlı ve çok gereksiz düşünceler kanımca. XPS'in özellikle Microsoft Office ürünü kullananların hayatını ne derecede kolaylaştıracağını önümüzdeki yıllarda birlikte görelim :)