0

我有一个小问题,答案可能非常明显和简单,但我想我在互联网上搜索答案失败了,所以我再次来找你们。

我正在使用 c# 在 asp.net 中动态生成 PDF 文件,而现在我只是为它做基础。它生成的其中一件事是应该显示购物车内容的表格(是的,我正在谈论发票)并且我正在尝试为表格提供一些模型,但上排的模型会有所不同比其余的。(定义列的标题(数量、标题、单价、折扣和总计)

这是一些代码(这是我第一次这样做,所以不要对我大喊大叫xD)

PdfPCell Quantity = new PdfPCell(new Phrase("Quantity"));
PdfPCell Title = new PdfPCell(new Phrase("Title"));
PdfPCell UniPr = new PdfPCell(new Phrase("Unit Price"));
PdfPCell Disc = new PdfPCell(new Phrase("Discount"));
PdfPCell Total = new PdfPCell(new Phrase("Total"));
PdfPCell[] cartheaderc = { Quantity, Title, UniPr, Disc, Total };
PdfPRow cartheader = new PdfPRow(cartheaderc);

所以我这样尝试过,然后说:

PdfPRow.BackgroundColor = new BaseColor(255,0,0);

由于这适用于细胞,我认为这可能是有道理的,但显然它没有。当我把每个单元分开时我可能可以做到,但应该有更简单的方法,对吧?

这是一个问题,但可悲的是,我还有一个问题(尽管愚蠢了 10 倍,容易了 10 倍)。我要使用的颜色是#c5c5c5,但它不想识别颜色代码。

这是我正在使用的 ItextSharp 系统列表(这是在 Visual Studio 和 SQLserver 的标准系统旁边,不,如果可能的话,我不想添加更多系统):

using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
4

1 回答 1

0

你有两个问题:

  1. 您正在使用PdfPRow,但您不应该这样做。该类PdfPRow仅供内部使用。你应该在PdfPCell水平上工作。如果要为完整的行着色,可以使用PdfPTableEvent. 例如,参见alternating.pdf中的彩色行。它们在AlternatingBackground表事件中着色。
  2. 你很难创建颜色#c5c5c5。十六进制值C5等于 197,因此您要创建以下颜色对象:new BaseColor(197, 197, 197);

您的主要错误是您PdfPRow通过添加对象数组来创建 a PdfPCell。你从哪里得到这样做的灵感?如果你发现有人写了这样一个例子,请告诉我,如果他在附近,我会亲自打他 ;-)

表是这样创建的:

PdfPTable table = new PdfPTable(5);
PdfPCell Quantity = new PdfPCell(new Phrase("Quantity"));
table.AddCell(Quantity);
PdfPCell Title = new PdfPCell(new Phrase("Title"));
table.AddCell(Title);
PdfPCell UniPr = new PdfPCell(new Phrase("Unit Price"));
table.AddCell(UniPr);
PdfPCell Disc = new PdfPCell(new Phrase("Discount"));
table.AddCell(Disc);
PdfPCell Total = new PdfPCell(new Phrase("Total"));
table.AddCell(Total);

有一种更简单的方法可以做到这一点。这种更简单的方法还允许您为每个单元格定义背景颜色:

PdfPTable table = new PdfPTable(5);
table.DefaultCell.BackgroundColor = new BaseColor(197, 197, 197);
table.AddCell("Quantity");
table.AddCell("Title");
table.AddCell("Unit Price");
table.AddCell("Discount");
table.AddCell("Total");

AddCell()方法会将字符串包装在Phrase. PdfPCell用它创建一个Phrase并将您为该单元定义的所有属性应用DefaultCell到该单元格。这样,您可以确保所有单元格具有相同的背景颜色(或边框,或...)。显然,如果您自己创建实例,DefaultCell将忽略的属性。PdfPCell

于 2014-06-26T16:17:36.663 回答