使用对表的多次调用在itextsharp中创建标头时出现问题

本文关键字:创建 问题 itextsharp 调用 | 更新日期: 2023-09-27 18:20:19

我有三个静态PdfPTable方法,它们是从用于创建PDF文档的主方法中调用的。

在每种方法中,我都使用PdfPCells向表中添加数据和结构,所以第一种PdfPTable方法是为每一页创建页眉,第二种方法是创建该页的正文,第三种方法是为每页创建页脚。然后,在主方法中调用这些表后,将这些表添加到PdfPDocument中

我试过用桌子。HeaderRows=1可以向每页添加一个页眉,但当添加到页眉的PdfPTable方法时,它会删除该表中的所有内容。当我将其添加到正文的PdfPTable中时,它会将第二页上的内容移动到第一页的底部,并将第一页的内容复制到第二页。

 //table method for call header
 PdfPTable table = CreateTable(textUpperData/*, document, writer*/);
 document.Add(table);
 //table method call for body
 table = CreateTable1(imgInfoData, posData, sizeData, document);
 document.Add(table);
 //table method call for footer
 table = CreateTable2(textLowerData);
 document.Add(table);
 document.Close();

//header table static method                
    private static PdfPTable CreateTable(List<KeyValuePair<string, string>> textUpper/*, Document document, PdfWriter writer*/)
    {
        //SiteDB sitedb = new SiteDB();
        //sitedb.GetEmailText();
        iTextSharp.text.Font headerFont = FontFactory.GetFont("Time New Roman", 14, iTextSharp.text.Font.BOLD, BaseColor.BLACK);
        iTextSharp.text.Font bodyFont = FontFactory.GetFont("Time New Roman", 10, iTextSharp.text.Font.NORMAL, BaseColor.BLACK);
        PdfPTable table = new PdfPTable(3);
        table.HorizontalAlignment = Element.ALIGN_CENTER;
        table.WidthPercentage = 100;
        table.TotalWidth = 597.6f;
        table.LockedWidth = true;
        table.SetWidths(new float[] { 1, 2, 1 });
        iTextSharp.text.Image logo = iTextSharp.text.Image.GetInstance("C:''Users''User''Documents''Images''image0.tiff");
        logo.ScaleToFit(150, 235);
        logo.SetAbsolutePosition(595.2f - 150f, 0);

        PdfPCell logoCell = new PdfPCell(logo);
        logoCell.HorizontalAlignment = Element.ALIGN_JUSTIFIED;
        logoCell.Border = iTextSharp.text.Rectangle.NO_BORDER;
        table.AddCell(logoCell);
        Chunk logoChunk = new Chunk(System.Environment.NewLine);
        Phrase logoPhrase = new Phrase(logoChunk);
        //Chunk headerChunk = new Chunk(sitedb.header_lit.ToString() + System.Environment.NewLine, headerFont);
        //Phrase headerPhrase = new Phrase(headerChunk);
        Chunk headerChunk = new Chunk(textUpper[0].Key.ToString() + System.Environment.NewLine, headerFont);
        Phrase headerPhrase = new Phrase(headerChunk);
        //Chunk bodyChunk = new Chunk(sitedb.body_lit.ToString() + System.Environment.NewLine, bodyFont);
        //Phrase bodyPhrase = new Phrase(bodyChunk);
        Chunk bodyChunk = new Chunk(textUpper[0].Value.ToString() + System.Environment.NewLine, bodyFont);
        Phrase bodyPhrase = new Phrase(bodyChunk);

        Paragraph paragraph = new Paragraph();
        paragraph.Alignment = Element.ALIGN_MIDDLE;
        paragraph.Alignment = Element.ALIGN_TOP;
        paragraph.Add(headerPhrase);
        paragraph.Add(bodyPhrase);

        PdfPCell headerBodyCell = new PdfPCell(paragraph);
        headerBodyCell.HorizontalAlignment = Element.ALIGN_JUSTIFIED;
        headerBodyCell.VerticalAlignment = Element.ALIGN_TOP;
        headerBodyCell.Colspan = 2;
        headerBodyCell.PaddingLeft = 5f;
        headerBodyCell.PaddingRight = 5f;
        headerBodyCell.PaddingTop = 8f;
        headerBodyCell.Border = iTextSharp.text.Rectangle.NO_BORDER;
        table.AddCell(headerBodyCell);
        return table;
    }

使用对表的多次调用在itextsharp中创建标头时出现问题

在一个由多个表构建的pdf中,似乎无法将页眉添加到每个新页面,只有一个带有单元格的表!

我很可能会创建一个方法,为每个新页面不断添加一个特定的表!