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

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

setTableEvent 設(shè)置器不再可用于帶有 itext7 的表

setTableEvent 設(shè)置器不再可用于帶有 itext7 的表

叮當(dāng)貓咪 2022-11-02 10:39:50
我正在使用itext7。我有一個(gè)帶有標(biāo)題和幾個(gè)正常行的表。我還從 pageNumber > 1 放置了一個(gè)頁眉。因此,當(dāng)在下一頁拆分表格時(shí),我的表格標(biāo)題與頁眉重疊。我的目標(biāo)是將拆分表標(biāo)題放在頁面標(biāo)題下方,這樣就不會(huì)再有重疊了。為此,我想放置一個(gè)表格事件并嘗試在拆分發(fā)生時(shí)修改表格邊距頂部。使用 itext5,可以使用 PdfPTableEventForwarder 為 PdfPTable 設(shè)置設(shè)置器 setTableEvent 來創(chuàng)建事件。我怎樣才能用 itext7 達(dá)到這個(gè)目標(biāo)?我的代碼是這樣的:我為 END_PAGE 事件添加了以下處理程序PdfDocument pdf = new PdfDocument(writer);pdf.addEventHandler(PdfDocumentEvent.END_PAGE, new MyHeaderEventHandler());MyHeaderEventHandler 類的片段代碼:公共無效句柄事件(事件事件){//這里有一些代碼if(pageNumber > 1){  Table pageHeaderTable = new Table(new float[]{1.5f, 1.3f, 1.5f, 2.3f, 2.3f, 2.3f, 2f, 2.6f}); pageHeaderTable.setMarginTop(12).setWidth(523).setMarginLeft(36); pageHeaderTable.setFixedLayout();//some code to fill pageHeaderTable cells(1 row with 8 cells) with string values canvas.add(pageHeaderTable);} canvas.close(); pdfCanvas.release();}//我的 invoiceElementTable 的代碼片段Table invoiceElementTable = new Table(new float[]{1.5f, 1.3f, 1.5f, 2.3f, 2.3f, 2.3f, 2f, 2.6f});invoiceElementTable.setFixedLayout();                                invoiceElementTable.setWidth(UnitValue.createPercentValue(100));invoiceElementTable.addHeaderCell(new Cell(1,8).add(new Paragraph("invoiceElementTable Header")));I have a list of objects to fill the cells:eltList.stream().forEach(elt-> {invoiceElementTable.addCell(new Cell().add(new Paragraph(elt.getItem0)));invoiceElementTable.addCell(new Cell().add(new Paragraph(elt.getItem1)));invoiceElementTable.addCell(new Cell().add(new Paragraph(elt.getItem2)));invoiceElementTable.addCell(new Cell().add(new Paragraph(elt.getItem3)));invoiceElementTable.addCell(new Cell().add(new Paragraph(elt.getItem4)));invoiceElementTable.addCell(new Cell().add(new Paragraph(elt.getItem5)));invoiceElementTable.addCell(new Cell().add(new Paragraph(elt.getItem6)));invoiceElementTable.addCell(new Cell().add(new Paragraph(elt.getItem7)));});問題是當(dāng) invoiceElementTable 拆分到下一頁時(shí),其標(biāo)題行(“invoiceElementTable Header”)與 pageHeaderTable 的唯一行重疊。我想在invoiceElementTable拆分到下一頁時(shí)修改它的位置以避免重疊
查看完整描述

1 回答

?
慕少森

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

實(shí)現(xiàn)您自己的表格渲染器并為表格的拆分部分指定布局區(qū)域。


在下面的示例中,布局矩形減少了 100(您需要根據(jù)頁眉的高度更改此值):


    class CustomTableRenderer extends TableRenderer {

    public CustomTableRenderer(Table modelElement) {

        super(modelElement);

    }


    @Override

    public IRenderer getNextRenderer() {

        return new CustomTableRenderer((Table)modelElement);

    }


    @Override

    public LayoutResult layout(LayoutContext layoutContext) {

        if (!isOriginalNonSplitRenderer) {

            LayoutArea area = layoutContext.getArea();

            area.setBBox(area.getBBox().decreaseHeight(100));

        }

        return super.layout(layoutContext);

    }

}

要將其集成到您的代碼中,只需在您的表上設(shè)置此渲染器的實(shí)例:


table.setNextRenderer(new CustomTableRenderer(table));


查看完整回答
反對(duì) 回復(fù) 2022-11-02
  • 1 回答
  • 0 關(guān)注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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