【问题标题】:View PDF as part of the page将 PDF 作为页面的一部分查看
【发布时间】:2011-09-20 08:15:41
【问题描述】:

我正在尝试在我的 MVC 网页中查看 PDF 文档,但无法正常工作。

我希望 PDF 显示为页面上其他内容(页眉、页脚等)的一部分。目前我有一个显示 PDF 的解决方案,但在整个页面上。

有人做过吗,如果有,怎么做?

【问题讨论】:

  • 您的 MVC 的语言/平台是什么? Ruby on Rails?姜戈? CakePHP?
  • 好的,更多信息...语言是 C#,我目前正在使用 VS2010 的标准项目。我正在生成 PDF 运行时并存储在流中。我希望能够使用自定义控件或类似控件在页面“内部”查看此 PDF。我可以使用以下方法很好地嵌入 PDf:单击 这里查看文件,但这不是使用流。

标签: c# asp.net-mvc pdf partial


【解决方案1】:

你为什么不尝试像这样使用 iframe:

<iframe src="even file stream action url"></iframe>

如果可能的话,我建议使用对象标签,使用 iframe 只是为了测试。

如果您想像刚才那样将 PDF 作为页面的一部分呈现

src=''

那么这是你的选择

如果您需要使用 CSS 或其他方式(如 Google 图书等)完全控制 PDF 内容,那么您需要一些工具来帮助您将每个请求的 PDF 页面转换为纯文本、HTML 甚至图像。 PDFsharp 等工具。 Search Google For Tools

如果您想将 PDF 显示为页面的一部分,那么您必须这样做

ASPX: src="<%= Url.Action("GetPDF") %>"
Razor: src="@Url.Action("GetPDF")"

最后的答案可能是

<object data="<%= Url.Action("GetPDF") %>" type="application/pdf" width="300" height="200">
    alt : <a href="data/test.pdf">test.pdf</a>
</object>

如果您想将 PDF 作为 Stream 返回,那么您需要

public FileStreamResult GetPDF()
{
    FileStream fs = new FileStream("c:\\PeterPDF2.pdf", FileMode.Open, FileAccess.Read);
    return File(fs, "application/pdf");
}

【讨论】:

  • 我需要该功能才能在 IE 中工作!如果我使用 IFrame,我可以从文件加载和显示 PDF,但如果我运行时创建 PDF(使用 IText 或 PDFWriter),我似乎无法使其工作。你能举个例子吗?
  • @Peter 客户端浏览器不关心 url 是磁盘中的文件还是内存中的文件,您只需要告诉客户端浏览器您正在流式传输什么样的内容,所以问题在于 Content-键入 HTTP 标头。你能告诉我你在创建一个返回 new FileContentResult(bytes, "application/pdf"); 的操作方法时是否有任何问题
  • @Peter 如果不是这种情况,我想让你知道我正在尽我所能来帮助你。因此,如果可能的话,请向我们提供您的操作方法,并让我们清楚问题是从流中显示 PDF 或在页面的一部分中显示它。是的,如果您给我您的操作方法来源,我可以提供示例
  • @Beygi 非常感谢!我试过你写的,效果很好。然后我尝试使用我的“运行时”生成的 PDF(将 Filestream 更改为 memstream),但由于语句文件不以“%PDF ...”开头而失败。问题是我忘记将 memstream 的位置设置为 0。之后一切正常!
  • 很高兴为您提供帮助。
猜你喜欢
  • 1970-01-01
  • 2011-05-01
  • 2012-10-31
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多