2013-08-21 2 views
4

내가 가진 :FlowDocument의 IDocumentPaginatorSource DocumentPaginator를 사용하여 FlowDocument를 FixedDocument로 변환하는 방법은 무엇입니까?

DocumentPaginator dp = ((IDocumentPaginatorSource)document).DocumentPaginator; 

과 :

FlowDocument document = new FlowDocument(); 
// create a flow document... 

어떻게 수행 DocumentPaginator를 사용하여 FixedDocument로 변환하려면 FlowDocument? 나는 이것을하는 방법을 찾을 수없는 것 같습니다. 에서와 같이 사용 XpsWriter에서 나는 보았다 모든 사이트 :

XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(xpsDoc); 
DocumentPaginator dp = ((IDocumentPaginatorSource)document).DocumentPaginator; 
writer.Write(dp); 

은 내가 XPS를 작성하고 다음 FixedDocument를 다시 얻을 수 있지만, 더 나은 방법이있을 수 있을까?

답변

6

아니요, 더 좋은 방법이 아닌 것 같습니다. 그러나 디스크에 저장할 필요가 없습니다.

var paginator = ((IDocumentPaginatorSource)flowDocument).DocumentPaginator; 
var package = Package.Open(new MemoryStream(), FileMode.Create, FileAccess.ReadWrite); 
var packUri = new Uri("pack://temp.xps"); 
PackageStore.RemovePackage(packUri); 
PackageStore.AddPackage(packUri, package); 
var xps = new XpsDocument(package, CompressionOption.NotCompressed, packUri.ToString()); 
XpsDocument.CreateXpsDocumentWriter(xps).Write(paginator); 
FixedDocument doc = xps.GetFixedDocumentSequence().References[0].GetDocument(true); 
관련 문제