我想要一个PdfPCell类的单元格表,每个单元格都有一个很小的标题,主字符串和很小的页脚。我找不到插入它们的方法,因为不允许HeaderandFooter元素添加到单元格中,一个段落会覆盖另一个段落,依此类推。有任何想法吗?

提前致谢

最佳答案

您可以使用嵌套表。
插入一个带有小页眉和小页脚的1x1表,而不是PdfPCell。

编辑:

让我们忘了iTextSharp的表页脚和页眉功能,因为当表跨越多个页面然后重复页脚和页眉时,此功能很有用。在我们的例子中,页眉和页脚将属于仅包含3个单元格的内部表,因此让我们对所有这些单元格都使用PdfPCell。

然后,主要函数是GetHFCell,它将返回一个PdfPTable,其中包含自定义的标头单元格(高度,字体,文本等),一个自定义的页脚单元格和一个包含主文本的中间单元格。
每当我们要将单元格添加到主表中时(在GeneratePDF中如何使用此函数的示例),都会调用此函数。

    private static PdfPTable GetHFCell(string header, string footer, string text)
    {
        PdfPTable pdft;
        PdfPCell hc;
        PdfPCell fc;

        pdft = new PdfPTable(1);
        pdft.WidthPercentage = 100f;
        pdft.DefaultCell.Border = 0;

        hc = new PdfPCell(new Phrase(header));
        hc.Top = 0f;
        hc.FixedHeight = 7f;
        hc.HorizontalAlignment = 1;
        hc.BackgroundColor = iTextSharp.text.Color.ORANGE;
        ((Chunk)(hc.Phrase[0])).Font = new iTextSharp.text.Font(((Chunk)(hc.Phrase[0])).Font.Family, 5f);

        fc = new PdfPCell(new Phrase(footer));
        hc.Top = 0f;
        fc.FixedHeight = 7f;
        hc.HorizontalAlignment = 1;
        fc.BackgroundColor = iTextSharp.text.Color.YELLOW;
        ((Chunk)(fc.Phrase[0])).Font = new iTextSharp.text.Font(((Chunk)(fc.Phrase[0])).Font.Family, 5f);

        pdft.AddCell(hc);
        pdft.AddCell(text);
        pdft.AddCell(fc);

        return pdft;
    }

    public void GeneratePDF()
    {
        Document document = new Document();
        try
        {
            PdfWriter.GetInstance(document, new FileStream("File1.pdf", FileMode.Create));

            document.Open();

            PdfPTable table = new PdfPTable(5);
            table.DefaultCell.Padding = 0;
            table.DefaultCell.BorderWidth = 2f;
            for (int j = 1; j < 6; j++)
            {
                for (int i = 1; i < 6; i++)
                {
                    //calling GetHFCell
                    table.AddCell(
                        GetHFCell("header " + ((int)(i + 5 * (j - 1))).ToString(),
                                  "footer " + ((int)(i + 5 * (j - 1))).ToString(),
                                  "z" + j.ToString() + i.ToString()));
                }
            }

            document.Add(table);
        }
        catch (DocumentException de)
        {
            //...
        }
        catch (IOException ioe)
        {
            //...
        }
        document.Close();
    }

关于c# - itextsharp pdfpcell header ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1491577/

10-09 03:48