如何从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
中获得页面元素的列表。每个元素都有属性TopLeft
和BottomRight
,它们是Vector
。如果我不知道比例的最大值,我怎么能得到元素的位置。我知道向量从页面左下角开始,但我不知道它的结尾在哪里,因为我不知道页面大小和向量一样。
我可以运行
var pageSize = pdfReader.GetPageSize(1)
但矢量的值大于pageSize Width
和Height
另一方面,我可以加载页面上的每个字符位置吗?
LocationTextExtractionStrategyEx
不是iTextSharp的一部分。因此,我认为,你谈论的是这个答案中提供的类别。那个班对这些职位不感兴趣。因此,为了回应您的问题:
我知道向量从页面左下角开始,但我不知道它的结尾在哪里,因为我不知道页面大小和向量一样。
我可以运行
var pageSize = pdfReader.GetPageSize(1)
但向量的值大于pageSize
Width
和Height
首先:你从LocationTextExtractionStrategyEx.TextLocationInfo
得到的坐标确实要在pdfReader.GetPageSize
的上下文中进行解释。
向量值可以超过后者的Width
和Height
的主要原因有两个:
-
pdfReader.GetPageSize
返回的矩形不需要基于(0,0)。它可以例如具有301..400中的x坐标和501..600中的y坐标。在这种情况下,高度和宽度都将是100,但该矩形中的所有点的坐标都将更高。因此,不要查看
Width
和Height
,而是查看Left
、Bottom
、Right
和Top
。 -
文本实际上可能在可见页面之外,因此具有
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;