PdfPHeaderCell右键以文本模式对齐内容

时间:2016-11-21 18:28:54

标签: itext

我有一个包含几个数字列的表。我可以正确地对齐行列,但我不能右击标题列。我认为,原因是因为PdfPHeaderCell构造函数不接受Phrase对象,所以我必须使用cell.addElement()将其置于复合模式,忽略我指定的对齐。

我发现实现我正在寻找的效果的唯一方法是创建一个段落,为其分配对齐,然后将其放在标题中。这对我来说似乎有点笨拙,因为我不需要段落的任何特征,我只需要对齐它。

有更简洁的方法吗?

  /**
   * Builds a basic header cell from the given string
   * 
   * @param content
   * @param alignment
   * @return PdfPHeaderCell
   */
  protected static PdfPHeaderCell getGenericHeaderCell(String content, Integer alignment)
  {
    PdfPHeaderCell cell = new PdfPHeaderCell();

    Paragraph p = new Paragraph();
    p.add(new Phrase(content, TABLE_HEADER));
    if (alignment != null)
    {
      p.setAlignment(alignment);
    }

    cell.addElement(p);
    cell.setBorder(Rectangle.BOTTOM);
    cell.setBorderColorBottom(TABLE_HEADER_BORDERCOLOR);
    cell.setBorderWidthBottom(1);
    cell.setPaddingTop(0);
    return cell;
  }

1 个答案:

答案 0 :(得分:0)

首先:你需要一个Phrase但是你使用Paragraph,所以你可以替换:

Paragraph p = new Paragraph();
p.add(new Phrase(content, TABLE_HEADER));
if (alignment != null)
{
  p.setAlignment(alignment);
}

使用:

Phrase p = new Phrase(content, TABLE_HEADER);
if (alignment != null)
{
  p.setAlignment(alignment);
}

代码中的实际错误是您使用addElement()。您声称在文本模式下创建了一个单元格,但是忘了使用addElement()使单元格切换到复合模式。

您可以通过替换以下内容来解决此问题:

cell.addElement(p);

使用:

cell.setPhrase(p);

使单元格保持文本模式。