0

私のコードの何が問題なのですか。既存の .xps ファイルを上書きしようとすると、エラーが表示されます。

ここに画像の説明を入力

これが私のコードです

                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();

ありがとうございました

4

1 に答える 1

1

この行XpsDocument xpsDoc = new XpsDocument(filename, FileAccess.ReadWrite);は、新しい空の XPS ドキュメントを開いているのではなく、ディスク上の既存のドキュメントを開いています。例外として、このドキュメントには既にルート FixedDocumentSequence が含まれています。XPS ドキュメントを完全に上書きするには、新しいファイルをその場所に保存する前に、既存の XPS ファイルを削除する必要があります。

最善の策は、FileMode を に設定してPackage.OpenOpenOrCreate | Truncateを呼び出し、そのパッケージを XpsDocument コンストラクターの呼び出しにフィードすることです。

于 2011-03-21T18:40:18.910 に答える