【问题标题】:Vertical alignment not working in composite mode垂直对齐在复合模式下不起作用
【发布时间】:2013-04-17 01:54:55
【问题描述】:

以下内容应根据文档工作,但对我不起作用。我错过了什么吗?

PdfPTable rs1 = new PdfPTable(1);
PdfPCell c = new PdfPCell();

Paragraph p = new Paragraph("some text to align");

c.AddElement(p);
c.VerticalAlignment = Element.ALIGN_MIDDLE;

rs1.AddCell(c);
rs1.AddCell("more text");

return rs1;

【问题讨论】:

    标签: itextsharp


    【解决方案1】:

    iTextSharp 的问题在于,它的行为会根据您使用的构造函数而有所不同。这不会对齐文本:

    PdfPCell c = new PdfPCell();
    c.Add(new Phrase("Whatever"));
    c.setHorizontalAlignment(Element.ALIGN_CENTER);
    

    但这会:

    PdfPCell c = new PdfPCell(new Phrase("Whatever"));
    c.setHorizontalAlignment(Element.ALIGN_CENTER);
    

    我不知道为什么会这样,如果您在构造函数中添加短语,则与单元格处于“文本模式”有关,如果稍后添加,则与“复合模式”有关(在这种情况下每个对象应该照顾它自己的对齐方式)。

    更多信息(在 Java 中,但仍然适用)http://tutorials.jenkov.com/java-itext/table.html#cell-modes

    【讨论】:

    • 是的,上述构造函数的用法对我有用。
    【解决方案2】:

    啊。您需要设置 PdfCell 的垂直对齐方式,而不是段落。

    PdfPCell c = new PdfPCell();
    c.setVerticalAlignment(Element.ALIGN_MIDDLE);
    ...
    

    【讨论】:

    • 然后设置段落的...不,没有段落垂直对齐之类的东西。唔。我建议添加ChunkPhrase 而不是Paragraph。看起来该段落会扩展以填充水平区域。我希望通过使用较小的构建块来防止这种情况并让单元格对齐正常工作。仍然不确定它会起作用。
    猜你喜欢
    • 2018-01-13
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    相关资源
    最近更新 更多