gpt4 book ai didi

c# - iTextSharp - 如何获取单词在页面上的位置

转载 作者:可可西里 更新时间:2023-11-01 07:44:51 24 4
gpt4 key购买 nike

我正在使用 iTextSharp 和 reader.GetPageContent 方法从 PDF 中提取文本。我需要为文档中找到的每个单词找到矩形/位置。有什么方法可以使用 iTextSharp 获取 PDF 中单词的矩形/位置?

最佳答案

是的。查看 text.pdf.parser 包,特别是 LocationTextExtractionStrategy。实际上,这也可能无法解决问题。您可能想要编写自己的 TextExtractionStrategy 以输入 PdfTextExtractor:

MyTexExStrat strat = new MyTexExStrat();
PdfTextExtractor.getTextFromPage(reader, pageNum, strat);
// get the strings-n-rects from strat.

public class MyTexExStrat implements TextExtractionStrategy {
void beginTextBlock() {}
void endTextBlock() {}
void renderImage(ImageRenderInfo info) {}
void renderText(TextRenderInfo info) {
// track text and location here.
}
}

您可能希望查看 LocationTextExtractionStrategy 的源代码,了解它如何组合共享基线的文本。您甚至可以修改 LTES 以存储并行的字符串和矩形数组。

PS:要构建矩形,您只需获取 AscentLine 和 DescentLine 并将这些坐标用作顶角和底角:

Vector bottomLeft = info.getDescentLine().getStartPoint();
Vector topRight = info.getAscentLine().getEndPoint();
Rectangle rect = new Rectangle(bottomLeft.get(Vector.I1),
bottomLeft.get(Vector.I2),
topRight.get(Vector.I1),
topRight.get(Vector.I2));

警告:上面的代码假设文本是水平的并且从左到右进行。旋转的文本会把它搞砸,垂直文本或从右到左(阿拉伯语、希伯来语)的文本也是如此。对于大多数应用程序,以上应该没问题,但知道它的限制。

好狩猎。

关于c# - iTextSharp - 如何获取单词在页面上的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2375674/

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