[英]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.