单面打印机双面打印———python pdf拆分重排

单面打印机双面打印———pdf拆分重排

思路

将pdf文件拆分为正序奇数页和倒叙偶数页分别打印

代码

from PyPDF2 import PdfFileReader, PdfFileWriter
import os
def aprtment(file_name):
    with open(file_name,'rb') as infile:
        reader = PdfFileReader(infile)
        number_of_pages=reader.getNumPages()
        for i in range(number_of_pages):
            writer=PdfFileWriter()
            writer.addPage(reader.getPage(i))
            out_file_name=file_name[:-4]+str(i)+'.pdf'
            with open(out_file_name,'wb') as outfile:
                writer.write(outfile)
def merge(list_info,outfile,add_blank=False):
    pdf_output=PdfFileWriter()
    if add_blank:
        pdf_input = PdfFileReader('blank.pdf')
        pdf_output.addPage(pdf_input.getPage(0))
    for infn in list_info:
        pdf_input=PdfFileReader(infn)
        pdf_output.addPage(pdf_input.getPage(0))

    with open(outfile, 'wb') as w:
        pdf_output.write(w)


def manage_deal(file_name):
    file_name=file_name[:-4]
    file_list=[]
    for i in os.listdir():
        if file_name in i and len(i)>len(file_name)+4:
            file_list.append(i)
    file_list_num=range(len(file_list))
    right_orde=[]
    reserve_orde=[]
    if len(file_list)%2!=0:
        x=2
    else:
        x=1
    for i in range(0,len(file_list),2):
        right_orde.append(file_name+str(file_list_num[i])+'.pdf')
    for i in range(len(file_list)-x,-1, -2):
        reserve_orde.append(file_name+str(file_list_num[i])+'.pdf')
    return [right_orde,reserve_orde]
def delect_file(file_list):
    for i in file_list:
        os.remove(i)
for file_name in os.listdir():
    if '.pdf' in file_name :
        with open(file_name, 'rb') as infile:
            reader = PdfFileReader(infile)
            number_of_pages = reader.getNumPages()
        if number_of_pages>1:
            aprtment(file_name)
            [right_orde,reserve_orde]=manage_deal(file_name)
            merge(right_orde, '正序'+file_name)
            if len(right_orde)>len(reserve_orde):
                merge(reserve_orde, '倒序' + file_name,add_blank=True)
            else:
                merge(reserve_orde, '倒序' + file_name, add_blank=False)
            delect_file(right_orde+reserve_orde)

运行后会将当下文件夹内页数大于1的pdf进行拆分,生成一个正序一个倒序两个文件。

注意:

运行的文件夹里需要有空白页文件“blank.pdf”
下载地址:

https://gibsjjs-my.sharepoint.com/:u:/g/personal/1375626371_365edu_co/EVZz7tLQBMFLvuDvF6eg5kYBsaENz7I6pt0bLViSdMR7fQ?e=cl926O

你可能感兴趣的:(python,pdf,python)