C# 提取PDF中指定文本、圖片的座標

獲取PDF文件中文字或圖片的座標可以實現精確定位,這對於快速提取指定區域的元素,以及在PDF中添加註釋、標記或自動蓋章等操作非常有用。本文將詳解如何使用國產PDF庫通過C# 提取PDF中指定文本或圖片的座標位置(X, Y軸)。

✍ 用於操作PDF文件的第三方庫爲Spire.PDF for .NET。可以下載產品包後手動安裝或者直接通用Nuget安裝。

開始前我們首先了解該庫關於PDF中座標系的一些信息:

Spire.PDF for .NET使用 PdfPageBase 類表示PDF頁面,由內容區域和四周的頁邊距組成。頁面上座標系的原點位於內容區域的左上角,x 軸從原點開始水平向右延伸,y 軸從原點開始垂直向下延伸 (如下圖所示)。

通過指定座標XY軸,我們可以在PDF頁面指定位置處繪制文本圖片表格等元素。當然Spire.PDF for .NET也提供了相應的接口來幫助大家獲取已有PDF文件中指定文本或圖片的座標信息。具體操作如下。

C# 獲取 PDF 中指定文本的座標

要指定文本的座標,主要分爲兩步實現:

  1. 首先需要使用 PdfTextFinder.Find() 方法查找PDF文件中所有指定文本;
  2. 查找到文本後,再通過 PdfTextFragment.Positions 屬性進一步獲取其 (X, Y) 座標信息。

代碼:

using Spire.Pdf;
using Spire.Pdf.Texts;
using System.Drawing;
 
namespace GetCoordinatesOfText
{
    class Program
    {
        static void Main(string[] args)
        {
            //創建PdfDocument對象
            PdfDocument pdf = new PdfDocument();
 
            //加載PDF文件
            pdf.LoadFromFile("大數據.pdf");
 
            //遍歷所有頁面
            foreach (PdfPageBase page in pdf.Pages)
            {
                //創建PdfTextFinder對象
                PdfTextFinder finder = new PdfTextFinder(page);
 
                //設置查找選項
                PdfTextFindOptions options = new PdfTextFindOptions();
                options.Parameter = TextFindParameter.IgnoreCase;
                finder.Options = options;
 
                //查找頁面中所有指定文本
                List<PdfTextFragment> fragments = finder.Find("海量");
 
                //遍歷所有查找的文本
                foreach (PdfTextFragment fragment in fragments)
                {
                    //獲取文本的座標信息
                    PointF found = fragment.Positions[0];
                    Console.WriteLine(found);
                }
            }
        }
    }
}

 

C# 獲取 PDF 中指定圖片的座標

與獲取文字座標類似,獲取圖片座標主要也分爲兩步:

  1. 首先使用 PdfImageHelper.GetImagesInfo() 方法獲取某個PDF頁面中所有圖片信息;
  2. 獲取圖片後,再通過 PdfImageInfo.Bounds 屬性獲取其 (X, Y) 座標信息。

代碼:

using Spire.Pdf;
using Spire.Pdf.Utilities;
using System;
 
namespace GetCoordinatesOfImage
{
    class Program
    {
        static void Main(string[] args)
        {
            //創建PdfDocument對象
            PdfDocument pdf = new PdfDocument();
 
            //加載PDF文件
            pdf.LoadFromFile("大數據.pdf");
 
            //獲取指定頁面
            PdfPageBase page = pdf.Pages[0];
 
            //創建PdfImageHelper對象
            PdfImageHelper helper = new PdfImageHelper();
 
            //獲取頁面中的圖片信息
            PdfImageInfo[] images = helper.GetImagesInfo(page);
 
            //獲取第一張圖片的 X、Y 座標
            float xPos = images[0].Bounds.X;
            float yPos = images[0].Bounds.Y;
            Console.WriteLine("圖片座標爲({0},{1})", xPos, yPos);
        }
    }
}

加載的示例文檔:

 

獲取PDF中文字座標的返回結果:

 

獲取PDF中圖片座標的返回結果:

 

相關推薦閱讀:

C# 提取 PDF 文檔中的文本

C# 提取PDF中的圖片

C# 查找並高亮PDF中的指定文本

Spire.PDF for .NET庫的API文檔

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章