使用 Docker 部署 Stirling-PDF 多功能 PDF 工具

1)Stirling-PDF 介绍

大家应该都有过这样的经历,面对一堆 PDF 文档,或者需要合并几个 PDF,或者需要将一份 PDF 文件拆分,又或者需要调整 PDF 中的页面顺序,找到的线上工具 要么广告满天飞,要么 需要付费使用,再不然就是 担心隐私泄露 的问题。如果你也对此感到困扰,那么自建的 PDF 处理工具 Stirling-PDF 或许是你需要的解决方案。

image.png

1.1)Stirling-PDF 简介

官网:https://stirlingtools.com/
GitHub:https://github.com/Stirling-Tools/Stirling-PDF

Stirling-PDF 是一款基于 Web 的 PDF 操作工具,是一个高效而强大的本地托管应用程序,为您提供广泛的 PDF 文件处理功能。可满足各种 PDF 处理需求。您可以使用它来执行多种操作,例如拆分、合并、转换、重新排列、添加图像、旋转和压缩 PDF 文件。这个本地托管的 Web 应用程序具有出色的性能,能够在本地环境中运行,为您提供更高的数据安全性。不论您是处理文档、电子书还是其他 PDF 相关任务,这个工具都将成为您的得力助手,满足您的一切 PDF 处理需求。

image.png

1.2)Stirling-PDF 功能

  • 合并 PDF 文件: 可以将多个 PDF 文件合并为一个文件。
  • 拆分 PDF 文件: 可以将一个 PDF 文件拆分为多个文件。
  • 旋转 PDF 文件: 可以将 PDF 文件按指定角度旋转。
  • 裁剪 PDF 文件: 可以将 PDF 文件的一部分裁剪出来。
  • 添加水印: 可以向 PDF 文件添加水印。
  • 解锁 PDF: 可以解除 PDF 文件的密码保护。
  • 转换 PDF 格式: 可以将 PDF 文件转换为其他格式,如 Word、Excel、PPT 等。
  • OCR 识别 PDF: 可以将 PDF 文件中的文字转换为文本格式。

1.3)Stirling-PDF 特性

  1. 多语言支持
  2. 丰富的页面操作支持
  3. 多样的转换操作支持
  4. 安全与权限管理功能
  5. 更多扩展功能支持

2)检查 Docker 环境

2.1)安装 Docker 软件包

# 高版本 Docker 安装
curl -fsSL https://get.docker.com/ | sh
# 关闭防火墙
systemctl disable --now firewalld
setenforce 0
# 启用 Docker
systemctl enable --now docker

2.2)检查 Docker 服务状态

systemctl status docker

image.png

2.3)开启 IPv4 forwarding

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
systemctl restart network
sysctl net.ipv4.ip_forward

3)安装 Docker-Compose

3.1)下载 Docker-Compose 二进制包

curl -L https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

3.2)给 Docker-Compose 文件增加执行权限

chmod +x /usr/local/bin/docker-compose

3.3)检查 Docker-Compose 版本信息

docker-compose -v

image.png

4)下载 Stirling-PDF 镜像

注意: 镜像版本我修改为了老版本 0.14.5 ,因为我在测试过程中使用 lastest 版本导出的文件中文乱码

docker pull frooodle/s-pdf:0.14.5

image.png

5)方式一:基于 Docker-Cli 部署 Stirling-PDF 应用

5.1)创建 Stirling-PDF 容器

# 创建数据存储目录
mkdir -p /docker/stirling-pdf/{files,data,configs,logs}
# 基于 Docker-Cli 部署 Stirling-PDF 应用
docker run -d \-p 8888:8080 \-v /docker/stirling-pdf/data:/usr/share/tesseract-ocr/4.00/tessdata \-v /docker/stirling-pdf/files:/customFiles \-v /docker/stirling-pdf/configs:/configs \-v /docker/stirling-pdf/logs:/logs \-e DOCKER_ENABLE_SECURITY=false \-e INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false \--name stirling-pdf \frooodle/s-pdf:0.14.5

image.png

5.2)查看 Stirling-PDF 容器状态

检查 Stirling-PDF 容器状态状态,确保 Stirling-PDF 容器正常启动。

docker ps -a

image.png

5.3)查看 Stirling-PDF 容器日志

检查 Stirling-PDF 容器日志,确保 Stirling-PDF 服务正常运行。

docker logs stirling-pdf

