【问题标题】:itext color for cell data单元格数据的 itext 颜色
【发布时间】:2015-06-27 10:03:31
【问题描述】:

我正在使用 itexsharp 创建 PDF 并有一个带有标题和行的表格。我可以给我的标题颜色,但是当我给我的行(单元格)添加颜色时,我不能这样做。 如何为我的行添加颜色。

示例:

 ..................
:Header1 : Header2 :  //I have a sytle here allreadey
 ...................
:Row1    : Row2    : //I want to add style here?
....................

代码:

private String WritePDF(DataTable dt)
        {
            String fileName = "";  

            //Creating iTextSharp Table from the DataTable data
            PdfPTable pdfTable = new PdfPTable(m_PDFColumnCount);

            pdfTable.DefaultCell.Padding = 1;
            pdfTable.WidthPercentage = 100;
            pdfTable.HorizontalAlignment = Element.ALIGN_JUSTIFIED;
           // pdfTable.DefaultCell.BorderWidth = 1;
           //194 214 155


            this.BuildPDFHeader(pdfTable, "date");
            this.BuildPDFHeader(pdfTable, "time");
            this.BuildPDFHeader(pdfTable, "result");
            this.BuildPDFHeader(pdfTable, "fullname");
            this.BuildPDFHeader(pdfTable, "regarding");            




            //Adding DataRow
                for (int intIndex = 0; intIndex < dt.Rows.Count; intIndex++)
                {

                    dt.Rows[intIndex]["details"] = getplaintext(dt.Rows[intIndex]["details"].ToString());


                  //Font verdana = FontFactory.GetFont("Verdana", 10, new Color(125, 88, 15));
                  //cell.BackgroundColor = new iTextSharp.text.Color(51, 102, 102);


                  pdfTable.AddCell(dt.Rows[intIndex]["date"].ToString());
                  pdfTable.AddCell(dt.Rows[intIndex]["time"].ToString());
                  pdfTable.AddCell(dt.Rows[intIndex]["result"].ToString());
                  pdfTable.AddCell(dt.Rows[intIndex]["fullname"].ToString());
                  pdfTable.AddCell(dt.Rows[intIndex]["regarding"].ToString());

                  PdfPCell cell = new PdfPCell(new Phrase(dt.Rows[intIndex]["details"].ToString()));
                  cell.Colspan = 5;
                  pdfTable.AddCell(cell);


                }

            String folderPath = "C:\\PDFs\\"; //should be in configfile.

            fileName =  String.Format("{0}{1}{2}",folderPath, dt.Rows[0]["id"].ToString(),".pdf" );

            //Exporting to PDF

            if (!Directory.Exists(folderPath))
            {
                Directory.CreateDirectory(folderPath);
            }
            using (FileStream stream = new FileStream(fileName, FileMode.OpenOrCreate ))
            {
                Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);               
                PdfWriter.GetInstance(pdfDoc, stream);
                pdfDoc.Open();
                pdfDoc.Add(pdfTable);
                pdfDoc.Close();
                stream.Close();
            }

            return fileName;

        }

        private void BuildPDFHeader( PdfPTable pdfTable, String strText)
        {
              PdfPCell cell = new PdfPCell(new Phrase(strText)); 
                    cell.BackgroundColor = new iTextSharp.text.Color(51, 102,102);
                    pdfTable.AddCell(cell);
        }

【问题讨论】:

    标签: c# pdf itext


    【解决方案1】:

    对于您的标题行,您正在自己创建 PdfPCell 对象:

    PdfPCell cell = new PdfPCell(new Phrase(strText)); 
    cell.BackgroundColor = new iTextSharp.text.BaseColor(51, 102,102);
    

    对于其余的行,您要求 iTextSharp 创建 PdfPCell 对象:

    pdfTable.AddCell(dt.Rows[intIndex]["date"].ToString());
    

    这是stringdt.Rows[intIndex]["date"].ToString()

    iText 将创建一个PdfPCell,就像您为标题创建 PdfPCell 对象时所做的那样,因此一种选择是您以相同的方式为其他行创建 PdfPCell 对象:

    PdfPCell cell = new PdfPCell(new Phrase(dt.Rows[intIndex]["date"].ToString())); 
    cell.BackgroundColor = new iTextSharp.text.BaseColor(60, 60, 60);
    pdfTable.AddCell(cell);
    

    但是,有一条捷径。您可以为默认单元格定义背景颜色:

    pdfTable.DefaultCell.BackgroundColor = new iTextSharp.text.BaseColor(60, 60, 60);
    

    现在,您使用addCell() 方法添加为string 的每个单元格的背景颜色将具有默认单元格的背景颜色。

    重要提示:我看到您使用的是 6 岁的过时版本的 iTextSharp:您使用的是 Color 类而不是 BaseColor。请注意,该版本存在技术和法律问题。请升级到更新的版本。

    【讨论】:

      猜你喜欢
      • 2018-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 1970-01-01
      相关资源
      最近更新 更多