1

我正在使用 MVC2,页眉和页脚在 iTextSharp 4.1.6 中运行良好,但在 5.2 中却没有。这是我的代码:

    public FileStreamResult GridPDF()
            {
                MemoryStream workStream = new MemoryStream();

                //the document
                Document document = new Document();


                PdfWriter.GetInstance(document, workStream);//fs);


                document.Open();


                iTextSharp.text.Font font5 = iTextSharp.text.FontFactory.GetFont("Arial", 10);
                iTextSharp.text.Font font6 = iTextSharp.text.FontFactory.GetFont("Arial", 18);
                             //HeaderFooter header = new HeaderFooter(new Phrase(BPheader, FontFactory.GetFont("Arial", 8, Font.BOLD)), false);
            //header.Border = Rectangle.BOTTOM_BORDER;
            ////header.GrayFill=(Color.GRAY);
            //document.Header = header;

            //HeaderFooter footer = new HeaderFooter(new Phrase("Page: ", FontFactory.GetFont("Arial", 8, Font.ITALIC)), true);
            //footer.Border = Rectangle.TOP_BORDER;
            //document.Footer = footer;
                PdfPTable tableh = new PdfPTable(1);
                PdfPCell cellh = new PdfPCell(new Phrase("", FontFactory.GetFont("Arial", 10)));
                cellh.Colspan = 1;
                tableh.HorizontalAlignment = 0;
                tableh.WidthPercentage = 100;
                cellh.BorderWidth = 3;
                cellh.Padding = 0;
                Image image = Image.GetInstance(Server.MapPath("~/Content/images/logo_small.png"));
                //  image.Alignment = 6; // iTextSharp.text.Image.ALIGN_RIGHT;
                image.ScalePercent(40f); // change it's size
                image.SetAbsolutePosition(500, 750);
                document.Add(image);

                Paragraph p = new Paragraph("Certificate", font6);
                p.Alignment = 1;
                document.Add(p);
                tableh.DefaultCell.Border = Rectangle.TOP_BORDER;
                tableh.DefaultCell.Border = Rectangle.BOTTOM_BORDER;
                tableh.AddCell(cellh);

                //close the document
                document.Close();
                //prepare output stream
                byte[] byteInfo = workStream.ToArray();
                SendPdfToBrowser(byteInfo);
                r

eturn null;
        }

有什么建议么!!提前致谢。

4

1 回答 1

0

我想我知道您的问题,iTextSharp 中的 HeaderFooter 属性已在版本 5+ 中删除。 这个答案应该可以帮助您上路。基本上,您需要使用 PageEvents 类来添加页眉和页脚。

创建一个继承自 PdfPageEventHelper 的类并实现其成员。您只需要 OnStartPage 为您的页眉和 OnEndPage 为您的页脚。在 PDF 创建期间,iTextSharp 将为 PDF 中的每一页触发这些方法中的每一个。

此外,这里有一个更详尽的示例(在 C# 中)。

于 2012-04-10T02:19:47.887 回答