Create an XPS document from FlowDocument and attach it on the fly

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

+7
source share
1 answer

Solved, see comments in post question and editing already done in post itself

+3
source

All Articles