在浏览器里合并拆分 PDF:能做什么,做不到什么
把 PDF 合并做成网页工具,最大的疑问通常是「不上传真的能处理吗」。
能。PDF 是一种结构化的容器格式,页面内容可以被复制进新文档,整个过程不需要渲染。但有几条边界必须先说清楚,否则用户会在最需要的时候撞墙。
在浏览器里跑的工具,以及它们背后的实现取舍。
查看所有标签把 PDF 合并做成网页工具,最大的疑问通常是「不上传真的能处理吗」。
能。PDF 是一种结构化的容器格式,页面内容可以被复制进新文档,整个过程不需要渲染。但有几条边界必须先说清楚,否则用户会在最需要的时候撞墙。
做像素画工具时,最先想的是「加个马赛克滤镜不就完了」。
试过就知道不行:马赛克只是把像素块放大,颜色还是原来那几万种,看起来像低分辨率的照片,不像像素画。真正的像素画有两个约束 —— 格子的数量,和颜色的数量。
设计工具导出的 SVG 通常有两种体积:你看到的那张图,和文件里真实存在的东西。
一张 800 字节的图标,能把 500 多字节花在没人要的元数据上。但清理时必须清楚哪些是垃圾、哪些是命脉。
新加的两个工具都要「凭空造文件」:一个把 PNG 打包成 .ico,一个把几段文本打成 .zip。
按惯例会装两个库。但这两个格式的复杂度被高估了 —— 值得先看看能不能自己写。
二维码工具看起来最简单:输入文字,画出黑白格子。真做起来,选库和中文编码各有一个坑。
站点部署在 Cloudflare Pages,构建命令就是 npm run build。用得越久越发现,静态托管不等于「传上去就完事」,有几个细节会直接影响线上表现。
「不上传、没后端,所以很安全」——这句话只对了一半。没有服务端确实砍掉了大半攻击面,但风险不会消失,它转移到了两个地方:访客的浏览器和依赖链。
「加了工具,首页会不会变慢?」这是我自己最担心的问题。解决办法不是压缩代码,而是分清两件事:没进页面不该花钱,进了页面第一次别等。
工具上线后收到一句反馈:压缩完对结果不满意,想换个质量再来一次,发现按钮是灰的,只能刷新页面重来。
第一反应是「用户操作不对」,第二反应是「不对,这是我的问题」。
jSquash 把 mozjpeg、libwebp、oxipng 编成了浏览器能用的 WASM 包,API 看起来很简单:init() 然后 encode()。真正接进去,我踩了三个坑。
最省事的图片压缩写法是三行:createImageBitmap 解码、画到 canvas、canvas.toBlob('image/webp', 0.75)。我先按这个思路做了个原型,然后发现它和「专业压缩工具」差了不止一个档次。
这个站点托管在 Cloudflare Pages 上,只有构建产物,没有服务器。想加「在线工具」,第一件事不是选技术,而是把边界钉死:哪些方案一开始就不能碰。