0

我正在使用 iTextSharp 库生成 PDF 报告。我有一个段落作为标题,下面有一行。当我将 PdfPageEventHelper 类作为 PageEventListener 添加到处理每页上的背景和页码的编写器时,该行消失了。我认为这是关于背景和线条的对齐,所以线条在背景后面,但我似乎无法将它安排在前面。

文件代码:

using (Document doc = new Document())
        {
            Response.ContentType = "application/pdf";
            Response.AddHeader("Content-Disposition", "attachment; filename=IVIPS_report.pdf");

            doc.SetPageSize(PageSize.A4.Rotate());
            doc.SetMargins(36f, 36f, 36f, 70f);

            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            bckgr = Image.GetInstance(Request.MapPath(PDF_BACKGROUND_LANDSCAPE_PATH));
            bckgr.Alignment = Image.UNDERLYING;
            bckgr.SetAbsolutePosition(0, 0);
            bckgr.ScaleToFit(doc.PageSize);

            PdfWriter writer = PdfWriter.GetInstance(doc, Response.OutputStream);
            MyPdfPageEventHelpPageNo PdfPageEvent = new MyPdfPageEventHelpPageNo();
            writer.PageEvent = PdfPageEvent;
            doc.Open();


            Font title = new Font(Font.FontFamily.HELVETICA, 16f, Font.BOLD, BaseColor.DARK_GRAY);
            Paragraph p = new Paragraph("Overzicht chauffeurs", title);
            p.Alignment = Element.ALIGN_LEFT;
            LineSeparator line = new LineSeparator(1f, 100f, BaseColor.DARK_GRAY, Element.ALIGN_CENTER, -27f);

            doc.Add(p);
            doc.Add(line);
        }

PdfPageEvent 代码:

public class MyPdfPageEventHelpPageNo : iTextSharp.text.pdf.PdfPageEventHelper
    {
        public override void OnEndPage(PdfWriter writer, Document document)
        {
            document.Add(bckgr);

            Font fFooter = new Font(Font.FontFamily.HELVETICA, 9f, Font.NORMAL, BaseColor.GRAY);
            Rectangle page = document.PageSize;
            PdfPTable pageFooter = new PdfPTable(1);
            pageFooter.TotalWidth = page.Width;
            Phrase pagenr = new Phrase("Gegenereerd op " + DateTime.Now.ToString("dd/MM/yyyy") + " - Pagina " + document.PageNumber, fFooter);
            PdfPCell c = new PdfPCell(pagenr);
            c.Border = Rectangle.NO_BORDER;
            c.VerticalAlignment = Element.ALIGN_BOTTOM;
            c.HorizontalAlignment = Element.ALIGN_CENTER;
            pageFooter.AddCell(c);
            pageFooter.WriteSelectedRows(0, -1, 0, 25, writer.DirectContent);
        }
    }
4

0 回答 0