2011-07-23 15 views
7

Tengo un FlowDocument que quiero convertir a un documento XPS y adjuntarlo a un correo electrónico y enviarlo todo junto. Estoy usando este códigocrear un documento XPS desde un FlowDocument y adjuntarlo sobre la marcha

public static MemoryStream FlowDocumentToXPS(FlowDocument flowDocument, int width, int height) 
    { 
     MemoryStream stream = new MemoryStream(); 
     using (Package package = Package.Open(stream, FileMode.Create, FileAccess.ReadWrite)) 
     { 
      using (XpsDocument xpsDoc = new XpsDocument(package, CompressionOption.Maximum)) 
      {     
       XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false); 
       DocumentPaginator paginator = ((IDocumentPaginatorSource)flowDocument).DocumentPaginator; 
       paginator.PageSize = new System.Windows.Size(width, height); 
       rsm.SaveAsXaml(paginator); 
       rsm.Commit();     
      } 
     } 
     stream.Position = 0; 
     Console.WriteLine(stream.Length); 
     Console.WriteLine(stream.Position); 
     return stream; 
    } 

Luego fijarla por medio de este código:

Attachment xps = new Attachment(FlowDocumentToXPS(FD, 768, 676), "FileName.xps", "application/vnd.ms-xpsdocument"); 

donde FD es el FlowDocument Quiero convertir, estoy recibiendo tamaño de archivo XPS 0.0KB adjunta y no se puede abrir con XPS Viewer, ¿qué me falta aquí?

EDIT: El código final que funcionaba, ver los comentarios

Gracias de antemano

+0

¿Seguro no estás tragando una excepción en alguna parte? No creo que tengas que agregar FixedSequence. –

+0

quizás la secuencia se cierra al salir del bloque de uso – kenny

+0

@Henk Holterman, verifiqué la salida, no se produjo ninguna excepción, y tiene razón, estaba intentando cosas diferentes que trajeron esta secuencia fija, la eliminé pero el problema sigue ahí – Musaab

Respuesta

3

resuelto, ver los comentarios bajo el cargo que se trate y la edición ya se ha realizado en el propio puesto

Cuestiones relacionadas