如何从pdf文档加载文本位置

本文关键字:加载 文本 位置 文档 pdf | 更新日期: 2023-09-27 17:59:27

我加载pdfdoc,通过:

PdfReader pdfReader = new PdfReader(byteArray);
LocationTextExtractionStrategyEx st3 = new LocationTextExtractionStrategyEx();
PdfTextExtractor.GetTextFromPage(pdfReader, 1, st3);

现在我可以从st3.TextLocationInfo中获得页面元素的列表。每个元素都有属性TopLeftBottomRight,它们是Vector。如果我不知道比例的最大值,我怎么能得到元素的位置。我知道向量从页面左下角开始,但我不知道它的结尾在哪里,因为我不知道页面大小和向量一样。

我可以运行

var pageSize = pdfReader.GetPageSize(1)

但矢量的值大于pageSize WidthHeight

另一方面,我可以加载页面上的每个字符位置吗?

如何从pdf文档加载文本位置

LocationTextExtractionStrategyEx不是iTextSharp的一部分。因此,我认为,你谈论的是这个答案中提供的类别。那个班对这些职位不感兴趣。因此,为了回应您的问题:

我知道向量从页面左下角开始,但我不知道它的结尾在哪里,因为我不知道页面大小和向量一样。

我可以运行

var pageSize = pdfReader.GetPageSize(1)

但向量的值大于pageSize WidthHeight

首先:你从LocationTextExtractionStrategyEx.TextLocationInfo得到的坐标确实要在pdfReader.GetPageSize的上下文中进行解释。

向量值可以超过后者的WidthHeight的主要原因有两个:

  1. pdfReader.GetPageSize返回的矩形不需要基于(0,0)。它可以例如具有301..400中的x坐标和501..600中的y坐标。在这种情况下,高度和宽度都将是100,但该矩形中的所有点的坐标都将更高。

    因此,不要查看WidthHeight,而是查看LeftBottomRightTop

  2. 文本实际上可能在可见页面之外,因此具有pdfReader.GetPageSize之外的坐标。

关于最终裁决,请提供有问题的PDF。

我通过读取页面大小

var pageSize = pdfReader.GetPageSize(1)

接下来我创建了

TextInfoLocation textLocation = new TextInfoLocation(textLine.TopLeft, textLine.BottomRight, this.PdfFilePageSize);

属性。左上角和。BottomRight是矢量。text行为LocationTextExtractionStrategyEx。策略从pdfReader读取的TextInfo对象。

现在,我可以从获得像素形式的矢量中的文本位置

double leftMargin = textLocation.LeftMargin;