[英]C# iText7 text coordinate extraction question
我正在使用 iText7 开发 PDF 文本提取器,并注意到某个 PDF 上的奇怪文本坐标。 大多数文档似乎在页面的高度和宽度内产生 x 和 y 坐标,但有一个似乎产生负数。 我想知道这里是否有处理负坐标的标准方法。 这种基本方法是使用来自 PDF 和 map 的正英寸测量值,将它们提取到 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);
}
}
每个 PDF 页面都可以有自己的自定义坐标系。 原点通常位于页面的左下角,但这不是必需的。
钥匙 | 类型 | 价值 |
---|---|---|
媒体盒 | 长方形 | (必需;可继承)以默认用户空间单位表示的矩形(见 7.9.5,“矩形”),应定义显示或打印页面的物理介质的边界(见 14.11.2,“页面边界”)。 |
裁剪框 | 长方形 | (可选;可继承)以默认用户空间单位表示的矩形,用于定义默认用户空间的可见区域。 当页面显示或打印时,其内容应被剪裁(裁剪)到该矩形(见 14.11.2,“页面边界”)。 默认值: MediaBox的值。 |
(ISO 32000-2:2017,表 31 - 页面中的条目)
因此,始终解释相对于它们所指页面的裁剪框的坐标。
iText 7 class PdfPage
具有匹配的吸气剂。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.