我有一个Div
有一定高度:
Div div = new Div();
div.setHeight(100);
如果在Div
,我用添加几行一段,将占有面积比越高Div
,我收到以下警告:
WARN com.itextpdf.layout.renderer.BlockRenderer - Element content was clipped because some height properties are set.
而在除此之外,该段线路被省略。尽管该段会溢出Div
的底边框,它结束了边界之上。
但是,尽管警告我不在乎,我甚至需要的底边框下方的隐藏方式段落溢出Div
。
我怎样才能实现这样的行为?
(CSS的等价物的行为,我需要可以通过设置来实现overflow: hidden
的HTML <div>
)。
您可以考虑使用自定义的DivRenderer
那些资料核实。
一个证明的概念:
public class OverflowHiddenDivRenderer extends DivRenderer {
public OverflowHiddenDivRenderer(Div modelElement) {
super(modelElement);
}
@Override
public Rectangle getOccupiedAreaBBox() {
Rectangle rectangle = super.getOccupiedAreaBBox();
if (height != null) {
if (rectangle.getHeight() > height.getValue()) {
rectangle.moveUp(rectangle.getHeight() - height.getValue()).setHeight(height.getValue());
}
}
return rectangle;
}
@Override
public LayoutResult layout(LayoutContext layoutContext) {
height = getPropertyAsUnitValue(Property.HEIGHT);
deleteProperty(Property.HEIGHT);
LayoutResult layoutResult = super.layout(layoutContext);
LayoutArea layoutArea = layoutResult.getOccupiedArea();
if (layoutArea != null) {
layoutArea.setBBox(getOccupiedAreaBBox());
}
return layoutResult;
}
UnitValue height;
}
使用这样的:
for (int height = 100; height < 150; height += 5) {
Div div = new Div();
div.setProperty(Property.OVERFLOW_Y, OverflowPropertyValue.HIDDEN);
div.add(new Paragraph(height + " Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."));
div.setHeight(height);
div.setNextRenderer(new OverflowHiddenDivRenderer(div));
document.add(div);
}
(RenderDivOverflowHidden测试testOverflowHiddenDivRenderer
)
为Document document
你
当心,尽管我有我的关于iText的7手,现在相当长的一段时间,这是创建一个自定义我的第一次尝试DivRenderer
,我很可能已经忘记了一些特殊情况。我觉得特别的问题与旋转的内容(这方面super.getOccupiedAreaBBox()
的影响)或区域休息(我没有设置在接下来的渲染OverflowHiddenDivRenderer
与适应高度)。
有些人在这种东西更精通可能会想出一些改进...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句