Python 获取PDF的各种页面信息(页数、页面尺寸、旋转角度、页面方向等)

目录

安装所需库

Python获取PDF页数

Python获取PDF页面尺寸

Python获取PDF页面旋转角度

Python获取PDF页面方向

Python获取PDF页面标签

Python获取PDF页面边框信息


了解PDF页面信息对于有效处理、编辑和管理PDF文件至关重要。PDF文件通常包含多个页面,每个页面可能有不同的尺寸、方向、旋转角度以及其他属性。在很多应用场景下,获取这些页面信息可以帮助我们更好地控制PDF内容的显示、打印或转换。这篇文章将介绍如何使用Python获取PDF文档的各种页面信息,包括:

  • 获取PDF页数
  • 获取PDF页面尺寸
  • 获取PDF页面旋转角度
  • 获取PDF页面方向
  • 获取PDF页面标签
  • 获取PDF页面边框信息

安装所需库

要在Python中获取PDF的各种页面信息,可以使用Spire.PDF for Python库。它是一个专门用于在Python应用程序中创建、读取、操作和转换PDF文档的库。

你可以通过在终端运行以下命令来从PyPI安装Spire.PDF for Python:

pip install Spire.PDF

Python获取PDF页数

PDF文件中的页数是基本信息之一,了解文档总共有多少页可以帮助我们在操作文件时做出相应的调整。比如在拆分文件、打印特定页码或进行内容提取时,知道文件总页数是至关重要的。

以下是获取PDF页数的具体步骤:

  • 使用PdfDocument类打开PDF文件。
  • 使用PdfDocument.Pages.Count属性来获取总页数。

实现代码:

# 导入所需的模块
from spire.pdf.common import *
from spire.pdf import *# 打开PDF文档
pdf = PdfDocument("Sample.pdf")# 获取页面总数
page_count = pdf.Pages.Count# 输出页面总数
print(f"该PDF有 {page_count} 页。")
pdf.Close()

Python获取PDF页面尺寸

PDF的页面尺寸决定了内容如何在页面上呈现,不同的文件可能使用不同的纸张尺寸,如A4、A3等。了解页面尺寸可以帮助我们确保内容适合打印或显示。

以下是获取PDF页面尺寸的具体步骤:

  • 使用PdfDocument类打开PDF文件。
  • 获取特定页,使用PdfPageBase.Size.Width和PdfPageBase.Size.Height来获取页面宽度和高度。

实现代码:

# 导入所需的模块
from spire.pdf.common import *
from spire.pdf import *# 打开PDF文档
pdf = PdfDocument("Sample.pdf")# 通过索引获取第一页(索引从0开始)
page = pdf.Pages[0]# 获取第一页的宽度和高度
width = page.Size.Width
height = page.Size.Height# 输出第一页的尺寸
print(f"第一页的尺寸为 {width}  x {height} 磅。")
pdf.Close()

注意,以上获取的值以磅(pt)为单位,你可以使用 Spire.PDF for Python 提供的 PdfUnitConvertor 类在磅与其他单位例如英寸、像素、厘米和毫米之间进行转换。转换代码如下:

# 创建 PdfUnitConvertor 对象
converter = PdfUnitConvertor()# 将磅转换为英寸
inch_value = converter.ConvertUnits(point_value, PdfGraphicsUnit.Point, PdfGraphicsUnit.Inch)# 将磅转换为像素
pixel_value = converter.ConvertUnits(point_value, PdfGraphicsUnit.Point, PdfGraphicsUnit.Pixel)# 将磅转换为厘米
centimeter_value = converter.ConvertUnits(point_value, PdfGraphicsUnit.Point, PdfGraphicsUnit.Centimeter)# 将磅转换为毫米
millimeter_value = converter.ConvertUnits(point_value, PdfGraphicsUnit.Point, PdfGraphicsUnit.Millimeter)

Python获取PDF页面旋转角度

有时PDF中的页面可能由于编辑或导出过程中发生旋转,导致页面的内容显示方向不正确。获取页面的旋转角度(如0度、90度、180度或270度)可以帮助我们判断页面是否需要旋转以便正确显示。

