【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)程序的编译和链接
源文件 ---> 可执行文件,这一过程要执行的流程: 预处理 编译 汇编 链接 组成每一个程序的每个源文件通过编译过程分别转换成目标代码;每个目标代码由链接器捆绑在一起,形成一个单一而完整的可执行程序;链接器同时也会引入标准函数库中任何被该程序所用到的函数,而且它可以…...

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...