如何调整字体大小以填充iTextSharp中的固定高度表格单元格

Dav*_*veB 3 itextsharp

我正在从iTextSharp创建一个PDF进行打印.我有可变长度的文本,我希望始终使用最大字体大小来填充固定高度的表格单元格而不会看不到视线.如何才能做到这一点?

Ste*_*bob 6

您需要首先能够以您选择的字体测量文本的宽度.从iTextSharp文档:

测量文本

有时需要知道某段文字的长度.如果已创建BaseFont对象,则可以使用以下方法:public float getWidthPoint(String text,float fontSize); 因此,如果您使用的是一些尺寸为36的条形码字体(如上例所示),并且您想知道在打印此条形码的行上需要多少空间,您只需:getWidthPoint("0123456789",36f).结果是以点为单位的宽度.1英寸有72个点.因此,如果您有252点的结果(如例8所示),您可以将其转换为英寸和厘米,如下所示:252/72 = 3.5英寸*2.54 = 8.89厘米

这将使用您选择的任何字体作为默认值来获得字符串的宽度.然后,您可以使用表格单元格的固定宽度来查找正确的字体大小,以填充单元格的宽度而不进行换行.

textWidth = getWidthPoint("sample text", originalFontHeight)
newFontHeight = (cellWidth / textWidth ) * originalFontHeight
Run Code Online (Sandbox Code Playgroud)

然后确保新字体的高度(已经按字体大小以磅为单位给出)不超过表格单元格的高度.