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

方法一:使用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)

最新文章

  1. 简单验证码实现(Ajax)
  2. Spring Web Flow使用
  3. phpcmsv9如何实现添加栏目时不在首页内容区显示只在导航栏显示
  4. OC:Block语法、Block使用、Block实现数组排序
  5. 2.x ESL第二章习题2.5
  6. 2017 Multi-University Training Contest - Team 9 1001&&HDU 6161 Big binary tree【树形dp+hash】
  7. go入门
  8. Nginx HTTP变量原理
  9. Java开发知识之Java的异常处理
  10. Exp8 Web基础 20154320 李超
  11. Go基础系列:空接口
  12. IDEA-各模块间引用出现问题的解决方法
  13. odoo开发笔记 -- 字段增加唯一约束
  14. Js中带有小数的值相加产生的问题
  15. Flink – JobManager.submitJob
  16. UVa 11997 K Smallest Sums - 优先队列
  17. php 类与对象 面向对象编程 简单例子
  18. Spring Boot 解决方案 - JUnit 测试
  19. 08、通过自定义依赖属性,用 StateTrigger 修改全局主题样式
  20. 解决windows10下总是很快自动黑屏进入睡眠问题

热门文章

  1. B. Quick Sort【Codeforces Round #842 (Div. 2)】
  2. 51NOD5213A 【提高组/高分-省选预科 第一场【M】】序列
  3. 【RocketMQ】消息拉模式分析
  4. 微信小程序技巧-让特定组件首页始终展示修改编译条件即可,不用改json
  5. Map集合概述-Map常用子类
  6. qt虚拟键盘编译时报错缺乏qpa/qplatforminputcontext.h文件
  7. Azure Artifacts--全平台的程序包管理仓库(支持nuget)
  8. 带你读AI论文丨S&P21 Survivalism: Living-Off-The-Land 经典离地攻击
  9. Kubernetes环境cert-manager部署与应用
  10. JAVA虚拟机08--垃圾回收--HotSpot的算法实现细节