IText7 第二页内容进入(覆盖)第一页

IText7 Second page content going(overwriting) to first Page

提问人:Maveric 提问时间:10/29/2023 最后编辑:Maveric 更新时间:10/29/2023 访问量:25

问:

在此处输入图像描述我是第一次使用 iText7 库并设法在第一页上创建一些设计,在同一文档中添加第二页后,当我创建表格和其他内容时,所有内容都反映到第一个 page.my 要求是在数据可用的情况下创建 3 页,并添加不同的部分来显示数据。 下面是我的代码示例

try {
        PdfDocument pdfDocument = new PdfDocument(new PdfWriter(path));
        Document document = new Document(pdfDocument, PageSize.A4);
        document.setMargins(20, 20, 20, 20);
        Color blue = new DeviceRgb(35, 127, 200);
        PdfFont font = PdfFontFactory.createFont();

        float firstCol = 180f;
        float secondCol = firstCol + 20f;
        float thirdCol = secondCol + 20f;
        float[] threeColumnWidth = { firstCol, secondCol, thirdCol };

        // First Page
        Table table = new Table(threeColumnWidth);
        table.addCell(new Paragraph("Versender").setBold().setFontSize(10).setFontColor(blue).setTextAlignment(TextAlignment.LEFT));

        PdfPage firstPage = pdfDocument.addNewPage();
        PdfCanvas canvas = new PdfCanvas(firstPage);
        Color lineColor = new DeviceRgb(35, 127, 200);
        canvas.setStrokeColor(lineColor);
        canvas.moveTo(20, 806);
        canvas.lineTo(180, 806);
        canvas.closePathStroke();

        ImageData data = ImageDataFactory.create(imFile);
        Image image = new Image(data);
        image.setFixedPosition(200, 740);
        table.addCell(new Cell().add(image).setBorder(Border.NO_BORDER).setTextAlignment(TextAlignment.CENTER));

        Table empfanger = new Table(new float[] { secondCol / 2, secondCol / 2 });
        empfanger.addCell(new Cell().add("Empfänger").setBold().setFontSize(10).setFont(font).setFontColor(blue).setTextAlignment(TextAlignment.LEFT).setBorder(Border.NO_BORDER));
        empfanger.addCell(new Cell().add("5010000228").setFontSize(9).setBorder(Border.NO_BORDER));
        table.addCell(new Cell().add(empfanger).setBorder(Border.NO_BORDER));

        PdfCanvas canvas2 = new PdfCanvas(firstPage);
        Color lineColor2 = new DeviceRgb(35, 127, 200);
        canvas2.setStrokeColor(lineColor2);
        canvas2.moveTo(580, 806);
        canvas2.lineTo(367, 806);
        canvas2.closePathStroke();

        Paragraph notice = new Paragraph("Nur solche Schäden, die umgehend auf der Empfangsbescheinigung vom Empfänger und vom Spediteur dokumentiert wurden, können beim Frachtführer innerhalb\n"
                + "der in den Allgemeinen Geschäftsbedingungen des Frachtführers festgelegten Frist reklamiert werden\n"
                + "Lieferung im Auftrag der Karo Pharma GmbH. Für Rückfragen zur Bestellung oder zu den Produkten erreichen Sie uns unter Tel. +49 89 / 864 6682 02\n"
                + "\n"
                + "Bestätigungsvermerk AMG: Wir bestätigen hiermit, dass unsere Gesellschaft über eine Großhandelsbetriebserlaubnis gem. § 52 a) AMG verfügt. Diese\n"
                + "wurde uns am 27.01.2021 vom Regierungspräsidium Darmstadt als zuständiger Aufsichtsbehörde erteilt.")
                .setBackgroundColor(DeviceGray.LIGHT_GRAY)
                .setFontColor(blue)
                .setTextAlignment(TextAlignment.LEFT)
                .setFontSize(7)
                .setBold();
        notice.setFixedPosition(20, 50, 550);

        document.add(table);
        document.add(notice);
        

        // Second Page
        Document secondPageDocument = new Document(pdfDocument, PageSize.A4);
        secondPageDocument.setMargins(20, 20, 20, 20);
        PdfPage secondPage = pdfDocument.addNewPage(PageSize.A4);

        Table secondPageTable = new Table(threeColumnWidth);
        secondPageTable.addCell(new Paragraph("Versender").setBold().setFontSize(10).setFontColor(blue).setTextAlignment(TextAlignment.LEFT));

        PdfCanvas canvas3 = new PdfCanvas(secondPage);
        Color lineColor3 = new DeviceRgb(35, 127, 200);
        canvas3.setStrokeColor(lineColor3);
        canvas3.moveTo(20, 806);
        canvas3.lineTo(180, 806);
        canvas3.closePathStroke();

        ImageData dataonSP = ImageDataFactory.create(imFile);
        Image imageonSP = new Image(dataonSP);
        imageonSP.setFixedPosition(200, 740); // Set the correct position for the second page
        secondPageTable.addCell(new Cell().add(imageonSP).setBorder(Border.NO_BORDER).setTextAlignment(TextAlignment.CENTER));

        Table empfangeronSP = new Table(new float[] { secondCol / 2, secondCol / 2 });
        empfangeronSP.addCell(new Cell().add("Empfänger").setBold().setFontSize(10).setFont(font).setFontColor(blue).setTextAlignment(TextAlignment.LEFT).setBorder(Border.NO_BORDER));
        empfangeronSP.addCell(new Cell().add("5010000228").setFontSize(9).setBorder(Border.NO_BORDER));
        secondPageTable.addCell(new Cell().add(empfangeronSP).setBorder(Border.NO_BORDER));

        PdfCanvas canvas4 = new PdfCanvas(secondPage);
        Color lineColor4 = new DeviceRgb(35, 127, 200);
        canvas4.setStrokeColor(lineColor4);
        canvas4.moveTo(580, 806);
        canvas4.lineTo(367, 806);
        canvas4.closePathStroke();

        Paragraph notice2 = new Paragraph("Nur solche Schäden, die umgehend auf der Empfangsbescheinigung vom Empfänger und vom Spediteur dokumentiert wurden, können beim Frachtführer innerhalb\n"
                + "der in den Allgemeinen Geschäftsbedingungen des Frachtführers festgelegten Frist reklamiert werden\n"
                + "Lieferung im Auftrag der Karo Pharma GmbH. Für Rückfragen zur Bestellung oder zu den Produkten erreichen Sie uns unter Tel. +49 89 / 864 6682 02\n"
                + "\n"
                + "Bestätigungsvermerk AMG: Wir bestätigen hiermit, dass unsere Gesellschaft über eine Großhandelsbetriebserlaubnis gem. § 52 a) AMG verfügt. Diese\n"
                + "wurde uns am 27.01.2021 vom Regierungspräsidium Darmstadt als zuständiger Aufsichtsbehörde erteilt.")
                .setBackgroundColor(DeviceGray.LIGHT_GRAY)
                .setFontColor(blue)
                .setTextAlignment(TextAlignment.LEFT); 

        secondPageDocument.add(secondPageTable);
        secondPageDocument.add(notice2);
        
        secondPageDocument.close();
        document.close();
        
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
PDF格式 iText iText7

评论


答: 暂无答案