首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >PDFBox:如何在当前页面填满后创建新页面和定位文本

PDFBox:如何在当前页面填满后创建新页面和定位文本
EN

Stack Overflow用户
提问于 2018-08-24 19:20:17
回答 1查看 951关注 0票数 2
代码语言:javascript
代码运行次数:0
运行
复制
//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

我做错了什么?

下面是输出应该是这样的:

这是我当前的输出:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-24 20:04:28

更改第一个(而不是第二个)

代码语言:javascript
代码运行次数:0
运行
复制
contentStream.newLineAtOffset(0, curYVal);

代码语言:javascript
代码运行次数:0
运行
复制
contentStream.newLineAtOffset(0, -15f);

因为这是一个相对位置。因此,只有在文本段中第一次出现较大的值时(当它相对于0,0时)才有意义。在第一次定位后,只需减去偏移量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52003367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档