獲取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 中指定文本的座標
要指定文本的座標,主要分爲兩步實現:
- 首先需要使用 PdfTextFinder.Find() 方法查找PDF文件中所有指定文本;
- 查找到文本後,再通過 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 中指定圖片的座標
與獲取文字座標類似,獲取圖片座標主要也分爲兩步:
- 首先使用 PdfImageHelper.GetImagesInfo() 方法獲取某個PDF頁面中所有圖片信息;
- 獲取圖片後,再通過 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中圖片座標的返回結果:
相關推薦閱讀: