gpt4 book ai didi

java - iText:PdfTable 单元格垂直对齐

转载 作者:太空狗 更新时间:2023-10-29 23:01:06 26 4
gpt4 key购买 nike

我试图将我的耳机单元格文本垂直对齐到单元格高度的中间。

这是我的代码:

    PdfPCell c1 = new PdfPCell(cerate_phrase("" ,regular_bold ));
c1.setHorizontalAlignment(Element.ALIGN_CENTER);
c1.setVerticalAlignment(Element.ALIGN_MIDDLE);
c1.setBackgroundColor(BaseColor.LIGHT_GRAY);
table_.addCell(c1);

但这行不通。 setHorizo​​ntalAlignment 居中但 setVerticalAlignment 不居中。

我做错了什么吗?我怎样才能在中间垂直对齐它?

我们将不胜感激。

最佳答案

根据 Lowagie 的说法:

PdfPCell cell = new PdfPCell(new Phrase("blah Blah blah");
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);

这在技术意义上总是正确的,但有时看起来很糟糕。

要居中,在对象周围画一个框,找到它的中间,并将它与周围对象的中心对齐。

iText 从而找到短语的中心,并将其对齐。但人眼有时会关注大部分文本,比如基线和大写高度之间的字体部分。所以要让它看起来不错,您需要相对于它居中。

Phrase content = new Phrase("Blah blah blah", Font);

Float fontSize = content.getFont().getSize();
Float capHeight = content.getFont().getBaseFont().getFontDescriptor(BaseFont.CAPHEIGHT, fontSize);

Float padding = 5f;

PdfPCell cell = new PdfPCell(content);
cell.setPadding(padding);
cell.setPaddingTop(capHeight - fontSize + padding);

请注意,未使用 PdfPCell 方法 setVerticalAlignment(..)。

这似乎不一定适用于多行短语,但确实如此。

Typography Line Terms

如果 iText 可以在事物周围显示边界框,问题就会很明显(请注意,您可以告诉 iText 绘制边界框,这比神奇的开/关开关更有效)。 p>

此解决方案改编自 email from Paulo Soares .

关于java - iText:PdfTable 单元格垂直对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5554553/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com