背景
我一直在研究动态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
更接近,但看起来完全相同。
我也尝试从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
对象。
答案 0 :(得分:0)
我在最后一个单元格中使用了嵌套PdfPTable
来格式化每个Phrase
的位置。像梦一样工作!