//for writing filenames
PDDocument doc = PDDocument.load(this.getClass().getResourceAsStream("/Vorlagen/Analyze/ReportTemplate.pdf"));
PDPage curFileNamePage = new PDPage(PDRectangle.A4);
doc.addPage(curFileNamePage);
contentStream = new PDPageContentStream(doc, curFileNamePage, PDPageContentStream.AppendMode.APPEND, true, true);
contentStream.setFont(pdfFont, 12);
contentStream.beginText();
float curYVal = 650f;
contentStream.newLineAtOffset(20, curYVal);
for (int idx = 0; idx < 377; idx++) {
if (curYVal - 15f > 0) {
curYVal = curYVal - 15f;
contentStream.newLineAtOffset(0, curYVal);
contentStream.showText("" + idx);
} else {
contentStream.endText();
contentStream.close(); // close writing area
curFileNamePage = new PDPage(PDRectangle.A4);
doc.addPage(curFileNamePage);
contentStream = new PDPageContentStream(doc, curFileNamePage, PDPageContentStream.AppendMode.APPEND, true, true);
contentStream.setFont(pdfFont, 12);
contentStream.beginText();
curYVal = 650f;
contentStream.newLineAtOffset(0, curYVal);
contentStream.showText("" + idx);
}
}
contentStream.endText();
contentStream.close(); // close writing area
doc.save("C:\\Users\\noname\\Desktop\\765.pdf");//Saving the document
doc.close();
因此,我有许多索引(在本例中为377)。我的目标是创建一个pdf,在其中索引将被逐个打印出来。(在这种情况下,它应该沿y轴向下移动15f )。如果到达了页面的末尾,它应该创建一个新页面并从头开始。
现在,正如您可能猜到的那样,代码的行为并不像它应该的那样。在我执行代码之后,pdf文件创建了9个页面,但有趣的是,每个页面只包含一个数字(第一页除外)。这些数字是:43,87,131,175,219,263,307,351
。
我做错了什么?
下面是输出应该是这样的:
这是我当前的输出:
发布于 2018-08-24 12:04:28
更改第一个(而不是第二个)
contentStream.newLineAtOffset(0, curYVal);
至
contentStream.newLineAtOffset(0, -15f);
因为这是一个相对位置。因此,只有在文本段中第一次出现较大的值时(当它相对于0,0时)才有意义。在第一次定位后,只需减去偏移量。
https://stackoverflow.com/questions/52003367
复制相似问题