Java 如何在段落级断页?
如何在段落级别开始新页面?我知道我可以在文档级别这样做,但这会破坏我的格式Java 如何在段落级断页?,java,itext7,Java,Itext7,如何在段落级别开始新页面?我知道我可以在文档级别这样做,但这会破坏我的格式 也许有一个功能可以根据字体和字体大小查找页面上的剩余行?您完全可以这样做。 但它需要一些关于iText如何呈现其内容的知识 在内部,渲染段落对象时,它使用段落渲染器。每个ParagraphRenderer都有一个或多个LineRenderer对象作为其子对象。同样,每个LineRenderer都有一个或多个TextRenderer对象 为了获取有关段落拆分位置的信息,您可以要求段落对象对给定的布局上下文对象(包含可用空间
也许有一个功能可以根据字体和字体大小查找页面上的剩余行?您完全可以这样做。 但它需要一些关于iText如何呈现其内容的知识 在内部,渲染
段落
对象时,它使用段落渲染器
。每个ParagraphRenderer
都有一个或多个LineRenderer
对象作为其子对象。同样,每个LineRenderer
都有一个或多个TextRenderer
对象
为了获取有关段落拆分位置的信息,您可以要求段落
对象对给定的布局上下文
对象(包含可用空间的宽度和高度以及一些其他有用信息)执行布局,然后返回布局结果
LayoutResult
将能够告诉您段落的拆分位置
试试下面的代码。
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
,它可以为您提供更多信息。您完全可以这样做。
但它需要一些关于iText如何呈现其内容的知识
在内部,渲染段落
对象时,它使用段落渲染器
。每个ParagraphRenderer
都有一个或多个LineRenderer
对象作为其子对象。同样,每个LineRenderer
都有一个或多个TextRenderer
对象
为了获取有关段落拆分位置的信息,您可以要求段落
对象对给定的布局上下文
对象(包含可用空间的宽度和高度以及一些其他有用信息)执行布局,然后返回布局结果
LayoutResult
将能够告诉您段落的拆分位置
试试下面的代码。
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
,它可以为您提供更多信息。正确的方法是在这种情况下使用两段而不是两段。它到底是如何打破你的布局的?我认为你试图通过创建更大的一段来解决这个问题。正确的方法是在这种情况下使用两段而不是两段。它到底是如何打破你的布局的?我认为你正在试图通过创造更大的问题来解决这个问题。