自建一个PDF工具箱 - Stirling PDF,满足你的所有PDF需求,完全免费
1.介绍
这是一个强大的本地托管基于 Web 的 PDF 操作工具,使用 docker,允许您对 PDF 文件执行各种操作,例如拆分合并、转换、重新组织、添加图像、旋转、压缩等。这个本地托管的 Web 应用程序最初是 100% ChatGPT 制作的应用程序,现已发展到包含广泛的功能来满足您的所有 PDF 需求。
Stirling PDF 不会发出任何记录保存或跟踪的呼出电话。
所有文件和 PDF 要么仅存在于客户端,仅在任务执行期间驻留在服务器内存中,要么仅在执行任务时临时驻留在文件中。届时,用户下载的任何文件都将从服务器中删除。
特点:
- 深色模式支持。
- 自定义下载选项
- 并行文件处理和下载
- 用于与外部脚本集成的 API
- 可选的登录和身份验证支持
2. 项目展示
3. 相关地址
官方GitHub地址:https://github.com/Stirling-Tools/Stirling-PDF
4.docker 部署
Stirling PDF 有 3 个不同的版本:完整版、精简版和超精简版。根据您使用的功能类型,您可能需要较小的图像以节省空间。
Docker 部署
docker run -d \
-p 8080:8080 \
-v /location/of/trainingData:/usr/share/tessdata \
-v /location/of/extraConfigs:/configs \
-v /location/of/logs:/logs \
-e DOCKER_ENABLE_SECURITY=false \
-e INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false \
--name stirling-pdf \
frooodle/s-pdf:latest
Can also add these for customisation but are not required
-v /location/of/customFiles:/customFiles \
Docker Compose 部署
version: '3.3'
services:
stirling-pdf:
image: frooodle/s-pdf:latest
ports:
- '8080:8080'
volumes:
- /location/of/trainingData:/usr/share/tessdata #Required for extra OCR languages
- /location/of/extraConfigs:/configs
# - /location/of/customFiles:/customFiles/
# - /location/of/logs:/logs/
environment:
- DOCKER_ENABLE_SECURITY=false
- INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false
注意:Podman 与 Docker 的 CLI 兼容,因此只需将“docker”替换为“podman”即可。
启用 OCR/压缩功能(可选)
请查看官方文档
https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToUseOCR.md
额外说明
- 端点。目前,端点 ENDPOINTS_TO_REMOVE 和 GROUPS_TO_REMOVE 可以包含要禁用的端点和组的逗号分隔列表,例如 ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages 将禁用图像到 pdf 和删除页面,GROUPS_TO_REMOVE=LibreOffice 将禁用所有功能使用 LibreOffice。您可以在下面查看所有端点和组的列表
Operation | PageOps | Convert | Security | Other | CLI | Python | OpenCV | LibreOffice | OCRmyPDF | Java | Javascript |
---|---|---|---|---|---|---|---|---|---|---|---|
adjust-contrast | ✔️ | ✔️ | |||||||||
auto-split-pdf | ✔️ | ✔️ | |||||||||
crop | ✔️ | ✔️ | |||||||||
extract-page | ✔️ | ✔️ | |||||||||
merge-pdfs | ✔️ | ✔️ | |||||||||
multi-page-layout | ✔️ | ✔️ | |||||||||
pdf-organizer | ✔️ | ✔️ | ✔️ | ||||||||
pdf-to-single-page | ✔️ | ✔️ | |||||||||
remove-pages | ✔️ | ✔️ | |||||||||
rotate-pdf | ✔️ | ✔️ | |||||||||
scale-pages | ✔️ | ✔️ | |||||||||
split-pdfs | ✔️ | ✔️ | |||||||||
file-to-pdf | ✔️ | ✔️ | ✔️ | ||||||||
img-to-pdf | ✔️ | ✔️ | |||||||||
pdf-to-html | ✔️ | ✔️ | ✔️ | ||||||||
pdf-to-img | ✔️ | ✔️ | |||||||||
pdf-to-pdfa | ✔️ | ✔️ | ✔️ | ||||||||
pdf-to-markdown | ✔️ | ✔️ | |||||||||
pdf-to-presentation | ✔️ | ✔️ | ✔️ | ||||||||
pdf-to-text | ✔️ | ✔️ | ✔️ | ||||||||
pdf-to-word | ✔️ | ✔️ | ✔️ | ||||||||
pdf-to-xml | ✔️ | ✔️ | ✔️ | ||||||||
xlsx-to-pdf | ✔️ | ✔️ | ✔️ | ||||||||
add-password | ✔️ | ✔️ | |||||||||
add-watermark | ✔️ | ✔️ | |||||||||
cert-sign | ✔️ | ✔️ | |||||||||
change-permissions | ✔️ | ✔️ | |||||||||
remove-password | ✔️ | ✔️ | |||||||||
sanitize-pdf | ✔️ | ✔️ | |||||||||
add-image | ✔️ | ✔️ | |||||||||
add-page-numbers | ✔️ | ✔️ | |||||||||
auto-rename | ✔️ | ✔️ | |||||||||
change-metadata | ✔️ | ✔️ | |||||||||
compare | ✔️ | ✔️ | |||||||||
compress-pdf | ✔️ | ✔️ | ✔️ | ||||||||
extract-image-scans | ✔️ | ✔️ | ✔️ | ✔️ | |||||||
extract-images | ✔️ | ✔️ | |||||||||
flatten | ✔️ | ✔️ | |||||||||
get-info-on-pdf | ✔️ | ✔️ | |||||||||
ocr-pdf | ✔️ | ✔️ | ✔️ | ||||||||
remove-blanks | ✔️ | ✔️ | ✔️ | ✔️ | |||||||
repair | ✔️ | ✔️ | ✔️ | ||||||||
show-javascript | ✔️ | ✔️ | |||||||||
sign | ✔️ | ✔️ |
- 自定义静态文件路径。通过将文件放置在 /customFiles/static/ 目录中来自定义静态文件,例如应用程序徽标。自定义应用程序徽标的一个示例是放置 /customFiles/static/favicon.svg 来覆盖当前的 SVG。这可用于更改 Stirling-PDF 中的任何图像/图标/css/字体/js 等
环境参数
SYSTEM_ROOTURIPATH
即设置为/pdf-app
将应用程序的根 URI 设置为localhost:8080/pdf-app
SYSTEM_CONNECTIONTIMEOUTMINUTES
设置自定义连接超时值DOCKER_ENABLE_SECURITY
告诉 docker 下载安全 jar(身份验证登录时需要为 true)INSTALL_BOOK_AND_ADVANCED_HTML_OPS
将 calibre 下载到 Stirling-pdf 上,启用 pdf 与书籍之间的转换以及高级 html 转换
先决条件
- 用户必须将 ./configs 文件夹卷入 docker 中,以便在更新期间保留它。
DOCKER_ENABLE_SECURITY
Docker 使用者必须通过在环境变量中设置来下载安全 jar 版本true
。- 然后通过 settings.yml 文件或通过设置启用
SECURITY_ENABLE_LOGIN
登录true
admin
现在将使用用户名和密码生成初始用户stirling
。登录时,您将被迫将密码更改为新密码。您还可以使用环境变量SECURITY_INITIALLOGIN_USERNAME
并SECURITY_INITIALLOGIN_PASSWORD
立即设置自己的环境变量(建议在创建用户后将其删除)。
完成上述操作后,重新启动时,新的 Stirling-pdf-DB.mv.db 将显示是否一切正常。
当您登录 Stirling PDF 时,您将被重定向到 /login 页面以使用这些默认凭据登录。登录后一切正常
要访问您的帐户设置,请转至设置齿轮菜单中的帐户设置(导航栏右上角)。您还可以在该帐户设置菜单中找到 API 密钥。
要添加新用户,请转到帐户设置底部并点击“管理设置”,您可以在此处添加新用户。其中提到的不同角色用于速率限制。这是一项正在进行的工作,将来会扩展更多
对于 API 使用,您必须提供包含“X-API-Key”的标头以及该用户的关联 API 密钥。
常问问题
Q1:计划接下来的功能?
- 进度条/跟踪
- 完整的自定义逻辑管道可将多个操作组合在一起。
- 文件夹支持自动扫描以执行操作
- 编辑文本(通过 UI 而不仅仅是自动方式)
- 添加表格
- 多页面布局(将 PDF 页面拼接在一起)支持 x 行 y 列和自定义页面大小
- 手动或自动填写表格
问题 2:为什么我的应用程序下载 .htm 文件?
这是一个通常由 NGINX 配置引起的问题。NGINX 的默认文件上传大小为 1MB,您需要在 Nginx 站点可用文件中添加以下内容。client_max_body_size SIZE;
其中“SIZE”为 50M(例如 50MB 文件)。
Q3:为什么我的下载超时
NGINX 默认有超时值,因此如果您在 NGINX 后面运行 Stirling-PDF,您可能需要设置一个超时值,例如添加配置proxy_read_timeout 3600;
使用教程
- 更新stirling_pdf
cd /root/data/docker_data/stirling_pdf
docker-compose pull
docker-compose up -d # 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。
docker image prune # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像
提示:
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]
输入 y
利用 Docker 搭建的应用,更新非常容易~
- 卸载 stirling_pdf
同样进入安装页面,先停止所有容器
cd /root/data/docker_data/stirling_pdf
docker-compose down
cd ..
rm -rf /root/data/docker_data/stirling_pdf # 完全删除
结尾
祝大家用得开心,有问题可以去 GitHub 提 Issues,也可以在评论区互相交流探讨。
同时,有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!
最后,感谢开发人员们的辛苦付出,让我们能用到这么优秀的项目!
共有 0 条评论