使用 Python 旋转PDF页面、或调整PDF页面顺序

news/2024/9/23 18:22:19

在将纸质文档扫描成PDF电子文档时,有时可能会出现页面方向翻转或者页面顺序混乱的情况。为了确保更好地浏览和查看PDF文件,本文将分享一个使用Python来旋转PDF页面或者调整PDF页面顺序的解决方案。

要实现Python对PDF页面进行设置,我们需要用到第三方库 Spire.PDF for Python。该库支持在Python中生成、操作、转换PDF等各项操作。可以下载后手动安装或者使用pip命令来安装:

pip install Spire.PDF

 

使用Python旋转PDF页面

Spire.PDF for Python支持在当前页面旋转角度的基础上顺时针旋转0度、90度、180度和270度。以下为示例代码:

from spire.pdf.common import *
from spire.pdf import *# 创建PdfDocument对象
pdf = PdfDocument()# 加载PDF文件
pdf.LoadFromFile("分析.pdf")# 获取第一页
page = pdf.Pages[0]# 获取页面原始旋转角度
rotation = int(page.Rotation.value)# 基于原始旋转角度将页面顺时针旋转90度
rotation += int(PdfPageRotateAngle.RotateAngle90.value)
page.Rotation = PdfPageRotateAngle(rotation)# 保存文件
pdf.SaveToFile("旋转PDF页面.pdf")
pdf.Close()

在以上示例中,我们先使用 PdfPageBase.Rotation.value 属性获取页面的原始旋转角度,然后指定顺时针90度的旋转角度,再通过PdfPageBase.Rotation 属性来旋转PDF页面。

效果图:

 

使用Python调整PDF页面顺序

按照文档内容的逻辑性、相关联性来重新排列PDF页面可以增强PDF文档可读性。在Python中,我们使用Spire.PDF for Python库提供的 PdfDocument.Pages.ReArrange(orderArray: List[int]) 方法可以轻松调整PDF页面顺序。

其中参数orderArray是一个整数列表,用于指定新的页面顺序。例如,假设我们有一个包含 4 页的 PDF 文档,页码分别为 1、2、3、4。如果我们想重新排列这些页面,使得页面顺序变为 3、1、4、2,那么 orderArray 应该是 [2, 0, 3, 1](PDF页面索引从 0 开始)。

以下为示例代码:

from spire.pdf.common import *
from spire.pdf import *inputFile = "测试文档.pdf"
outputFile = "重排PDF页面顺序.pdf"# 创建PdfDocument对象
pdf = PdfDocument()# 加载PDF文件
pdf.LoadFromFile(inputFile)# 调整PDF页面顺序
pdf.Pages.ReArrange([1, 0, 2])# 保存文件
pdf.SaveToFile(outputFile, FileFormat.PDF)
pdf.Close()

效果图:


 

以上两段代码演示了如何在Python中旋转PDF页面和重排PDF页面顺序。除此之外,该Python库还支持其他PDF页面设置,如设置页边距、页面尺寸等,点击链接查看更多示例:

https://www.e-iceblue.cn/pdfforpython/spire-pdf-for-python-program-guide-content.html

 

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

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

相关文章

Testing Egineer note:2024_5_13-day08-part01

肖SIR__数据库之搭建__11.2 数据库之搭建 1、rpm -qa|grep 服务名称 案例:rpm -qa|grep mysql 2、将所有msyql的包删除干净 删除方法: (1)yum remove mysql * 删除linux中的数据库 (2)yum erase 包名 ,删除linux中的数据库 (3)rpm -e --nodeps 包名…

c++ true_type与false_type

std::true_type和std::false_type实际上是类型别名是两个类型(类模板)注意区分true_type与false_type与true和false区别true_type,false_type代表类型true,false代表值nmsp1::FalseType myfunc1();//返回假这种含义 nmsp1::TrueType myfunc2();//返回真这种含义自己模拟实现na…

2024.5.13

寄:2024.5.13:眼瞎挂 \(130pts\) .

uniapp自定义input清除按钮

uniapp小程序,引入uni-ui库后,观察到其他组件,有的默认有清除按钮,比如: 在写内置组件 input框,查看文档没有此属性,官方示例在这里:https://github.com/dcloudio/hello-uniapp/blob/master/pages/component/input/input.nvue 还需自行复制对应的css,试了下效果不太好…

DataFrame按条件筛选、修改数据:df.loc[]拓展

DataFrame按条件筛选、修改数据:df.loc[]拓展 创建一个DataFrame 先通过字典创建一个学生信息的DataFrame。 import pandas as pdStudent_dict = {姓名:[张三, 李四, 王五, 赵六],性别:[男, 女, 男, 女],年龄:[20, 21, 19, 18],Python成绩:[70, 80, 90, 50],评价:[良好, 良好,…

inno Setup 打包Java exe可执行文件和MySQL数据库,无需额外配置实现一键傻瓜式安装

前言 出现有需要打包 Java 应用和 Mysql数据库成一个安装包给出去的需求,这里我把整个打包的流程整理一下。 环境 JDK17; MySQL 5.7; 流程 Jpackage打包EXE Jpackage是JDK14后加入的一个用于独立打包的工具,能够将应用打包成exe,有了Jpackage就不需要用exe4j这种打包工具,省…

使用python在windows系统操作快捷方式

其实问题是由上一篇文章(https://www.cnblogs.com/anpengapple/p/18179353)的结尾引出来的。不需要了解背景的话,我现在需要做的是,右键打开桌面上的chrome快捷方式的属性,在目标的后面增加一个参数。我不想傻傻地手动添加,想交给程序来处理。首先需要简单来说一下,wind…

spring之AOP(面向切面编程)

什么是AOP? AOP(Aspect Oriented Programming)意为:面向切面编程,体现了横切的思想,意思是在添加某项功能的时候,是以切面插入的方式实现的,对原有的代码不会产生改变。通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP在spring中的作用:在不改变…