image.png

6)方式二:基于 Docker-Compose 部署 Stirling-PDF 应用

6.1)编辑 Docker-Compose.yaml 文件

vim docker-compose.yaml
version: '3'
services:stirling-pdf:image: frooodle/s-pdf:0.14.5ports:- 8888:8080volumes:- /docker/stirling-pdf/data:/usr/share/tesseract-ocr/4.00/tessdata- /docker/stirling-pdf/configs:/configs- /docker/stirling-pdf/files:/customFiles- /docker/stirling-pdf/logs:/logsenvironment:- DOCKER_ENABLE_SECURITY=false

6.2)运行 Stirling-PDF 容器

# 基于 docker-compose.yaml 启动并运行服务
docker-compose -f docker-compose.yaml up -d

image.png

6.3)验证 Stirling-PDF 容器状态

docker ps -a

image.png

7)访问 Stirling-PDF

7.1)访问 Stirling-PDF 首页

访问:http://192.168.80.8:8888/
注意: 将 IP 替换为自己服务器 IP 地址。

image.png

7.2)设置系统中文

image.png
image.png

8)Stirling-PDF 基本使用

8.1)将 Word 转 PDF 文档

image.png

选择文件,点击转换为 PDF( 将文件拖拽至页面也可以 )

image.png

8.2)将 MarkDown 转 PDF 文档

image.png

上传文件,点击 转换( 将文件拖拽至页面也可以 )

image.png

8.3)文档加密

image.png
效果图

8.4)文档解密

image.png
效果图

8.5)添加水印

image.png
image.png
效果图

9)最后

通过搭建自己的 Stirling-PDF,不仅可以随时随地处理 PDF,而且可以确保私人数据始终在自己的掌控之中,不会被不必要的第三方所获取。

如果你喜欢这篇文章,请记得点赞,收藏,并关注 【开源极客行】 ,我将持续分享更多实用的自搭建应用指南。一起,让我们掌握自己的数据,创建自己的数字世界!

如果你在搭建过程中遇到任何问题,或者有任何建议,也欢迎在下方留言,一起探讨和学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/272734.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析汽车MCU的软件架构

一、背景知识 电动汽车(EV)正在成为首选的交通方式,为传统内燃机汽车提供了一种可持续发展的环保型替代方案。在电动汽车复杂的生态系统中,众多电子控制单元(ECU)在确保其高效运行方面发挥着至关重要的作用…

STM32基本定时功能

1、定时器就是计数器。 2、怎么计数? 3、我们需要有一恒定频率的方波信号,再加上一个寄存器。 4、比如每来一个上升沿信号,寄存器值加1,就可以完成计数。 5、假设方波频率是100Hz,也就是1秒100个脉冲。…

【Pytorch】进阶学习:深入解析 sklearn.metrics 中的 classification_report 函数---分类性能评估的利器

【Pytorch】进阶学习:深入解析 sklearn.metrics 中的 classification_report 函数—分类性能评估的利器 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合…

微信小程序-侧滑删除

简介 movable-view和movable-area是可移动的视图容器,在页面中可以拖拽滑动。 本篇文章将会通过该容器实现一个常用的拖拽按钮功能。 使用效果 代码实现 side-view.wtml 布局见下面代码,left view为内容区域,right view为操作按钮&a…

uniapp让输入框保持聚焦状态,不会失去焦点

使用场景:当输入框还有发送按钮的时候,点击发送希望软键盘不消失,还可以继续输入,或者避免因输入图片标签造成的屏闪问题 多次尝试后发现一个很实用的方法,适用input输入框和editor输入框 解决办法:把cli…

数学建模-动态规划(美赛运用)

动态规划模型的要素是对问题解决的抽象,其可分为: 阶段。指对问题进行解决的自然划分。例如:在最短线路问题中,每进行走一步的决策就是一个阶段。 状态。指一个阶段开始时的自然状况。例如:在最短线路问题中&#xff…

《探索虚拟与现实的边界:VR与AR谁更能引领未来?》

引言 在当今数字时代,虚拟现实(VR)和增强现实(AR)技术正以惊人的速度发展,并逐渐渗透到我们的日常生活中。它们正在重新定义人与技术、人与环境之间的关系,同时也为各行各业带来了全新的可能性。然而,究竟是VR还是AR更有潜力改变未来?本文将围绕这一问题展开深入探讨。…

HTML5:七天学会基础动画网页10

