title: Generating XPS document from a Web Application
body: <p>I hwas trying to generate a multi page XPS document from a web application and trying to stream that ona button click.</p>
  
  <p>public class Class1
  {</p>
  
  <pre><code>protected void btnGenerateLetter_OnClick(object sender, EventArgs e)
  {
      try
      {
          string sid = Request.Form["id"];
          byte[] bytes = FlowDocumentToXPS(GenerateLetter(), 640, 800);
          Response.Clear();
          Response.ContentType = "application/vnd.ms-xpsdocument";
          Response.AddHeader("Content-Disposition", "attachment; filename=document.xps");
          Response.OutputStream.Write(bytes, 0, bytes.Length);
          Response.Flush();
          Response.Close();
      }
      catch (Exception ex)
      {
      }
  
  }
  
  private FlowDocument GenerateLetter()
  {
      FlowDocument flowDocument = new FlowDocument();
  
      string Header = "Test Header Message";
      string Body = "Content goes here";
      string Footer = "Footer Text";
  
      for (int i = 0; i &lt; 3; i++)
      {
          Paragraph header = new Paragraph();
          header.Margin = new System.Windows.Thickness(250, 100, 250, 10);
          header.BreakPageBefore = true;
  
          header.Inlines.Add(new Run(Header));
          header.Inlines.Add(new LineBreak());
          header.Inlines.Add(new LineBreak());
          header.Inlines.Add(new LineBreak());
  
          Paragraph body = new Paragraph();
          body.Inlines.Add(new Run(Body));
          body.Inlines.Add(new LineBreak());
          body.Inlines.Add(new LineBreak());
  
          Paragraph footer = new Paragraph();
          footer.Inlines.Add(new Run(Footer));
  
          flowDocument.Blocks.Add(header);
          flowDocument.Blocks.Add(body);
          flowDocument.Blocks.Add(footer);
      }
      return flowDocument;
  }
  
  public static byte[] FlowDocumentToXPS(FlowDocument flowDocument, int width, int height)
  {
      MemoryStream stream = new MemoryStream();
      // create a package
      using (Package package = Package.Open(stream, FileMode.CreateNew))
      {
          // create an empty XPS document   
          using (XpsDocument xpsDoc = new XpsDocument(package, CompressionOption.NotCompressed))
          {
              // create a serialization manager
              XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
              // retrieve document paginator
              DocumentPaginator paginator = ((IDocumentPaginatorSource)flowDocument).DocumentPaginator;
              // set page size
              paginator.PageSize = new System.Windows.Size(width, height);
              // save as XPS
              rsm.SaveAsXaml(paginator);
              rsm.Commit();
          }
          return stream.ToArray();
      }
  }
  </code></pre>
  
  <p>}</p>
  
  <p>This wroks fine on the development environment.But getting this error when deployed on a different machine.(IIS6).</p>
  
  <p>Startup URI: C:\Documents and Settings\050583b.syn\Desktop\document.xps
  Application Identity: </p>
  
  <p>System.IO.FileFormatException: File contains corrupted data.
     at MS.Internal.IO.Zip.ZipIOEndOfCentralDirectoryBlock.FindPosition(Stream archiveStream)
     at MS.Internal.IO.Zip.ZipIOEndOfCentralDirectoryBlock.SeekableLoad(ZipIOBlockManager blockManager)
     at MS.Internal.IO.Zip.ZipIOBlockManager.LoadEndOfCentralDirectoryBlock()
     at MS.Internal.IO.Zip.ZipArchive..ctor(Stream archiveStream, FileMode mode, FileAccess access, Boolean streaming, Boolean ownStream)
     at MS.Internal.IO.Zip.ZipArchive.OpenOnStream(Stream stream, FileMode mode, FileAccess access, Boolean streaming)
     at System.IO.Packaging.ZipPackage..ctor(Stream s, FileMode mode, FileAccess access, Boolean streaming)
     at System.IO.Packaging.Package.Open(Stream stream, FileMode packageMode, FileAccess packageAccess, Boolean streaming)
     at System.IO.Packaging.Package.Open(Stream stream)
     at MS.Internal.Documents.Application.TransactionalPackage..ctor(Stream original)
     at MS.Internal.Documents.Application.PackageController.MS.Internal.Documents.Application.IDocumentController.Open(Document document)
     at MS.Internal.Documents.Application.DocumentManager.DispatchOpen(IDocumentController controller, Document document)
     at MS.Internal.Documents.Application.DocumentManager.&lt;>c__DisplayClass6.b__5(IDocumentController controller, Document subject)
     at MS.Internal.Documents.Application.ChainOfResponsiblity<code>2.Dispatch(Action action, S subject)
     at MS.Internal.Documents.Application.DocumentManager.&lt;&gt;c__DisplayClass6.&lt;OrderByLeastDependent&gt;b__4(Document member)
     at MS.Internal.Documents.Application.ChainOfDependencies</code>1.OrderByLeastDependent(T member, Action action)
     at MS.Internal.Documents.Application.DocumentManager.OrderByLeastDependent(DispatchDelegate action, Document document)
     at MS.Internal.Documents.Application.DocumentManager.Open(Document document)
     at MS.Internal.AppModel.ApplicationProxyInternal.InitContainer()
     at MS.Internal.AppModel.ApplicationProxyInternal.Run(InitData initData)</p>
  
  <hr>