ItextSharp 401 错误(图像问题)



我在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"));

最新更新