我正在使用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();
}
}
[...]
Run Code Online (Sandbox Code Playgroud)
这只是通过一个列表并将元素打印到我的 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因为它不是一个位置。