使用itextsharp的页眉和页脚使用c#

使用itextsharp的页眉和页脚使用c#,c#,itext,C#,Itext,我正在使用itextsharp使用.net web应用程序生成pdf。我已经使用nuget软件包安装了itextsharp的以下版本-版本5.5.10。我已经看过样品并冲洗过了 代码示例生成pdf,它正在工作。然而,我无法理解或得到页眉页脚已添加到pdf。下面是我正在使用的示例代码 public class Header : PdfPageEventHelper { protected Phrase header; public void setHeader(Phrase he

我正在使用itextsharp使用.net web应用程序生成pdf。我已经使用nuget软件包安装了itextsharp的以下版本-版本5.5.10。我已经看过样品并冲洗过了 代码示例生成pdf,它正在工作。然而,我无法理解或得到页眉页脚已添加到pdf。下面是我正在使用的示例代码

public class Header : PdfPageEventHelper
{
    protected Phrase header;

    public void setHeader(Phrase header)
    {
        this.header = header;
    }

    public void onEndPage(PdfWriter writer, Document document)
    {
        PdfContentByte canvas = writer.DirectContent;
        ColumnText.ShowTextAligned(canvas, Element.ALIGN_RIGHT, header, 559, 806, 0);
    }
}   


Document pdfReport = null;
MemoryStream msReport = new MemoryStream();
PdfWriter pdfWriter = PdfWriter.GetInstance(pdfReport, msReport);

if (!string.IsNullOrEmpty(HeaderText))
{
    Header objHeaderFooter = new Header();  
    //Here i need to assign the string HeaderText to Header. I dont know how to do it.                 
}
请帮助了解如何使用itextSharp分配HeaderText。大多数开发人员示例都是基于java的
但是我使用的是.net c#。

您想在

if (!string.IsNullOrEmpty(HeaderText))
{
    Header objHeaderFooter = new Header();  
    //Here i need to assign the string HeaderText to Header. I dont know how to do it.                 
}
假设
HeaderText
为字符串,则可以使用
Header
方法
setHeader

objHeaderFooter.setHeader(new Phrase(HeaderText));
此外,您必须将
objHeaderFooter
分配给
PdfWriter
实例:

pdfWriter.PageEvent = objHeaderFooter;
因此:

此外,每当您在c#中重写一个方法时,相应地将其标记为
override
。特别是在页面事件侦听器中,使用

public override void onEndPage(PdfWriter writer, Document document)
这很容易忘记,尤其是在移植java示例时,因为在java中,相应的标记
@Override
是可选的


下面是op提供的示例代码

Response.Clear();
            Response.Buffer = true;
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "attachment; filename=abc.pdf");
            Response.Charset = "";            
            Response.BinaryWrite(getbinary());
            Response.End();  

  public byte[] getbinary()
        {
            Document pdfReport = null;
            pdfReport = new Document(PageSize.A4, 25, 25, 40, 25);
            MemoryStream msReport = new MemoryStream();
            PdfWriter pdfWriter = PdfWriter.GetInstance(pdfReport, msReport);

            pdfReport.Open();

            if (!string.IsNullOrEmpty("Header Text"))
            {
                Header objHeaderFooter = new Header();
                objHeaderFooter.SetHeader(new Phrase("Header Text"));
                pdfWriter.PageEvent = objHeaderFooter;
            }

            PdfPTable ptData1 = new PdfPTable(1);
            ptData1.SpacingBefore = 8;
            ptData1.DefaultCell.Padding = 1;
            ptData1.WidthPercentage = 100;
            ptData1.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
            ptData1.DefaultCell.VerticalAlignment = Element.ALIGN_MIDDLE;

            PdfPCell cell1 = new PdfPCell();
            cell1.BorderWidth = 0.001F;
            cell1.BackgroundColor = new BaseColor(250, 250, 250);
            cell1.BorderColor = new BaseColor(100, 100, 100);
            cell1.Phrase = new Phrase("Sample text");
            ptData1.AddCell(cell1);


            PdfPCell cell = new PdfPCell();
            cell.BorderWidth = 0.001F;
            cell.BackgroundColor = new BaseColor(200, 200, 200);
            cell.BorderColor = new BaseColor(100, 100, 100);

            cell.Phrase = new Phrase("test value");
            ptData1.AddCell(cell);
            pdfReport.Add(ptData1);

            pdfReport.Close();
            return  msReport.ToArray();

        }

