Вам следует объединить решение Мэтта и HttpHandler: HttpHandler получит PDF-файл по локальному / сетевому пути и передаст его вашему клиенту.Веб-часть «Просмотр страниц» (или 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:
Сложность будет, если вы захотите загрузить другой PDF в зависимости от параметра, переданного в URL.
В таком случае вам потребуется создать собственную веб-часть, которая просто принимает параметр QueryString в текущем запросе и записываетiframe elt с атрибутом src, содержащим параметр.