语境
我从事动态 PDF 生成已经有一段时间了,我遇到了我的最终要求。唉,这是一场噩梦。我正在使用iText库,版本 2.1.7。
我基本上是在尝试获得像顶行这样的格式(我只是在油漆中模拟了它)。其他行是它目前的样子,但我在让它们正确排列时遇到了一些真正的麻烦!
代码
用于生成每个颜色编码块的代码在这里:
String currentPrice = p.getPrice();
String timeStr = p.getTime();
Chunk price = new Chunk(currentPrice);
Chunk time = (Chunk) generatePdfElement("Timestamp", timeStr);
if (priceDbl > lastPrice) {
// set color to blue.
price.setBackground(WebColors.getRGBColor("#7777FF"));
time.setBackground(WebColors.getRGBColor("#7777FF"));
} else if (priceDbl < lastPrice) {
// set to red.
price.setBackground(WebColors.getRGBColor("#FF0000"));
time.setBackground(WebColors.getRGBColor("#FF0000"));
}
Paragraph pricePara = new Paragraph();
pricePara.add(price);
pricePara.add(generateBreakLine());
pricePara.add(time);
pricePara.add(generateBreakLine());
// Add the new price data to the list of all the prices for this cell.
allPrices.add(pricePara);
allPrices
然后将其添加到段落并放入单元格中:
Paragraph pricesCellValue = new Paragraph();
pricesCellValue.addAll(allPrices);
PdfPCell pricesCell = new PdfPCell(pricesCellValue);
pricesCell.setBackgroundColor(WebColors.getRGBColor(getRowStr()));
selectionsTable.addCell(pricesCell);
// Add each cell to the table to create the row.
我尝试过的方法
我尝试了显而易见的方法,即从每个Chunk
. 这不起作用,它只是看起来完全一样,虽然每个Chunk
更接近。
我也尝试将 from 更改Paragraph
为Phrase
,这意味着代码如下所示:
Phrase pricePara = new Phrase();
pricePara.add(price);
pricePara.add(generateBreakLine());
pricePara.add(time);
//pricePara.add(generateBreakLine());
// Add the new price data to the list of all the prices for this cell.
allPrices.add(pricePara);
结果是这样的:
所以现在我的想法很新鲜!有没有其他人有任何建议,或者在这方面对 iText 有一些经验?
编辑
为清楚起见,generateBreakLine()
生成一个新的空Paragraph
对象。