要加载到从Sharepoint Server Images Folder创建的pdf文件中的图像

时间:2011-11-17 20:36:30

标签: asp.net sharepoint itextsharp itext

我正在使用ItextSharp Library在我的SharePoint网站上单击按钮时生成pdf文件。我想在pdf上使用一个徽标,其图像位于Sharepoint的Images文件夹中。我无法做到这一点。

有人可以帮助我。

下面是我正在使用的代码,它从window32获取我不想要的实例。

 protected void button1_OnClick(object sender, EventArgs e)
  {
      Font Arial = FontFactory.GetFont("Arial", 12, BaseColor.GREEN);
      Font Verdana = FontFactory.GetFont("Verdana", 16, Font.BOLDITALIC, new BaseColor(125, 88, 15));
      string imagepath = SPContext.Current.Web + "/_layouts/Images/Image1.png";
      using (var ms = new MemoryStream())
      {
          using (var document = new Document(PageSize.A4,50,50,15,15))
          {
              PdfWriter.GetInstance(document, ms); 
              document.Open();
              Paragraph img = new Paragraph();
              Image jpg = Image.GetInstance(imagepath); --- Getting an error here stating "Could not find a part of the path 'c:\windows\system32\inetsrv\CustomSystem\_layouts\Images\Image1.png'"
              img.Add(jpg );
          }
       }
      }

请帮忙!

2 个答案:

答案 0 :(得分:0)

我不太熟悉SharePoint开发,但问题在于这一行:

string imagepath = SPContext.Current.Web + "/_layouts/Images/Image1.png";

此字符串必须是绝对路径路径,例如c:\www\sites\image.png,而不是它现在的相对路径。我可以告诉它的亲戚,因为当你要求ASP.Net为你提供一些东西但你没有指定它在%WINDOWS%中查找的路径。

我不知道你是如何使用SPContext.Current.Web的,但是根据调用.ToString()的文档,它会返回网站的标题,如果你用类似的字符串连接它会发生什么你是。我的猜测是你不需要,但可能是错的。

如果layouts文件夹是您正在处理的文件所在的文件夹的子文件夹,那么您应该可以使用Server.MapPath获取绝对路径:

string imagepath = Server.MapPath("_layouts/Images/Image1.png");

答案 1 :(得分:0)

我在我的sharepoint网站上做过这样的事情

string url = "http://fspl-dsktp-038:8000/Style%20Library/FSPL/CorporateLogo.png";

//iTextSharp.text.Image logo = iTextSharp.text.Image.GetInstance(Server.MapPath("images") + "//images/FSPL LOGO.png");

iTextSharp.text.Image logo =iTextSharp.text.Image.GetInstance(url); 
logo.ScaleAbsolute(90, 90);
Imagecell.AddElement(logo);
gvTable.AddCell(Imagecell);