我正在使用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 );
}
}
}
请帮忙!
答案 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);