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
¿Seguro no estás tragando una excepción en alguna parte? No creo que tengas que agregar FixedSequence. –
quizás la secuencia se cierra al salir del bloque de uso – kenny
@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