为什么 PDFBox "moveTextPositionByAmount(X,Y)" 会导致指数行为?

Why does PDFBox "moveTextPositionByAmount(X,Y)" result in a exponential behavior?

我正在使用 PDFBox 库,目前我不理解 moveTextPositionByAmount(X,Y) 方法的行为。

这是我使用的代码:

[...]    
int i = 0;
        for (InventoryItem currInvItem : invList) {
            try {
                content.moveTextPositionByAmount(textPositionX, textPositionY);
                content.drawString(currInvItem.toString());
                textPositionY = textPositionY+10;
                i++;
                if (i > 10) {
                    break;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
[...]

这只是遍历一个列表并将元素打印到我的 PDF 文件中。我希望 moveTextPositionByAmount(X,Y) 方法能够简单地将光标以线性方式移动到另一个位置。

不幸的是,情况并非如此,结果生成了一个包含文本的 PDF 文件,但是 文本元素之间的距离随着循环的每次迭代 而增加,即使我只是将我的变量 textPositionY 增加 10。元素之间距离的增加最好用 distance = e^x

之类的东西来描述

这是一个简化的示例输出:

moveTextPositionByAmount()不以绝对坐标为参数。是相对定位。

假设您从坐标 0 0 开始,textPositionY 初始化为 10。您第一次调用该方法会将光标移动到 0 10。

下一次迭代将 textPositionY 提高到 20。您已经在 0 10,但将光标移动 20,所以您在 0 30。

第三:0 60 第四:0 100 第五名:0 150

如果你想要相等的距离,那么不要增加 textPositionY 并且可能将变量重命名为 lineGap 因为它不是一个位置。