能让PDF看起来像是扫描件的Look Scanned

在这里插入图片描述

什么是 Look Scanned ?

Look Scanned 是一个能够让 PDF 看起来就像是扫描件一样的纯前端网站。你再也不需要麻烦地打印之后扫描了,你所需要的就是鼠标点几下。

这是个挺有意思的软件,但是老苏不确定什么场景下会用到这个软件,如果不想自己搭建的话,可以去试试官方的在线演示:https://zh.lookscanned.io/

构建镜像

如果你不想自己构建,可以跳过,直接阅读下一章节

这是一个前端项目,所以老苏用了一贯使用的标准 Dockerfile 模板

【注意】:这个镜像实际上是有问题的,正常使用当然没问题,但是刷新页面会显示 404 Not Found,应该需要用自己的 nginx.conf 而不是默认的,不过老苏也不会,所以这个镜像只适用于功能体验

FROM node:16.14 as build-deps
MAINTAINER laosu<wbsu2003@gmail.com>    WORKDIR /app
COPY . ./
RUN npm install
RUN npm run buildFROM nginx:1.12-alpine
COPY --from=build-deps /app/dist /usr/share/nginx/htmlEXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

构建镜像和容器运行的基本命令如下👇

# 下载代码
git clone https://github.com/rwv/lookscanned.io.git# 或者加个代理
git clone https://ghproxy.com/github.com/rwv/lookscanned.io.git# 进入目录  
cd lookscanned.io# 构建镜像
docker build -t wbsu2003/lookscanned:v1 .# 运行容器
docker run -d \--name lookscanned \-p 3366:80 \wbsu2003/lookscanned:v1

【注意】:如果编译镜像的主机内存比较小,比如只有 2G 时,在执行 npm run build 时可能会遇到下面的错误

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 lookscanned ,选择第四个 wbsu2003/lookscanned,版本选择 latest

在这里插入图片描述

端口

本地端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
336680

在这里插入图片描述

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 运行容器
docker run -d \--name lookscanned \-p 3366:80 \wbsu2003/lookscanned

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3'services:lookscanned:image: wbsu2003/lookscannedcontainer_name: lookscannedrestart: unless-stoppedports:- 3366:80

然后执行下面的命令

# 新建文件夹 lookscanned 和 子目录
mkdir -p /volume1/docker/lookscanned# 进入 lookscanned 目录
cd /volume1/docker/lookscanned# 将 docker-compose.yml 放入当前目录# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:3366 就能看到主界面

在这里插入图片描述

开始扫描,显示的是内置的文档演示效果

在这里插入图片描述

可以点 选择 PDF 文件 来更换你自己的 pdf 文件

在这里插入图片描述

扫描参数包括了:

  • 颜色:这是开关参数,默认为 黑白,可切换为 彩色
  • 边框:这是开关参数,默认为不启用;
  • 旋转角度:默认为
  • 旋转角度的随机度:默认为 ±0.5°
  • 模糊:默认为 0.5
  • 噪点::默认为 0.25
  • 分辨率::默认为 2x,这个参数没搞明白,或者说和老苏理解的不一样;

每次参数做了修改,需要点 预览 让参数生效,最后可以 保存 到本地

在这里插入图片描述

参考文档

rwv/lookscanned.io: 📚 LookScanned.io - Make your PDFs look scanned
地址:https://github.com/rwv/lookscanned.io

Look Scanned
地址:https://zh.lookscanned.io/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/173447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OBS Studio 30.0 正式发布:支持 WebRTC

导读OBS Studio 30.0 已正式发布。此版本移除了对 Ubuntu 20.04、Qt 5 和 FFmpeg 4.4 之前版本的支持。 OBS Studio 30.0 已正式发布。此版本移除了对 Ubuntu 20.04、Qt 5 和 FFmpeg 4.4 之前版本的支持。 主要变化包括&#xff1a; 支持 WebRTC&#xff08;详情查看 OBS Stu…

【YOLOv5入门】目标检测

【大家好&#xff0c;我是爱干饭的猿&#xff0c;本文重点介绍YOLOv5入门-目标检测的任务、性能指标、yolo算法基本思想、yolov5网络架构图。 后续会继续分享其他重要知识点总结&#xff0c;如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一下吧】 上一篇…

Android 单元测试初体验

Android 单元测试初体验 前言一、单元测试是什么&#xff1f;二、简单使用1.依赖2.单元测试代码简单模版及解释 总结 前言 当初在学校学安卓的时候&#xff0c;老师敢教学进度&#xff0c;翻到单元测试这一章节的时候提了两句&#xff0c;没有把单元测试当重点讲&#xff0c;只…

测试思维的思考和例子

批判性思考&#xff1a; 在测试一个视频app的播放功能时&#xff0c;您可能会发现以下问题&#xff1a;视频在播放过程中经常出现卡顿或延迟。经过分析&#xff0c;您可能会怀疑是网络问题或视频源的问题。但经过进一步的测试和观察&#xff0c;您发现只有在特定时间段内出现卡…

大模型中的各种模型名词概念

目录 一、模型 Transformer GPT&#xff08;GPT-3、GPT-3.5、GPT-4&#xff09; BERT RoBERTa T5 XlNet GShard Switch Transformer InstrucGPT ChatGPT 大模型 LLM&#xff08;大语言模型&#xff09; Alpaca &#xff08;羊驼&#xff09; LLaMA Vicuna 俗称「…

编程语言发展史:Ruby语言的发展和应用

介绍 Ruby是一种高级编程语言&#xff0c;最初由日本的松本行弘开发。它在20世纪90年代初首次发布&#xff0c;并在2000年代初开始变得流行。 Ruby是一种动态、面向对象的语言&#xff0c;具有简单、易于学习和使用的语法&#xff0c;因此被广泛应用于Web开发、数据分析、游戏…