继续介绍3D转换: 3D转换:rotate3d 方法与说明 rrotateX(angle)otate3d(x,y,z,angle[角度]) 3D转换,正常取值0/1,0代表当前轴线不进行旋转,1反之,例:rotate3d(1,1,1,30deg),代表三个轴线都要旋转30度 rotate3d(0…

Django学习笔记

Django学习笔记 一、Django整体流程跑通 1.1安装 pip install django //安装 import django //在python环境中导入django django.get_version() //获取版本号,如果能获取到,说明安装成功Django目录结构 Python310-Scripts\django-admi…

如何在Windows系统使用固定tcp公网地址ssh远程Kali系统

文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过[cpolar 内网穿透](cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站)软件实现ssh 远程连接kali! …

虚函数与纯虚函数有什么区别?

总的来说有两点区别: 1.虚函数的作用主要是矫正指针(口语化的说法) 2.虚函数不一定要重新定义,纯虚函数一定要定义(口语化的说法) 1). 虚函数的作用主要是矫正指针,使得基类的指针…

设计模式学习系列 -- 随记

文章目录 前言 一、设计模式是什么? 二、设计模式的历史 三、为什么以及如何学习设计模式? 四、关于模式的争议 一种针对不完善编程语言的蹩脚解决方案 低效的解决方案 不当使用 五、设计模式分类 总结 前言 最近可能工作生活上的稳定慢慢感觉自己丢失…

力扣中档题:删除排序链表中的 重复元素

此题可以选择暴力解决,首先将链表中的元素放到数组中,然后将数组中的重复元素放到另一个数组中,最后再判断并将目标值放到第三个数组中排序再改链表,注意链表nextNULL的操作 struct ListNode* deleteDuplicates(struct ListNode*…

JVM基本概念、命令、参数、GC日志总结

原文: 赵侠客 一、前言 NPE(NullPointerException)和OOM(OutofMemoryError)在JAVA程序员中扮演着重要的角色,它也是很多人始终摆脱不掉的梦魇,与NPE不同的是OOM一旦在生产环境中出现就意味着只靠代码已经无…

seo蜘蛛池的概念!蚂蚁SEO

蜘蛛池是一种特殊的网络营销技术,它的主要作用是吸引搜索引擎爬虫,提高网站的收录和排名,从而增加网站的流量和曝光度。 蚂蚁SEO是一个SEO工具,可以帮助您提高网站权重,吸引更多的搜索引擎爬虫,提高网站的…

java ~ word模板填充字符后输出到指定目录

word文件格式&#xff1a; jar包&#xff1a; <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.10.0</version></dependency>样例代码&#xff1a; // 封装参数集合Map<String, Ob…

数据库中 SQL Hint 是什么?

前言 最近在调研业界其他数据库中 SQL Hint 功能的设计和实现&#xff0c;整体上对 Oracle、Mysql、Postgresql、 Apache Calcite 中的 SQL Hint 的设计和功能都进行了解&#xff0c;这里整理一篇文章来对其进行梳理&#xff0c;一是帮助自己未来回顾&#xff0c;加深自己的思…

从零开始:神经网络(2)——MP模型

声明&#xff1a;本文章是根据网上资料&#xff0c;加上自己整理和理解而成&#xff0c;仅为记录自己学习的点点滴滴。可能有错误&#xff0c;欢迎大家指正。 神经元相关知识&#xff0c;详见从零开始&#xff1a;神经网络——神经元和梯度下降-CSDN博客 1、什么是M-P 模型 人…

云原生构建 微服务、容器化与容器编排

第1章 何为云原生&#xff0c;云原生为何而生 SOA也就是面向服务的架构 软件架构的发展主要经历了集中式架构、分布式架构以及云原生架构这几代架构的发展。 微服务架构&#xff0c;其实是SOA的另外一种实现方式&#xff0c;属于SOA的子集。 在微服务架构下&#xff0c;系统…

【sgExcelGrid】自定义组件:简单模拟Excel表格拖拽、选中单元格、横行、纵列、拖拽圈选等操作

特性&#xff1a; 可以自定义拖拽过表格可以点击某个表格&#xff0c;拖拽右下角小正方形进行任意方向选取单元格支持选中某一行、列支持监听selectedGrids、selectedDatas事件获取选中项的DOM对象和数据数组支持props自定义显示label字段别名 sgExcelGrid源码 <template&g…