How to read an XPS file from outside the deployed XAP file

Feb 17, 2011 at 12:17 PM

Hi,

For some reason I can't figure this out. Any pointers will be appreciated. It will be a newbie mistake, this is for sure.

What I'm trying to do is created a website where XPS documents can be uploaded and stored for viewing. It is to enable content updating, such as a newsletter for example, without the need to redeploy the XAP file.

I cannot figure out how to get the Document Toolkit control to load an XPS file from a folder on the webserver rather than from within the XAP file.

There is probably a really easy way to enable this and I'm missing the obvious. I'd appreciate someone gently pointing out where I'm going wrong!

Thanks,

Glyn.

Coordinator
Feb 17, 2011 at 5:51 PM

Hi Glyn,

You'll need to use a WebClient to download your documents and once succesfully downloaded you can use the response stream and feed it to a package reader. Something like this should work:

 

// load the entire XPS document in once using a WebClient

var webClient = new WebClient();

webClient.OpenReadCompleted += (o, e) => {
  if (e.Error != null)
  {
    // TODO: show error
  }
  else if (!e.Cancelled) {
    // create new package reader
    this.DataSource.PackageReader = new SharpZipPackageReader(e.Result);
  }
}

// loads the sample XPS document from the web
webClient.OpenReadAsync([url to XPS document]));

 

Document Toolkit is able to load documents from any source (isolated storage, memory, the web, etc.). As long as you have a stream to a valid XPS, Document Toolkit should be able to render it.

See also the SampleBrowser source code and specifically the SampleBrowser\Views\LoadingStrategies sample.

Koen

Feb 17, 2011 at 6:24 PM

Hi Koen,

Thanks for the prompt response and example code.

Being a newbie I was making a silly mistake I think. I'd come up with much the same code and could not get it to work on my development machine using the Visual Studio Development Server. When I published the little test application to my test server it worked fine!

I must have my development environment and/or priject files configured incorrectly, but I'm not sure where I've gone wrong.

I assume I should be able to debug and deploy the same code and it work ok, so the fact that it works on the web server but not my development machine indicates a mistake on my part?

Many thanks for your help,

Glyn.

 

 

Coordinator
Feb 17, 2011 at 7:54 PM

Hi Glyn,

Maybe the url to the XPS document doesn't work in the dev environment? You can use an HTTP sniffer such as Fiddler to inspect network traffic.

Koen

Feb 17, 2011 at 8:42 PM

Hi Koen,

I fired up Fiddler which prompted me to download a newer version, so I did.

Now everything is working as I thought it should! :-)

I think I may have been a newbie victim of the browser cache, or a machine so full of installed and uninstalled bits and pieces and betas that perhaps something wasn't playing nicely. For whatever reason installing the new version of Fiddler had a very useful side-effect!

Anyhow, whatever it was it seems to have cleared up now, and I didn't even have to turn my machine off and on again ;-)

Thanks for your help.

Glyn.