详解Python对Excel处理

Excel是一种常见的电子表格文件格式&#xff0c;广泛用于数据记录和处理。Python提供了多个第三方库&#xff0c;可以方便地对Excel文件进行读写、数据操作和处理。本文将介绍如何使用Python对Excel文件进行处理&#xff0c;并提供相应的代码示例和详细说明。 一、安装第三方库…

java设计模式学习之【抽象工厂模式】

文章目录 引言抽象工厂模式简介定义与用途实现方式&#xff1a; 使用场景优势与劣势工厂模式在spring中的应用银行和贷款服务示例代码地址 引言 在我们之前的讨论中&#xff0c;我们探索了工厂方法模式——一种简化单一产品创建的设计模式。现在&#xff0c;我们将视角转向抽象…

2023年亚太杯APMCM数学建模大赛A题水果采摘机器人的图像识别

2023年亚太杯APMCM数学建模大赛 A题 水果采摘机器人的图像识别 原题再现 中国是世界上最大的苹果生产国&#xff0c;年产量约3500万吨。同时&#xff0c;中国也是世界上最大的苹果出口国&#xff0c;世界上每两个苹果中就有一个是中国出口的&#xff0c;世界上超过六分之一的…

VMware系列:VMware16安装Win11虚拟机(最全步骤+踩坑)

VMware16安装Win11虚拟机(最全步骤+踩坑) 以下是安装步骤和踩坑大全准备工作下载镜像安装/配置的流程1、检查安装的系统环境是否符合最低要求2. 这里给出需要注意的几个点3. 如果出现了如下情况、请看下面的【三】安装Windows11出现问题解决!!!!4. 注意:如果没有出现【驱…

Star History 十月开源精选 |AI for Postgres

在 2023 年 Stack Overflow 开发者调查中&#xff0c;Postgres 顶替了 MySQL 被评为最受欢迎的数据库。一个重要因素应该是 Postgres 支持扩展&#xff1a;可扩展的架构 Postgres 仍然由社区拥有&#xff0c;Postgres 生态近年来蓬勃发展。 扩展可以看作是内置功能&#xff0c…

自定义的AlphaShape类来提取平面点云数据的边界点 open3d c++ 代码 平面点云边界提取算法

使用了自定义的AlphaShape类来提取点云数据的边界点,并使用Open3D库进行可视化。 引入必要的头文件和命名空间: main函数: 读取点云数据文件到cloud对象。如果读取失败,则输出错误信息并返回。将点云数据全部着色为蓝色。创建一个空的点云对象boundaryCloud,用于存储提取…

跟着chatgpt学习|1.spark入门

首先先让chatgpt帮我规划学习路径&#xff0c;使用Markdown格式返回&#xff0c;并转成思维导图的形式 目录 目录 1. 了解spark 1.1 Spark的概念 1.2 Spark的架构 1.3 Spark的基本功能 2.spark中的数据抽象和操作方式 2.1.RDD&#xff08;弹性分布式数据集&#xff09; 2…

9:kotlin 返回和跳过(Returns and jumps)

kotlin有三种结构跳转表达式&#xff1a; return会从最近的封闭函数或匿名函数返回。 break终止最近的封闭循环。 continue继续最近的封闭循环的下一步。 所有这些表达式都可以作为其他表达式的一本分使用 val s person.name ?: returnval s person.name ?: return 这…

SpringBoot yml配置文件打印值

目录 SpringBoot中配置文件打印值 yml配置 config类 启动类 测试类 注解分析 SpringBoot中配置文件打印值 yml配置 student:red: douconfig类 Data ConfigurationProperties(prefix "student") // 文件上传 配置前缀file.oss public class MinIOConfigProp…

Callable、Future和FutrueTask详解

一、Callable介绍 1.1 Runnable介绍 Runnable是一个接口&#xff0c;里面声明了run方法。但是由于run方法返回值类型为void&#xff0c;所以在执行完成任务后&#xff0c;无法返回任何结果。 FunctionalInterface public interface Runnable {public abstract void run(); }…

仅2万粉,带了2.6万件的货!TikTok Shop美区达人周榜(11.13-11.19)

11月24日&#xff0c;TikTok Shop近日公布了美国市场和英国市场的全托管黑五大促战绩。数据显示&#xff0c;11月14日至11月20日&#xff0c;其美国市场的订单量环比10月20日-10月26日增长了205%。 家居户外热销品有&#xff1a;数码触摸屏相框、毛绒地毯、家居毛毯。黑马商品…

关于微信小程序中如何实现数据可视化-echarts动态渲染

移动端设备中&#xff0c;难免会涉及到数据的可视化展示、数据统计等等&#xff0c;本篇主要讲解原生微信小程序中嵌入echarts并进行动态渲染&#xff0c;实现数据可视化功能。 基础使用 首先在GitHub上下载echarts包 地址&#xff1a;https://github.com/ecomfe/echarts-for…

SD-WAN和混合WAN两种网络方案的差异

传统的WAN是指基于传输控制协议/因特网协议&#xff08;TCP/IP&#xff09;的私有广域网&#xff08;WAN&#xff09;&#xff0c;它由企业网络和ISP组成&#xff0c;用于连接分布在不同地理位置的多个站点。使用传统WAN时&#xff0c;企业需要租用电路&#xff0c;使用专用线路…

机器学习-线性模型·

线性模型是一类用于建模输入特征与输出之间线性关系的统计模型。这类模型的基本形式可以表示为&#xff1a; 其中&#xff1a; 是模型的输出&#xff08;目标变量&#xff09;。 是截距&#xff08;常数项&#xff0c;表示在所有输入特征都为零时的输出值&#xff09;。 是权重…