-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(..)'*的目的是什么? –