两行之间的区别是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() + 20
PDF 坐标系的 Y 轴指向上方,而不是下方。