gpt4 book ai didi

android - PDFBox 重叠文本

转载 作者:行者123 更新时间:2023-11-30 00:17:12 28 4
gpt4 key购买 nike

我已经实现了一种算法,使用 Android 的 PDFBox 库在页面上绘制文本。问题是每当我添加新页面时,文本都会重叠,如下图所示。我确信我正在使用 PDPageContentStream.newLine() 方法,但结果与预期不同。我还缺少其他东西吗? enter image description here

这是我的代码 fragment

PDPage page1 = new PDPage();
getInstance().getAnnexe().addPage(page1);
PDPageContentStream contentStream1 = new
PDPageContentStream(getInstance().getAnnexe(), page1, true, true);
contentStream1.beginText();
contentStream1.newLineAtOffset(100F, 650F);
contentStream1.setFont(font, fontSize);
printMultipleLines(subSet, contentStream1);
contentStream1.endText();
contentStream1.close();

这是 printMultipleLines() 方法

private void printMultipleLines(ArrayList<String> lines, PDPageContentStream contentStream) {
try {
for (String line :
lines) {
if (line.length() > 110) {
// Print line as 2 lines
contentStream.showText(line.substring(0, 90));
contentStream.newLine();
contentStream.showText(line.substring(90, line.length()));
} else
// Print line as a whole
contentStream.showText(line);
// Print Carriage Return
contentStream.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}

最佳答案

感谢@TilmanHausherr,问题出在 TL 运算符(operator)身上。每个新创建的页面都有 TL 等于零用户默认单位。我只需要设置文本前导偏移量。这是更新后的代码:

PDPage page1 = new PDPage();
getInstance().getAnnexe().addPage(page1);
PDPageContentStream contentStream1 = new
PDPageContentStream(getInstance().getAnnexe(), page1, true, true);
// Set the Text Leading (TL operator) here!!!!
contentStream1.setLeading(12);
contentStream1.beginText();
contentStream1.newLineAtOffset(100F, 650F);
contentStream1.setFont(font, fontSize);
printMultipleLines(subSet, contentStream1);
contentStream1.endText();
contentStream1.close();

感谢@TilmanHausherr 快速准确的回答。

关于android - PDFBox 重叠文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47033462/

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