gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:59:06 26 4
gpt4 key购买 nike

我正在使用 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

的方式来描述

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

Example

最佳答案

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

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

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

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

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

关于java - 为什么 PDFBox "moveTextPositionByAmount(X,Y)"会导致指数行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31935888/

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