用Python获取PDF页面的大小、方向和旋转角度

news2024/9/30 14:32:35

在文档管理和自动化领域,了解PDF文档的内在属性(如页面大小、方向和旋转角度)对于确保一致的文档处理和布局保真度至关重要。这些属性在内容重用、归档以及PDF无缝集成到网络环境或其他数字工作流程中起着关键作用,因为它们直接影响文档的可读性和用户体验。通过利用Python,开发人员可以高效提取这些属性,从而方便旋转页面的自动更正等任务。

本文将展示如何使用Python代码获取PDF文档中页面的大小、方向和旋转角度

文章目录

    • 使用Python获取PDF页面的大小
    • 使用Python获取PDF页面的方向
    • 使用Python获取和设置PDF页面的旋转角度

本文使用的方法需要Spire.PDF for Python,PyPI安装命令:pip install Spire.PDF

使用Python获取PDF页面的大小

我们可以使用PdfPageBase.Size.WidthPdfPageBase.Size.Height来获取PDF页面的宽度和高度(单位为点)。然后,我们可以使用PdfUnitConvertor类将宽度和高度转换为其他单位,如毫米。详细步骤如下:

  • 导入必要的模块。
  • 创建一个PdfDocument对象,并使用PdfDocument.LoadFromFile()方法加载PDF文档。
  • 使用PdfDocument.Pages.get_Item()方法获取文档中的页面。
  • 通过PdfPageBase.Size.WidthPdfPageBase.Size.Height属性获取页面的宽度和高度。
  • 创建一个PdfUnitConvertor对象。
  • 使用PdfUnitConvertor.Convert()方法将宽度和高度转换为毫米。
  • 打印结果。
  • 释放资源。

代码示例

from spire.pdf import *

# 创建一个 PdfDocument 实例
pdf = PdfDocument()

# 加载 PDF 文档
pdf.LoadFromFile("示例.pdf")

# 获取第一页
page = pdf.Pages.get_Item(0)

# 获取页面宽度和高度(单位为点)
width = page.Size.Width
height = page.Size.Height

# 创建一个 PdfUnitConvertor 实例
converter = PdfUnitConvertor()

# 将宽度和高度从点转换为厘米
mmWidth = converter.ConvertUnits(width, PdfGraphicsUnit.Point, PdfGraphicsUnit.Centimeter)
mmHeight = converter.ConvertUnits(height, PdfGraphicsUnit.Point, PdfGraphicsUnit.Centimeter)

# 打印宽度和高度
print("宽度: " + str(round(mmWidth, 1)) + " 厘米")
print("高度: " + str(round(mmHeight, 1)) + " 厘米")

# 释放资源
pdf.Close()

结果
Python获取PDF页面宽高

使用Python获取PDF页面的方向

由于页面方向不是一个固定的参数,我们需要通过比较页面的高度和宽度来确定PDF页面是横向还是纵向。步骤如下:

  • 导入必要的模块。
  • 创建一个PdfDocument对象,并使用PdfDocument.LoadFromFile()方法加载PDF文档。
  • 使用PdfDocument.Pages.get_Item()方法获取文档中的页面。
  • 通过PdfPageBase.Size.WidthPdfPageBase.Size.Height属性获取页面的宽度和高度。
  • 比较高度和宽度以确定PDF页面是横向还是纵向,并打印结果。
  • 释放资源。

代码示例

from spire.pdf import *

# 创建一个 PdfDocument 实例
pdf = PdfDocument()

# 加载 PDF 文档
pdf.LoadFromFile("示例.pdf")

# 获取第一页
page = pdf.Pages.get_Item(0)

# 获取页面的宽度和高度
width = page.Size.Width
height = page.Size.Height

# 检查页面的方向并打印结果
if width > height:
    print("页面为横向")
else:
    print("页面为纵向")

# 释放资源
pdf.Close()

结果
Python获取PDF页面方向

使用Python获取和设置PDF页面的旋转角度

