C# 如何使用iTextSharp将pdf字节[]数组转换为可下载文件
嘿,伙计们,我有一个字节数组,我想转换成pdf格式,并提供下载。有人知道这是怎么做到的吗 这是我的动作控制器C# 如何使用iTextSharp将pdf字节[]数组转换为可下载文件,c#,asp.net-mvc,itextsharp,C#,Asp.net Mvc,Itextsharp,嘿,伙计们,我有一个字节数组,我想转换成pdf格式,并提供下载。有人知道这是怎么做到的吗 这是我的动作控制器 public ActionResult DownloadLabTestResult(string labTestResultID) { PdfReader pdfReader = new PdfReader("Xue_Tang.pdf"); MemoryStream stream = new MemoryStream();
public ActionResult DownloadLabTestResult(string labTestResultID)
{
PdfReader pdfReader = new PdfReader("Xue_Tang.pdf");
MemoryStream stream = new MemoryStream();
PdfStamper stamper = new PdfStamper(pdfReader, stream);
pdfReader.Close();
stamper.Close();
stream.Flush();
stream.Close();
byte[] pdfByte = stream.ToArray();
// So i got the byte array of the original pdf at this point. Now how do i convert this
// byte array to a downloadable pdf? i tried the method below but to no avail.
MemoryStream ms = new MemoryStream(pdfByte);
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=labtest.pdf");
Response.Buffer = true;
Response.Clear();
Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length);
Response.OutputStream.Flush();
Response.End();
return new FileStreamResult(Response.OutputStream, "application/pdf");
}
我使用的是类似的代码,但有一些不同之处:
Response.Clear();
MemoryStream ms = new MemoryStream(pdfByte);
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=labtest.pdf");
Response.Buffer = true;
ms.WriteTo(Response.OutputStream);
Response.End();
return new FileStreamResult(ms, "application/pdf");
?如果您的磁盘上有pdf文件,您可以使用FileStream直接读取。即使您需要PdfStamper,看起来您有许多流,您不应该需要“ms”流,“stream”流就足够了,但您不应该在使用它之前关闭它,您可以尝试“ms.Seek(0,SeekOrigin.Begin);”在你将它添加到OutputStream之前。哦,是的,我当然可以从本地磁盘读取数据,但我只是想在这里模拟一些东西,我只提供字节数组,我的工作是将其转换为可下载的文件,我不知道该怎么做hehe=pactually是的,你可以这样做。我把事情复杂化了哈哈。还有一个问题是,甚至可以将字节数组(不知道它是pdf还是doc还是txt)转换为正确的格式,而不指定它是pdf txt还是doc?我现在受不了了。