两行之间的区别是leading. 您可以选择自己的行距,但习惯使用 1.5 倍的字体大小。您自己逐行绘制,使用不同的字体大小,因此您必须根据该字体大小调整 Y 值。请注意,ColumnText.showTextAligned()使用 Y 值作为要添加的文本的基线,因此如果您有一些字体大小为 12pt 的文本,则需要考虑 18pt 的前导。如果您的字体大小为 8pt,请确保您有 12pt。
这是一个简单的解决方案:基于“约定”。如果你真的想知道某些特定的东西占用了多少水平空间,你需要计算上升和下降,就像我的书的图 3.7 中所做的那样。您将在此处找到代码。如果bf是您的字体(一个BaseFont对象),text是您的文本(a String)并且size是您的字体大小(a float),那么您的文本的高度等于height:
float aboveBaseline = bf.getAscentPoint(text, size);
float underBaseline = bf.getDescentPoint(text, size);
float height = aboveBaseline - underBaseline;
什么时候y使用 Y 坐标,showTextAligned()以确保保持空间y + aboveBaseline和y + underBaseline空闲。这是准确的解决方案。
请注意,document.bottom() - 20看起来有些奇怪。我希望document.bottom() + 20PDF 坐标系的 Y 轴指向上方,而不是下方。