可以通过PdfPageBase.Rotation属性直接获取PDF页面的旋转角度。然后我们可以使用该值构建字符串并打印,或者通过PdfPageBase.Rotation属性更改旋转角度。详细步骤如下:

  • 导入必要的模块。
  • 创建一个PdfDocument对象,并使用PdfDocument.LoadFromFile()方法加载PDF文档。
  • 使用PdfDocument.Pages.get_Item()方法获取文档中的页面。
  • 通过PdfPageBase.Rotation属性获取旋转角度。
  • 打印旋转角度或进行其他操作。
  • 释放资源。

代码示例

import re

from spire.pdf import *

# 创建 PdfDocument 实例
pdf = PdfDocument()

# 加载 PDF 文档
pdf.LoadFromFile("示例1.pdf")

# 获取第一页
page = pdf.Pages.get_Item(0)

# 获取页面的旋转角度
rotationAngle = page.Rotation

# 输出旋转角度
print("旋转角度: " + re.search(r"\d+", rotationAngle.name).group() + " 度")

# 修改旋转角度
page.Rotation = PdfPageRotateAngle.RotateAngle0

# 保存文档
pdf.SaveToFile("output/ChangeRotationAngle.pdf")
pdf.Close()

结果
Python获取和设置PDF页面旋转角度

本文展示了如何使用Python获取PDF文档中页面的大小、方向和旋转角度。

有关更多PDF文档处理技巧,请参阅Spire.PDF for Python教程。

申请免费License

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

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

相关文章

Leetcode面试经典150题-162.寻找峰值

