如何在段落级别开始新页面?我知道我可以在文档级别执行此操作,但这会破坏我的格式。
也许有一个功能可以根据字体和字体大小查找页面上的剩余行?
最佳答案
你绝对可以做到这一点。 但它需要一些有关 iText 如何呈现其内容的知识。
在内部,当呈现 Paragraph
对象时,它会使用 ParagraphRenderer
。每个 ParagraphRenderer
都有一个或多个 LineRenderer
对象作为其子对象。同样,每个 LineRenderer
都有一个或多个 TextRenderer
对象。
为了获取有关段落分割位置的信息,您可以要求 Paragraph
对象针对给定的 LayoutContext
对象(包含宽度和宽度)执行布局。可用空间的高度,以及一些其他有用的信息),并获取 LayoutResult
返回。
LayoutResult
将能够告诉您Paragraph 被分割的位置
。
尝试下面的代码。
w
表示可用宽度
h
表示可用高度
Rectangle layoutRect = new Rectangle(w,h);
LayoutArea layoutArea = new LayoutArea(1,layoutRect);
LayoutContext context = new LayoutContext(layoutArea);
Text layoutText = new Text(s);
layoutText.setTextRise(0f);
layoutText.setSplitCharacters(new DefaultSplitCharacters());
layoutText.setFont(font);
layoutText.setFontSize(fontSize);
Paragraph p = new Paragraph().add(layoutText);
LayoutResult hwResult = p.createRendererSubTree().layout(context);
此时,使用 IDE 检查 LayoutResult
对象。如果文本被分割,您应该会看到一个 SplitRenderer
,它可以为您提供更多信息。
关于java - 如何在段落级别分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48844983/