获取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文档

C# 提取PDF中指定文本、图片的坐标的更多相关文章

  1. Java 在PDF中添加水印——文本/图片水印

    水印是一种十分常用的防伪手段,常用于各种文档.资料等.常见的水印,包括文字类型的水印.图片或logo类型的水印.以下Java示例,将分别使用insertTextWatermark(PdfPageBas ...

  2. Java 添加、提取PDF中的图片

    Spire.Cloud.SDK for Java提供了PdfImagesApi接口可用于添加图片到PDF文档addImage().提取PDF中的图片extractImages(),具体操作步骤和Jav ...

  3. 在线提取PDF中图片和文字

    无需下载软件,你就可以在线提取PDF中图片和文字,http://www.extractpdf.com/不仅可以获取本地PDF文档的图片和文字,还能获取远程PDF文档的图片和文字.如下图所示:结果本人测 ...

  4. Java 提取Word中的文本和图片

    本文将介绍通过Java来提取或读取Word文档中文本和图片的方法.这里提取文本和图片包括同时提取文档正文当中以及页眉.页脚中的的文本和图片. 使用工具:Free Spire.Doc for Java ...

  5. 使用openxml提取word中的文本和图片并转为Html

    使用openxml提取word中的文本和图片 使用 openXml 提取 word 中的 Text 和 Drawing 使用 openXml 将 word 中的文本和图片转为Html 使用 openX ...

  6. C# 提取PDF中的表格

    本文介绍在C#程序中(附VB.NET代码)提取PDF中的表格的方法,调用Spire.PDF for .NET提供的提取表格的类以及方法等来获取表格单元格中的文本内容:代码内容中涉及到的主要类及方法归纳 ...

  7. C#提取PPT文本——提取SmartArt中的文本、批注中的文本

    提取文本的情况在工作和学习中常会遇到,在前面的文章中,已经讲述了如何提取PPT中文本框里的文本,在本篇文章中,将介绍如何使用C#代码语言提取PPT文档中SmartArt和批注中的文本.同样的,程序里面 ...

  8. java itext替换PDF中的文本

    itext没有提供直接替换PDF文本的接口,我们可以通过在原有的文本区域覆盖一个遮挡层,再在上面加上文本来实现. 所需jar包: 1.先在PDF需要替换的位置覆盖一个白色遮挡层(颜色可根据PDF文字背 ...

  9. C# 设置或验证 PDF中的文本域格式

    概述 PDF中的文本域可以通过设置不同格式,用于显示数字.货币.日期.时间.邮政编码.电话号码和社保号等等.Adobe Acrobat提供了许多固定的JavaScripts用来设置和验证文本域的格式, ...

  10. Java 读取PDF中的文本和图片

    本文将介绍通过Java程序来读取PDF文档中的文本和图片的方法.分别调用方法extractText()和extractImages()来读取.   使用工具:Free Spire.PDF for Ja ...

随机推荐

  1. AI测试,给出的答案还挺那么回事儿的~

    今天文心一言全民开放了,所有人都可以正常下载使用了,不用像之前一样排队等号了.之前内测阶段倒也体验过,技术人员总是喜欢尝鲜,第一时间拿到邀请码后就各种调戏了TA一番,那时觉得给出的答案总有些差强人意, ...

  2. 1.15 自实现GetProcAddress

    在正常情况下,要想使用GetProcAddress函数,需要首先调用LoadLibraryA函数获取到kernel32.dll动态链接库的内存地址,接着在调用GetProcAddress函数时传入模块 ...

  3. 云服务器中Linux如何安装宝塔面板?

    作者:西瓜程序猿 主页传送门:https://www.cnblogs.com/kimiliucn 官方使用手册:https://www.kancloud.cn/chudong/bt2017/42420 ...

  4. 地表最帅缓存Caffeine

    简介 缓存是程序员们绕不开的话题,像是常用的本地缓存Guava,分布式缓存Redis等,是提供高性能服务的基础.今天敬姐带大家一起认识一个更高效的本地缓存--Caffeine. Caffeine Ca ...

  5. Prompt 指北:如何写好 Prompt,让 GPT 的回答更加精准

    目录 1. 得亏 GPT 脾气好 2. 玩 GPT 得注意姿势 3. 指南指北指东指西 3.1 首先你得理解 GPT 是咋工作的 3.2 "Prompt 工程"走起 3.3 奇淫技 ...

  6. redisson分布式锁的应用——秒杀、超卖 简单例子(分布式锁相关)

    1.常见的分布式事务锁 1.数据库级别的锁 乐观锁,给予加入版本号实现 悲观锁,基于数据库的for update实现 2.Redis,基于SETNX.EXPIRE实现 3.Zookeeper,基于In ...

  7. 【Azure 存储服务】访问Azure Blob File遇见400-Condition Headers not support错误的解决之路

    问题描述 在微软云存储账号的服务中,存储一些静态图片,然后通过App Service访问,但是遇见了400 - condition headers not support 错误. 在单独通过浏览器访问 ...

  8. Linux: Authentication token is no longer valid

    遇见问题: [oracle@sxty-jkdb-184:/u01/rman]crontab -l Authentication token is no longer valid; new one re ...

  9. 【matplotlib 实战】--漏斗图

    漏斗图,形如"漏斗",用于展示数据的逐渐减少或过滤过程.它的起始总是最大,并在各个环节依次减少,每个环节用一个梯形来表示,整体形如漏斗.一般来说,所有梯形的高度应是一致的,这会有助 ...

  10. 如何调用Metabase开放API

    简介: Metabase是什么? 在传统企业的数据可视化业务中,通常需要从需求到审批,再到安排开发人员和排期,还要开发人员撰写代码最后再做导出.流程繁琐,参与的人员也多,往往需要几天甚至几周的时间! ...