Java iText格式问题
上下文 我从事动态PDF生成已经有一段时间了,我遇到了我的最终需求。唉,这是一场噩梦。我正在使用iText库,版本2.1.7 我基本上是想得到一个像最上面一行的格式(我只是在画图中模拟出来)。其他几排是目前的情况,但我在让它们正确排列时遇到了一些实际问题 代码 用于生成每个颜色编码块的代码如下:Java iText格式问题,java,pdf,itext,Java,Pdf,Itext,上下文 我从事动态PDF生成已经有一段时间了,我遇到了我的最终需求。唉,这是一场噩梦。我正在使用iText库,版本2.1.7 我基本上是想得到一个像最上面一行的格式(我只是在画图中模拟出来)。其他几排是目前的情况,但我在让它们正确排列时遇到了一些实际问题 代码 用于生成每个颜色编码块的代码如下: String currentPrice = p.getPrice(); String timeStr = p.getTime(); C
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);
我尝试过的方法
我尝试了显而易见的方法,即从每个块中删除最后一条特征线。这不起作用,只是看起来完全一样,尽管每个块靠得更近
我还尝试将段落
更改为短语
,这意味着代码如下所示:
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()
生成一个新的空段落
对象。我在最后一个单元格中使用了嵌套的PdfPTable
,以格式化每个短语的位置。像做梦一样工作 一,。我通常不会回答故意选择使用过时软件的人提出的问题(请参阅)。2.为什么不尝试使用嵌套表呢?啊,您好,我正在使用的过时软件的创建者。我将查看嵌套表;你介意把它作为一个答案贴出来吗?如果它对我有效的话,我可以把它标记为正确的。或者,如果它有效的话,你可以把它作为一个答案贴出来,以供进一步参考,并把它标记为已接受;-)考虑到你能给我答案,我想我会很高兴的,但肯定。我也能做到。
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);