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