gpt4 book ai didi

c# - 单元格数据的 itext 颜色

转载 作者:太空宇宙 更新时间:2023-11-03 23:34:16 25 4
gpt4 key购买 nike

我正在使用 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);
}

最佳答案

对于标题行,您正在自己创建 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());

这是一个字符串:dt.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。请注意,该版本存在技术和法律问题。请升级到更新的版本。

关于c# - 单元格数据的 itext 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31087463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com