我试图在mvc应用程序中执行pdf viewer功能。当用户点击"阅读pdf"链接它应该打开一个新的选项卡/窗口,用户应该能够查看pdf文件。所以我检查了一些例子,但我无法找到。你能建议我任何文章或例子吗?
答案 0 :(得分:4)
在第一个视图中显示锚标记并传递ID(以标识要显示的PDF)
@Html.ActionLink("read the pdf","view","doc",new { @id=123},null)
现在在doc控制器中,有一个动作方法,它有一个名为id
的参数,并使用File
方法返回pdf。
public ActionResult View(int id)
{
byte[] byteArrayOfFile=GetFieInByteArrayFormatFromId(id);
return File(byteArrayOfFile,"application/pdf");
}
假设GetFileInByteArrayFormatFromId
是返回PDF文件的字节数组格式的方法。
如果您知道物理存储的PDF文件的完整路径,您也可以使用此overload返回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");
}
上面的代码希望您在sampleFile.pdf
位置拥有一个名为~/Content/Downloads/
的pdf文件。如果使用不同的名称/命名约定存储文件,则可以更新代码以从传入的Id中构建唯一的文件名/路径。
答案 1 :(得分:0)
如果要在浏览器中显示PDF内容,可以使用iTextShare dll。
请参阅链接http://www.codeproject.com/Tips/387327/Convert-PDF-file-content-into-string-using-Csharp。