从未使用过Sharepoint,但需要添加WebPart才能显示PDF文档。这是如何工作的?
目前有一些代码要添加一个ReportViewer(SSRS)WebPart,但我需要将其替换为显示PDF文件(来自磁盘)。
PDF文件来自未公开提供的本地/网络路径。我需要在Web部件中获取流式传输的PDF内容,并在此过程中设置内容类型。
如果它有帮助,我的想法是回应不同的URL(同一站点中的页面),只需要一些令牌(获取参数?)并流式传输一个byte []并将内容类型设置为application / pdf - 我完全可以完全脱离标记。 您需要对答案中的步骤和代码/示例/链接非常具体。
答案 0 :(得分:6)
将页面查看器Web部件添加到页面,并将URL设置为pdf的位置。副作用是Acrobat工具栏显示在Web部件中。如果你希望它消失,你必须在网址中添加#toolbar = 0& navpanes = 0。例如:
http://server:port/path/filename.pdf#toolbar=0&navpanes=0
注意:用户必须安装Adobe Reader插件才能在Web部件中查看pdf。
答案 1 :(得分:3)
你应该结合Matt的解决方案和HttpHandler: HttpHandler将从您的本地/网络路径获取PDF文件并将其发送到您的客户端。 页面查看器Web部件(或插入内容webpart的iframe)将在页面上集成PDF:
以下是httphandler的简单代码:
public class TestPdfHandler : IHttpHandler
{
#region IHttpHandler Membres
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
string fileName = context.Request["pdfname"];
byte[] buffer = null;
buffer = File.ReadAllBytes("d:\\" + fileName +".pdf");
context.Response.Clear();
context.Response.ContentType = "application/pdf";
context.Response.OutputStream.Write(buffer, 0, buffer.Length);
context.Response.End();
}
#endregion
}
在web.config中,添加httphandler:
<add verb="*" path="pdf.axd" type="test.TestPdfHandler, pdfhandler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=98df27cf3a770eaa"/>
在WebPart中,设置src属性:
如果您想根据URL上传递的参数加载不同的PDF,则会遇到困难。
如果需要,您需要创建自己的webpart,只需在当前请求中获取QueryString参数,并使用包含该参数的src属性编写iframe elt。