Did you know, it's possible to generate an XPS Document from a WPF FlowDocument as follows:
MemoryStream ms = new MemoryStream();
Package _container = Package.Open(ms, FileMode.Create);
using (XpsDocument xpsd = new XpsDocument(_container))
{
XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(xpsd);
writer.Write(((IDocumentPaginatorSource)doc).DocumentPaginator);
}
_container.Close();
byte[] xpsDocBytes = ms.ToArray();
ms.Close();
doc is your input FlowDocument. xpsDocBytes is the output, which can be written to filestream and saved to disk.