我正在使用FPDF的Java端口。我遇到以下错误。
1.当我调用multicell两次时,每次文本都打印在新的一行上。
MultiCell(0, 1, "abcd", currentBorders, Alignment.LEFT, false); //prints on one line
MultiCell(0, 1, "efg", currentBorders, Alignment.LEFT, false); //prints on next line
我希望在呼叫多单元后没有断线。我该怎么做?
1.如果我这样做,那么字符串的一部分会被打印在一行上,另一部分会被打印在下一行上。
MultiCell(getStringWidth(myString), 1, myStringcurrentBorders, Alignment.LEFT, false);
1.如果我执行以下操作,那么在打印myString的行之后会有许多空行。如果我使用一个1作为第二个参数,它就可以正常工作。
MultiCell(0, myFontSize, "123456", currentBorders, Alignment.LEFT, false);
有什么问题吗?
5条答案
按热度按时间brvekthn1#
我会在写入
MultiCell
之前获取当前的Y
位置,然后在生成MultiCell
之后将“光标”移回Y
位置。像这样:差不多吧
ldfqzlk82#
我创建了一个名为
MultiAlignCell
的新方法。它采用与MultiCell
相同的参数,但添加了Cell
中的ln
字段。您可以将其添加到扩展的FPDF
类中。ztmd8pv53#
我修改了MultiCell方法,它的工作原理与上面的答案一样,你可以用与Cell方法相同的方法来使用这个方法。
1u4esq0p4#
在我的例子中,我没有创建任何方法,我只是设置了X和Y,然后在行的末尾我重置。它也很好用。
utugiqy65#
@Muhammad Abdul Rahim和@tomazahlin提供了很好的方法。他们只解决了单个单元格中的断线问题。它们不匹配主题单元格与同一行中其他单元格的高度。如果处理动态表,使用GetY()会变得复杂。我发现的最简单的解决方案是识别可能有溢出文本的列,并将其用作引用。
生成pdf时,如果MultiAlignCell的字符串长于单元格宽度,则生成换行符。得到的高度是两倍(5 x 2 = 10)。10的高度被指定为$h。因此,其他单元格的高度也是$h,整行的高度都是一致的。