有的打印机无法双面扫描,正反面分别扫描后需要手动按页码顺序合并,页数多时比较费劲。因此实现了一个合并正反扫描文件的工具。其中,正面文件需要为1,3,5,7...奇数页面,反面文件需要为...8,6,4,2倒序排列的偶数页面。
代码
from PyPDF2 import PdfReader, PdfWriter
def merge_pdf(pdf1_path, pdf2_path, output_path):
# 读取 PDF 文件
pdf1_reader = PdfReader(pdf1_path)
pdf2_reader = PdfReader(pdf2_path)
# 获取文件1的奇数页和文件2的偶数页(倒序)
pdf1_pages = [pdf1_reader.pages[i] for i in range(0, len(pdf1_reader.pages), 1)]
pdf2_pages = [pdf2_reader.pages[i] for i in range(len(pdf2_reader.pages) - 1, -1, -1)]
# 确保页数匹配
if len(pdf1_pages) != len(pdf2_pages):
raise ValueError("两个 PDF 文件的页数不匹配,无法按指定顺序合并,请检查文件。")
# 按 1, 2, 3, 4, ... 顺序合并页面
pdf_writer = PdfWriter()
for page1, page2 in zip(pdf1_pages, pdf2_pages):
pdf_writer.add_page(page1) # 添加文件1的页面
pdf_writer.add_page(page2) # 添加文件2的页面
# 保存输出文件
with open(output_path, 'wb') as output_pdf:
pdf_writer.write(output_pdf)
# 从用户输入获取文件路径
pdf1_path = input("请输入文件正面的路径(页码为1,3,5,7...奇数页面): ").strip()
pdf2_path = input("请输入文件反面的路径(页码为...8,6,4,2,倒序排列的偶数页): ").strip()
output_path = input("请输入输出文件的路径: ").strip()
merge_pdf(pdf1_path, pdf2_path, output_path)
print("PDF 合并完成!")
可执行程序
windows:https://wwxe.lanzoub.com/ipUNC2lqeodg
macOS:https://wwxe.lanzoub.com/i9DhQ2lqeo9c