吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 10844|回复: 653
收起左侧

[其他原创] 20260709更新-HTML版本完全离线的PDF工具箱,合并、拆分、旋转、删除、PDF转图片

    [复制链接]
cxs808 发表于 2026-7-5 17:35
本帖最后由 cxs808 于 2026-7-10 10:29 编辑

=============================
2026.07.09中午更新
发这个帖子的时候,我完全没想到会有这么多朋友喜欢。
7月5日发表,7月7日帖子冲到了热度第一,40多页几百条回复,大多都是在说“好用”“帮大忙了”。
说实话,每一条我都认真看了,心里挺暖的。

也有很多朋友提出了非常棒的建议。

140楼 涛之雨说:拆分后,点击下载,会弹出多个下载窗口
建议打包zip下载,连续下载会被浏览器拦截
我觉得有道理,于是把拆分功能的下载方式改成了打包下载,点一下保存按钮就行,干净利落。


有人说,输入页码范围的时候,有时候会不小心切成全角逗号,能不能自动识别?
我加了一个小功能,输入“1,3,4”的时候,全角逗号会自动变成半角逗号“1,3,4”,不用手动切换输入法了。

389楼 飘缈孤鸿影说:可以加上压缩体积的功能吗
150楼 lizwan说:不错,加进去PDF压缩功能就更好了
152楼 gracezp说:感谢分享,下载过来试一试,建议把pdf减肥的功能也加上
298楼 树下彩虹025说:非常感谢,办公电脑不能安装软件,wps会员也不能用,有了网页版本的更方便。提个要求不知道能否实现:PDF文件压缩,带图片或者word转的pdf文件都很大,但是邮箱有容量限制只能发50mb的附件(因为发客户的又不能拆多个压缩包);就是把原来pdf的dpi改小,原来是300dpi,现在改成90dpi,只要电脑能看就行,不用打印。希望楼主帮忙加入这个功能,谢谢!
我增加了一个“PDF压缩”的模块,可以自由设置压缩率。
下载时弹出的对话框里有文件大小,可以作为参考。


image.png

PDF 压缩核心代码压缩原理:使用 pdf.js 将每页渲染为 Canvas,再用较低质量重新编码为 JPEG 图片,最后通过 pdf-lib 重新打包。
[JavaScript] 纯文本查看 复制代码
// 1. 用 pdf.js 加载原文件

const pdfDoc = await pdfjsLib.getDocument({ data: arrayBuffer }).promise;

const totalPages = pdfDoc.numPages;



// 2. 创建新 PDF

const newPdf = await PDFLib.PDFDocument.create();



// 3. 逐页渲染 → 压缩 → 嵌入

for (let i = 1; i <= totalPages; i++) {

    const page = await pdfDoc.getPage(i);

    const viewport = page.getViewport({ scale: 1.5 });  // 控制分辨率

    const canvas = document.createElement('canvas');

    canvas.width = viewport.width;

    canvas.height = viewport.height;

    await page.render({ canvasContext: canvas.getContext('2d'), viewport }).promise;



    // JPEG 压缩,quality 越低体积越小

    const blob = await new Promise(res => canvas.toBlob(res, 'image/jpeg', 0.7));

    const imgBytes = await blob.arrayBuffer();

    const img = await newPdf.embedJpg(imgBytes);

    const newPage = newPdf.addPage([viewport.width, viewport.height]);

    newPage.drawImage(img, { x: 0, y: 0, width: viewport.width, height: viewport.height });

}



// 4. 保存输出


const compressedBytes = await newPdf.save();





252楼 hybcrp说:合并pdf文件每个文件都显示页数了,能不能在下面增加显示一共多少个文件,一共多少页的功能,谢谢

我在“常规合并”模块里添加了这个功能。

41楼 ming_2794说:感谢分享好工具,拆分PDF:能不能添加一个按书签拆分的功能呢

我添加了“按书签拆分”这个模块。这个比较费劲,耽误了很久。

image.png



拆书原理:通过 pdf.js 读取 PDF 书签(大纲)树,计算每个章节的页码范围,再用 pdf-lib 提取对应页面。关键点在于书签页码需要通过 getPageIndex 转换为实际页码。



[JavaScript] 纯文本查看 复制代码
// 1. 读取书签结构(递归解析嵌套大纲)
async function flattenOutline(items, pdfDoc, level = 0) {
    const result = [];
    if (!items?.length) return result;
    for (const item of items) {
        let pageNum = null;
        if (item.dest?.length) {
            // 将内部索引转换为真实页码
            const realIndex = await pdfDoc.getPageIndex({
                num: item.dest[0].num,
                gen: item.dest[0].gen || 0
            });
            pageNum = realIndex + 1;
        }
        result.push({
            title: item.title,
            pageNum,
            level,
            checked: true,
            children: await flattenOutline(item.items, pdfDoc, level + 1)
        });
    }
    return result;
}

// 2. 计算章节页码范围
function getPageRange(node, allNodes) {
    const startPage = node.pageNum;
    // 找到下一个同级或更高级别书签的页码作为结束边界
    const endNode = allNodes.find(n =>
        n.pageNum > startPage && n.level <= node.level
    );
    return {
        start: startPage,
        end: endNode ? endNode.pageNum - 1 : totalPages
    };
}

// 3. 提取页面并生成新 PDF
const newPdf = await PDFLib.PDFDocument.create();
const range = getPageRange(selectedBookmark, allBookmarks);
const indices = [];
for (let p = range.start; p <= range.end; p++) indices.push(p - 1);
const pages = await newPdf.copyPages(srcPdf, indices);
pages.forEach(p => newPdf.addPage(p));
const bytes = await newPdf.save();




43楼 skzhaixing说:为什么要分三个页面  都加在一个页面不行么
112楼 xpin说:9个功能有3个独立文件,能否合并为1个独立执行文件?

我就把另外2个的功能都迁移过来了。


159楼akang说,最想要增加个pdf漂白功能,这方面夸克做的真的太好了,自己拍的那些合同一漂白干干净净清清楚楚还省打印机墨粉。
考虑到这个功能特别耗费浏览器的资源,暂时没有想到好的解决方案,这次没有添加,后续慢慢来。



8.最重要的,冥界3大法王点评我了。
还差OCR和AI翻译就牛逼到尽头了,哈哈。  发表于 2026-7-8 20:42

妈呀,能被大法王翻牌子,真是受宠若惊啊。
这2个功能先记下来,后续再添加,近期准备休息一段时间。

136楼 15881说:感觉回到了10年前那会儿互联网很友好的分享精神和创作精神

所以这个工具箱能长成现在这个样子,不是靠我一个人闭门造车,而是靠大家的反馈一点一点打磨出来的。在此,谢谢每一位认真使用、认真提建议的朋友。

你们的想法,我一个一个记了下来,慢慢往上加。这才有了现在这个合集。
宠粉,我是认真的。

现在这个版本算是V3.0了,共有11个模块,分别是常规合并、交替合并、常规拆分、按书签拆分、拆分对开页、旋转、删除、PDF转图片、图片转PDF、页面重排、PDF压缩。

image.png

大家直接下载最新版就行。
可以下载附件,没有币的也可以到我的Github下载:https://github.com/wallechfox/offline-pdf-tools


离线PDF工具箱V3-11项功能-单文件版.rar (737.1 KB, 下载次数: 526)




=====================================================
以下是原贴
有天晚上快十二点了,手机一亮,一个朋友发来消息:“兄弟,睡了没?问你个事儿,有没有能合并PDF的软件?”
我说有啊,网上搜一下很多。
他回:“我搜了,那个要开会员,我就月底合一次报销发票,为这事儿充个会员,太亏了。”
我说那用在线工具也行,免费的不少。
他犹豫了一下,发来一句:“有些文件上有身份证号和银行卡号,上传到网上……不太放心。”
这句话把我点醒了。 是啊,谁的电脑里没几个带隐私的PDF?合同、身份证扫描件、工资单、财务报表。
为了合并几页文件,就要把它们上传到一个自己完全不了解的服务器上,确实让人心里打鼓。
我就想,能不能做一个东西,三个要求:不用安装、不用联网、什么电脑都能打开,就把合并、拆分、旋转、删除这几个小事儿办了?


后来我用一个叫pdf-lib的开源库,把这些功能全写进了一个HTML文件里。
对,就是一个网页文件,双击就能在浏览器里打开。
体积很小,界面干净,没有任何广告。
最关键的是,你的文件从头到尾都在自己电脑上,不联网,不上传。不信你拔了网线试试,照样跑得飞起。
第一个版本做完,我自己用了几天,觉得还行,就发了出来。
没想到好多朋友留言说好用,还有不少人提了新的想法。
江苏一位网友说,想要交替拆分的功能,于是我就增加了按奇偶页拆分的选项
后来一位山东的网友提出需要按奇偶页合并,我实在想不出具体应用场景,就没有加到原工具箱里,而是单独做了一个页面来实现。
还有好几位问:PDF能转图片吗?一堆图片能合成PDF吗?能不能像整理手机相册一样,把PDF页面拖来拖去自由排版?
我一个一个记了下来,慢慢往上加。
到现在,这个工具箱一共有9个功能了
每一个,都是因为有人真的需要。
今天我把它们拢到一块儿,全套工具一共9项功能,分成了3个网页文件。
其中合并、拆分、旋转、删除、PDF转图片、图片转PDF、页面重排、页面重排这7项功能全部放在一个网页文件里,拆分书籍对开页交替合并这2项功能分别是一个单独的网页文件。
image.png

image.png

以后你自己或者身边朋友遇到这些事儿,知道有这么个小工具就行。


1. 合并PDF30秒,不用求人
第一个功能,就是给我那个深夜求助的朋友做的。操作特别简单:把要合并的PDF文件全拖进来,按住每个文件前面的小图标上下拖动,就能调顺序。
谁在前谁在后,你说了算。点一下按钮,合并好的文件就下载了。
image.png

月底报销,一堆电子发票、申请单、支付截图,领导让整理成一个PDF归档。以前要么找IT帮忙,要么咬牙开会员。现在全选文件拖进去,排好顺序,一键完事儿,全程30秒。


2. 拆分PDF:想留哪页留哪页,四种拆法随便选
有个做销售的朋友跟我说,上游厂商发来的产品手册几百页,客户就想要其中五六页看看。
他以前把整个文件发给客户,人家下载半天,打开翻半天,体验特别差。 现在简单了,把文件拖进来,输入“3-8”,几秒钟就能把那几页抽出来,单独存成一个PDF
文件小,传输快,客户打开就是他想看的内容。
image.png

除了这种按页码提取,我还加了另外三种拆法:按固定页数自动切分、全部炸成单页、按奇偶页分开。奇偶拆分是江苏那位网友提的,双面打印的扫描件,先按奇偶拆开,再单独处理,特别顺手。


3. 旋转页面:脖子终于不疼了
你一定遇到过这种PDF:打开一看,内容是横着的,甚至倒过来的。
还有的文件正文是竖版,中间夹了几页横排的表格,歪着脑袋看半天。
image.png

把文件拖进来,输入要旋转的页码,不填就默认全部。点一下向左或向右90°,下载。规规矩矩的竖版文件就回来了。


4. 删除页面:发出去之前,抢救一下
一个同事跟我说过一件尴尬事。他做了一份方案发给客户,发完才发现里面夹了一页内部批注意见和两页空白页。
撤回已经来不及了,对方正在看。
image.png

