gpt4 book ai didi

java - iText:根据 ResultSet 更改页面尺寸

转载 作者:行者123 更新时间:2023-12-01 14:41:15 27 4
gpt4 key购买 nike

我有一个通过 iText1.4.6 生成的动态 PDF(是的,我一直使用这个旧版本)。我在两件事上遇到了麻烦:
1) 为所有页面添加水印,而不仅仅是第一个页面。
2) 根据结果集中的结果数量更改页面维度。

这是一些代码:

Document testScoreReport = new Document(PageSize.A4,50,50,25,230);
OutputStream outStream = response.getOutputStream();
PdfWriter writer = null;

writer = PdfWriter.getInstance(testScoreReport, outStream);
testScoreReport.open();

Image watermark = Image.getInstance(CreateTestReport.class.getResource("/resource/img.jpg"));

// Build table
PdfPTable testTable = new PdfPTable(3);
PdfPCell cell1 = new PdfPCell(new Phrase("Test Date", FONT)));
PdfPCell cell2 = new PdfPCell(new Phrase("Test Name", FONT)));
PdfPCell cell3 = new PdfPCell(new Phrase("Test Score", FONT)));
testTable.addCell(cell1);
testTable.addCell(cell2);
testTable.addCell(cell3);

// QUERY HERE
while (resultSet.next()) {

if (resultTestCount > 20) {
// NEW PAGE, SO PRINT WATERMARK AND CHANGE PAGE DIMENSIONS OF NEW PAGE
resultTestCount = 0;
}

PdfPCell cell1 = new PdfPCell(new Phrase(testDate, FONT)));
PdfPCell cell2 = new PdfPCell(new Phrase(testName, FONT)));
PdfPCell cell3 = new PdfPCell(new Phrase(testScore, FONT)));

resultTestCount++;
}

testScoreReport.close();

我认为这就是所有相关代码。我尝试将水印添加到表格单元格中,或者只是将其添加到 while 循环中,但它似乎忽略了它。页面尺寸 - 我尝试了一些方法,但似乎没有任何效果。

最佳答案

对于水印示例,请查找关键字 Watermark在 iText 官方网站上。您会发现应该使用 page events 添加水印.

至于更改页面大小,这可能不是一个好主意(我不知道为什么你想在你的情况下这样做),但可以使用 Document.setPageSize() 来完成。请注意,页面大小仅在下一个newPage()之后才会有所不同。已被触发。

您的代码有些令人困惑:您创建了一个 PdfPTable,但没有将其添加到文档中。您创建了 PdfPCell 对象,但没有将它们添加到表中。您说您想根据结果集更改页面大小,但您没有测量行的高度(您将如何定义页面的尺寸?)等等...

我想知道为什么您坚持使用那个过时的版本,以及为什么您的设计与 iText 的“标准使用”不同。

关于java - iText:根据 ResultSet 更改页面尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15929365/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com