python合并PDF文件

今天群里有个人提了这么一个需求:不同文件夹下的同名PDF能不能合并。

这个其实很简单我写了代码实现了。就是把同名文件先收集起来,然后形式一个同名文件的列表(全路径不一样,文件名一样),然后再把这个列表中的文件合并成一个PDF文件写到一个总的目录中,好了直接上代码吧。



#coding=utf-8
import os
import os.path
from pyPdf import PdfFileReader,PdfFileWriter

class MergePDF():
    def __init__(self):
        self.pdf_name = ""
        self.pdf_list = []

    def Merge(self):
        out = PdfFileWriter()

        for i in range(len(self.pdf_list)):
            src_pdf = self.pdf_list[i]
            pdf = PdfFileReader(file(src_pdf, 'rb'))

            for page in pdf.pages:
                out.addPage(page)

        ous = file("C:/test_merge/Merge/"+self.pdf_name,'wb')
        out.write(ous)
        ous.close()

class Opt():
    def __init__(self):
        self.srcfolderlist = []
        self.dstfolder = ""

        self.OptList = {}

    def add_srcfolder(self,srcfolder):
        self.srcfolderlist.append(srcfolder)

    def add_dstfolder(self,dstfolder):
        self.dstfolder = dstfolder

    def deal(self):
        foldernum = len(self.srcfolderlist)
        for i in range(foldernum):
            folder = self.srcfolderlist[i]
            for parent,dirnames,filenames in os.walk(folder):
                for filename in filenames:
                    self.createOpt(filename,parent + "/" + filename)

    def createOpt(self,filename,fullname):
        isexist_key = self.OptList.has_key(filename)

        if isexist_key == False :
            m = MergePDF()
            m.pdf_name = filename
            m.pdf_list.append(fullname)
            self.OptList[filename] = m
        else:
            m = self.OptList[filename]
            m.pdf_list.append(fullname)


    def doMerge(self):
        for key,obj in self.OptList.items():
            obj.Merge()

if __name__ == "__main__":
    optObj = Opt()
    optObj.add_srcfolder("C:/test_merge/1")
    optObj.add_srcfolder("C:/test_merge/2")
    optObj.add_srcfolder("C:/test_merge/3")
    optObj.add_srcfolder("C:/test_merge/4")
    optObj.add_srcfolder("C:/test_merge/5")
    optObj.add_srcfolder("C:/test_merge/6")

    optObj.deal()
    optObj.doMerge()

备注:C:\test_merge 这里里面是6个目录,每个目录下有PDF文件。


然后合并后的文件是在C:\test_merge\Merge目录中。

用到了pyPdf这个读写PDF的库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值