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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |