吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2908|回复: 28
收起左侧

[Python 原创] PDF极速合并工具 含代码和UI

  [复制链接]
luojineng 发表于 2025-4-5 11:11
本帖最后由 luojineng 于 2025-4-5 13:21 编辑

自认为最快的合并工具。当然,没有最快,只有更快{:1_918:}

界面

核心代码 pyton

]import os
import PyPDF2
import os
import re
import glob

def sorting_key(filename):
"""
自定义排序规则函数,将文件名按数字和非数字分割并转换成对应的对象,以便排序
:param filename: 文件名
:return: 转换后的对象列表
"""
# 使用正则表达式将文件名分割成数字和非数字部分
parts = re.split(r'(\d+)', filename)
# 如果是数字部分,返回整型数值;否则返回原始字符串
return [int(part) if part.isdigit() else part for part in parts]

def get_sorted_pdf_files(folder_path):
"""
获取指定文件夹内所有的 PDF 文件,并按文件名中数字的大小进行排序
:param folder_path: 文件夹路径
:return: 排序后的 PDF 文件名列表
"""
pdf_files = glob.glob(os.path.join(folder_path, "*.pdf"))
return sorted(pdf_files, key=sorting_key)

def go2pdf(folder_path, output_folder):
# 获取文件夹名称
folder_name = os.path.basename(folder_path)

# 获取指定文件夹下所有的 PDF 文件,并按文件名排序
#pdf_files = sorted([file_name for file_name in os.listdir(folder_path) if file_name.endswith('.pdf')])
pdf_files = get_sorted_pdf_files(folder_path)
# 创建一个新的 PDF 文档对象
merged_pdf = PyPDF2.PdfMerger()

# 循环读取需要合并的 PDF 文件,并将其添加到 merged_pdf 文档对象中
for file_name in pdf_files:
with open(os.path.join(folder_path, file_name), 'rb') as pdf_file:
merged_pdf.append(pdf_file)

# 将合并后的 PDF 文件存储到本地磁盘中,以文件夹名称命名
if len(output_folder) == 0:
output_folder = folder_path
output_filename = f'{folder_name}.pdf'
output_file_path = os.path.join(output_folder, output_filename)
with open(output_file_path, 'wb') as output_file:
merged_pdf.write(output_file)

return (f'合并成功!文件位置:{output_folder}\{output_filename} ')

UI代码 aardio

import win.ui;
import fsys.dlg.dir;
import py3;
import py3.export.aardio;
import winex;
import mouse;

/*DSG{{*/
mainForm = win.form(text="PDF极速合并助手1.2(吾爱52pojie.cn专版)By:luojineng";right=514;bottom=369;acceptfiles=1)
mainForm.add(
button={cls="button";text="选择结果目录";left=352;top=122;right=463;bottom=158;z=6};
edit={cls="edit";left=40;top=43;right=331;bottom=70;acceptfiles=1;edge=1;multiline=1;z=4};
edit2={cls="edit";left=41;top=127;right=332;bottom=154;acceptfiles=1;edge=1;multiline=1;z=7};
edit3={cls="edit";text="合并日志";left=24;top=281;right=486;bottom=343;edge=1;multiline=1;z=9};
groupbox={cls="groupbox";text="选择要合并的PDF文件目录";left=22;top=19;right=491;bottom=95;edge=1;z=2};
groupbox2={cls="groupbox";text="合并PDF成功的文件存放位置";left=22;top=103;right=491;bottom=179;edge=1;z=1};
selectDir={cls="button";text="选择源头目录";left=351;top=38;right=462;bottom=74;z=3};
start={cls="button";text="开始合并PDF";left=21;top=197;right=490;bottom=241;z=5};
static2={cls="static";text="注意:如果没选择存放合并成功PDF的文件位置,默认是PDF源头文件位置。";left=31;top=253;right=497;bottom=273;font=LOGFONT(h=-10);transparent=1;z=8}
)
/*}}*/

mainForm.selectDir.oncommand = function(id,event){
        mainForm.edit.text = fsys.dlg.dir()
}

mainForm.button.oncommand = function(id,event){
        mainForm.edit2.text = fsys.dlg.dir()
}

mainForm.start.oncommand = function(id,event){
        if(!#mainForm.edit.text){
        win.msgbox("还没有选择要合并PDF的源头目录","aardio");
         return;
    }
        var findir = mainForm.edit.text;
        var destdir = mainForm.edit2.text;
        var pyMain = py3.import("pyMain");
        var pyStr = pyMain.go2pdf(findir,destdir);
        mainForm.edit3.text = pyStr;
}

mainForm.onDropFiles = function(files){
        var x,y=mouse.getPos()
        var hwnd=winex.fromPointReal(x,y)
        if !string.match(win.getClass(hwnd),"@@edit") return ; 
        win.setText(hwnd,files[1])
}

mainForm.show();
return win.loopMessage();

已经打包程序

百度云:https://pan.baidu.com/s/1jzyZay02revO68JpsPfblw?pwd=52pj 提取码: 52pj
蓝奏云:https://2021.lanzoue.com/i2Tj52sr3l8f
如果觉得好用,请评个热心值+1
如果觉得好用,请评个热心值+1
如果觉得好用,请评个热心值+1
微信截图_20250405105643.png

免费评分

参与人数 10吾爱币 +14 热心值 +9 收起 理由
cryman + 1 + 1 我很赞同!
fengyinjieshu + 1 谢谢@Thanks!
blueskylu + 1 + 1 我很赞同!
山岚 + 1 我很赞同!
HoanMeirin + 1 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
believee + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zs668899 + 1 + 1 我很赞同!
xiaolitao + 1 谢谢@Thanks!
Roadman1 + 1 + 1 谢谢楼主分享

查看全部评分

发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Char007 发表于 2025-4-10 11:21
博主有试过带密码或者权限限制的文档吗
密码的话我记得可以传参数,但是如果多个带密码的文档合并估计得先移除密码才行。
 楼主| luojineng 发表于 2025-4-6 12:54
yahcrz 发表于 2025-4-6 12:03
adobe acrobat pro里的合并功能不能用吗?

主要是方便,直接拖动要合并的文件夹进来一键合并。 无需强大的adobe acrobat。如果熟练使用adobe arobat 任何pdf操作都可以了,装几个插件更加牛逼。

免费评分

参与人数 1热心值 +1 收起 理由
山岚 + 1 我很赞同!

查看全部评分

 楼主| luojineng 发表于 2025-4-5 13:20
anhewang 发表于 2025-4-5 15:50
66666666666666666666666两年没来了,继续努力
QAnony 发表于 2025-4-5 15:57
工具界面简洁 合并速度快 很不错
流浪情人 发表于 2025-4-5 16:40
很方便很快捷的软件
logicwsc 发表于 2025-4-5 16:50
学习了,python处理PDF文件的工具
MattOwO 发表于 2025-4-5 19:22
厉害。这个是真的实用。
52soft 发表于 2025-4-5 20:21
python无所不能
netpeng 发表于 2025-4-5 21:22
很高效的PDF工具,感谢分享。
 楼主| luojineng 发表于 2025-4-6 01:34
sxlh2311 发表于 2025-4-5 23:44
蓝奏云好评,感谢分享

开始忘记上传蓝奏了,后来发现python打包的程序太大了,放度娘怕没vip的下载慢。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-11-4 07:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表