Paperless-ng 项目开发环境搭建与扩展指南

Paperless-ng 项目开发环境搭建与扩展指南

前言

Paperless-ng 是一个开源的文档管理系统,旨在帮助用户实现无纸化办公。本文将详细介绍如何搭建 Paperless-ng 的开发环境,包括前后端开发配置、本地化支持以及如何扩展系统功能。

开发环境搭建

准备工作

在开始开发前,需要完成以下准备工作:

  1. 克隆项目源代码
  2. 创建必要的目录结构:
    mkdir -p consume media
    
  3. 安装 Node.js 和 Angular CLI:
    npm install -g @angular/cli
    

后端环境配置

  1. 安装 Python 依赖:

    cd src/
    pipenv install --dev
    
  2. 数据库和 Redis 配置:

    • 可以选择安装本地 Redis 服务
    • 或者使用 Docker 运行 Redis 容器:
      docker run -d -p 6379:6379 --restart unless-stopped redis:latest
      
  3. 初始化数据库:

    python3 manage.py migrate
    python3 manage.py createsuperuser
    
  4. 启动开发服务:

    python3 manage.py runserver & python3 manage.py document_consumer & python3 manage.py qcluster
    

前端环境配置

  1. 安装前端依赖:

    cd src-ui/
    npm install
    
  2. 启动开发服务器:

    ng serve
    

    开发服务器默认运行在 http://localhost:4200

  3. 生产环境构建:

    ng build --prod
    

开发工作流程

后端开发

后端基于 Django 框架开发,建议开发流程:

  1. 使用 IDE(如 PyCharm)配置运行配置:

    • python3 manage.py runserver
    • python3 manage.py qcluster
    • python3 manage.py document_consumer
  2. 代码质量检查:

    • 运行测试:pytest
    • 代码风格检查:pycodestyle

前端开发

前端基于 Angular 框架开发:

  1. 开发时使用 ng serve 启动实时重载的开发服务器
  2. 确保后端服务已启动并提供 API
  3. 需要先登录后端以获取有效会话

本地化支持

Paperless-ng 支持多语言,前后端需要分别处理本地化。

前端本地化

  1. 源语言文件:src-ui/messages.xlf
  2. 翻译文件存放位置:src-ui/src/locale/
  3. 提取新字符串:
    ng xi18n --ivy
    

添加新语言需要:

  1. 修改 angular.json 文件
  2. 更新 settings.service.ts 中的语言选项
  3. app.module.ts 中注册本地化数据

后端本地化

  1. 源语言文件:src/locale/en_US/LC_MESSAGES/django.po
  2. 提取新字符串:
    python3 manage.py makemessages -l en_US
    
  3. 编译翻译文件:
    python3 manage.py compilemessages
    

添加新语言需要更新 settings.py 中的 LANGUAGES 列表。

扩展 Paperless-ng

虽然 Paperless-ng 没有插件系统,但可以通过以下方式扩展功能。

自定义文档解析器

可以创建自定义解析器来处理新的文件类型:

  1. 继承 documents.parsers.DocumentParser
  2. 实现 parse()get_thumbnail() 方法
  3. 可选实现 get_date() 方法

示例解析器结构:

class MyCustomParser(DocumentParser):
    def parse(self, document_path, mime_type):
        self.text = "提取的文本内容"
        self.archive_path = "生成的PDF路径"
        self.date = "提取的日期"

    def get_thumbnail(self, document_path, mime_type):
        return "缩略图路径"

注册解析器:

def myparser_consumer_declaration(sender, **kwargs):
    return {
        "parser": MyCustomParser,
        "weight": 0,
        "mime_types": {
            "application/pdf": ".pdf",
            "image/jpeg": ".jpg",
        }
    }

构建与部署

文档构建

使用 Sphinx 构建文档:

cd docs/
pipenv run make clean html

Docker 镜像构建

  1. 构建前端:
    ./compile-frontend.sh
    
  2. 构建 Docker 镜像:
    docker build . -t your-tag
    

结语

本文详细介绍了 Paperless-ng 项目的开发环境搭建、前后端开发流程、本地化支持以及如何扩展系统功能。通过遵循这些指南,开发者可以轻松地参与到 Paperless-ng 项目的开发中,或者基于它构建自己的文档管理系统扩展。

对于开发者来说,理解 Paperless-ng 的架构和工作原理是进行有效开发的关键。项目采用了 Django 作为后端框架,Angular 作为前端框架,这种分离的架构使得前后端可以独立开发和测试,同时也便于扩展和维护。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凤瑶熠Paulette

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值