起因是有一个银行的亲戚,需要压缩一个用户的合同 PDF ,内容基本拍摄的合同照片导致文件很大,因为文件敏感涉及到具体客户信息,所以不想使用需要上传文件的在线服务,私聊让我帮他手动压缩一下。 弄完后我发现对于一些,可能企业内部没有提供工具,但是又有敏感文件压缩的人来说,当前确实希望有一个即时可用,安全的工具。
所以就做了这个: • 打开网页就能用,无需下载安装 • 文件在浏览器里处理( Ghostscript WASM ) • 完全不上传服务器
技术栈:React + Ghostscript WASM + Cloudflare Pages
适合场景:偶尔压缩几个 PDF ,注重隐私,即时可用 不适合:批量处理或需要高级功能
上线以后没怎么做推广,不过也有 19 个自然流量用户压缩了文件,节省 362MB 空间。 欢迎 v 友们试用,有问题随时提~
1
cowcomic 1 天前
点赞
|
2
shortawn 1 天前
你的亲戚私聊让你帮他手动压缩一下,是怎么私聊的,微信吗?(狗头)
|
3
xinyu391 1 天前
确实离线操作的,
wasm ,大概率用的 pdfium |
5
catazshadow 1 天前 windows 上的 xodo 可以压缩
|
6
PbCopy111 1 天前
WPS 就有 PDF 压缩工具,本机的,250M 的文件,最小压缩到 3M ,还能选择各种画质,实属国企最爱。
|
7
hiko2chen OP @xinyu391 是的,感谢提醒,我之前也注意到了 GS 的 AGPL 协议,这两天在测试使用 pyodide 实现一些 MIT 库的 wasm 化来实现相同功能,当前实现了一个 pikepdf 的,不过测试压缩性能和文件兼容能力对比 GS 差太大多了
如果这周还没解决,我就会把当前网站全部开源了,不过本身也是免费的~ |
10
hiko2chen OP @catazshadow 确实不错,但是我估摸着他没听说过哈哈
|
12
EeveeRibbon 1 天前
但是我发现,用户视角上这个还是一个浏览器,需要"上传"到网页上,绝大多数用户不了解浏览器是可以本地处理的
|
13
hiko2chen OP @EeveeRibbon 对的,我理解你说的!大多数普通用户对于浏览器还是会有固有印象,是一个联网的东西,本地感知这点肯定比不上一个下载安装的 App 。
我当前的解决方案也是在 UI 上加入了一些文案来说明“本地”性质,当前还是先强化即时可用这个 后续有灵感和精力了,我在考虑从交互流程上去优化它,效果应该会更好~ |
14
yechentide 1 天前 via iPhone 参考 ios ,让用户选择“给予访问权限的文件”,而不是让用户“上传文件”,或者弄成 PWA
|
15
acherkrau 1 天前
尝试了压一个 50 页纯文本的 pdf, 速度很慢, 压缩率倒是挺高的
|
17
hiko2chen OP @yechentide 感谢建议,文案方向很有用!
关于 PWA ,其实当前是支持的,但不是完全体,有 webmaifest 文件,chrome 会提示安装,不过没有实现 Service Worker ,因为后续可能会更新引擎,所以暂时不做缓存处理,等到完全体后再考虑更新 |
18
ImmerTry 1 天前
有意思的创意,感谢分享
|
19
kfpenn 1 天前
这个网站完成度好高啊,要是我做一个小工具可能就一个主页功能区,不得不赞叹 OP 的执行力
|
20
docx 1 天前 via iPhone
银行电脑能随便访问外网?
|
21
Charon2050 1 天前
好漂亮的网站🥰虽然我不需要处理 PDF ,但还是收藏了。太漂亮了
|
22
uo 1 天前
首先开源吧
|
23
37Y37 1 天前 这个不错,我也挺喜欢浏览器本地处理的,还做了一系列浏览器本地图片处理工具 https://img.ops-coffee.com/tools/ 现在 AI 太方便了,疯狂造轮子🐶
|
24
Ccf 1 天前
看起来不错
|
28
gdfsjunjun 20 小时 33 分钟前
@PbCopy111 试了下,WPS 要会员,收费啊!
|
29
gdfsjunjun 20 小时 23 分钟前
|
30
kzfile 20 小时 11 分钟前
需要假装成一个 app 才好
|
32
kukuCode 18 小时 45 分钟前
大佬,请问你这是哪家的服务器呀,年费多少?
|
33
hiko2chen OP @enrolls 后续有空了打包一个~
@abc8678 暂时还不支持直接直接保存离线使用,因为当前没有 Service Worker ,wasm 文件每次是动态获取的,只支持弱网使用,后续会推进 PWA 这块 @gdfsjunjun 😂这个有点尴尬,你的 PDF 是不是本身已经被其他工具压缩过啦?之前遇到过类似的问题是这个情况,或者你的文件内容是什么类型的呀,都是图片或者文字? |
35
elboble 18 小时 12 分钟前
以前 docker 部署了 Stirling PDF ,常用的功能也就是压缩 pdf ,上传还慢。等开源学习下
|
36
gdfsjunjun 18 小时 12 分钟前 从云原生到 AI 原生核心技术 & 最佳实践.pdf
从阿里云开发者社区下载的,原地址找不到了,文件内容是 PPT 转 PDF 的 找了个临时快传 https://www.filemail.com/d/dpwejkwvpqhrcrx 你可以自己测试下 |
37
dimwoodxi27 18 小时 3 分钟前
试用发现和外网大部分的 PDF 压缩网站效果一致,从质量和压缩体积来看都没 Adobe Acrobat 好; wasm 十几 M ,也太臃肿了吧
|
38
hiko2chen OP @gdfsjunjun 感谢,我本地测试一下
@dimwoodxi27 是的,有很多更好的解决方案,当前产品主要是为了解决即时可用和无需上传,保护隐私两个需求方向,所以会有一些取舍 wasm 目前还使用的是 GS 原版,很难自行编译精简,也是目前在考虑更新换轻量库 |
39
Izual_Yang 16 小时 55 分钟前
用的 gs 参数是什么?我自己平常用的 gs 命令行压缩参数偏保守,我用手头上的图文 pdf (非扫描)测试:
原 PDF 98.3 MB , SafetyPDF 64.2 MB , 自己的 gs 命令行 75.4 MB , pdfcpu 82.6 MB , qpdf 只能减少 1-2MB |
40
Izual_Yang 16 小时 55 分钟前
@kzfile #30
套一层 electron 或者 tauri 是吧 |
41
Izual_Yang 16 小时 50 分钟前
@Izual_Yang #39 看了一下就是 /screen 和 /printer ,那确实快
|
42
dimwoodxi27 15 小时 56 分钟前
@hiko2chen 按加载体感来说感觉慢,而且其他的 PDF 压缩网站加载更快,但感觉你这个压缩速度还行是我用过十几个 PDF 中算最快的,其他的都是上传到后端压缩的,但你这个算是离线压缩是不错的方式,网站体积和质量压缩更小是能比 90%的 PDF 压缩网站好用的;个人感觉大部分人压缩 PDF 的目的就是为了上传到一些在线文档,而在线文档限制了 PDF 的上传体积为 100M 以内。
|
43
hugodotlau 14 小时 53 分钟前
@Izual_Yang 不太理解 SafetyPDF 和 gs 命令行不应该一致么?
|
44
hugodotlau 14 小时 50 分钟前
果然是 gs , 小文件负压缩效果问题还存在 :D
原始大小 5.44 MB 压缩后大小 5.66 MB 节省空间 -4.2% |
45
hiko2chen OP @gdfsjunjun 我找到问题了
[核心原因] 1. 原 PDF 里面的 JPEG 文件已经经过一次压缩率较高的“激进压缩”,文件已经很小且优化了。 2. 如果使用的是推荐模式进行压缩的话,我的 GS 内使用的是/printer 预设进行压缩,内部的参数 QFactor 较低,相当于保守压缩,此时 GS 会对 JEPG 全部解码重新编码。 3. 因为重新编码参数更保守,所以会尝试保留更多已经在第一次压缩时丢失的细节,编码一些已经损坏的数据。 最终导致体积上升。 而且我算了一下,这个文件 280 个 JPEG 图片,使用重压缩,每个图片可能会增加 50-100KB ,增量也是差不多 21 MB ,和预期差不多😂 [解决方案] 对于这种已经被压缩处理过的 PDF ,再压缩的方式可以使用极致压缩模式,这样会再对内容进行有损压缩,但是速度会较慢,我试了下,压缩了 18%,从 51MB 压缩到 42MB 。 不过我当前这个也有设计缺陷,我后续考虑拓展一下 PDF 分析组件,提前提取分析 jpeg 质量,如果高于当前压缩算法,忽略重新编码 jpeg ,仅优化数据流 |
46
hiko2chen OP @dimwoodxi27 主要还是有些文件,比如比较重要的合同,文件,私人的内容之类的,上传到别人服务器总是有些不放心
|
47
hiko2chen OP @hugodotlau 这个问题不知道是不是也是类似上面的,小文件里面的图片文件已经被压缩过了,推荐模式的重新编码可能会导致体积上升
|