楪祈53409 发表于 2023-6-8 19:34:07

用python批量合并pdf文件

本帖最后由 楪祈53409 于 2023-6-8 20:03 编辑

原帖为https://fishc.com.cn/forum.php?mod=viewthread&tid=208162&page=1&extra=#pid6255293
但这个代码的许多函数用法都过期了,我对楼主的代码进行了维护,修改了部分被废弃的函数,现在能用了
我在py3.0上运行的,初次运行没安装库的先win+r分别运行pip install PySimpleGUI 和pip install PyPDF2
安装所需的库.
以下是我维护好的代码:
import glob
import PySimpleGUI as sg
from PyPDF2 import PdfWriter, PdfReader

fra1 = sg.Frame('打开文件夹', [, ])
fra2 = sg.Frame('文件列表', [, size=(54, 30), key='-LIST-')],
                         ])

col = sg.Column([, ], pad=(0, 0))

layout = []
window = sg.Window('合并PDF', layout, keep_on_top=True)

filename = []

while True:
    event, value = window.read()
    if event is None:
      break
    elif event == '确认':
      if value['-IN-'] != '':
            path = value['-IN-'] + '/*.pdf'
            file = glob.glob(path)
            if file:
                filefolder = file.split('\\') + '/'
                filename = for i in file]
                window['-LIST-'].update(filename)
            else:
                sg.popup_ok('文件夹内未识别到PDF文件~', title='错误', keep_on_top=True)
      else:
            sg.popup_ok('请选择文件夹~', title='错误', keep_on_top=True)
    elif event == '上移':
      try:
            choice = value['-LIST-']
            index = filename.index(choice)
            filename, filename = filename, filename
            window['-LIST-'].update(filename)
      except NameError:
            pass
    elif event == '下移':
      try:
            choice = value['-LIST-']
            index = filename.index(choice)
            filename, filename = filename, filename
            window['-LIST-'].update(filename)
      except NameError:
            pass
      except IndexError:
            pass
    elif event == '移除':
      try:
            choice = value['-LIST-']
            filename.remove(choice)
            window['-LIST-'].update(filename)
      except NameError:
            pass
      except IndexError:
            pass
    elif event == '合并':
      try:
            if filename:
                file =
                pdfFileWriter = PdfWriter()
                for pdf in file:
                  pdfReader = PdfReader(open(pdf, 'rb'))
                  for page in pdfReader.pages:
                        pdfFileWriter.add_page(page)
                folder = sg.popup_get_folder('请选择文件保存位置:', title='提示', keep_on_top=True)
                with open(folder + '/合并文件.pdf', 'wb') as output_pdf:
                  pdfFileWriter.write(output_pdf)
                sg.popup_ok('文件已合并完成~', keep_on_top=True)
      except NameError:
            pass

window.close()

歌者文明清理员 发表于 2023-6-8 19:45:54

https://fishc.com.cn/thread-227617-1-1.html

都挺不错滴

楪祈53409 发表于 2023-6-8 20:03:19

本帖最后由 楪祈53409 于 2023-6-8 20:06 编辑

歌者文明清理员 发表于 2023-6-8 19:45
https://fishc.com.cn/thread-227617-1-1.html

都挺不错滴

谢谢,我这个是用来批量合并pdf文件的,例如大量pdf形式的图表不方便传输和打印.
另:如何在论坛上传打包好的exe文件?每个人的运行环境不同容易造成这类"小工具"的代码并不是那么通用,我想上传打包好的exe文件但太大了超出了附件的限制(打包文件大小22MB)
页: [1]
查看完整版本: 用python批量合并pdf文件