Java iText格式问题

Java iText格式问题,java,pdf,itext,Java,Pdf,Itext,上下文 我从事动态PDF生成已经有一段时间了,我遇到了我的最终需求。唉,这是一场噩梦。我正在使用iText库,版本2.1.7 我基本上是想得到一个像最上面一行的格式(我只是在画图中模拟出来)。其他几排是目前的情况,但我在让它们正确排列时遇到了一些实际问题 代码 用于生成每个颜色编码块的代码如下: String currentPrice = p.getPrice(); String timeStr = p.getTime(); C

上下文

我从事动态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);
我尝试过的方法

我尝试了显而易见的方法,即从每个
块中删除最后一条特征线。这不起作用,只是看起来完全一样,尽管每个
靠得更近

我还尝试将
段落
更改为
短语
,这意味着代码如下所示:

  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);