我有一个带有fixedDocument(在XAML 中构建)的DocumentViewer,然后我将内容添加到代码中的fixedDocument 中,它会在屏幕上完美显示。
我的问题是当我尝试从 fixedDocument 创建一个 XPS 文件时,我得到一个“它已经是另一个元素的子元素”的错误。
我找不到 DocumentViewer.Children.Clear 方法,如何删除/分离 fixedDocument 以便我可以使用它来创建文件?
为了完整起见,这是我收到错误的代码:
public void CreateXPSFile()
{
// 1 - create xps_file
string OutputPath = baseDir + pathAdjust + "test.xps";
using (FileStream fs = File.Create(OutputPath))
{
ConvertToXps(fixedDocument, fs);
}
// open the document using the system default xps viewer
Process.Start(OutputPath);
}
public static void ConvertToXps(FixedDocument fd, Stream outputStream)
{
var package = Package.Open(outputStream, FileMode.Create);
var xpsDoc = new XpsDocument(package, CompressionOption.Normal);
XpsDocumentWriter xpsWriter = XpsDocument.CreateXpsDocumentWriter(xpsDoc);
// xps documents are built using fixed document sequences
var fixedDocSeq = new FixedDocumentSequence();
var docRef = new DocumentReference();
docRef.BeginInit();
docRef.SetDocument(fd);
docRef.EndInit();
((IAddChild)fixedDocSeq).AddChild(docRef); <<<<<----- Error occurs here
// write out our fixed document to xps
xpsWriter.Write(fixedDocSeq.DocumentPaginator);
xpsDoc.Close();
package.Close();
}
谢谢