簡體   English   中英

C# iText7文本坐標提取題

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM