>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Python

PdfDing 与无休止的 PDF 混乱治理

PdfDing Logo

我们大多数人的 Downloads 文件夹或家庭服务器里,都会积累成百上千的 PDF 文件。技术文档、系统编程书籍、收据、合同、扫描件、研究论文,不一而足。通常在这种混乱中找到正确的段落简直是一场噩梦:一个文件在浏览器预览里打开,另一个下载到了平板上,而你的笔记还留在工作笔记本里。

如果你用过 linkding 来管理书签,这个概念会让你感到熟悉。开发者 mrmn2 从中汲取灵感,创建了 PdfDing——一款轻量级自托管一体化解决方案,可通过 Web 界面直接阅读、整理和编辑 PDF。

PdfDing Demo Screenshot

服务功能

PdfDing 解决的是一个简单的问题:它为所有文档提供单一入口点,并支持跨设备状态同步。你在桌面端打开一本书,关闭标签页,晚上就能在同一页继续在手机上阅读。

该项目涵盖了基本的文档管理需求,没有臃肿的企业级功能。

阅读与同步

阅读器的核心功能是进度追踪。界面为每个文件显示清晰的进度条,你可以立即看出哪本手册读了一半,哪本还没碰过。

为了舒适的阅读体验,作者添加了以下功能:

  • 深色主题
  • 颜色反转模式,适用于旧版白底扫描件
  • 多种页面布局选项,适用于不同屏幕
  • 笔记面板,支持 Markdown 语法,与文档并排显示

批注与签名

PdfDing 包含功能完整的标注编辑器。你可以用荧光笔高亮文本、在页边空白处手绘示意图、插入文本框。

另一个加分项是签名处理。你只需在个人资料中保存一次签名,之后就可以在任何已授权的设备上快速将签名盖到合同和发票上。所有批注和高亮都会收集在独立面板中,无需上传最占空间源文件即可导出。

目录组织

当文档超过一百份时,扁平列表就不够用了。在 PdfDing 中,你可以构建适合自己的结构:

  • 工作区,用于分离个人和工作文件
  • 嵌套集合
  • 多级标签
  • 收藏夹和归档区,用于存放旧版本

批量操作可用于大规模处理。你可以选择上季度的二十份报告,点击几下就能发送到归档或应用通用标签。

分享与安全

如果需要向同事或客户展示文档,无需通过即时通讯工具转发文件。在应用内,你可以为特定文档或整个集合生成公开链接或二维码。如有需要,访问权限可以设置密码保护或时间限制。

从安全角度来看,一切也都安排妥当:

  • 通过 OIDC 协议支持 SSO
  • 通过 TOTP 码支持双因素认证
  • 通过 WebAuthn 标准支持硬件密钥和生物识别

内部实现原理

Python 是幕后的核心力量。作者没有用微服务复杂性来拖累系统,而是选择了单体架构,可以轻松部署在普通的 VPS 或家庭 Raspberry Pi 上。

顺便一提,该开发获得了欧洲 NGI0 Commons Fund(NLnet 的下一代互联网计划)的资金支持。这是一个好信号:作者有资源来开发代码库,项目不会在发布一个月后就无人维护。

NLnet foundation logo

如何自行部署

最简单的方式是通过 Docker Compose 启动服务。创建一个标准清单:

services:
  pdfding:
    image: mrmn/pdfding:latest
    container_name: pdfding
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - ./data:/app/data
    environment:
      - SECRET_KEY=your-super-secret-key-change-me

运行 docker compose up -d 后,Web 面板将在 8080 端口可用。生产使用时,只需通过 Nginx Proxy Manager、Traefik 或 Caddy 配合 SSL 证书路由流量即可。

对于集群场景,文档中包含现成的 Helm charts,因此在 Kubernetes 中部署也不是问题。

适用人群

如果你需要自动文本识别(OCR)、复杂的收件处理流程和条码解析,PdfDing 不太可能取代像 Paperless-ngx 这样重量级的文档管理系统。

但如果你在寻找一个简洁、快速的阅读器和目录管理工具,用来管理书籍、文档、手册和合同,并且希望能够快速在平板上签署签名,这个项目非常适合。你可以在官方 演示站 上安装前先体验一下界面。

相关项目