PDF管理器和查看器PdfDing

在这里插入图片描述

什么是 PdfDing ?

PdfDing 是一款自托管 PDF 管理器和查看器,可在多种设备上提供无缝用户体验。它设计精简、速度快,并且易于通过 Docker 设置。

功能特点

  • 在多种设备上无缝基于浏览器的 PDF 查看
  • 使用标签整理 PDF
  • 干净且响应迅速的用户界面
  • 暗黑模式
  • 记住当前位置 - 从停止的地方继续阅读
  • 通过 OIDC 支持 SSO
  • 每个用户都可以上传自己的 PDF,无需管理员管理内容。

软件的使用很简单,看官方的动图一目了然

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 pdfding ,选择第一个 mrmn/pdfding,版本选择 latest

本文写作时, latest 版本对应为 0.1.2

docker 文件夹中,创建一个新文件夹 pdfding,并在其中建两个子文件夹 datamedia

默认情况下,这两个子文件夹,Everyone 都只有读权限

需要赋予 Everyone 读写权限

最后要成这样才行

datamedia 两个目录都需要修改权限,如果 data 没修改的话,容器会启动失败,因为无法写入数据库,而 media 没修改的话,在上传 pdf 时会报错

PdfDing 默认使用 SQLite 数据库。另外,PdfDing 也支持 PostgreSQL

文件夹装载路径说明
docker/pdfding/data/home/nonroot/pdfding/db存放数据库
docker/pdfding/media/home/nonroot/pdfding/media存放数据库

端口

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

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

默认没有对外暴露端口

需要点 + 号自己添加

环境

可变
HOST_NAME设为 192.168.0.197,这是老苏群晖主机的 IP
SECRET_KEY密码,可以改的复杂一点
CSRF_COOKIE_SECURE通过 HTTP 传输 CSRF cookie
SESSION_COOKIE_SECURE通过 HTTP 传输 session cookie

更多的环境变量,请参考官方文档:https://codeberg.org/mrmn/PdfDing#configuration

命令行安装

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

# 新建文件夹 pdfding 和 子目录
mkdir -p /volume1/docker/pdfding/{data,media}# 进入 pdfding 目录
cd /volume1/docker/pdfding# 修改目录权限
chmod a+w {data,media}# 运行容器
docker run -d \--restart unless-stopped \--name pdfding \-p 8340:8000 \-v $(pwd)/data:/home/nonroot/pdfding/db \-v $(pwd)/media:/home/nonroot/pdfding/media \-e HOST_NAME=192.168.0.197 \-e SECRET_KEY=some_secret \-e CSRF_COOKIE_SECURE=FALSE \-e SESSION_COOKIE_SECURE=FALSE \mrmn/pdfding:latest

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

version: '3'services:pdfding:image: mrmn/pdfding:latestcontainer_name: pdfdingrestart: unless-stoppedports:- 8340:8000volumes:- ./data:/home/nonroot/pdfding/db- ./media:/home/nonroot/pdfding/mediaenvironment:- HOST_NAME=192.168.0.197- SECRET_KEY=some_secret- CSRF_COOKIE_SECURE=FALSE- SESSION_COOKIE_SECURE=FALSE

然后执行下面的命令

# 新建文件夹 pdfding 和 子目录
mkdir -p /volume1/docker/pdfding/{data,media}# 进入 pdfding 目录
cd /volume1/docker/pdfding# 修改目录权限
chmod a+w {data,media}# 将 docker-compose.yml 放入当前目录# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:8340 就能看到登录界面

普通用户

第一次需要点 Sign up 注册账号

密码不能少于 8 位,不能太常见,不能全是数字等等

注册成功后的主界面

因为没有设置 smtp 参数,所以是不会收到邮件的

Add PDF 添加文件,填写标题、描述和标签,然后点击 Sunmit 提交

上传成功

点标题可以查看 pdf 的内容

文件保存在 /media 目录中

移动端

在手机浏览器上登录

