0

MVC3 で iTextSharp を使用すると問題が発生します。

いくつかの画像を含むヘッダー/フッターを作成していますが、ローカルでは問題なく動作しますが、サーバーにアップロードすると 401 が返されます。

リモート サーバーがエラーを返しました: (401) 権限がありません。説明: 現在の 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 に答える