我正在尝试在 mvc 应用程序中执行 pdf 查看器功能。当用户单击“阅读 pdf”链接时,它应该打开一个新选项卡/窗口,并且用户应该能够查看 pdf 文件。因此,我检查了示例,但找不到。你能给我推荐任何文章或例子吗?
问问题
7068 次
2 回答
4
在您的第一个视图中显示锚标记并传递一个 id(以识别要显示的 PDF)
@Html.ActionLink("read the pdf","view","doc",new { @id=123},null)
现在在 doc 控制器中,有一个 action 方法,该方法调用了一个参数id
,并使用该File
方法返回 pdf。
public ActionResult View(int id)
{
byte[] byteArrayOfFile=GetFieInByteArrayFormatFromId(id);
return File(byteArrayOfFile,"application/pdf");
}
假设GetFileInByteArrayFormatFromId
是返回PDF文件的字节数组格式的方法。
如果您知道物理存储的 PDF 文件的完整路径,也可以使用此重载返回 PDF 。
public ActionResult Show()
{
string path="FullPAthTosomePDFfile.pdf";
return File(path, "application/pdf","someFriendlyName.pdf");
}
在浏览器中显示 PDF 而无需下载
根据最终用户的浏览器设置,上述解决方案将询问用户他/她是否希望下载或打开文件,或者只是下载/打开文件。如果您希望直接在浏览器中显示文件内容而不将其下载到用户的计算机,您可以将文件流发送到浏览器。
public ActionResult Show(int id)
{
// to do : Using the id passed in,build the path to your pdf file
var pathToTheFile=Server.MapPath("~/Content/Downloads/sampleFile.pdf");
var fileStream = new FileStream(pathToTheFile,
FileMode.Open,
FileAccess.Read
);
return new FileStreamResult(fileStream, "application/pdf");
}
上面的代码希望你有一个名为locationsampleFile.pdf
的pdf 文件。~/Content/Downloads/
如果您使用不同的名称/命名约定存储文件,您可以更新代码以从传入的 Id 构建唯一的文件名/路径。
于 2012-11-04T15:12:18.517 回答
0
如果要在浏览器中显示 PDF 内容,可以使用 iTextShare dll。
请参阅链接http://www.codeproject.com/Tips/387327/Convert-PDF-file-content-into-string-using-Csharp。
于 2012-11-05T01:17:45.273 回答