提问人:Maveric 提问时间:10/29/2023 最后编辑:Maveric 更新时间:10/29/2023 访问量:25
IText7 第二页内容进入(覆盖)第一页
IText7 Second page content going(overwriting) to first Page
问:
我是第一次使用 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();
}
答: 暂无答案
评论