iText的7:我怎样才能让溢出一个div?

ideaboxer:

我有一个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>)。

MKL:

您可以考虑使用自定义的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;
}

OverflowHiddenDivRenderer

使用这样的:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我怎样才能让一个 for 语句有一个 else

我怎样才能让一个类实现一个接口...(C ++)

我怎样才能让一个用户表单完成另一个?

脚本影响所有 div,我怎样才能让它只影响一个?

我怎样才能让Selenium使用我的firefox(而不是创建一个新的)

我怎样才能让我的Ubuntu从给定的源中寻找一个库

我怎样才能让我的 CNN 输出一个特征向量

我怎样才能让一个函数等到代码前一行完成

我怎样才能让一个for循环,将显示在JavaFX 8周的TextField

我怎样才能让一个for循环与双打的阵列?

我怎样才能让一个元素失去它的盒子模型?

我怎样才能让jQuery用fadeToggle切换一个类?

从数组中删除一个值。我怎样才能让它工作

我怎样才能让“图像”键成为第一个?

我怎样才能让它移动到一个新目录?

我怎样才能让 clojure 写一个对套接字的响应?

我怎样才能让你每次回答一个问题时不断重复?

我怎样才能让 Neovim 的“e”地图增加一个位置?

我怎样才能让一个有界类型参数的方法排除一个子类?

我怎样才能让一个块跟随 pygame 中的另一个块

我怎样才能让我的动画在另一个方向上工作?

我怎样才能让我的Node.js的MySQL连接为一个承诺的工作?

我有一个有效的代码,但我怎样才能让它更优雅

我怎样才能让 Git“忘记”一个被跟踪但现在在 .gitignore 中的文件?

我怎样才能让一个计数器只为 discord.py 中的消息作者增加

如果处理错误,While 循环会跳过一个循环。我怎样才能让它运行剩余的周期?

Unity - 我怎样才能让一个函数在玩家点击它 3 次时触发?

我怎样才能让用户能够点击一个事件来强制他们向下滚动?

我怎样才能让python服务器打开一个html文件而不是目录?