Ducati 发表于 2020-11-6 08:13

pdf合并工具

pdf合并工具

最近需要合并大量的pdf, 找了几个工具,要么收费,要么不好用,然后就自己写了简单功能的小工具.
特点就是把当前目录及子目录下的所有pdf文件合并成一个merged.pdf (比如你直接放在D盘根目录会把你D盘里面的所有pdf全部合并成一个, 会很占内存和时间)
除了方便打印我也不知道有什么其他的作用, 反正我就是拿来打印的

已知BUG
1. 某些特殊编码的pdf合并会失败(没找到解决办法), 而且也无法确定是哪一个文件---整个文件保存失败也就是完全无法合并
2. 某些pdf会因为不知道什么原因无法读取xref,无法打开--- 解决办法 : 使用浏览器或者其他什么可以打开pdf的程序确定程序可以打开, 然后点击打印, 通过虚拟打印机再保存出来, 就可以修复了.

如果你嫌弃他会输出很多警告信息的话可以去pypdf4包的源码中把那些警告输出注释掉, 具体方法就不讲了, 如果有需要可以私信我

本来想直接上传打包后的exe, 大小超了, 只提供天翼网盘连接:https://cloud.189.cn/t/A73QzqmQRjMz (访问码:kpo0)

写的很简单, 高手勿喷

为大佬提供源码:import re
from PyPDF4.pdf import PdfFileReader as pr, PdfFileWriter as pw


def MergePDF(dir_path):
    pdf_files = list()
    merged_file = pw()
    for path, _, files in os.walk(dir_path):
      pdf_files.extend([os.path.join(path, f)
                        for f in files if f.lower().endswith('.pdf')])# 遍历当前文件夹下所有pdf文件并组合成相对路径

    pdf_files.sort(key=lambda i: int(re.findall(r'(\d+).*?', i)
                                     ) if re.findall(r'(\d+).*?', i) else -1)# 按照路径排序(没有数字的在前面, 有数字的从小到大排序)

    for pdf_file in pdf_files:
      print(pdf_file)
      try:
            pdf = pr(open(pdf_file, "rb"))
      except:
            print(f'{pdf_file}无法解析')
            continue
      if pdf.isEncrypted:
            print(f'{pdf_file} 是加密文件')
            res = input('输入密码(回车键跳过)')
            while res:
                try:
                  pdf.decrypt(res)# pdf 解密
                  break
                except:
                  print('密码错误')
                res = input('输入密码(回车键跳过)')
            if not res:
                continue
      pageCount = pdf.getNumPages()
      # 分别将page添加到输出output中
      for iPage in range(pageCount):
            merged_file.addPage(pdf.getPage(iPage))
    with open('merged.pdf', "wb") as outputfile:
      # 注意这里的写法和正常的上下文文件写入是相反的
      merged_file.write(outputfile)
    print('Done')
    input()


if __name__ == '__main__':
    # 设置存放多个pdf文件的文件夹
    dir_path = r'.'
    MergePDF(dir_path)

2998659615 发表于 2020-11-6 08:14

谢谢分享!

ll19931129 发表于 2020-11-6 09:14

多谢分享多谢分享

今心 发表于 2020-11-6 11:18

感谢分享,必须支持

zz332275 发表于 2020-11-6 12:25

多谢楼主分享

暗夜幽魂 发表于 2020-11-6 12:26

6666666666

3026399478 发表于 2020-11-6 16:59

谢谢楼主分享,先收藏了。

zsd0000 发表于 2020-11-8 02:43

谢谢大牛

大牛大牛牛 发表于 2020-11-8 09:53

谢谢分享

lienrang 发表于 2020-11-10 15:50


不错不错~~~~~
页: [1] 2
查看完整版本: pdf合并工具