-1
我已經使用PDFSharp生成了pdf。PDF到MemoryStream然後返回
我調用保存方法,並將其保存到磁盤,該文件是完美的。
然後我需要將文件存入MemorySteam,準備將其發送到我的網站下載。但是,該文件最終無效。腐敗。
因此,要查看錯誤發生的位置,我已將該文件放入MemoryStream中,然後嘗試將文件寫入文件,以確認一切正常。事實並非如此。
在這裏,我的文件SAV到磁盤,以檢查它(調試),然後把它變成一個流:
document.Save("c:\\temp\\ggg.pdf");
MemoryStream ms = new MemoryStream();
document.Save(ms, false);
byte[] buffer = new byte[ms.Length];
ms.Seek(0, SeekOrigin.Begin);
ms.Flush();
ms.Read(buffer, 0, (int)ms.Length);
return ms;
然後我回到「MS」到我的調用函數,並嘗試寫流到文件:
var doc = GeneratePdf(1);
using (FileStream file = new FileStream("c:\\temp\\222.pdf", FileMode.Create, System.IO.FileAccess.Write))
{
byte[] bytes = new byte[doc.Length];
doc.Read(bytes, 0, (int)doc.Length);
file.Write(bytes, 0, bytes.Length);
doc.Close();
}
但是222.pdf不是有效的pdf。 ggg.pdf很好。所以當我寫入流,並寫入磁盤時,我做錯了什麼。爲什麼文件被損壞?
你在哪裏填補了'buffer'? –
@ IanH.-我不確定。我認爲它是「ms.Read(buffer,0,(int)ms.Length);」,但顯然不是?你可能已經發現了這個問題。 – Craig
爲什麼不使用'Stream.CopyTo'來代替手動應對這些流呢?在你已經將文檔保存到'MemoryStream'後的'Flush()'和'Read(..)'*的目的是什麼? –