PassNAT LogoPassNAT

Lookscanned:NAS 上把电子 PDF 变成扫描件,不用打印再扫

作者

小编

发布时间

Curving abstract shapes with an orange and blue gradient

项目介绍

Lookscanned 是一个纯前端的网站,专门干一件事:把电子版 PDF 变成看起来像扫描件的样子。很多时候材料要打印、要提交,一份规规矩矩的电子文档反而显得「太新」;过一遍扫描效果,纸感、轻微倾斜、颗粒噪点都有,拿在手里更像真的纸质文件。

用法很简单:选一个 PDF,左边调参数——颜色可以选彩色或黑白,旋转角度和随机度决定每一页歪多少,模糊、噪点、分辨率决定颗粒粗细,右边并排两张预览,一张是原页,一张是加过效果的样子,所见即所得。满意了点保存,直接下载一份扫描版 PDF,原来的文件一点没变。

它最大的特点是全程在浏览器里用 WebAssembly 处理,文件不会上传到任何服务器,也就不存在「上传到别人家」的隐私顾虑。这一点对合同、证件这类敏感材料尤其重要。

这个网站的灵感来自开源项目 scanyourpdf,想要更细的控制可以去看它的实现。

部署安装

只要能跑 Docker 的 NAS 都能装,下面用飞牛 NAS 演示:先用 帕斯内网穿透 拿到一个公网地址,再把 Lookscanned 用 Docker Compose 装起来,以后在外面用手机也能随手把文件转成扫描件。

一、先用帕斯内网穿透拿到公网地址

飞牛的「应用中心」里搜 PassNAT,装上这个穿透插件,打开它,点「创建隧道」。隧道名字随便起(不超过 12 个字符),接入节点和传输协议留默认,本地 IP 留默认的 127.0.0.1,本地端口填 8080(就是下面编排里冒号左边那个端口)。

建好之后点开这条隧道,按一下电源,状态变成运行中,详情里就能看到分配好的公网地址(形如 IP:端口),先记下来。

不是飞牛的系统,PassNAT 文档的「连接使用」里有其他系统的连接教程:点我跳转。

二、新建 Compose 项目

打开飞牛的「Docker」应用,切到「Compose」标签,点右上角的新增项目。项目名称填 lookscanned,路径在「我的文件」下面挑一个空文件夹,没有就当场新建一个。来源选「创建 docker-compose.yml」,把下面这段整个贴进去:

1services:
2 lookscanned:
3 image: wbsu2003/lookscanned:latest
4 container_name: lookscanned
5 ports:
6 - "8080:80"
7 restart: unless-stopped

这段编排很短,只有三件事:用官方镜像 wbsu2003/lookscanned,映射端口 8080 到容器里的 80,设置重启策略。整段不用改任何东西;端口 8080 被占用的话,把冒号左边的数字换一个,隧道里的本地端口也跟着改。勾上「创建项目后立即启动」,镜像下完就起来了。

它是纯静态的前端页面,没有数据库、没有账号、不存任何东西,所以不需要挂卷,备份也省了——你的文件始终只在你自己浏览器里处理。

三、用起来

用公网地址打开,就是那个干净的落地页。点「开始扫描」,选一个 PDF 文件。

调参数。 左边把颜色切成黑白(扫描件一般是黑白的),旋转角度和随机度往上拉一点,让每页有一点自然的歪;模糊和噪点往上拉一点,出颗粒感;分辨率往低调,颗粒更粗、更像老扫描仪。右边实时并排:一张原页,一张扫描效果页。

保存。 满意了点「保存」,浏览器直接下载一份扫描版 PDF,页面弹「处理完成」。原来的 PDF 一点没动,两份文件都在。

几点说明

隐私。 全程在浏览器里用 WebAssembly 处理,文件不上传服务器。这一点是它相比在线转换站最大的不同:你的合同、证件、内部材料不会经过任何人的服务器。

平台中立。 只要能跑 Docker 的 NAS 都能装,飞牛只是演示;其他系统装 Docker 再跑同样的编排即可。

公网访问。 内网穿透给的是 http 地址,Lookscanned 本身不需要 HTTPS 也能用。虽然文件不离开浏览器,公网地址也别到处发,用完可以在插件里把隧道关掉。

开源。 Lookscanned 是一个开源的纯前端工具,思路来自开源项目 scanyourpdf,想要更细的控制可以自己改参数甚至改源码。