这个功能就是救这种急的。把PDF拖进来,输入要删的页码,比如“2,4,6-8”,点一下按钮,这些页面就被彻底移除,生成一个干干净净的新文件。不用回原文档重新导出,几秒钟抢救完毕。


5. PDF转图片:比截图清晰多了
有朋友问:领导发了个产品手册PDF,让我把其中几页插到Word方案里当配图。截图吧,清晰度不够;导出吧,又不知道用什么工具。
image.png

PDF拖进来,每一页都会生成高清预览图。
你可以选JPG还是PNG,调画质,还能设置分辨率倍率,最高能到360DPI,打印都够了。鼠标停在某一张上,点右上角的下载按钮就能存下来,也可以一键打包下载全部。 小提醒:如果PDF页数特别多、文件特别大,预览可能会有点慢。
建议先用拆分功能把需要的那几页提取出来,再转图片,这样更快。


6. 图片转PDF:手机拍的合同,终于有个正经样子了
用手机拍了一堆合同页、证件照、收据,想拼成一个PDF发给对方。
以前要么一张张往Word里插,要么找扫描App还得看广告。
image.png

现在直接把图片拖进来,JPGPNGWebPBMP都支持。
所有图片在网格里排列,你可以拖拽调顺序,勾选删掉不要的。
点“导出为PDF”,一份A4纵向的文档就生成了,每张图片自动缩放居中,干干净净。还加了两个快捷键:Ctrl+A全选,Delete删除选中图片,处理几十张图的时候效率拉满。


7. 页面重排:像整理相册一样
这是我自己特别喜欢的一个功能。入职的时候,HR让把毕业证、学位证、成绩单、四六级证书,按指定顺序合成一个PDF交上去。
以前我得一个个打开看,记住顺序,再找工具合并。脑子一乱就排错,又重新来。
image.png

现在把所有这些PDF一口气拖进来,所有页面像相册一样平铺开,缩略图清清楚楚。手指拖一拖就能调顺序,不想要的勾选删除,还能一键加空白页。调满意了,点导出,一个排得整整齐齐的新PDF就出来了。


8.对开页切分:你拥有一把精准的裁纸刀
这个功能是一个广东网友提出来的,书籍拍照是两个面一起拍的,想沿着中线给分割。
上传PDF后,可切换预览每页,为每页独立选择左右拆分、上下拆分或不切割模式。
通过拖拽预览画布上的红色分割线,实时调整裁剪比例,并借助标尺与浮动数值精确定位。
对于每一页,你可以精确的选择横切还是竖切,也支持一键将当前比例模式应用到全部页面,最终输出“原文件名_分割.pdf”。
image.png
切割后的页面如下图所示:
image.png

9.交替合并:不知道有什么用
交替规则是“文件1第1页→文件2第1页→文件3第1页…再回到文件1第2页”,循环直到所有页面用完;如果某个文件页数不够就自动跳过,继续从其他文件中取页,直到全部取完。
PS:我也不知道这个功能有什么用,既然有人提出了,我就只管写代码。
image.png
9个功能加起来,基本覆盖了日常办公里遇到的绝大多数PDF麻烦。
我不敢说它有多强大、多专业,但有一点我能保证:干净、安全、免费、离线
这是我从一开始就定下来的原则,以后也不会变。
这个工具箱是一个单网页文件,不需要安装任何软件,双击就能在浏览器里打开。


WindowsMacLinux、安卓手机、苹果手机,甚至单位的老电脑、国产系统,只要能运行浏览器,它就能用。



离线PDF工具箱-单文件版.rar (1.39 MB, 下载次数: 3370)

点评

还差OCR和AI翻译就牛逼到尽头了,哈哈。  发表于 2026-7-8 20:42

免费评分