找到上传的 pdf

打开阅读 pdf 的速度挺快的,支持缩放操作

管理员

如果要创建管理员,需要进入容器操作

严格来说,是将已有的用户转为管理员,如果你输入的用户邮箱不存在,是会报错的 django.contrib.auth.models.User.DoesNotExist: User matching query does not exist.

# 以 root 身份进入容器
docker exec -it --user root pdfding /bin/bash# 创建管理员用户
python pdfding/manage.py make_admin -e wbsu2003@gmail.com

现在可以访问 http://群晖IP:8340/admin,对用户,pdf 做一些增、删、改、查的操作

参考文档

mrmn/PdfDing: PdfDing is a selfhosted PDF manager and viewer offering a seamless user experience on multiple devices. It’s designed be to be minimal, fast, and easy to set up using Docker. - Codeberg.org
地址:https://codeberg.org/mrmn/PdfDing

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

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

相关文章

VulnHub:colddbox easy

靶机下载地址 信息收集 主机发现 攻击机网段192.168.31.0/24,扫描同网段存活主机。 nmap 192.168.31.0/24 -Pn -T4 发现靶机,IP为192.168.31.176。 端口扫描 扫描靶机开放端口。 nmap 192.168.31.176 -A -p- -T4 开放了80,4512端口,注…

Prometheus安装部署

文章目录 1.Prometheus(普罗米修斯)安装部署1.1部署环境准备1.2部署prometheus1.3主机数据展示 2.Grafana安装部署2.1部署Grafana2.2配置Grafana数据源2.2配置Grafana仪表板 3.AlertManager安装部署3.1部署alertmanager3.2告警邮件发送配置3.3测试邮件告警效果3.4自定义邮件告警…

ModuleNotFoundError: No module named ‘py3langid‘ 以及如何将包安在虚拟环境下

前提:已经安装过改包(pip install py3langid),但仍报错 原因:安装在其他目录下了 解决办法: 1、再次在终端输入pip install py3langid 显示安装位置 Requirement already satisfied: py3langid in c:\…

【ESP8684————固件烧录说明、调试记录(1)】

