如何将PDF查看器面板添加到Sharepoint WebPart

时间:2011-02-08 23:44:38

标签: c# asp.net sharepoint pdf web-parts

从未使用过Sharepoint,但需要添加WebPart才能显示PDF文档。这是如何工作的?

目前有一些代码要添加一个ReportViewer(SSRS)WebPart,但我需要将其替换为显示PDF文件(来自磁盘)。

PDF文件来自未公开提供的本地/网络路径。我需要在Web部件中获取流式传输的PDF内容,并在此过程中设置内容类型。

如果它有帮助,我的想法是回应不同的URL(同一站点中的页面),只需要一些令牌(获取参数?)并流式传输一个byte []并将内容类型设置为application / pdf - 我完全可以完全脱离标记。 您需要对答案中的步骤和代码/示例/链接非常具体。

2 个答案:

答案 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:

enter image description here

以下是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属性:

enter image description here

如果您想根据URL上传递的参数加载不同的PDF,则会遇到困难。

如果需要,您需要创建自己的webpart,只需在当前请求中获取QueryString参数,并使用包含该参数的src属性编写iframe elt。