0

我在 MVC3 中使用 iTextSharp 时遇到了一些问题。

我正在创建一个带有一些图像的页眉/页脚,它在本地工作正常但是当我将它上传到我的服务器时它返回一个 401:

远程服务器返回错误:(401) Unauthorized。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Net.WebException:远程服务器返回错误:(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);

    }

我几乎可以肯定它与图像有关,但我无法弄清楚它应该是什么。

任何帮助将不胜感激:)

4

1 回答 1

0

假设您的图像位于 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"));
于 2012-06-11T12:24:08.060 回答