【发布时间】:2015-11-19 14:02:50
【问题描述】:
我生成了一个 Table 对象,其中一些单元格具有背景色。此背景颜色是从数据库中动态加载的。
我在我的代码中使用以下几行设置了 BackColor:
TableCell tCell = new TableCell();
tCell.BackColor = (Color)converter.ConvertFromString(color_startBorderCrtColor);
tCell.Text = Convert.ToString(row[column.ColumnName]);
tRow.Cells.Add(tCell);
当我将呈现的表格附加到StringBuilder 并使用iTextSharp 将其写入PDF 时,单元格的Background-Color 是未显示。相反,当我将 StringBuilder 写入文字时,单元格被正确绘制。
这是我如何转换表格并将其附加到我的StringBuilder 的代码:
TextWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
Table myGenTable = (Table)genObjects[0];
myGenTable.RenderControl(hw);
sb.Append(tw.ToString()); //sb is the StringBuilder I'm working with
有没有一种方法可以让我在 pdf codument 中绘制 ccell? 表格的边框也存在同样的问题,该边框使用以下代码设置为表格本身的属性:
tblcblCellsCQ.BorderColor = Color.Black;
tblcblCellsCQ.BorderWidth = 2;
tblcblCellsCQ.BorderStyle = BorderStyle.Dashed;
这是我将 StringBuilder 写入 PDF 文件的代码:
StringReader sr = new StringReader(sb.ToString());
Document pdfDoc = new Document(PageSize.A4.Rotate(), 10f, 10f, 10f, 0f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=" + friendlyName + ".pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Write(pdfDoc);
Response.End();
【问题讨论】:
-
您的问题不清楚:在 iTextSharp 中,您有
PdfPTable和PdfPCell等对象。没有TableCell对象。 iTextSharp 中没有TextWriter,也没有HtmlTextWriter。PdfPCell没有BorderStyle等属性。您在标题中声称“背景颜色未在 iTextSharp 中显示”是非常不礼貌和不正确的,因为在您的问题中我们看不到任何证明您正在使用 iTextSharp 的证据。 请重新表述您的问题: 要么将其设为真正的 iTextSharp 问题,要么将 iTextSharp 排除在外! -
@BrunoLowagie 我不使用
PdfTable或PdfCell,因为我的网站中的其他部分也需要生成的表格,而不仅仅是pdf。我已经添加了生成 pdf 文件的代码。 -
好的,我撤回了我的反对票。您正在使用
HTMLWorker。正如许多问题的许多答案中所解释的那样,HTMLWorker 已被弃用,取而代之的是 XML Worker。HtmlWorker是 HTML 到 PDF 的非常不完整的实现。它不再受支持。不应再使用它。切换到使用 iTextSharp 的 XML Worker,看看问题是否仍然存在。 -
好的,我会看看它,明天尝试更新我的代码。
标签: c# pdf itextsharp