加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 17:45:02 所属栏目:Java 来源:网络整理
导读:我试图垂直对齐我的头像单元格文本在单元格高度的中间. 这是我的代码: PdfPCell c1 = new PdfPCell(cerate_phrase("",regular_bold )); c1.setHorizontalAlignment(Element.ALIGN_CENTER); c1.setVerticalAlignment(Element.ALIGN_MIDDLE); c1.setBackgroun
我试图垂直对齐我的头像单元格文本在单元格高度的中间.

这是我的代码:

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(..)不被使用.

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

如果iText可以显示围绕事物的边界框,那么这个问题就会很明显(你可以告诉iText来绘制边界框,它只是一个比魔法开/关开关更多的工作).

该解决方案适用于email from Paulo Soares.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读