环境: 硬件:ESP8684 模块 芯片:ESP8684-MINI-1U 固件:ESP32-C2-4MB-AT-V3.3.0.0 固件烧录及烧录说明整理:固件及烧录说明整理 一、调试笔记: 1)关于ESP8684模块(ATCWMODE&#xf…

Jmeter三种方式获取数组中多个数据并将其当做下个接口参数入参【附带JSON提取器和CSV格式化】

目录 一、传统方式-JOSN提取器获取接口返回值 1、接口调用获取返回值 2、添加JSON提取器 3、调试程序查看结果 4、添加循环控制器 5、设置count计数器 6、添加请求 7、执行请求 二、CSV参数化 1、将结果写入后置处理程序 2、设置循环处理器 3、添加CSV文件 4、设置…

智税集成2.0生成凭证

:::info 💡 整体业务流程 从A9服务器中取数,生成列表数据,写入到对方oracle数据库中。 ::: 项目关键点 1.连接数据库 左连接连接本地SQLserver数据库、右连接要链接A9开票服务器的数据库然后设想用SQLserver 自带的外部连接来连接oracle数据…

【资料分享】2024第三届钉钉杯大学生大数据挑战赛B题思路解析+双语言代码

2024钉钉杯大学生大数据挑战赛,B题解题思路和双语言代码分享,资料预览:

解密阿里大神写的天书般的Tree工具类,轻松搞定树结构!

首发公众号:赵侠客 一、引言 最近公司新进了不少新人,包括一些来自阿里、网易等大型企业的资深工程师。我们组的一位新同事是阿里来的专家,我在CR(Code Review, 简称CR)时看到了他编写的一个关于树操作的工具类&#…

操作系统:进程1

一.进程 1.什么是进程 一个进程创建,他会生成几块: 代码段:进程执行的程序代码数据段:全局变量,静态变量,在进程生命周期中是动态可变的堆:动态分配的内存区域,malloc、calloc、real…

html实现酷炫美观的可视化大屏(十种风格示例,附源码)

文章目录 完整效果演示1.蓝色流线风的可视化大屏1.1 大屏效果1.2 大屏代码1.3 大屏下载 2.地图模块风的可视化大屏2.1 大屏效果2.2 大屏代码2.3 大屏下载 3.科技轮动风的可视化大屏3.1 大屏效果3.2 大屏代码3.3 大屏下载 4.蓝色海洋风的可视化大屏4.1 大屏效果4.2 大屏代码4.3 …

快速介绍git(Linux)

git 1、安装2、版本控制3、git vs gitee&&GitHub(git故事)4、git的操作 1、安装 很简单,直接 sudo yum install -y git2、版本控制 故事介绍:你是一个大学生,你上课需要交一分实验报告,教你的老师比较负责,…

手把手教你集成GraphRag.Net:打造智能图谱搜索系统

在人工智能和大数据发展的背景下,我们常常需要在项目中实现知识图谱的应用,以便快速、准确地检索和使用信息。 今天,我将向大家详细介绍如何在一个新的.NET项目中集成GraphRag.Net,这是一个参考GraphRag实现的.NET版本&#xff0c…

Linux_make/Makefile的理解

1.make是一个命令,makefile是一个文件, 依赖关系和依赖方法. a.快速使用一下 i.创建一个Makefile文件(首字母也可以小写) b.依赖关系和依赖方法 i.依赖关系: 我为什么要帮你? mybin:mytest.c ii.依赖方法: 怎么帮? gcc -o mybin mytest.c make之前要注意先创建…

探索LLM世界:新手小白的学习路线图

随着人工智能的发展,语言模型(Language Models, LLM)在自然语言处理(NLP)领域的应用越来越广泛。对于新手小白来说,学习LLM不仅能提升技术水平,还能为职业发展带来巨大的机遇。那么,…

Linux(虚拟机)的介绍

Linux介绍 常见的操作系统 Windows:微软公司开发的一款桌面操作系统(闭源系统)。版本有dos,win98,win NT,win XP , win7, win vista. win8, win10,win11。服务器操作系统:winserve…

conda issue

Conda 是一个跨平台、通用的二进制包管理器。它是 Anaconda 安装使用的包管理器,但它也可能用于其他系统。Conda 完全用 Python 编写,并且是 BSD 许可的开源。通用意味着大部分的包都可以用它进行管理,很像一个跨平台版本的apt或者yum&#x…

vue3 父组件 props 异步传值,子组件接收不到或接收错误

1. 使用场景 我们在子组件中通常需要调用父组件的数据,此时需要使用 vue3 的 props 进行父子组件通信传值。 2. 问题描述 那么此时问题来了,在使用 props 进行父子组件通信时,因为数据传递是异步的,导致子组件无法成功获取数据…

汇川CodeSysPLC教程03-2-6 ModBus TCP

什么是ModBus TCP? ModBus TCP是一种基于TCP/IP协议的工业网络通信协议,常用于工业自动化和控制系统。它是ModBus协议的一个变种,ModBus协议最初由Modicon(现在是施耐德电气的一部分)在1979年开发。 以下是ModBus TC…

数据治理之“财务一张表”

前言 信息技术的发展,伴随企业业务系统的纷纷建设,提升业务处理效率的同时,也将企业的整体主价值链流程分成了一段一段的业务子流程,很多情况下存在数据上报延迟、业务协作不顺畅、计划反馈不及时、库存积压占资多……都可以从数据…

【Android】linux

android系统就是跑在linux上的系统。Linux层里面包含系统和硬件驱动等一些本地代码的环境。 linux的目录 mount: 用于查看哪个模块输入只读,一般显示为: [rootlocalhost ~]# mount /dev/cciss/c0d0p2 on / type ext3 (rw) proc on /proc type proc (…