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打開,我在這裏錯過了什麼?
編輯:是:工作的最終代碼,請參見注釋提前
感謝
已經做了註釋的編輯是否確定你不是在某個地方吞嚥異常?我不認爲你必須添加FixedSequence。 –
也許流離開使用塊關閉 – kenny
@亨克Holterman,我檢查輸出沒有發生異常,你是對的,我試圖帶來這個FixedSequence不同的事情,我刪除,但問題仍然存在 – Musaab