public class Header : PdfPageEventHelper
    {
        protected Phrase header;

        public void SetHeader(Phrase header)
        {
            this.header = header;
        }

        public void onEndPage(PdfWriter writer, Document document)
        {
            PdfContentByte canvas = writer.DirectContent;
            ColumnText.ShowTextAligned(canvas, Element.ALIGN_RIGHT, header, 559, 806, 0);
        }
    }

也许这可以作为一种解决办法。添加标题作为另一个单元格值 下面是代码

 if (!string.IsNullOrEmpty(HeaderText))
            {
                PdfPTable Header = new PdfPTable(1);
                Header.SpacingBefore = 8;
                Header.DefaultCell.Padding = 1;
                Header.WidthPercentage = 100;
                Header.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
                Header.DefaultCell.VerticalAlignment = Element.ALIGN_MIDDLE;

                PdfPCell cell1 = new PdfPCell();
                cell1.BorderWidth = 0.001F;
                cell1.BackgroundColor = new BaseColor(250, 250, 250);
                cell1.BorderColor = new BaseColor(100, 100, 100);
                cell1.Phrase = new Phrase(HeaderText, fontBold);
                Header.AddCell(cell1);
                pdfReport.Add(ptDataHeader);
            }

复制品?解决方案看起来很复杂。我正在寻找一种更简单的方法,使用c#将页眉和页脚添加到pdf文件中。“解决方案很复杂”并不是拒绝它的理由,这可能重复了为什么要使用坐标
559806
?你确定那些是对的吗?您在回答的注释中告诉我们,标题没有显示,但如果
559806
是页面可见区域之外的坐标,这将是非常正常的。我尝试过这样做。但在pdf中仍然看不到标题。有什么遗漏吗。或者它是特定于浏览器的。它不是特定于浏览器的。因此,缺少了一些东西。不幸的是,你的代码是“否”,所以我无法使用它进行检查。使用c#的简短示例将对我有所帮助,我目前只使用智能手机。“我以后会调查的。”贾加内什我想你误解了mkl(我希望你不是故意这样做的)。Mkl要求您提供一个示例,这意味着您需要提供一个示例,以便我们可以了解您做错了什么。网上有成百上千的例子。你为什么不试试这些例子呢?我很想结束你的问题,因为它已经被回答了很多次了,答案一点也不复杂!你的回答和你的问题有什么关系吗?您要求在文件中添加页眉和页脚,现在您考虑一个表来解决这个问题吗?我没有标记答案,并标记了我先前更新过的另一个表。下面这行怎么会有错误。它应该是公共覆盖void onnedpage(PdfWriter writer,Document)的,这确实非常重要。当你接受我的回答时,我在上面加了一句话。我想我没有真正研究
标题
代码,因为问题集中在如何使用itextSharp分配HeaderText。
 if (!string.IsNullOrEmpty(HeaderText))
            {
                PdfPTable Header = new PdfPTable(1);
                Header.SpacingBefore = 8;
                Header.DefaultCell.Padding = 1;
                Header.WidthPercentage = 100;
                Header.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
                Header.DefaultCell.VerticalAlignment = Element.ALIGN_MIDDLE;

                PdfPCell cell1 = new PdfPCell();
                cell1.BorderWidth = 0.001F;
                cell1.BackgroundColor = new BaseColor(250, 250, 250);
                cell1.BorderColor = new BaseColor(100, 100, 100);
                cell1.Phrase = new Phrase(HeaderText, fontBold);
                Header.AddCell(cell1);
                pdfReport.Add(ptDataHeader);
            }