C# MVC PDF流生成
我正在从事一个项目,该项目要求我连接存储在服务器上的许多PDF文件,并将其显示在网页中。 此PDF数据将被隐藏,并用于允许用户只需按一个按钮即可打印出多个PDF 我目前正在使用iframes通过将帧源指向处理此功能的URL来实现这一点 这适用于单个文件:C# MVC PDF流生成,c#,asp.net-mvc,pdf,C#,Asp.net Mvc,Pdf,我正在从事一个项目,该项目要求我连接存储在服务器上的许多PDF文件,并将其显示在网页中。 此PDF数据将被隐藏,并用于允许用户只需按一个按钮即可打印出多个PDF 我目前正在使用iframes通过将帧源指向处理此功能的URL来实现这一点 这适用于单个文件: public ActionResult PrintInvoice(string invoiceNumber) { string fileloc = GetInvoiceFileLocation(invoiceNumber); F
public ActionResult PrintInvoice(string invoiceNumber)
{
string fileloc = GetInvoiceFileLocation(invoiceNumber);
FileStream fs = new FileStream(fileloc, FileMode.Open, FileAccess.Read);
return File(fs, "application/pdf");
}
这也适用于单个文件:
public ActionResult PrintInvoice(string invoiceNumber)
{
string fileloc = GetInvoiceFileLocation(invoiceNumber);
fileBytes = System.IO.File.ReadAllBytes(fileloc);
ms = new MemoryStream(fileBytes);
return File(ms, "application/pdf");
}
但是,这不起作用(iFrame报告无法读取PDF):
第三种代码示例方法似乎很有希望按字节连接文件,但在向其写入字节时,MemoryStream似乎不起作用,而不是用字节初始化流(如示例2所示)
我记得我读过PDF数据不是以字节的形式存储的?
这里发生的事情会导致示例2(对于单个PDF)起作用,但示例3(应该做同样的事情)甚至对单个PDF都不起作用
谢谢你的帮助
马修
如果写入操作成功,则
流按写入的字节数前进
public ActionResult PrintInvoice(string invoiceNumber)
{
string fileloc = GetInvoiceFileLocation(invoiceNumber);
fileBytes = System.IO.File.ReadAllBytes(fileloc);
ms = new MemoryStream();
ms.Write(fileBytes, 0, fileBytes.Length);
return File(ms, "application/pdf");
}
public ActionResult PrintInvoice(string invoiceNumber)
{
string fileloc = GetInvoiceFileLocation(invoiceNumber);
fileBytes = System.IO.File.ReadAllBytes(fileloc);
ms = new MemoryStream();
ms.Write(fileBytes, 0, fileBytes.Length);
ms.Position = 0;
return File(ms, "application/pdf");
}