基本信息
源码名称:正反面PDF文件合并
源码大小:8.88M
文件格式:.zip
开发语言:Python
更新时间:2024-12-03
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

针对部分扫描仪,有送纸器,可多页扫描但无正反面扫描功能,可以分别进行正、反面扫描,然后利用本软件进行PDF文件快速自动合并。

import PyPDF2  
import tkinter as tk  
from tkinter import filedialog
from tkinter.messagebox import *



def browse_files():  
    # 打开文件浏览对话框  
    global source_pdf1,label1
    source_pdf1 = filedialog.askopenfilename(filetypes=[("PDF文件", "*.pdf")])
    label1.config(text=source_pdf1)
def browse_files2():
 
    # 打开文件浏览对话框  
    global source_pdf2
    source_pdf2 = filedialog.askopenfilename(filetypes=[("PDF文件", "*.pdf")])
    label2.config(text=source_pdf2)
def browse_files3():
    # 创建一个隐藏的顶级窗口,防止tkinter报错(在没有主窗口时调用filedialog)  
    #root = tk.Tk()  
    #root.withdraw()  
    # 打开文件浏览对话框  
    global target_pdf
    target_pdf = filedialog.asksaveasfilename(initialfile="合并PDF文件.pdf",filetypes=[("PDF文件", "*.pdf")])
    if target_pdf and target_pdf.lower()[-4:]!=".pdf":
        target_pdf=target_pdf ".pdf"
    label3.config(text=target_pdf)
def insert_pages_from_pdf_to_pdf():
    if not target_pdf or not source_pdf2 or not source_pdf1:
        showinfo(title = "错误提示", message = "请选择正面PDF文件、反面PDF文件,并设置文件名称。")
        return
    """  
    Insert pages from one PDF to another.  
      sort2:0反面正序;1反面逆序
    :param source_pdf_path: Path to the source PDF file.  :param
    target_pdf_path: Path to the target PDF file where pages will be
    inserted.  :param start_page: The starting page number (0-based
    index) to insert from the source PDF.  :param end_page: The end page
    number (0-based index) to insert from the source PDF.  :param
    insert_position: The position (0-based index) in the target PDF
    where the pages will be inserted.  """
    target_pdf_writer=PyPDF2.PdfWriter()
    # Open the source PDF file1
    with open(source_pdf1, 'rb') as source_file1:
        source_pdf_reader1 = PyPDF2.PdfReader(source_file1)  
        # Open the source PDF file2
        with open(source_pdf2, 'rb') as source_file2:
            source_pdf_reader2 = PyPDF2.PdfReader(source_file2)
            if(len(source_pdf_reader1.pages)!=len(source_pdf_reader2.pages)):
                return
            n=len(source_pdf_reader1.pages)
            for i in range(0,n):
                target_pdf_writer.add_page(source_pdf_reader1.pages[i])
                target_pdf_writer.add_page(source_pdf_reader2.pages[(n-1)*sort2-2*sort2*i i])
    # Write the new PDF content back to the file
    with open(target_pdf, 'wb') as target_file:
        target_pdf_writer.write(target_file)  
        # Truncate the file to the correct size 
        target_file.truncate()
    showinfo(title = "合并完成提示", message = "已按要求完成合并,请到相应文件夹查看合并文件!")

root = tk.Tk()  
root.title("正反面PDF文件合并")

# root.geometry("800x300 600 300")

label0=tk.Label(root,text="正反面PDF文件合并",font=("黑体", 16))
label0.grid(row=0,column=0,columnspan=2)

browse_button1 = tk.Button(root, text="选择正面文件(1,3...n-1)", command=browse_files)  
browse_button1.grid(row=1,column=0)
label1=tk.Label(root,text="")
label1.grid(row=1,column=1)
browse_button2 = tk.Button(root, text="选择反面文件(n...6,4,2)", command=browse_files2)  
browse_button2.grid(row=2,column=0)
label2=tk.Label(root,text="")
label2.grid(row=2,column=1)
browse_button3 = tk.Button(root, text="设置合并文件名称(1,2...n)", command=browse_files3)  
browse_button3.grid(row=3,column=0)
label3=tk.Label(root,text="")
label3.grid(row=3,column=1)
label4=tk.Label(root,text="")
label4.grid(row=5,column=0,columnspan=2,padx=300)
# Example usage
source_pdf1 = ''  # Path to the source PDF file  1
source_pdf2 = ''  # Path to the source PDF file  2
target_pdf = ''  # Path to the target PDF file
sort2=1
browse_button3 = tk.Button(root, text="开始合并PDF文件", command=insert_pages_from_pdf_to_pdf)  
browse_button3.grid(row=4,column=0,columnspan=2)
root.mainloop()