下面示例代码,是将横向纸张旋转为纵向(根据纸张大小判断纸张方向)
方法一:使用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)