Создание документа XPS из FlowDocument и прикрепление его на лету
У меня есть FlowDocument, который я хочу преобразовать в документ XPS, прикрепить к электронному письму и отправить все вместе. Я использую этот код
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;
}
Затем я прикрепляю его, используя этот код:
Attachment xps = new Attachment(FlowDocumentToXPS(FD, 768, 676), "FileName.xps", "application/vnd.ms-xpsdocument");
где FD - это FlowDocument, который я хочу преобразовать, я получаю прикрепленный файл XPS размером 0,0 КБ, который нельзя открыть с помощью средства просмотра XPS, чего мне здесь не хватает?
РЕДАКТИРОВАТЬ: окончательный код, который работал, см. Комментарии
заранее спасибо
1 ответ
Решение
Решено, смотрите комментарии под постом с вопросом и редактирование уже сделано на самом посте