以下是获取PDF页面旋转角度的具体步骤:

  • 使用PdfDocument类打开PDF文件。
  • 获取特定页,使用PdfPageBase.Rotation属性来获取页面的旋转角度。

实现代码:

# 导入所需的模块
from spire.pdf.common import *
from spire.pdf import *# 打开PDF文档
pdf = PdfDocument("Sample.pdf")# 通过索引获取第一页(索引从0开始)
page = pdf.Pages[0]# 获取第一页的旋转信息
rotation_info = page.Rotation# 确定旋转角度
if rotation_info == PdfPageRotateAngle.RotateAngle0:rotation_angle = "0度(正常)"
elif rotation_info == PdfPageRotateAngle.RotateAngle90:rotation_angle = "90度(顺时针旋转)"
elif rotation_info == PdfPageRotateAngle.RotateAngle180:rotation_angle = "180度(倒置)"
elif rotation_info == PdfPageRotateAngle.RotateAngle270:rotation_angle = "270度(逆时针旋转)"
else:rotation_angle = "未知旋转角度"# 输出第一页的旋转角度
print(f"第一页的旋转角度为 {rotation_angle}。")
pdf.Close()

Python获取PDF页面方向

PDF页面的方向可以是纵向(Portrait)或横向(Landscape)。不同的页面方向适用于不同的内容展示方式。例如,表格或图表可能更适合横向展示,而文本内容则通常为纵向。判断页面的方向有助于确保页面内容在显示或打印时的布局正确。

以下是获取PDF页面方向的具体步骤:

  • 使用PdfDocument类打开PDF文件。
  • 获取特定页,根据页面宽高来判断方向。
    • 宽度小于高度为纵向。
    • 宽度大于高度为横向。

实现代码:

# 导入所需的模块
from spire.pdf.common import *
from spire.pdf import *# 打开PDF文档
pdf = PdfDocument("Sample.pdf")# 通过索引获取第一页(索引从0开始)
page = pdf.Pages[0]# 获取第一页的宽度和高度
width = page.Size.Width
height = page.Size.Height# 检查页面是纵向模式还是横向模式
if width > height:print("第一页是横向模式。")
else:print("第一页是纵向模式。")pdf.Close()

Python获取PDF页面标签

页面标签(Page Label)在文档导航时非常有用,通常用于显示自定义页码,帮助用户快速找到指定内容。

实现步骤:

  • 使用PdfDocument类打开PDF文件。
  • 获取特定页,使用PdfPageBase.Label属性获取页面的自定义标签信息。

实现代码:

# 导入所需的模块
from spire.pdf.common import *
from spire.pdf import *# 打开PDF文档
pdf = PdfDocument("Sample.pdf")# 通过索引获取第一页(索引从0开始)
page = pdf.Pages[0]# 获取第一页的标签
label = page.PageLabel# 输出第一页的标签
print(f"第一页的标签是: {label}")
pdf.Close()

Python获取PDF页面边框信息

