from pypdf import PdfReader
from pypdf import PdfWriter
pdf_writer=PdfWriter()
pdf_reader=PdfReader('/data/demo/servers.pdf')
direction='right'
pages=[0]
for page in pages:
if direction=='right':
page_r=pdf_reader.pages[page].rotate(90)
pdf_writer.add_page(page_r)
elif direction=='left':
page_r=pdf_reader.pages[page].rotateCounterClockwise(90)
pdf_writer.addPage(page_r)
else:
print("Encountered an improper argument! Input right or left.")
with open('./xx_rotate.pdf','wb') as fh:
pdf_writer.write(fh)
name_of_split='./xx_test_'
pdf_path='/data/demo/servers.pdf'
pdf_reader=PdfReader(pdf_path)
for page in range( len(pdf_reader.pages) ):
pdf_reader=PdfReader(pdf_path)
pdf_writer=PdfWriter()
pdf_writer.add_page(pdf_reader.pages[page])
output=f'{name_of_split}{page}.pdf'
with open(output,'wb') as output_pdf:
pdf_writer.write(output_pdf)
这个函数中再次创建了PDF的reaer对象,并对其所读取的页面进行遍历。对于PDF中的每个页面, 创建一个新的PDF的writer实例并向其添加单个页面。然后,将该页面写入一个唯一命名的文件。 脚本运行完毕后,就可以将原始PDF的每个页面拆分为单独的PDF。
希望将两个或多个PDF合并到一个PDF中。例如,现在可能有一个标准的封面, 需要转到许多类型的报告中。这时候就可以使用Python来帮助完成这类工作。
from pypdf import PdfReader
from pypdf import PdfWriter
paths=['/data/demo/test0.pdf','/data/demo/rotate.pdf']
output='/data/demo/merge.pdf'
pdf_writer=PdfWriter()
for path in paths:
pdf_reader=PdfReader(path)
for page in range( len(pdf_reader.pages)):
pdf_writer.add_page(pdf_reader.pages[page])
with open(output,'wb') as out:
pdf_writer.write(out)
首先遍历输入的paths,paths内是要合并的所有的pdf文件,并为每个输入创建一个PDF阅读对象。
遍历PDF文件中的所有页面,并使用 .addpage()
将这些页面写入writer对象。
当完成对列表中所有PDF的所有页面的写入后,将在末尾写入新的结果中。
input='/data/demo/servers.pdf'
output='./xx_pwd.pdf'
secret='hello'
pdf_w=PdfWriter()
pdf_r=PdfReader(input)
for page in range( len(pdf_r.pages)):
pdf_w.add_page(pdf_r.pages[page])
pdf_w.encrypt(user_password=secret,owner_password=secret,use_128bit=True)
with open(output,'wb') as f:
pdf_w.write(f)
add_encryption
以输入输出PDF路径和要添加到PDF的密码为参数。由于需要加密整个输入PDF,因此需要遍历其所有页面并将其添加到writer编写器。最后一步是调用 .encrypt()
,以用户密码,所有者密码以及是否应该添加128位加密为参数。默认情况下,要启用128位加密。如果将其设置为False,则将应用40位加密。