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…

【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之前要注意先创建…