青

一言

部署 Stirling PDF 工具

部署 Stirling PDF 工具

Stirling-PDF

完整说明及部署请参见 Stirling-PDF 在 Github 上的页面

说明

这是一个强大的本地托管的基于 Web 的 PDF 操作工具,包含 docker 版本,允许您对 PDF 文件执行各种操作,
例如拆分合并、转换、重新组织、添加图像、旋转、压缩等。
这个本地托管的 Web 应用程序最初是 100% ChatGPT 制作的应用程序,现已发展到包含广泛的功能来满足您的所有 PDF 需求。

部署

使用 Docker Compose 快速部署,以方便后续下载和调整配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

version: "3.9"
services:
pdftool:
image: frooodle/s-pdf:latest
container_name: pdftools
network_mode: bridge
ports:
- 18086:8080
environment:
- INSTALL_BOOK_AND_ADVANCED_HTML_OPS=true
- SYSTEM_CONNECTIONTIMEOUTMINUTES=1200
- DOCKER_ENABLE_SECURITY=true
- https_proxy=
- http_proxy=
- PUID=1000
- PGID=1000
volumes:
- ./d/testdata:/usr/share/tesseract-ocr/5/tessdata
- ./d/configs:/configs
- ./d/logs:/logs
restart: unless-stopped
dns:
- 223.5.5.5
- 119.29.29.29
- "2400:3200::1"
- "2402:4e00::"

该配置将会在本地的 18086 端口作为服务端口,同时将配置文件、日志文件、OCR 数据文件挂载到本地目录,包括:

  • ./d/testdata:OCR 数据文件
  • ./d/configs:配置文件
  • ./d/logs:日志文件
1
docker compose up -d

首次启动后配置文件会自动生成,根据需要进行调整。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
security:
enableLogin: true # set to 'true' to enable login
csrfDisabled: true
loginAttemptCount: 5 # lock user account after 5 tries
loginResetTimeMinutes : 120 # lock account for 2 hours after x attempts

system:
defaultLocale: 'zh-CN' # Set the default language (e.g. 'de-DE', 'fr-FR', etc)
googlevisibility: false # 'true' to allow Google visibility (via robots.txt), 'false' to disallow
enableAlphaFunctionality: false # Set to enable functionality which might need more testing before it fully goes live (This feature might make no changes)

ui:
appName: PDF 处理工具 # 应用程序名
homeDescription: 嘿,如果遇到什么问题,那一定是你的问题。 # 短小精干的描述
appNameNavbar: PDF 工具箱 # 显示在 Logo 旁边的名称

endpoints:
toRemove: [] # List endpoints to disable (e.g. ['img-to-pdf', 'remove-pages'])
groupsToRemove: [] # List groups to disable (e.g. ['LibreOffice'])

metrics:
enabled: true # 'true' to enable Info APIs (`/api/*`) endpoints, 'false' to disable
AutomaticallyGenerated:
key: {{ API_KEY }}

访问容器内的文件

1
2
docker exec -it pdftools /bin/bash
ls -l

根目录下的 app.jar 是程序的主体,如果启用了安全登录僵尸链接到 app-security.jar 的软链接。

1
2
3
4
5
6
7
8
ls -l /scripts/

# total 24
# -rwxr-xr-x 1 stirling stirling 3349 Mar 13 22:11 PropSync.java
# -rwxr-xr-x 1 stirling stirling 1266 Mar 13 22:11 download-security-jar.sh
# -rwxr-xr-x 1 stirling stirling 1122 Mar 13 22:11 init-without-ocr.sh
# -rwxr-xr-x 1 stirling stirling 2385 Mar 25 03:43 init.sh
# -rwxr-xr-x 1 stirling stirling 4727 Mar 13 22:11 split_photos.py

其中 init.sh 是初始化脚本,容器启动时会被调用,可以根据需要(如网络存在特殊需求)进行修改,
在根目录下使用 download-security-jar.sh 可以下载带登录功能的 jar 文件并替换当前。

配置登录

根据上述 compose 文件启动将自动下载带登录功能的 jar 程序(还会根据 INSTALL_BOOK_AND_ADVANCED_HTML_OPS 自动下载),也可直接打开容器控制台下载,
在配置文件中设置 security.enableLogin: true 后,
访问 http://localhost:18086 会看到登录界面,初始用户名为 admin,密码为 stirling,首次登录将强制修改。

速览

登录界面

速览

PDF 中文乱码

使用 Markdown、html 等格式导出的 PDF 中文乱码,需要在容器内安装中文字体,容器内包含 libreoffice,下载字体后并放置(映射)到
/usr/share/fonts/truetype/ 目录下,执行 fc-cache -fv 更新字体缓存即可。

本文作者:
本文链接:https://tdh6.top/%E6%9D%82%E9%A1%B9/pdftools/
版权声明:本站文章采用 CC BY-NC-SA 3.0 CN 协议进行许可,翻译文章遵循原文协议。
图片来源:本站部分图像来源于网络,前往查看 相关说明。