参与人数 277吾爱币 +259 热心值 +241 收起 理由
lixm8 + 1 + 1 谢谢@Thanks!
shieh789 + 1 + 1 我很赞同!
fxsmkj + 1 + 1 谢谢@Thanks!
龙的化身 + 1 + 1 我很赞同!
Gsn. + 1 + 1 谢谢@Thanks!
mandrake74 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zmdquanxun + 1 + 1 我很赞同!
三小只 + 1 + 1 真是牛啊,见到了传说中的早期互联网分享精神和友好讨论氛围。
arcool + 1 + 1 谢谢@Thanks!
Zeks1990 + 1 + 1 我很赞同!
Kashou66 + 1 + 1 我很赞同!
nulife + 1 + 1 谢谢@Thanks!
MXLBS + 1 谢谢@Thanks!
Souldirge + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
山田凉粉 + 1 + 1 谢谢@Thanks!
137xxx229 + 1 + 1 用心讨论,共获提升!
zj1133 + 1 + 1 谢谢@Thanks!
春天的车车 + 1 + 1 谢谢@Thanks!
chaohu + 1 + 1 我很赞同!
charles0216 + 1 + 1 太好了,这么多人都来拾柴,社区精神好
rjlly + 1 + 1 我很赞同!
dbfans + 1 + 1 谢谢@Thanks!
waipj20231111 + 1 + 1 谢谢@Thanks!
thext528 + 1 + 1 热心回复!
wuhuhu + 1 + 1 谢谢@Thanks!
ljtfreedom + 1 + 1 谢谢@Thanks!
surfbird + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
tocabd + 1 + 1 谢谢@Thanks!
zlt815 + 1 + 1 真是宠粉呐,比心!
lunatic9 + 1 + 1 谢谢@Thanks!
powehi + 1 + 1 谢谢@Thanks!
zerg + 1 谢谢@Thanks!
bigcan + 1 + 1 谢谢@Thanks!
5omggx + 1 用心讨论,共获提升!
HYF147 + 1 我很赞同!
bugof52pj + 1 谢谢@Thanks!
zelx + 1 + 1 谢谢@Thanks!
aiyinyin + 1 + 1 用心讨论,共获提升!
hacker6688 + 1 + 1 热心回复!
sois + 1 + 1 谢谢@Thanks!
Jerry319 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
XiaMu33 + 1 谢谢@Thanks!
小小小伟 + 1 + 1 谢谢@Thanks!
dachui666 + 1 + 1 谢谢@Thanks!
xiaomr1990 + 1 + 1 谢谢@Thanks!
Dongfanglong + 1 + 1 谢谢你的努力,吾爱有你真好!!
zhang772793528 + 1 热心回复!
leweishang + 1 + 1 谢谢@Thanks!
w516258928 + 1 谢谢@Thanks!
MoeSakura + 1 谢谢@Thanks!
nixiang_0607 + 1 + 1 我很赞同!
cuowa + 2 肯定有机会会用到。
louchen94 + 1 + 1 我很赞同!
maogecarry + 1 + 1 我很赞同!
cyzhaojia + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
jfdkt + 1 + 1 热心回复!
yushouxiwanzi + 1 + 1 谢谢@Thanks!
ygh0309 + 1 + 1 我很赞同!
linlin001 + 1 + 1 谢谢@Thanks!
東君丶 + 1 + 1 谢谢@Thanks!希望早点出OCR
wojaiyh + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zhangt729 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
skysoga + 1 我很赞同!
红黑之橙 + 1 + 1 今天的币和值都给你!
52pojieplayer + 1 谢谢@Thanks!
vincent80 + 1 + 1 谢谢@Thanks!
xiaoweiyihei + 1 + 1 热心回复!
ogenni + 1 + 1 谢谢@Thanks!
hehehegfd + 1 + 1 我很赞同!
52hao123 + 1 + 1 我很赞同!
紫忧幻羽 + 1 + 1 谢谢@Thanks!
vsvs619 + 1 谢谢@Thanks!
Lightstarx + 1 + 1 我很赞同!
gshccr + 1 + 1 牛逼呀!要是拆分文件能打包zip下载就更好了。
xsd513719 + 1 + 1 谢谢@Thanks!
tryqandy + 1 谢谢@Thanks!
野杂鱼 + 1 + 1 谢谢@Thanks!
玖卿 + 1 + 1 我很赞同!
拎壺沖 + 1 + 1 我擦,你才是我们心中的大佬!!!
freedom0104 + 1 + 1 谢谢@Thanks!
ZJNU丶石头 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zaigexing1019 + 1 + 1 热心回复!
Dreamguykyle + 1 + 1 我很赞同!
HL309966 + 1 我很赞同!
swz7852151 + 1 + 1 热心回复!
just_test + 1 + 1 谢谢@Thanks!
huangqiao + 1 + 1 谢谢@Thanks!
realocean + 1 谢谢@Thanks!
Tiniaual + 1 + 1 我很赞同!
ohohxie1992 + 1 + 1 谢谢@Thanks!
浮尘晓梦 + 1 谢谢@Thanks!
zhaoxj0929 + 1 + 1 谢谢@Thanks!
Duke0910 + 1 + 1 谢谢@Thanks!
leskady + 1 鼓励转贴优秀软件安全工具和文档!
那年的夏天 + 1 + 1 我很赞同!
hybcrp + 1 + 1 热心回复!
bingshen + 1 + 1 谢谢@Thanks!
aqualovezy + 1 + 1 谢谢@Thanks!
look1hana + 1 + 1 做得好,做出了巨大贡献,代码检查过了 没有异常问题,完全是本地运行
haoji0123 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

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

