獲取PDF文件中文字或圖片的坐標可以實現精確定位,這對於快速提取指定區域的元素,以及在PDF中添加註釋、標記或自動蓋章等操作非常有用。本文將詳解如何使用國產PDF庫通過C# 提取PDF中指定文本或圖片的坐標位置(X, Y軸)。 ✍ 用於操作PDF文件的第三方庫為Spire.PDF for .NET。 ...
獲取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中圖片坐標的返回結果:
相關推薦閱讀: