下面示例代码,是将横向纸张旋转为纵向(根据纸张大小判断纸张方向)

方法一:使用PyPDF2

from PyPDF2 import PdfFileWriter, PdfFileReader

def page_rotation(old_file, new_file):
"""
PDF页面旋转
:param old_file: 需要旋转的PDF文件
:param new_file: 旋转后的PDF文件
:return:
"""
pdf = PdfFileReader(old_file)
page_num = pdf.getNumPages()
pdf_writer = PdfFileWriter()
for i in range(page_num):
# orientation = pdf.getPage(i).get('/Rotate') # 获取页面的旋转角度
size = pdf.getPage(i).mediaBox # 获取页面大小值(长、宽)
x, y = size.getUpperRight_x(), size.getUpperRight_y()
if x > y:
# 顺时针旋转90度 90的倍数
page = pdf.getPage(i).rotateClockwise(90)
# 逆时针旋转90度 90的倍数
# page = pdf.getPage(i).rotateCounterClockwise(90)
pdf_writer.addPage(page)
else:
# 不旋转
page = pdf.getPage(i).rotateClockwise(0)
pdf_writer.addPage(page)
with open(new_file, 'wb') as f:
pdf_writer.write(f)

方法二:使用pdfrw

安装:pip install pdfrw
from pdfrw import PdfReader, PdfWriter

def pdf_page_rotate(input_file, output_file):
"""
页面旋转
:param input_file: 输入文件
:param output_file: 输出文件
:return:
"""
reader = PdfReader(input_file)
writer = PdfWriter()
pages = reader.pages
# print(pages)
# page也有MediaBoxs属性,可以取到页面大小
# size = pages[0].MediaBox
pages[0].Rotate = 90 # 顺时针旋转90度
writer.addpage(pages[0])
writer.write(output_file)

python实现PDF指定页面旋转的更多相关文章

  1. python压缩pdf(指定缩放比例)

    python压缩pdf(指定缩放比例) 原理 pdf文件处理使用https://pymupdf.readthedocs.io/en/latest/index.html库可以轻松实现,该库的官方说明文档 ...

  2. 用Python抓取指定页面

    #encoding:UTF-8 import urllib.request url = "http://www.baidu.com" data = urllib.request.u ...

  3. Java PDF页面设置——页面大小、页边距、纸张方向、页面旋转

    下面的示例将介绍通过Java编程来对PDF页面进行个性化设置的方法,包括设置页面大小.页边距.纸张方向.页面旋转等.这里有如下多种页面大小尺寸可供选择: 同时,设置文档内容旋转时,可支持如下角度进行内 ...

  4. Python处理PDF和Word文档常用的方法

    Python处理PDF和Word文档的模块是PyPDF2,使用之前需要先导入. 打开一个PDF文档的操作顺序是:用open()函数打开文件并用一个变量来接收,然后把变量给传递给PdfFileReade ...

  5. Python Locust对指定网站“一键压测”

    [本文出自天外归云的博客园] 前篇 前篇:Python Locust性能测试框架实践 本篇 承上——归纳过程 在前篇的基础上,我们可以利用Locust性能测试框架编写python脚本对指定网站或者接口 ...

  6. python制作pdf电子书

    python制作pdf电子书 准备 制作电子书使用的是python的pdfkit这个库,pdfkit是 wkhtmltopdf 的Python封装包,因此在安装这个之前要安装wkhtmltopdf 安 ...

  7. Python爬取中文页面的时候出现的乱码问题

    一.读取返回的页面数据 在浏览器打开的时候查看源代码,如果在头部信息中指定了UTF-8 那么再python代码中读取页面信息的时候,就需要指定读取的编码方式: response.read().deco ...

  8. 疯狂Python讲义PDF高清完整版免费下载|百度网盘

    百度网盘:疯狂Python讲义PDF高清完整版免费下载 提取码:uzba 内容简介 <疯狂Python讲义>既是一本适合初学者入门Python的图书(一个8岁的小朋友在未出版前已学习了本书 ...

  9. 在Winform程序中使用Spire.Pdf实现页面添加印章处理

    在一些场合,我们往往需要使用印章来给每页文档加盖一个印章,以表示该文档经过某个部门的认证的,常规的做法就是打印文档后盖章,如果需要电子档再行扫描一下.这样的的处理,如果文档很多,且仅仅需要电子文档的就 ...

  10. iOS点击推送消息跳到应用指定页面

    现在的推送用的越来越频繁,几乎每个应用都开始用到了.其实又有几个用户会去看推送消息呢?没办法,产品经理最大啊,只是苦了我们这一帮程序员啊!闲话少说,进入正题.兄弟我用的是极光推送,自然是以极光推送为例 ...

随机推荐

  1. [数据结构]Dijkstra算法求单源最短路径

    概念 求带权有向图中某个源点到其余各个顶点的最短路径,最常用的是Dijkstra算法.该算法设置一个集合S记录已求得的最短路径的顶点,可用一个数组s[]来实现,初始化为0,当s[Vi]=1时表示将顶点 ...

  2. 【白话模电1】PN结与二极管

    距离上一次写半导体,已经过了很久了,上次分享了本征半导体的基本概念: https://zhuanlan.zhihu.com/p/109483580 今天给大家聊聊半导体工业中的基础:PN结与二极管 1 ...

  3. BC3-牛牛学说话之-整数

    题目描述 牛牛刚刚出生,嗷嗷待哺,一开始他只能学说简单的数字,你跟他说一个整数,他立刻就能学会.输入一个整数,输出这个整数. 输入描述 输入一个整数,范围在32位有符号整数范围内 输出描述 输出这个整 ...

  4. NAPT网络结构下TCP/UDP/ICMP访问外网原理思考

    背景 作为程序员,应该都听说过NAT(Network Address Transfer,网络地址转换)这一技术名词,并或多或少大概知道其原理与作用--NAT是用于解决IPv4地址不够用,保证我们能够在 ...

  5. 在elasticsearch中简单的使用script_fields

    目录 1.背景 2.准备数据 2.1 mapping 2.2 插入数据 3.案例 3.1 格式化性别 1-男 2-女 -1-未知 如果不存在sex字段,则显示-- 其余的显示 ** 3.1.1 dsl ...

  6. day03-模型数据

    模型数据 1.数据放入request 说明:开发中,控制器/处理器中获取的数据如何放入request域,然后在前端(vue/jsp/...)取出显示? 先来看一个例子 应用实例需求:表单提交信息,后端 ...

  7. Loadrunner的函数收集

    1.int web_url( const char *StepName, const char *url, <List of Attributes>, [EXTRARES, <Lis ...

  8. Vue19 常用指令及自定义指令

    部分转自:https://blog.csdn.net/weixin_58032613/article/details/122759818 1 常用指令 1) v-bind 单向数据绑定 https:/ ...

  9. 【开发宝典】Java并发系列教程(四)

    作者:京东零售 刘跃明 Monitor概念 Java对象的内存布局 对象除了我们自定义的一些属性外,还有其它数据,在内存中可以分为三个区域:对象头.实例数据.对齐填充,这三个区域组成起来才是一个完整的 ...

  10. P20_事件绑定

    事件绑定 什么是事件 事件是渲染层到逻辑层的通讯方式.通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理. 小程序中常用的事件 事件对象的属性列表 当事件回调触发的时候,会收到一个事件对 ...