涛之雨 发表于 2026-7-5 23:31
还没试,看起来很好用,
单位纯内网环境,我也是拿AI写了好多小工具

话说可以打包zip评论下载吗,还是需要一个个下载(比如拆分后或者转图片后)
xiaozhangben 发表于 2026-7-5 18:01
不去再加上新出的ppocrv6,连识别功能也加上?

免费评分

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

查看全部评分

 楼主| cxs808 发表于 2026-7-5 22:03
ming_2794 发表于 2026-7-5 21:59
感谢分享好工具,拆分PDF:能不能添加一个按书签拆分的功能呢

这个思路不错,书签其实是一个列表,理论上应该没问题,回头我琢磨一下。
 楼主| cxs808 发表于 2026-7-8 10:10
树下彩虹025 发表于 2026-7-8 10:09
图片转pdf,能否加一个选择,横向打印 或者  纵向打印,电脑网页截图大部分都是16:9的,截图后转pdf,有时 ...

你把图片转为PDF以后,不管是横向还是纵向的,都可以使用我这个工具里的旋转工具再转一次。
fjz2008s 发表于 2026-7-5 17:54
以前xp和win7时代pdf工具一大堆,自从出了在线版以后,以前的软件都忘了名字,也没人推荐了
jsgh1983 发表于 2026-7-5 18:18
本帖最后由 jsgh1983 于 2026-7-5 18:31 编辑

测试了做的很好,图片转PDF功能有两个建议提下,1.上传图片后可以直接调节图片方向,页面缩放.2.上传图片后页边距调节.
bestwars 发表于 2026-7-5 17:41
好,还有这种软件,谢谢分享
z_zping 发表于 2026-7-5 17:43
下载保存,谢谢!
开创者 发表于 2026-7-5 17:45
你这AI玩的很溜 啊,收下试试
geekwhale 发表于 2026-7-5 17:48
这个软件真的可用吗
开创者 发表于 2026-7-5 17:52
有个想法。8.对开页切分:你拥有一把精准的裁纸刀 这个是不是可以多切几刀?
柒渊网络 发表于 2026-7-5 18:14
看着不错,试试效果
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2026-7-10 19:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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