为了薅乐谱,我又通宵做了一个浏览器插件

拾穗 (Gleaner) 是一个 Firefox 插件:把网页上的图片收集起来,挑选、排好顺序,装订成一页一图、可以直接送进打印机的 A4 PDF;也可以把选中的原图打包下载。

名字取自米勒的《拾穗者》:在收割过的田里,把散落的麦穗一根根拾起来。

让-弗朗索瓦·米勒《拾穗者》,1857 年,巴黎奥赛博物馆藏(公有领域,图片来自 Wikimedia Commons)

起点

最初的需求很具体:把某个乐谱网站上的谱子装订成册,打印出来。

这个不便明说的网站,下载 PDF 版乐谱需要付费,但网页上展示的每一页,其实都是一张单独的高清无水印 SVG 图片。为了零元购把它们薅下来,我以前的做法是打开开发者工具,逐页定位图片下载,再找在线平台转换、合并成一个 PDF。费时费力不说,图片没有适配纸张,打印效果也不理想,还得专门再调整一遍。想到往后薅羊毛的日子如此多艰,遂萌生出自制工具的念头。

我的目标是:打开乐谱页面,点一下,按顺序装订成一个 PDF。

不止乐谱

再往外想一步,从网页上批量收集图片的,远不止我这种薅乐谱的人:

  • 网站美工、设计师逛到好的设计,想把一整页的创意图片收进灵感库;
  • 个人开发者做产品,要从各处搜罗图标、插图、截图当参考素材;
  • 插画爱好者遇到喜欢的画师或图集,想更省事地把作品存下来。

他们要的,有时是一键打包下载一整套素材,有时是像我一样装订成 PDF、直接送去打印。于是需求顺势扩展成了一个通用工具:

  • 任意网站的图片都能收集,包括滚动后才加载出来的;
  • 支持常见的图片格式,JPG、PNG、WebP、GIF、SVG,也包括动图;
  • 挑好的图片既能装订成 PDF,也能以原始格式打包成 ZIP 下载。

整个流程收敛成两步:先挑选 ,再排版。界面上的副标题「拾取 · 挑选 · 装订成 PDF」,说的就是这件事。

拾穗采集维基百科的 Solar System(太阳系)条目

打印出来要对

既然最终是要打印,PDF 的「正确」比什么都重要:

  • SVG 保持矢量。乐谱和图表大多是 SVG,转成位图再打印,线条和文字就糊了。
  • 照片不重新压缩,原样放进 PDF。
  • 颜色和网页上看到的一致。
  • 本身就是一整页的图,铺满整页。乐谱、扫描件这类图片自带页边距,再套一层边距,打印出来就缩了一圈。插件会自动识别这种「页面型」的图片,不需要用户做任何设置。
  • 动图定格在最有意义的一帧。带动画的 SVG、GIF 放进 PDF 只能取一帧:会结束的动画(淡入、描线、生长的柱状图)取结束后的样子,因为这时图才完整;无限循环的取开始时的样子。排版页上的卡片显示的就是 PDF 里的那一帧,鼠标移上去才播放动画,所见即所得。打包成 ZIP 时则保留原始的动图。

手感

工具每天要用,手感决定了愿不愿意用它。

挑选素材时可以单击、Shift 连选、拖动框选、快捷键全选,也可以按格式、尺寸、文件名关键词进行快速筛选,或者一键把小图标之类的干扰项快速隐藏。

拖动卡片、调整旋转来完成 PDF 页面排版。

有意留下的边界

含中文的 SVG 会转成图片。 让 PDF 里的中文保持矢量,就得把中文字体整个嵌进去,每份 PDF 都会大出几 MB 到十几 MB。权衡之下,这种情况自动转成高分辨率图片:打印效果基本不受影响,只是这些文字在 PDF 里不能选取、搜索。

不收集 CSS 背景图,它们大多只是装饰。

安装

拾穗没有在 Firefox 附加组件商店上架,安装包经 Mozilla 签名后在我的个人网站 wavky.com 发布,装好后 Firefox 会定期从那里检查更新、自动升级。

  1. 用 Firefox(142 或更新的版本)点击文章开头的「获取 Firefox 扩展」按钮,前往拾穗在 wavky.com 上的主页。
  2. 在主页上再点一次「获取 Firefox 扩展」,Firefox 会先提示已阻止网站安装附加组件,选择「继续安装」,再确认添加即可。

所有处理都在浏览器里完成,不上传任何数据。界面支持简体中文、繁体中文和英文,跟随 Firefox 的语言切换。


本文首发于我的个人网站:https://wavky.com/gleaner/