【发布时间】:2021-04-29 09:51:18
【问题描述】:
我正在使用 iText7 开发 PDF 文本提取器,并注意到某个 PDF 上的奇怪文本坐标。大多数文档似乎在页面的高度和宽度内产生 x 和 y 坐标,但有一个似乎产生负数。我想知道这里是否有处理负坐标的标准方法。这种基本方法是使用 PDF 中的正英寸测量值,并将它们映射到 iText7 提取的文本和坐标,每点英寸的比例为 1/72。
我是从 LocationTextExtractionStrategy 派生的,代码如下:
private class LocationTextListStrategy : LocationTextExtractionStrategy
{
private readonly List<TextRect> _textRects = new List<TextRect>();
public List<TextRect> TextRects() => _textRects;
public override void EventOccurred(IEventData data, EventType type)
{
if (!type.Equals(EventType.RENDER_TEXT))
return;
var renderInfo = (TextRenderInfo)data;
var text = renderInfo.GetCharacterRenderInfos();
foreach (var t in text)
{
if (string.IsNullOrWhiteSpace(t.GetText()))
continue;
AddTextRect(t);
}
}
private void AddTextRect(TextRenderInfo t)
{
var letterStart = t.GetBaseline().GetStartPoint();
var letterEnd = t.GetAscentLine().GetEndPoint();
var newTextRect = new TextRect(
text: t.GetText(),
l: letterStart.Get(0),
r: letterEnd.Get(0),
t: letterEnd.Get(1),
b: letterStart.Get(1));
_textRects.Add(newTextRect);
}
}
【问题讨论】: