PDF管理器和查看器PdfDing

在这里插入图片描述

什么是 PdfDing ?

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

功能特点

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

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

安装

在群晖上以 Docker 方式安装。

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

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

卷

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

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

需要赋予 Everyone 读写权限

最后要成这样才行

data 和 media 两个目录都需要修改权限,如果 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.tpcf.cn/web/50119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…

【Python】快速创建一个简易 HTTP 服务器(http.server)

目录 官方文档安装教程用命令行创建编写代码创建 实例 官方文档 http.server 警告: http.server 不推荐用于生产环境。它仅仅实现了 basic security checks 的要求。 安装 Python3 内置标准模块,无需安装。(在之前的 Python2 版本名称是 Si…

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

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

C++通过JNI传递AssetManager读取安卓assets目录中文件

在 Android 设备上,assets 目录位于应用程序的 APK 包内部,它并不直接暴露在设备的文件系统中。因此,无法通过传统的文件路径直接访问 assets 目录下的文件。访问 assets 目录下的文件通常通过 AssetManager 来实现。 就可以实现将C需要的文…

计算机网络中的 CDN 与内容分发网络

引言 在现代互联网中,用户期望能够快速、稳定地访问各种在线内容。内容分发网络(Content Delivery Network,简称 CDN)应运而生,成为解决这一需求的关键技术。CDN 是一种分布式的服务器系统,通过将内容缓存…

智税集成2.0生成凭证

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

机器学习·线性回归

线性回归 损失函数 J ( w , b ) 1 2 m ∑ i 1 m ( f ( i ) ( w 1 , w 2 , … , w j , b ) − y ( i ) ) 2 J(w,b)\frac{1}{2m}\sum_{i1}^{m}\left({f^{(i)}(w_1,w_2,\ldots,w_j,b)-y^{(i)}} \right)^2 J(w,b)2m1​i1∑m​(f(i)(w1​,w2​,…,wj​,b)−y(i))2 梯度下降方法 …

【资料分享】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、版本控制 故事介绍:你是一个大学生,你上课需要交一分实验报告,教你的老师比较负责,…

Postman多环境测试全解析:打造灵活的API测试策略

Postman多环境测试全解析:打造灵活的API测试策略 在API开发和测试过程中,经常需要在不同的环境(如开发、测试和生产环境)中进行测试。Postman提供了多环境测试的功能,允许测试者为API定义多个运行环境,并快…

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

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

Git 中的工作区(Working Directory)、暂存区(Staging Area 或 Index)、提交区(Repository)

在 Git 中,工作区(Working Directory)、暂存区(Staging Area 或 Index)、提交区(Repository)是三个核心概念,它们分别代表不同的文件状态和存储位置。以下是它们的详细解释及其关联&…

Linux_make/Makefile的理解

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