我在MVC3中使用iTextSharp时遇到了一些问题。
我正在创建一个带有一些图像的页眉/页脚,它在本地工作正常,但是当我将其上传到我的服务器时,它会返回 401:
远程服务器返回错误:(401) 未经授权。 说明:执行当前 Web 请求期间发生未经处理的异常。 请查看堆栈跟踪,了解有关错误及其在代码中起源位置的详细信息。
异常详细信息:System.Net.Web异常:远程服务器返回错误:(401) 未经授权。
我的页眉/页脚代码:
public override void OnEndPage(iTextSharp.text.pdf.PdfWriter writer, iTextSharp.text.Document document)
{
//Include the header image
//System.Web.HttpContext.Current.Server.MapPath("/image.jpg");
iTextSharp.text.Image HeadImg = iTextSharp.text.Image.GetInstance(HttpContext.Current.Server.MapPath("/image.jpg"));
HeadImg.ScalePercent(50f);
HeadImg.SetAbsolutePosition(document.PageSize.Width - 60f - 72f, document.PageSize.Height - 36f - 216.6f);
//Include the footer image/text
iTextSharp.text.Image FootImgMS = iTextSharp.text.Image.GetInstance(HttpContext.Current.Server.MapPath("/image.jpg"));
FootImgMS.ScalePercent(50f);
iTextSharp.text.Image FootLeftImg = iTextSharp.text.Image.GetInstance(HttpContext.Current.Server.MapPath("/image.jpg"));
FootLeftImg.ScalePercent(50f);
Phrase FootText = new Phrase("Phone: " + Tel, FontFactory.GetFont("verdana", 10));
Paragraph LeftFoot = new Paragraph();
LeftFoot.Add(new Chunk(FootLeftImg, 0, 0));
LeftFoot.Add(new Chunk(Chunk.NEWLINE));
LeftFoot.Add(new Phrase(FootText));
//Create header table
PdfPTable PDFTab = new PdfPTable(1);
//Create footer table
PdfPTable PDFFootTab = new PdfPTable(2);
//Create header cell
PdfPCell PDFCell1 = new PdfPCell(HeadImg);
PDFCell1.Border = 0;
//create footer cells
PdfPCell PDFFootCell1 = new PdfPCell(LeftFoot);
PDFFootCell1.PaddingTop = 35;
PdfPCell PDFFootCell2 = new PdfPCell(FootImgMS);
PDFFootCell1.Border = 0;
PDFFootCell2.Border = 0;
PDFFootCell1.HorizontalAlignment = Element.ALIGN_LEFT;
PDFFootCell2.HorizontalAlignment = Element.ALIGN_RIGHT;
//Add cells to tables
PDFTab.AddCell(PDFCell1);
PDFTab.TotalWidth = document.PageSize.Width;
PDFFootTab.AddCell(PDFFootCell1);
PDFFootTab.AddCell(PDFFootCell2);
PDFFootTab.TotalWidth = document.PageSize.Width - 80;
//Write out header table
PDFTab.WriteSelectedRows(0, -1, 0, document.PageSize.Height, writer.DirectContent);
//Write out footer table
PDFFootTab.WriteSelectedRows(0, -1, 40, 60, writer.DirectContent);
//set pdfContent value
pdfContent = writer.DirectContent;
pdfContent.MoveTo(30, document.PageSize.Height - 145);
pdfContent.LineTo(document.PageSize.Width - 40, document.PageSize.Height - 145);
}
我几乎可以肯定它与图像有关,但我只是无法弄清楚它应该是什么。
任何帮助将不胜感激:)
假设您的图像位于 Web 应用程序的根目录下,请尝试在应用程序相对路径前面设置一个波浪号:
iTextSharp.text.Image HeadImg = iTextSharp.text.Image.GetInstance(HttpContext.Current.Server.MapPath("/image.jpg"));
成为
iTextSharp.text.Image HeadImg = iTextSharp.text.Image.GetInstance(HttpContext.Current.Server.MapPath("~/image.jpg"));