自建一个PDF工具箱 - Stirling PDF,满足你的所有PDF需求,完全免费

img

1.介绍

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

Stirling PDF 不会发出任何记录保存或跟踪的呼出电话。

所有文件和 PDF 要么仅存在于客户端,仅在任务执行期间驻留在服务器内存中,要么仅在执行任务时临时驻留在文件中。届时,用户下载的任何文件都将从服务器中删除。

特点:

  • 深色模式支持。
  • 自定义下载选项
  • 并行文件处理和下载
  • 用于与外部脚本集成的 API
  • 可选的登录和身份验证支持

2. 项目展示

img

img

img

5fa24ad728e6d448450d4e3baa2790a4.png

469fbc4036e49ec3483debf7bca283fb.png

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_SECURITYDocker 使用者必须通过在环境变量中设置来下载安全 jar 版本true
  • 然后通过 settings.yml 文件或通过设置启用SECURITY_ENABLE_LOGIN登录true
  • admin现在将使用用户名和密码生成初始用户stirling。登录时,您将被迫将密码更改为新密码。您还可以使用环境变量SECURITY_INITIALLOGIN_USERNAMESECURITY_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,也可以在评论区互相交流探讨。
同时,有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!
最后,感谢开发人员们的辛苦付出,让我们能用到这么优秀的项目!

版权声明:
作者:wayne
链接:https://www.freeasy.cc/other/88/
来源:江狐筆記
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>