-
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 中指定文本的坐标
要指定文本的坐标,主要分为两步实现:
- 首先需要使用 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中图片坐标的返回结果:
出处:https://www.cnblogs.com/Yesi/p/17903271.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式