扫描pdf文档正反面合并

查看 113|回复 9
作者:eandei   
需求
有的打印机无法双面扫描,正反面分别扫描后需要手动按页码顺序合并,页数多时比较费劲。因此实现了一个合并正反扫描文件的工具。其中,正面文件需要为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

文件, 页面

anson1599   


y294945022 发表于 2025-1-23 23:01
难到是我的理解有误吗 ?
这个功能的实际用途,是制作纸质书籍时,而我的理解是,
正面是: 1、3、5、7、9 ...

因为单面扫描进纸的原因,第一次扫正面的时候是1,3,5,7,9.....,扫完后再反过来扫背面的时候,就变成10,8,6,4,2了
y294945022   

难到是我的理解有误吗 ?
这个功能的实际用途,是制作纸质书籍时,而我的理解是,
正面是: 1、3、5、7、9、11 ..........
反面是:2、4、6、8、10、12 ........
怎么会是倒着来呢?
vethenc   

感谢分享原创作品
8204118   

就是拼接而已嘛,我还以为带扫描
afti   

合并正反面,这个很实用
二零一八小王子   

感谢楼主发布原创作品!留存备用
donglch   

正反打印,原理?
fengyuan2210   

感谢分享原创作品,问题是,怎么会是倒着来呢?不明白
刘统宝   

感谢分享
您需要登录后才可以回帖 登录 | 立即注册

返回顶部