解法都在代码里,不懂就留言或者私信 想清楚的话会特别简单,你可能想不到这是个二分。。。 class Solution {/**本题题目规定我们只能用O(logN)的时间复杂度来解题,这显然就是让二分嘛而题目给的数组本身是无需,怎么二分呢其实我…

《网络协议 - HTTP传输协议及状态码解析》

文章目录 一、HTTP协议结构图二、HTTP状态码解读1xx: 信息响应类2xx: 成功响应类3xx: 重定向类4xx: 客户端错误类5xx: 服务器错误类 一、HTTP协议结构图 二、HTTP状态码解读 HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传…

『功能项目』战士的位移型技能【46】

我们打开上一篇45战士的伤害型技能的项目, 本章要做的事情是制作技能按钮,点鼠标点击时释放如果20米内存在敌人会移动到敌人身边(对多个敌人逻辑暂未写)并对怪物造成一定伤害 首先对战士职业的动画控制器增加一个新的技能2动画 设…

镜像问题(k8s部署考试系统)

如果使用containerd拉取不到镜像的话,就使用docker 1.修改decker的镜像源 [rootk8s-master ~]# vim /etc/docker/daemon.json { "registry-mirrors": [ "https://do.nark.eu.org", "https://dc.j8.work", …

Vue : 生命周期

目录 1. beforeCreate(vu2) 2. created(vu2) 3. setup(vu3) 4. beforeMount 5. mounted 6. beforeUpdate 7. updated 8. beforeDestroy 9. destroyed Vue.js 的生命周期是指 Vue 实例从创建到销毁的整个过程中的各个阶段。在 Vue 中,有多个关键的生命周期钩…

Ubuntu22.04系统安装opencv步骤简述及问题解决方法

前言 opencv是一个功能强大、开源且跨平台的计算机视觉库,适用于多种编程语言和操作系统,能够帮助开发者构建各种视觉项目。其模块众多,提供了诸多功能,能够进行图像处理、视频处理等等。比如:Highgui模块提供图像用户…

EasyExcel拿表头(二级表头)爬坑,invokeHeadMap方法

OK,不废话,直接开干!说实话是有些坑,或者是我不会用吧 模板如下: invokeHeadMap 这个方法其实针对第一行就是表头的完全没问题。针对第二行的,我DEBUG拿到的是这样很明显,他拿到了第一行;既然…

如何通过OceanBase的多级弹性扩缩容能力应对业务洪峰

每周四晚上的10点,都有近百万的年轻用户进入泡泡玛特的抽盒机小程序,共同参与到抢抽盲盒新品的活动中。瞬间的并发流量激增对抽盒机小程序的系统构成了巨大的挑战,同时也对其数据库的扩容能力也提出了更高的要求。 但泡泡玛特的工程师们一点…

安卓BLE蓝牙通讯

蓝牙测试demo 简介   Android手机间通过蓝牙方式进行通信,有两种常见的方式,一种是socket方式(传统蓝牙),另一种是通过GATT(BLE蓝牙)。与传统蓝牙相比,BLE 旨在大幅降低功耗。这样…

Superset二次开发之源码DependencyList.tsx 分析

功能点 路径 superset-frontend\src\dashboard\components\nativeFilters\FiltersConfigModal\FiltersConfigForm\DependencyList.tsx /*** Licensed to the Apache Software Foundation (ASF) under one* or more contributor license agreements. See the NOTICE file* dist…

OpenCV结构分析与形状描述符(24)检测两个旋转矩形之间是否相交的一个函数rotatedRectangleIntersection()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 测两个旋转矩形之间是否存在交集。 如果存在交集,则还返回交集区域的顶点。 下面是一些交集配置的例子。斜线图案表示交集区域&#…

C++《类和对象》(下)

在之前类和对象(中)我们学习了类当中的6大默认成员函数,我们了解了6大成员函数的结构特征和特点以及在不同情况各个成员函数是如何调用的,那么接下来我们在本篇当中将继续学习之前在学习构造函数中未了解的初始化列表,…

MySql基础-单表操作

1. MYSQL概述 1.1 数据模型 关系型数据库 关系型数据库(RDBMS):建立在关系模型基础上,由多张相互连接的二维表组成的数据库。 特点: 使用表存储数据,格式统一,便于维护 使用SQL语言操作,标准统一&…

高性能微服务架构:Spring Boot 集成 gRPC 实现用户与订单服务即时交互

gRPC 是一种由 Google 开发的高性能、开源的远程过程调用(Remote Procedure Call, RPC)框架。它允许在不同的计算机系统或进程之间进行通信,使得分布式系统和微服务架构中的服务之间能够轻松地相互调用方法。gRPC 基于 HTTP/2 协议&#xff0…

django-admin自定义功能按钮样式

位置在原来的django-admin 栏中的上方【会因为屏幕大小而变换位置】 <!-- 这里是不会替换掉旧的 添加按钮 &#xff0c;而是添加多一个按钮【点击Crawl Data】--> <!-- /home/luichun/lc/Pyfile/Pywebback/app/paqu/templates/admin/yourmodel_changelist.html -->…

基于k8s手动部署rabbitmq集群(Manually Deploying RabbitMQ Cluster Based on k8s)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

安全基础设施如何形成统一生态标准?OASA 硬件安全合作计划启动 | 2024 龙蜥大会

近日&#xff0c;2024 龙蜥操作系统大会&#xff08;OpenAnolis Conference&#xff09;在北京盛大召开。 与此同时&#xff0c;由龙蜥社区运营委员会副主席、龙腾计划生态负责人金美琴&#xff0c;阿里云智能集团高级技术专家张天佳&#xff0c;海光信息技术生态技术总监李伟&…

系统架构设计师教程 第5章 5.2需求工程 笔记

5.2 需求工程 ★★★★★ 软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望。 软件需求包括3个不同的层次&#xff1a;业务需求、用户需求和功能需求(也包括非功能需求)。 (1)业务需求 (business requirement) 反映了组织机构或客户对系统、产品高层次的目标…

用SpringBoot进行阿里云大模型接口调用同步方法和异步方法

同步效果就不展示了,这里展示更常用的异步,多轮异步流式效果展示如下: 结果内容组合 1、同步版本环境准备以及代码 需要开通阿里大模型服务,如果没有开通服务,单独的去生成 key 是无效的。 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 生成你需要的 key 1、…

PHP智慧家政同城服务家政系统小程序源码

智慧家政&#xff0c;同城服务新篇章 —— 探索家政系统的无限可能 开篇&#xff1a;走进智慧家政时代 在这个快节奏的生活中&#xff0c;每一分每一秒都显得尤为珍贵。当忙碌成为常态&#xff0c;如何让家成为真正的避风港&#xff1f;答案或许就藏在“智慧家政同城服务家政…