在处理和分析 PDF 文档时,有时候需要获取特定文本或图片的坐标信息。这些坐标信息可以帮助我们定位、提取和处理 PDF 中的特定元素。这篇文章将介绍如何使用 Spire.PDF for Python 和 Python 获取 PDF 中文本或图片的坐标信息。
安装 Spire.PDF for Python
本教程需要用到 Spire.PDF for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.PDF
如果您不清楚如何安装,请参考此教程: 如何在 Windows 中安装 Spire.PDF for Python
Spire.PDF 的坐标体系
使用 Spire.PDF 处理现有的 PDF 文档时,坐标的原点位于页面的左上角。X 轴从原点水平向右延伸,Y 轴从原点垂直向下延伸(如下图所示)。
Python 获取 PDF 中文本的坐标信息
要查找 PDF 文档中特定文本的坐标,需要先使用 PdfTextFinder.Find() 方法定位目标文本在特定页面上的所有实例。找到这些实例后,使用 PdfTextFragment.Positions 属性即可获取文本实例的精确(X,Y)坐标。
获取 PDF 中指定文本的坐标的步骤如下:
- 创建 PdfDocument 对象。
- 加载 PDF 文档。
- 获取文档中的特定页面。
- 创建 PdfTextFinder 对象。
- 通过 PdfTextFinder.Options 属性指定搜索条件。
- 使用 PdfTextFinder.Find() 方法在页面中搜索文本。
- 获取搜索结果的特定实例。
- 通过 PdfTextFragment.Positions[0].X 和 PdfTextFragment.Positions[0].Y 属性获取该实例的 X 和 Y 坐标。
- Python
from spire.pdf.common import *
from spire.pdf import *
# 创建 PdfDocument 对象
doc = PdfDocument()
# 加载 PDF 文档
doc.LoadFromFile("示例.pdf")
# 获取特定页面
page = doc.Pages[0]
# 创建 PdfTextFinder 对象
textFinder = PdfTextFinder(page)
# 指定查找条件
findOptions = PdfTextFindOptions()
findOptions.Parameter = TextFindParameter.IgnoreCase
findOptions.Parameter = TextFindParameter.WholeWord
textFinder.Options = findOptions
# 在页面中搜索字符串 "汽车"
findResults = textFinder.Find("销售")
# 获取结果的第一个实例
result = findResults[0]
# 获取第一个实例的 X,Y 坐标
x = int(result.Positions[0].X)
y = int(result.Positions[0].Y)
with open("文本坐标.txt", "w", encoding="utf-8") as file:
file.write(f"找到的文本的第一个实例的坐标为: ({x}, {y})")
doc.Dispose()
Python 获取 PDF 中图片的坐标信息
Spire.PDF for Python 提供了 PdfImageHelper 类,允许用户从 PDF 文件的特定页面中提取图片的详细信息。提取后,可以利用 PdfImageInfo.Bounds 属性来获取图片的(X,Y)坐标。
获取 PDF 中指定图片的坐标的步骤如下:
- 创建 PdfDocument 对象。
- 加载 PDF 文档。
- 获取文档中的特定页面。
- 创建 PdfImageHelper 对象。
- 使用 PdfImageHelper.GetImagesInfo() 方法从页面获取图片信息。
- 通过 PdfImageInfo.Bounds 属性获取图片的 X 和 Y 坐标。
- Python
from spire.pdf.common import *
from spire.pdf import *
# 创建 PdfDocument 对象
doc = PdfDocument()
# 加载 PDF 文档
doc.LoadFromFile("示例.pdf")
# 获取第一页
page = doc.Pages[0]
# 创建 PdfImageHelper 对象
imageHelper = PdfImageHelper()
# 从页面获取图片信息
imageInformation = imageHelper.GetImagesInfo(page)
# 获取第一个图片的 X,Y 坐标
x = int(imageInformation[0].Bounds.X)
y = int(imageInformation[0].Bounds.Y)
print("图片的坐标为:", (x, y))
doc.Dispose()
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。