无法访问外部类型的非静态成员&System; Web.UI.Page'通过嵌套类型' PrintToPdf._events'

时间:2016-08-12 07:22:14

标签: c# pdf itext

我一直在尝试使用iTextSharp向所有网页添加图片。

根据此web page,我需要查看PdfPageEventHelper的{​​{1}}。

它提供了一个名为iTextSharp的方法,允许这样的事情。

基本上,将图像视为文档的页眉或页脚,并使用绝对定位将其放在您想要的位置,而不是仅仅放在页面内容的流中。

以下代码响应错误:

  

无法访问外部类型的非静态成员' System.Web.UI.Page'   通过嵌套类型' PrintToPdf._events'

开:

OnEndPage

有没有办法在所有页面中以相同的方式插入图像?

你能帮助我吗?

提前谢谢。

PdfPCell cell2 = new PdfPCell(Image.GetInstance(Server.MapPath(imagepath)));

编辑#1

class _events : PdfPageEventHelper
{
    public override void OnEndPage(PdfWriter writer, Document document)
    {
        PdfPTable table = new PdfPTable(1);

        table.TotalWidth = document.PageSize.Width - document.LeftMargin - document.RightMargin;
        PdfPTable table2 = new PdfPTable(2);

        string imagepath = @"Img\Logo.jpg";

        PdfPCell cell2 = new PdfPCell(Image.GetInstance(Server.MapPath(imagepath)));
        cell2.Colspan = 2;
        table2.AddCell(cell2);

        PdfPCell cell = new PdfPCell(table2);
        table.AddCell(cell);

        table.WriteSelectedRows(0, -1, document.LeftMargin, document.PageSize.Height - 36, writer.DirectContent);
    }
}



private void PdfFiles()
{
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment;filename=test.pdf");
    Response.Cache.SetCacheability(HttpCacheability.NoCache);

    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    pnPrint.RenderControl(hw);

    StringReader sr = new StringReader(sw.ToString());

    string imagepath = @"Img\Logo.jpg";

    Document pdfDoc = new Document(PageSize.A4, 20f, 20f, 10f, 20f);

    try
    {
        _events e = new _events();
        PdfWriter pw = PdfWriter.GetInstance(pdfDoc, new FileStream("test.pdf", FileMode.Create));
        pw.PageEvent = e;

        HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
        PdfWriter.GetInstance(pdfDoc, Response.OutputStream);

        pdfDoc.Open();

        for (int i = 0; i < 5; i++)
        {
            Image image = Image.GetInstance(Server.MapPath(imagepath));
            image.Alignment = Image.ALIGN_LEFT;
            pdfDoc.Add(image);
            htmlparser.Parse(sr);
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        pdfDoc.Close();
        Response.End();
    }
}

0 个答案:

没有答案