1、简述
在这篇博客中,我们将探讨如何使用 Docker 来部署和运行 Stirling-PDF,这是一个强大的开源 PDF 处理工具。Stirling-PDF 提供了丰富的 API,可以方便地执行 PDF 的生成、合并、拆分、加密等操作。通过 Docker,我们可以轻松地在任何环境中运行 Stirling-PDF,而无需手动配置依赖项。
Github地址:https://github.com/Stirling-Tools/Stirling-PDF
2、安装
Stirling-PDF 是一个现代化的 PDF 处理工具,它通过 RESTful API 提供了强大的 PDF 操作功能。用户可以使用它来处理各种 PDF 相关的任务。
2.1 拉取 Stirling-PDF Docker 镜像
首先,我们需要从 Docker Hub 拉取 Stirling-PDF 的官方镜像。执行以下命令:
docker pull frooodle/s-pdf:latest
2.2 运行 Stirling-PDF 容器
拉取镜像后,可以使用以下命令来启动 Stirling-PDF 容器:
docker run -d -p 9080:8080 --name stirling-pdf frooodle/s-pdf:latest
这里,我们将容器的 9080 端口映射到宿主机的 8080 端口。运行这个命令后,Stirling-PDF 会在后台运行,您可以通过 http://localhost:9080 来访问 Stirling-PDF 的 API。
2.3 编排安装
首先创建Stirling-PDF的映射目录:
mkdir -p /data/stirling/trainingData
mkdir -p /data/stirling/extraConfigs
mkdir -p /data/stirling/customFiles
mkdir -p /data/stirling/logs
在/data/stirling目录,创建docker-compose.yml文件,内容如下,其中宿主机映射端口、登录账号密码等可以自定义配置:
version: '3.3'
services:
stirling-pdf:
image: registry.cn-hangzhou.aliyuncs.com/jeson/s-pdf:0.26.1-fat
container_name: Stirling-PDF
ports:
- '9080:8080'
volumes:
- /data/stirling/trainingData:/usr/share/tessdata
- /data/stirling/extraConfigs:/configs
- /data/stirling/customFiles:/customFiles/
- /data/stirling/logs:/logs/
environment:
DOCKER_ENABLE_SECURITY: true
SECURITY_ENABLELOGIN: true
SECURITY_INITIALLOGIN_USERNAME: admin
SECURITY_INITIALLOGIN_PASSWORD: admin
UI_APPNAME: jeven-PDF
INSTALL_BOOK_AND_ADVANCED_HTML_OPS: false
LANGS: zh_CN
执行docker-compose 容器指令:
docker-compose up -d
docker-compose logs
3、功能
Stirling-PDF 是一个现代化的开源 PDF 处理工具,它提供了一套丰富的功能,可以通过 API 接口轻松地操作 PDF 文档。以下是 Stirling-PDF 的主要功能的详细介绍:
3.1 PDF 创建
Stirling-PDF 支持从各种数据源(如 HTML、Markdown、文本)生成 PDF 文件。它可以处理复杂的文档结构,包括嵌入图片、表格、图表等。
使用场景:
- 从网页内容生成 PDF 报告。
- 将 Markdown 文件转换为 PDF 格式的文档。
API 示例:
curl -X POST "http://localhost:9080/api/create" \
-H "Content-Type: application/json" \
-d '{
"content": "<h1>Hello, PDF!</h1>",
"type": "html"
}' -o output.pdf
3.2 PDF 合并
Stirling-PDF 可以将多个 PDF 文件合并为一个 PDF 文件,这对于需要将多个文档组合成一个文件的场景非常有用。
使用场景:
- 合并不同章节的文档。
- 将多个发票或报告合并为一个文件。
API 示例:
curl -X POST "http://localhost:9080/api/merge" \
-H "accept: application/json" \
-H "Content-Type: multipart/form-data" \
-F "files=@file1.pdf" \
-F "files=@file2.pdf" \
-o merged.pdf
3.3 PDF 拆分
Stirling-PDF 提供了将一个 PDF 文件拆分为多个文件的功能。用户可以根据页码范围来拆分文件,生成独立的 PDF 文档。
使用场景:
- 拆分大型 PDF 文件,方便发送或存储。
- 从 PDF 文件中提取特定页面。
API 示例:
curl -X POST "http://localhost:9080/api/split" \
-H "accept: application/json" \
-F "file=@document.pdf" \
-F "page_numbers=1,3" \
-o split.pdf
3.4 PDF 加密和解密
Stirling-PDF 支持对 PDF 文件进行加密和解密操作。用户可以为 PDF 文件设置密码保护,也可以解密受保护的 PDF 文件。
使用场景:
- 为敏感文档添加密码保护。
- 解密有权限限制的 PDF 文件以便访问内容。
API 示例(加密):
curl -X POST "http://localhost:9080/api/encrypt" \
-H "accept: application/json" \
-F "file=@document.pdf" \
-F "password=securepassword" \
-o encrypted.pdf
API 示例(解密):
curl -X POST "http://localhost:9080/api/decrypt" \
-H "accept: application/json" \
-F "file=@encrypted.pdf" \
-F "password=securepassword" \
-o decrypted.pdf
3.5 添加水印
Stirling-PDF 可以在 PDF 文件中添加水印,包括文本水印和图像水印。水印可以设置为在每页上显示,或仅在特定页面上显示。
使用场景:
- 在文档上添加公司标志或版权声明。
- 在合同或协议上添加 "CONFIDENTIAL" 等标识。
API 示例(文本水印):
curl -X POST "http://localhost:9080/api/watermark" \
-H "accept: application/json" \
-F "file=@document.pdf" \
-F "text=CONFIDENTIAL" \
-F "font_size=48" \
-o watermarked.pdf
API 示例(图片水印):
curl -X POST "http://localhost:9080/api/watermark" \
-H "accept: application/json" \
-F "file=@document.pdf" \
-F "image=@logo.png" \
-F "position=center" \
-o watermarked.pdf
3.6 PDF 压缩
Stirling-PDF 支持压缩 PDF 文件,以减少文件大小。这个功能对于需要传输大文件或保存空间的场景非常实用。
使用场景:
- 压缩 PDF 文件以便通过电子邮件发送。
- 减少存储空间占用。
API 示例:
curl -X POST "http://localhost:9080/api/compress" \
-H "accept: application/json" \
-F "file=@large.pdf" \
-o compressed.pdf
3.7 PDF 文件格式转换
Stirling-PDF 支持将 PDF 转换为其他文件格式(如图像、文本等),或者将其他格式文件转换为 PDF。
使用场景:
- 提取 PDF 中的文本内容。
- 将 PDF 页面转换为图像。
API 示例(PDF 转图像):
curl -X POST "http://localhost:9080/api/convert" \
-H "accept: application/json" \
-F "file=@document.pdf" \
-F "format=png" \
-o output.png
3.8 PDF 表单处理
Stirling-PDF 支持对 PDF 表单进行处理,允许用户填写、提取或修改 PDF 表单中的数据。
使用场景:
- 自动化处理 PDF 表单数据。
- 批量填写或修改 PDF 表单内容。
API 示例:
curl -X POST "http://localhost:9080/api/form/fill" \
-H "accept: application/json" \
-F "file=@form.pdf" \
-F "fields={\"name\":\"John Doe\", \"date\":\"2024-08-11\"}" \
-o filled_form.pdf
4、总结
Stirling-PDF 提供了一套全面的 PDF 处理功能,可以满足从创建到操作、保护再到转换的多种需求。通过这些功能,开发者可以构建出强大的应用程序,帮助用户自动化和简化他们的 PDF 处理流程。无论是简单的合并和拆分,还是复杂的表单处理和加密操作,Stirling-PDF 都提供了直观的 API 接口,方便集成到各种开发项目中。
如果您有兴趣进一步探索 Stirling-PDF,建议查阅其官方文档,以获取更详细的使用指南和高级功能说明。
评论区