【Docker项目实战篇】Docker部署PDF多功能工具Stirling-PDF
【Docker项目实战篇】Docker部署PDF多功能工具Stirling-PDF
- 前言
- 一、Stirling-PDF介绍
- 1.1 Stirling-PDF简介
- 1.2 Stirling-PDF功能
- 二、本次实践规划
- 2.1 本地环境规划
- 2.2 本次实践介绍
- 三、本地环境检查
- 3.1 检查Docker服务状态
- 3.2 检查Docker版本
- 3.3 检查docker compose 版本
- 四、下载Stirling-PDF镜像
- 五、部署Stirling-PDF
- 5.1 创建部署目录
- 5.2 编辑部署文件
- 5.3 创建Stirling-PDF容器
- 5.4 查看Stirling-PDF容器状态
- 5.5 查看Stirling-PDF容器日志
- 六、访问PDF多功能工具Stirling-PDF
- 6.1 访问Stirling-PDF首页
- 6.2 设置系统中文
- 七、Stirling-PDF工具的基本使用
- 7.1 将word文档转换为PDF文档
- 7.2 PDF转换为word
- 八、总结
前言
之前使用Docker部署过Stirling-PDF项目,当时的版本为0.22.2,其中部分功能使用起来可能存在bug。现在该项目已经更新到了0.26.1版本,部分bug得到修复,同时Stirling-PDF界面有了较大变化,更加的美观,现在来体验一下新版本以及功能。
一、Stirling-PDF介绍
1.1 Stirling-PDF简介
Stirling-PDF:这是一个使用 Docker 的强大的、本地托管的基于 Web 的 PDF 操作工具。它使您能够对 PDF 文件执行各种操作,包括拆分、合并、转换、重新组织、添加图像、旋转、压缩等。这个本地托管的 Web 应用程序已经发展到包含一套全面的功能,可以满足您的所有 PDF 需求。
1.2 Stirling-PDF功能
| 功能分类 | 功能说明 |
|---|---|
| 页面操作 | 查看和修改PDF:使用PDF.js与Joxit及Liberation字体,支持多页PDF浏览、自定义排序、搜索以及页面注释、绘图、添加文字和图片功能。 |
| 全交互式GUI:用于合并、拆分、旋转、移动PDF及其页面。 | |
| 合并PDF:将多个PDF合并成单个文件。 | |
| 拆分PDF:按指定页码拆分为多个文件或提取所有页面为独立文件。 | |
| 重新组织页面顺序。 | |
| 旋转PDF:以90度为单位旋转。 | |
| 删除页面。 | |
| 多页布局:将PDF格式化为多页页面。 | |
| 缩放页面内容大小。 | |
| 调整对比度。 | |
| 裁剪PDF。 | |
| 自动拆分扫描的PDF(基于物理分隔)。 | |
| 提取页面。 | |
| 将PDF转换为单页。 | |
| 转换操作 | PDF与图片互转。 |
| 常见文件转换为PDF(使用LibreOffice)。 | |
| PDF转换为Word/PPT/其他格式(使用LibreOffice)。 | |
| HTML转PDF。 | |
| URL转PDF。 | |
| Markdown转PDF。 | |
| 安全与权限 | 添加/移除密码。 |
| 更改/设置PDF权限。 | |
| 添加水印。 | |
| 签名/认证PDF。 | |
| 清理PDF。 | |
| 自动屏蔽敏感文字。 | |
| 其他操作 | 添加/生成/编写签名。 |
| 修复PDF。 | |
| 检测并移除空白页。 | |
| 比较两个PDF并显示文本差异。 | |
| 向PDF中添加图片。 | |
| 压缩PDF以减小文件大小(使用OCRMyPDF)。 | |
| 从PDF中提取图片。 | |
| 从扫描件中提取图片。 | |
| 添加页码。 | |
| 根据PDF头部文本自动重命名文件。 | |
| 对PDF进行OCR处理(使用OCRMyPDF)。 | |
| 转换为PDF/A标准(使用OCRMyPDF)。 | |
| 编辑元数据。 | |
| 扁平化PDF。 | |
| 获取PDF所有信息,可查看或导出为JSON。 |
二、本次实践规划
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为centos7.6。
| hostname | IP地址 | 操作系统版本 | Docker版本 | Stirling-PDF版本 |
|---|---|---|---|---|
| ubuntu-docker | 192.168.3.86 | Ubuntu 22.04.1 LTS | 24.0.7 | 0.26.1 |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署PDF多功能工具Stirling-PDF。
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
root@ubuntu-docker:~# systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)Active: active (running) since Fri 2024-06-21 16:45:29 UTC; 9h ago
TriggeredBy: ● docker.socketDocs: https://docs.docker.comMain PID: 3625 (dockerd)Tasks: 12Memory: 26.0MCPU: 3.367sCGroup: /system.slice/docker.service
3.2 检查Docker版本
检查Docker版本
root@ubuntu-docker:~# docker -v
Docker version 24.0.7, build 24.0.7-0ubuntu2~22.04.1
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
root@ubuntu-docker:~# docker compose version
Docker Compose version v2.19.1
四、下载Stirling-PDF镜像
使用本人的阿里云私人镜像仓库下载Stirling-PDF镜像
registry.cn-hangzhou.aliyuncs.com/jeson/s-pdf:0.26.1-fat
root@ubuntu-docker:~# docker pull registry.cn-hangzhou.aliyuncs.com/jeson/s-pdf:0.26.1-fat
0.26.1-fat: Pulling from jeson/s-pdf
d25f557d7f31: Pull complete
c1f8f1be6b13: Pull complete
1f66901a7ce5: Pull complete
64608eef7b1e: Pull complete
b3900a49ca85: Pull complete
cea40baf48ce: Pull complete
Digest: sha256:67ee927cc5b499e32164c25cad5197e9226ced31d319282a7a346b912063909c
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/jeson/s-pdf:0.26.1-fat
registry.cn-hangzhou.aliyuncs.com/jeson/s-pdf:0.26.1-fat
五、部署Stirling-PDF
5.1 创建部署目录
创建部署目录
mkdir -p /data/s-pdf && cd /data/s-pdf
5.2 编辑部署文件
在
/data/s-pdf目录,创建docker-compose.yaml文件,内容如下,其中宿主机映射端口、登录账号密码等可以自定义配置。
version: '3.9'
services:stirling-pdf:image: registry.cn-hangzhou.aliyuncs.com/jeson/s-pdf:0.26.1-fatcontainer_name: Stirling-PDFports:- '6080:8080'volumes:- /data/s-pdf/trainingData:/usr/share/tessdata # OCR 语言支持- /data/s-pdf/extraConfigs:/configs- /data/s-pdf/customFiles:/customFiles/- /data/s-pdf/logs:/logs/environment:DOCKER_ENABLE_SECURITY: true # 启用内部安全功能SECURITY_ENABLELOGIN: true # 启用登录功能SECURITY_INITIALLOGIN_USERNAME: jeven # Stirling-PDF登录账号SECURITY_INITIALLOGIN_PASSWORD: jeven # Stirling-PDF登录密码UI_APPNAME: jeven-PDF # 自定义导航标题INSTALL_BOOK_AND_ADVANCED_HTML_OPS: falseLANGS: zh_CN # 设置语言
5.3 创建Stirling-PDF容器
执行以下命令,创建Stirling-PDF容器。
root@ubuntu-docker:/data/s-pdf# docker compose up -d
[+] Running 2/2✔ Network s-pdf_default Created 0.0s✔ Container Stirling-PDF Started 0.3s
5.4 查看Stirling-PDF容器状态
检查tirling-PDF容器状态状态,确保Stirling-PDF容器正常启动。
[root@ubuntu-docker:/data/s-pdf# docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
Stirling-PDF registry.cn-hangzhou.aliyuncs.com/jeson/s-pdf:0.26.1-fat "tini -- /scripts/in…" stirling-pdf 58 seconds ago Up 57 seconds 0.0.0.0:6080->8080/tcp, :::6080->8080/tcp
5.5 查看Stirling-PDF容器日志
检查Stirling-PDF容器日志,确保Stirling-PDF服务正常运行。
docker compose logs

六、访问PDF多功能工具Stirling-PDF
6.1 访问Stirling-PDF首页
访问地址:http://192.168.3.86:6080,将IP替换为自己服务器IP地址。如果无法访问到以下页面,则检查宿主机的防火墙是否关闭或者放行相关端口,云服务器则还需要设置安全组规则。

6.2 设置系统中文
在登录页,选择系统语言为简体中文,账号密码为我们在部署文件中自定义的,登录即可。


七、Stirling-PDF工具的基本使用
7.1 将word文档转换为PDF文档
点击菜单栏中的
转换成PDF模块,选择将“将文件转换为PDF文件”。

选择文件,点击转化为PDF。

转换成功后,浏览器会自动下载到本地。

测试将转换后的pdf文档打开,浏览正常。

7.2 PDF转换为word
点击菜单栏中的
从PDF转换模块,选择"PDF转换为word"。

上传文件,点击“转换”。

PDF文件会转换成word文件,浏览器自动下载到本地。

打开下载到本地的word文件,浏览文件内容。

八、总结
Stirling-PDF是一款功能强大的PDF工具。最新版本修复了以前版本中的一些bug,并且有更美观漂亮的界面,使用起来更加流畅。它是一款非常优秀的PDF工具,可以极大地提高我们的工作效率。我已经将它部署到本地个人工具库中了。
相关文章:
【Docker项目实战篇】Docker部署PDF多功能工具Stirling-PDF
【Docker项目实战篇】Docker部署PDF多功能工具Stirling-PDF 前言一、Stirling-PDF介绍1.1 Stirling-PDF简介1.2 Stirling-PDF功能 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四…...
【算法训练记录——Day37】
Day37——贪心Ⅴ 1.leetcode_56合并区间 1.leetcode_56合并区间 思路:排序,如果重叠,更新right 为max(right, curVal), 不重叠就加入res,需要单独考虑最后一次,因为每次都是在下一次遍历开始时判断是否加入res,因此 当…...
OpenCV 张正友标定法(二)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 在之前的博客OpenCV 张氏标定法中,我们没有考虑镜头畸变等因素,因此计算出的内参与外参均是理想情况下的数值,而如果我们考虑到镜头的畸变: 我们就需要考虑使用最小二乘法最小化像素坐标的重投影误差(上述所求…...
LeetCode题练习与总结:环形链表Ⅱ--142
一、题目描述 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测…...
【kaptcha】kaptcha验证码的使用-SpringBoot集成
Kaptcha验证码的依赖 <dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version> </dependency> Kaptcha验证码的配置类,对验证码的一些属性进行配置&#x…...
golang template模板嵌套语法 为何不能使用变量 底层源码解析
我们都知道在golang的模板语法中,我们可以使用template关键字嵌套其他模块, 如: {{template "模板文件名" .}} 然而,这里的 “模板文件名” 是不能使用变量的! 注意这里最后的的 . 这个实际上是templa…...
【Linux】线程Thread
🔥博客主页: 我要成为C领域大神🎥系列专栏:【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 线程概述 …...
RAG技术:在自然语言处理中的深度融合与创新
在自然语言处理(NLP)领域,随着技术的不断进步,我们见证了各种创新方法的涌现。其中,检索增强生成(Retrieval-Augmented Generation,简称RAG)技术以其独特的优势,逐渐成为…...
什么是std::bind
2024年6月29日,周日下午 std::bind 是一个C11标准库中的函数,它用于将一个函数或函数对象与特定的参数绑定在一起,生成一个新的函数对象。 std::bind通常和std::function一起使用,因为std::function可以作为一个函数容器来接收st…...
C语言的数据结构:树与二叉树(哈夫曼树篇)
前言 上篇讲完了二叉树,二叉树的查找性能要比树好很多,如平衡二叉树保证左右两边节点层级相差不会大于1,其查找的时间复杂度仅为 l o g 2 n log_2n log2n,在两边层级相同时,其查找速度接近于二分查找。1w条数据&am…...
docker 安装syslog
Syslog-ng是一个可靠、多功能的日志管理系统,用于收集日志并将其转发到指定的日志分析工具。 使用Docker CLI方式搭建 步骤 1: 拉取Syslog-ng镜像 首先,需要从Docker Hub拉取Syslog-ng的官方镜像。 docker pull balabit/syslog-ng:latest 步骤 2: 启动…...
什么是无头浏览器?
简而言之,无头浏览器是没有图形用户界面 (GUI) 的 Web 浏览器。GUI 包括用户与之交互的数字元素,例如按钮、图标和窗口。但是,关于无头浏览器,您需要了解的还有很多。 在本文中,您将了解什么是…...
【面试干货】与的区别:位运算符与逻辑运算符的深入探讨
【面试干货】&与&&的区别:位运算符与逻辑运算符的深入探讨 1、&:位运算符2、&&:逻辑运算符3、&与&&的区别 💖The Begin💖点点关注,收藏不迷路💖 & 和 …...
搭建Renesas R7FA8D1BHECBD-BTB的开发调试环境(DAP-LINK: N32G45XVL-STB)
目录 概述 1 软硬件 1.1 软硬件环境信息 1.2 开发板信息 1.3 调试器信息 2 FSP和KEIL产生测试项目 2.1 FSP生成项目 2.2 Keil中配置 3 硬件连接框图 4 一个测试案例 4.1 功能介绍 4.2 定时器函数 5 测试 搭建Renesas R7FA8D1BHECBD-BTB的开发调试环境(…...
探索人工智能和LLM对未来就业的影响
近年来,人工智能(AI)迅猛发展,引发了人们的兴奋,同时也引发了人们对就业未来的担忧。大型语言模型(LLM)就是最新的例子。这些强大的人工智能子集经过大量文本数据的训练,以理解和生成…...
钓鱼网站原理与攻防
知识点:LAMP平台部署,Web架构分析,钓鱼网站原理与搭建 中间件: 中间件是一种独立的软件,位于客户机和服务器之间,主要用于在网络环境中进行数据的传输和通信。它充当客户端和服务端之间的桥梁,…...
Windows 中 Chrome / Edge / Firefox 浏览器书签文件默认存储路径
1. Chrome 浏览器 按组合键 Win R,打开运行对话框,输入 %USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default或在Chrome 浏览器地址栏输入 chrome://version查看【个人资料路径】 2. Edge 浏览器 按组合键 Win R,打开运行对…...
秋招Java后端开发冲刺——关系型数据库篇(Mysql)
本文介绍关系型数据库及其代表Mysql数据库,并介常见面试题目。 一、数据库概述 1. 数据库(Database, DB):是长期储存在计算机内的、有组织的、可共享的数据集合。 2. 数据库管理系统(Database Management System, D…...
DHCP原理1-单个局域网出现多个DHCP服务器会发生什么
1. 背景 DHCP全称是Dynamic Host Configuration Protocol。其协议标准是RFC1541(已被RFC2131取代),主要实现服务器向客户端动态分配IP地址(如IP地址、子网掩码、网关、DNS)和配置信息。其系统架构是标准的C/S架构。RFC…...
24/06/29(21.1205)程序的编译和链接
源文件 ---> 可执行文件,这一过程要执行的流程: 预处理 编译 汇编 链接 组成每一个程序的每个源文件通过编译过程分别转换成目标代码;每个目标代码由链接器捆绑在一起,形成一个单一而完整的可执行程序;链接器同时也会引入标准函数库中任何被该程序所用到的函数,而且它可以…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
大数据治理的常见方式
大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法,以下是几种常见的治理方式: 1. 数据质量管理 核心方法: 数据校验:建立数据校验规则(格式、范围、一致性等)数据清洗&…...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...
