WPF: XPSPackagingException - PullRequest
       14

WPF: XPSPackagingException

0 голосов
/ 21 марта 2011

что не так с моим кодом.когда он пытается перезаписать существующий файл .xps, выскакивает ошибка.

enter image description here

Вот мой код

                string filename = dlg.FileName;

                XpsDocument xpsDoc = new XpsDocument(filename, FileAccess.ReadWrite);
                XpsDocumentWriter xpsWriter = XpsDocument.CreateXpsDocumentWriter(xpsDoc);
                FlowDocument flow = (((((chatHistoryPage.LayoutRoot as Grid).Children[7] as ContentControl).Content) as FlowDocumentPageViewer).Document as FlowDocument);

                xpsWriter.Write((flow as IDocumentPaginatorSource).DocumentPaginator);
                xpsDoc.Close();

Спасибо

1 Ответ

1 голос
/ 21 марта 2011

Строка XpsDocument xpsDoc = new XpsDocument(filename, FileAccess.ReadWrite); не открывает новый пустой документ XPS, а открывает существующий на диске. Как упоминалось в исключении, этот документ уже содержит корневой FixedDocumentSequence. Чтобы полностью перезаписать документ XPS, необходимо удалить существующий файл XPS, прежде чем пытаться сохранить новый файл на его месте.

Лучше всего позвонить Package.Open с FileMode OpenOrCreate | Truncate, а затем передать этот пакет в вызов конструктору XpsDocument.

...