当前想实现遍历目录,然后按照文件名称中对应的序号进行文件按照顺序排序后组合成新的pdf文件,结果排序后的文件总不对。麻烦看看这个代码写法是否不对
输出结果图:
有问题的部分代码:
**# 遍历目录获取所有PDF文件路径
pdf_files = []
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith('.pdf'):
pdf_files.append(os.path.join(root, file))
# 根据文件名中的顺序进行排序
sorted_files = sorted(files, key=lambda x: int(x.split('、')[0]))
# 输出文件名
for filehaha in sorted_files:
filehaha=folder_path +'/'+filehaha
print(filehaha)
# 依次对每个PDF文件进行操作
pdf_writer = PyPDF2.PdfWriter()
for pdf_file in filehaha:**
完整代码如下:
```python
import os
import re
import PyPDF2
from PyPDF2 import PdfWriter, PdfReader
# 定义PDF文件加密密码
password = 123456
folder_path='h:/pdf'
# 遍历目录获取所有PDF文件路径
pdf_files = []
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith('.pdf'):
pdf_files.append(os.path.join(root, file))
# 根据文件名中的顺序进行排序
sorted_files = sorted(files, key=lambda x: int(x.split('、')[0]))
# 输出文件名
for filehaha in sorted_files:
filehaha=folder_path +'/'+filehaha
print(filehaha)
# 依次对每个PDF文件进行操作
pdf_writer = PyPDF2.PdfWriter()
for pdf_file in filehaha:
print('开始')
print(pdf_file)
# 打开PDF文件
with open(pdf_file, 'rb') as file:
pdf_reader = PyPDF2.PdfReader(file)
# 如果PDF文件加密,则需要先解密
if pdf_reader.is_encrypted:
pdf_reader.decrypt('lixiaochun')
# 将所有页面添加到pdf_writer中
for page_num in range(len(pdf_reader.pages)):
pdf_writer.add_page(pdf_reader.pages[page_num])
# 检查页面是否为空白页
# if not page.isBlank():
# 将非空白页添加到写入器对象中
# 将合并后的PDF文件保存为mypdf.pdf
with open('mypdf.pdf', 'wb') as file:
pdf_writer.write(file)
# 打开 pdf 文件
with open('mypdf.pdf', 'rb') as file:
# 创建 PdfFileReader 对象
pdf_reader = PdfReader(file)
# 创建 PdfFileWriter 对象
pdf_writer = PdfWriter()
# 遍历 pdf 文件中的每一页
for page_num in range(len(pdf_reader.pages)):
# 获取当前页的对象
page_obj = pdf_reader.pages[page_num]
# 获取当前页的内容
page_content = page_obj.extract_text()
# 检查当前页是否为空白页
if page_content.strip():
# 如果不是,则将该页添加至 pdf_writer 对象中
pdf_writer.add_page(page_obj)
# 将 pdf_writer 对象中的页写入到新的 pdf 文件中
with open('mypdf.pdf', 'wb') as new_file:
pdf_writer.write(new_file)
# 对合并后的PDF文件进行加密和限制
pdf_writer = PyPDF2.PdfWriter()
with open('mypdf.pdf', 'rb') as file:
pdf_reader = PyPDF2.PdfReader(file)
for page_num in range(len(pdf_reader.pages)):
pdf_writer.add_page(pdf_reader.pages[page_num])
# 设置密码和权限
print(password)
pdf_writer.encrypt(str(password), use_128bit=True)
encrypted = pdf_writer.encrypt(str(password), use_128bit=True)
print(encrypted)
# 设置元数据
pdf_writer.add_metadata({
'/Title': 'My PDF document',
'/Author': 'John Doe',
'/Subject': '...',
'/Creator': '...',
'/Producer': '...'
})
#pdf_writer.setPageLayout('/SinglePage')
page_layout = '/SinglePage'
# 保存加密后的PDF文件
with open('mypdf.pdf', 'wb') as file:
pdf_writer.write(file)
print('结束')