I have a FlowDocument that I want to convert to an XPS document and attach it to an email and send it all together. I am using this code
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; }
Then I attach it with this code:
Attachment xps = new Attachment(FlowDocumentToXPS(FD, 768, 676), "FileName.xps", "application/vnd.ms-xpsdocument");
where FD is the FlowDocument that I want to convert, I get an XPS file with a size of 0.0KB and it cannot be opened using the XPS Viewer, what am I missing here?
EDIT: last code that worked, see comments
Thanks in advance
Musaab
source share