PDF拥有5种不同的页面边框:

  • 媒体框(MediaBox:定义页面上需要印刷的物理介质的范围。
  • 裁剪框(CropBox:定义页面显示或打印的内容范围,默认值为页面的媒体框‌。
  • 出血框(BleedBox:PDF 1.3 起开始支持,指在PDF文档中,为了确保印刷品的完整性,在成品尺寸的四周加上一定距离的安全区域。这个安全区域通常为3mm,目的是为了减少裁切时的误差,防止重要内容被裁切掉或留下白边‌。
  • 裁切框(TrimBox:PDF 1.3 起开始支持,显示印刷和裁切后,裁切文档的最终尺寸,也称为成品框。
  • 作品框(ArtBox:PDF 1.3 起开始支持,定义页面上有意义的内容,包括可能存在的留白。

详情可以参考以下示意图:

https://pic3.zhimg.com/v2-d0ebf170f9c51e521866ab4aca3e09d2_1440w.jpg

以下是获取PDF页面边框信息的具体步骤:

  • 使用PdfDocument类打开PDF文件。
  • 获取特定页,使用PdfPageBase.MediaBox、PdfPageBase.CropBox、PdfPageBase.BleedBox、PdfPageBase.TrimBox和PdfPageBase.ArtBox等属性分别获取对应的边框。然后获取它们的相关信息,如尺寸和坐标位置。

实现代码:

# 导入所需的模块
from spire.pdf.common import *
from spire.pdf import *# 打开PDF文档
pdf = PdfDocument("Sample.pdf")# 通过索引获取第一页(索引从0开始)
page = pdf.Pages[0]# 获取第一页的媒体框、裁剪框、出血框、裁切框和作品框
media_box = page.MediaBox
crop_box = page.CropBox
bleed_box = page.BleedBox
trim_box = page.TrimBox
art_box = page.ArtBox# 输出每个框的尺寸和坐标
print(f"媒体框: 宽度 = {media_box.Width}, 高度 = {media_box.Height}, X = {media_box.X}, Y = {media_box.Y}")
print(f"裁剪框: 宽度 = {crop_box.Width}, 高度 = {crop_box.Height}, X = {crop_box.X}, Y = {crop_box.Y}")
print(f"出血框: 宽度 = {bleed_box.Width}, 高度 = {bleed_box.Height}, X = {bleed_box.X}, Y = {bleed_box.Y}")
print(f"裁切框: 宽度 = {trim_box.Width}, 高度 = {trim_box.Height}, X = {trim_box.X}, Y = {trim_box.Y}")
print(f"作品框: 宽度 = {art_box.Width}, 高度 = {art_box.Height}, X = {art_box.X}, Y = {art_box.Y}")
pdf.Close()

以上就是如何使用Python获取PDF页数、页面尺寸、旋转角度、页面方向、页面标签和页面边框等信息的全部内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/8998.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式(主要的五种)

1.设计模式: 设计模式就是代码设计经验 2.设计模式的类型: 分为三大类:创建型模式,结构型模式,行为模式 创建型模式: 单例模式:某个类只能有一个实例,提供一个全局的访问点。 工…

【北京迅为】itop-3588开发板摄像头使用手册Android12 双摄方案

本章节对应资料在网盘资料“iTOP-3588 开发板\02_【iTOP-RK3588 开发板】开发资料 \07_Android 系统开发配套资料\08_Android12 摄像头使用配套资料”目录下下载。 2.1 Android12 前摄后摄 网盘中默认的 Android12 源码支持四个摄像头单独打开,本小节我们来修改源码…

Javascript如何实现继承?

#一、是什么 继承(inheritance)是面向对象软件技术当中的一个概念。 如果一个类别B“继承自”另一个类别A,就把这个B称为“A的子类”,而把A称为“B的父类别”也可以称“A是B的超类” 继承的优点 继承可以使得子类具有父类别的…

测度论原创(三)

Morden Prob 文章目录 Morden ProbWeek3多维扩展和随机向量定理3.1推论:random variable的变换定理3.2 连续函数的可测性定理3.3 可测函数的线性组合关于拓展实数集的延伸定理3.4 可测函数的极限依旧为可测性随机变量的概率律(Law of X X X)…

Sql面试题二:请查询出用户连续三天登录的所有数据记录

问题: 现有用户登录记录表,请查询出用户连续三天登录的所有数据记录 id dt 1 2024-04-25 1 2024-04-26 1 2024-04-27 1 2024-04-28 1 2024-04-30 1 2024-05-01 1 2024-05-02 1 2024-05-04 1 2024-05-05 2 2…

vite中env uat/dev文件项目配置

1:图示 在vscode中显示的是(在文件中显示不是文件夹而在vscode中显示是文件夹-- .env 而这个.env也是有内容的) 2:.env文件内容 # 标题 VITE_APP_TITLE管理系统# 项目本地运行端口号 VITE_PORT80# open 运行 npm run dev 时自动打…

ssm基于JAVA的网上订餐管理系统+vue

系统包含:源码论文 所用技术:SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习,获取源码看文章最下面 需要定制看文章最下面 目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容…

向日葵远程桌面Visual Studio白屏

问题描述 今天没带笔记本,想着拿 Ipad 远程写会代码,打开VS发现白屏了,看了看向日葵里面的设置有GPU加速,发现是和VS的GPU加速冲突了 解决方案(远程同样可用) ALT T 弹出工具菜单O 打开选项菜单A会取消…

Pandas | 数据分析时将特定列转换为数字类型 float64 或 int64的方法

类型转换 传统方法astype使用value_counts统计通过apply替换并使用astype转换 pd.to_numericx对连续变量进行转化⭐参数:返回值:示例代码: isnull不会检查空字符串 数据准备 有一组数据信息如下,其中主要将TotalCharges、MonthlyC…

Python+Appium编写脚本

一、环境配置 1、安装JDK,版本1.8以上 2、安装Python,版本3.x以上,用来解释python 3、安装node.js,版本^14.17.0 || ^16.13.0 || >18.0.0,用来安装Appimu Server 4、安装npm,版本>8,用…

WPF MVVM入门系列教程(三、数据绑定)

本文主要介绍WPF的数据绑定(Data Binding)功能,如果你已经熟悉本文的内容,可以跳过并直接阅读后面的文章。 什么是数据绑定 我们先来看一下MSDN上的说明: 数据绑定是在应用 UI 与其显示的数据之间建立连接的过程。 如…

关于Dell r730xd 老服务器的阵列卡 配置系统盘RAID 1

这里写自定义目录标题 关于Dell r730xd 老服务器的阵列卡 配置系统盘RAID 1操作步骤 关于Dell r730xd 老服务器的阵列卡 配置系统盘RAID 1 操作步骤 -开机后 按 Ctrl R 进入 RAID卡 配置界面,如下:-下面图片是 服务器中硬盘都已经准备好,并…

Qt Udp的组播(多播)、广播和单播

UDP通讯的基本概念和特点‌ UDP(User Datagram Protocol,用户数据报协议)是‌TCP/IP协议族中的一种无连接协议,主要用于那些对实时性要求较高而可靠性要求较低的应用场景。UDP的主要特点包括: ‌无连接‌:…

算法每日双题精讲——双指针(快乐数,盛最多水的容器)

🌟快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 🌟 别再犹豫了!快来订阅我们的算法每日双题精讲专栏,一起踏上算法学习的精彩之旅吧!💪…

C语言 | Leetcode C语言题解之第551题学生出勤记录I

题目&#xff1a; 题解&#xff1a; bool checkRecord(char* s) {int absents 0, lates 0;int n strlen(s);for (int i 0; i < n; i) {char c s[i];if (c A) {absents;if (absents > 2) {return false;}}if (c L) {lates;if (lates > 3) {return false;}} els…

【未解决】vite反向代理问题

文章目录 可行网页直接访问&#xff0c;数据正常返回不使用反向代理&#xff0c;直接用axios可以得到数据postman测试也正常 不行-vite反向代理出问题case1命令行测试 可行 网页直接访问&#xff0c;数据正常返回 在地址栏输入 https://api.binance.com/api/v3/ticker/price?…

github使用基础

要通过终端绑定GitHub账号并进行文件传输&#xff0c;你需要使用Git和SSH密钥来实现安全连接和操作。以下是一个基本流程&#xff1a; 设置GitHub和SSH 检查Git安装 通过终端输入以下命令查看是否安装Git&#xff1a; bash 复制代码 git --version配置Git用户名和邮箱 bash …

9_api_intro_imagerecognition_ocr2word

通用图片 OCR 到 Word API 数据接口 高可用图像识别引擎&#xff0c;基于机器学习&#xff0c;超精准识别率。 1. 产品功能 通用的识别接口&#xff0c; 支持多种图片格式&#xff1b;支持中英文字符混合识别&#xff1b;支持 Base64 以及网络地址传参&#xff1b;基于机器学习…

深度优先搜索之全排列问题(C语言版)

本文的一些参考&#xff1a; DFS (深度优先搜索) 算法详解 模板 例题&#xff0c;这一篇就够了_dfs算法-CSDN博客 首先把深度优先搜索算法的基本概论摆出来 深度优先搜索算法&#xff08;Depth First Search&#xff0c;简称DFS&#xff09;&#xff1a; 一种用于遍历或搜…

如何防止苹果MacOS进入休眠状态

前言 远程控制的时候&#xff0c;发现MacOS已经进入了休眠状态。如何设置MacOS&#xff0c;防止其进入休眠状态&#xff0c;这样才能远程控制。 1、进入系统偏好设置 显示器自动关闭了不要紧。只要操作系统不进入休眠就可以。