第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

刪除文件 Itext7 中的第一行和最后一行屬性

刪除文件 Itext7 中的第一行和最后一行屬性

Qyouu 2022-12-21 10:14:19
如果 t.setRise(+-) 超出字段紙,我需要?jiǎng)h除 Text (setRise) 中的屬性。  PdfDocument pdfDoc = new PdfDocument(pdfWriter);    Document doc = new Document(pdfDoc, PageSize.A5);    doc.setMargins(0,0,0,36);    for (int i = 0; i <50 ; i++) {        Text t = new Text("hello " + i);        if(i ==0){            t.setTextRise(7);        }        if(i==31){            t.setTextRise(-35);        }    Paragraph p = new Paragraph(t);    p.setNextRenderer(new ParagraphRen(p,doc));    p.setFixedLeading(fixedLeading);     doc.add(p);    }    doc.close();}class ParagraphRen extends ParagraphRenderer{private float heightDoc;private float marginTop;private float marginBot;public ParagraphRen(Paragraph modelElement, Document doc) {    super(modelElement);    this.heightDoc =doc.getPdfDocument().getDefaultPageSize().getHeight();    this.marginTop = doc.getTopMargin();   this.marginBot = doc.getBottomMargin();}@Overridepublic void drawChildren(DrawContext drawContext) {    super.drawChildren(drawContext);    Rectangle rect = this.getOccupiedAreaBBox();    List<IRenderer> childRenderers = this.getChildRenderers();    //check first line    if(rect.getTop()<=heightDoc- marginTop) {        for (IRenderer iRenderer : childRenderers) {            if (iRenderer.getModelElement().hasProperty(72)) {            Object property = iRenderer.getModelElement().getProperty(72);            float v = (Float) property + rect.getTop();            //check text  more AreaPage            if(v >heightDoc){                iRenderer.getModelElement().deleteOwnProperty(72);            }        }    }    }    在這里,我檢查是否第一行與 setRise 更多我刪除 setRise 屬性的紙張區(qū)域。如果最后一行 serRise(-35) 多于 margin bottom,我將其刪除。但它不起作用。屬性不會刪除。
查看完整描述

1 回答

?
MYYA

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊

您的問題如下:drawChildren渲染完成后調(diào)用方法。在這個(gè)階段,iText 通常不考慮任何元素的屬性:它只是將元素放在它的占用區(qū)域中,這個(gè)區(qū)域已經(jīng)在這個(gè)layout()階段計(jì)算過了。

您可以通過布局仿真來克服它。

讓我們將所有段落添加到一個(gè) div 而不是直接添加到文檔中。然后模擬將此 div 添加到文檔中:

LayoutResult result = div.createRendererSubTree().setParent(doc.getRenderer()).layout(new LayoutContext(new LayoutArea(0, PageSize.A5)));

在上面的代碼片段中,我嘗試在 A5 大小的文檔上布置我們的 div。

現(xiàn)在您可以考慮布局的結(jié)果并更改一些元素,這些元素將被真正處理Document#add。例如,要獲得第 30 個(gè)布局段落,可以使用:

((DivRenderer)result.getSplitRenderer()).getChildRenderers().get(30);

更多提示:split renderer 表示 iText 可以放置在區(qū)域上的內(nèi)容部分,overflow - 溢出的內(nèi)容。


查看完整回答
反對 回復(fù) 2022-12-21
  • 1 回答
  • 0 關(guān)注
  • 205 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號