2011-07-23 48 views
7

我有一個FlowDocument,我想將其轉換爲XPS文檔並將其附加到電子郵件並將它們一起發送。我使用這個代碼從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我想轉換,我收到0.0KB大小XPS文件連接,它無法用XPS Viewer打開,我在這裏錯過了什麼?

編輯:是:工作的最終代碼,請參見注釋提前

感謝

+0

已經做了註釋的編輯是否確定你不是在某個地方吞嚥異常?我不認爲你必須添加FixedSequence。 –

+0

也許流離開使用塊關閉 – kenny

+0

@亨克Holterman,我檢查輸出沒有發生異常,你是對的,我試圖帶來這個FixedSequence不同的事情,我刪除,但問題仍然存在 – Musaab

回答

3

解決,請參閱下面的問題後,並在帖子本身

相關問題