【实用工具】Stirling-PDF: 优质开源的PDF处理工具/编辑工具-含入门安装教程
文章目录
- 项目简介
- 功能展示
- Page Operations 页面操作
- Conversion Operations 转换操作
- Security & Permissions 安全与权限
- Other Operations 其他业务
- 如何安装并使用
- Docker Run
- Docker Compose
项目简介
这是一款使用 Docker 的基于本地托管网络的强大 PDF 操作工具。它能让你在 PDF 文件上执行各种操作,包括分割、合并、转换、重组、添加图像、旋转、压缩等。这个本地托管的网络应用程序已发展到包含一套全面的功能,可满足您对 PDF 的所有要求。
所有文件和 PDF 要么完全存在于客户端,要么仅在任务执行期间存在于服务器内存中,要么仅在任务执行期间暂时存在于文件中。此时,用户下载的任何文件都已从服务器中删除。
由于项目是英文的,博主在这里做一版中文教程,给后来人一些参考。
关注CSDN心若为城,获得计算机领域与人工智能领域的前沿技术。
博主碎碎念,可跳过:
打算重新做做自己这个老号,高中时候开始做CSDN,那会儿写的是NOIP/NOI相关的算法东西,纯粹是写给自己看的;现在时隔多年,我也在清华站稳了脚跟,在互联网开发和量化交易领域都算是小有成就了。
接下来这个号(也许也不止这个号)应该会做三个方向:
AI新技术(或者不局限于AI)的抢先浏览,会向大家说明当下热点论文、热点技术的部署等,以及做一些周报或者日报。(类似于AI Weekly)
量化交易相关,我在量化开发技术栈有着多年的开发经验,也拿过一些投资比赛的奖项。可以面向应届生给出就业规划,提供一些指导的同时分享一些含金量高的项目。
互联网面试相关,我应该会着重于分享一些面试的底层技术面,并且尽可能和2进行一些结合,让大家同时能handle住两边的技术。
功能展示
想要下载release版本,点这里
这是界面示例:

Page Operations 页面操作
- 查看和修改 PDF - 通过自定义查看排序和搜索功能查看多页 PDF。此外还有页面编辑功能,如注释、绘图、添加文本和图像。(将 PDF.js 与 Joxit 和 Liberation.Liberation 字体结合使用)
- 完全交互式图形用户界面,用于合并/分割/旋转/移动 PDF 文件及其页面。
- 将多个 PDF 文件合并为一个结果文件。
- 按指定页码将 PDF 文件分割成多个文件,或将所有页面提取为单独文件。
- 将 PDF 页面重组为不同的顺序。
- 以 90 度为增量旋转 PDF 文件。
- 删除页面。
- 多页布局(将 PDF 格式化为多页)。
- 按设定的百分比缩放页面内容大小。
- 调整对比度。
- 剪裁PDF。
- 自动分割 PDF(使用物理扫描的分页符)。
- 将 PDF 转换为单页。
Conversion Operations 转换操作
- 将 PDF 转换成图像或从图像转换成 PDF。
- 将任何普通文件转换为 PDF(使用 LibreOffice)。
- 将 PDF 转换为 Word/Powerpoint/其他文档(使用 LibreOffice)。
- 将 HTML 转换为 PDF。
- URL 转 PDF。
- 将 Markdown 转换为 PDF。
Security & Permissions 安全与权限
- 添加和删除密码
- 更改/设置 PDF 权限
- 添加水印。
- 认证/签署 PDF
- 对 PDF 文件进行杀毒
- 自动删节文本
Other Operations 其他业务
- 添加/生成/写入签名。
- 修复 PDF。
- 检测并删除空白页
- 比较两个 PDF 文件并显示文本差异。
- 为 PDF 添加图像
- 压缩 PDF 文件以减小其文件大小(使用 OCRMyPDF)。
- 从 PDF 中提取图像
- 从扫描中提取图像
- 添加页码。
- 通过检测 PDF 标题文本自动重命名文件。
- OCR on PDF(使用 OCRMyPDF)。
…
还有很多功能博主感觉不是很常用,因此就先介绍到这里啦~
想要查看Demo,可以访问这个网址进行访问。
如何安装并使用
我们使用Docker进行安装部署,来节约大家的时间。
Stirling PDF 有 3 个不同版本,即完整版、超精简版和 "胖 "版。根据您使用的功能类型,您可能需要更小的图像来节省空间。要了解不同版本提供的功能,请查看我们的版本映射 对于不介意空间优化的用户,只需使用最新标签即可。
请注意,在以下示例中,您可能需要根据需要更改卷路径,当前示例将它们安装到当前工作目录,例如 ./extraConfigs:/configs 改为 /opt/stirlingpdf/extraConfigs:/configs
Docker Run
docker run -d \-p 8080:8080 \-v ./trainingData:/usr/share/tessdata \-v ./extraConfigs:/configs \-v ./logs:/logs \-e DOCKER_ENABLE_SECURITY=false \-e INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false \-e LANGS=en_GB \--name stirling-pdf \frooodle/s-pdf:latestCan 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:latestports:- '8080:8080'volumes:- ./trainingData:/usr/share/tessdata #Required for extra OCR languages- ./extraConfigs:/configs
# - ./customFiles:/customFiles/
# - ./logs:/logs/environment:- DOCKER_ENABLE_SECURITY=false- INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false- LANGS=en_GB
通过Docker Run, 我们就跑起来整个PDF工具啦~祝大家玩的开心。最后,关注CSDN心若为城,获得计算机领域与人工智能领域的前沿技术。
相关文章:
【实用工具】Stirling-PDF: 优质开源的PDF处理工具/编辑工具-含入门安装教程
文章目录 项目简介功能展示Page Operations 页面操作Conversion Operations 转换操作Security & Permissions 安全与权限Other Operations 其他业务 如何安装并使用Docker RunDocker Compose 项目简介 这是一款使用 Docker 的基于本地托管网络的强大 PDF 操作工具。它能让…...
opencv 深度图视差图可视化案例
参考:https://www.cnblogs.com/zyly/p/9373991.html(图片这里面下载的) https://blog.csdn.net/He3he3he/article/details/101053457 原理 双目摄像头 视差公式: 三角形对应推算 深度距离转换: 这里d是视差Disparity 代码 下面两种计算视差方法: import os impor…...
Golang | Leetcode Golang题解之第330题按要求补齐数组
题目: 题解: func minPatches(nums []int, n int) (patches int) {for i, x : 0, 1; x < n; {if i < len(nums) && nums[i] < x {x nums[i]i} else {x * 2patches}}return }...
算法训练(leetcode)第五十二天 | Bellman_ford 队列优化算法(SPFA)、BF算法判断负回路、BF之单源有限最短路(有负回路)
刷题记录 94. 城市间货物运输 I-Bellman_ford 队列优化算法(SPFA)95. 城市间货物运输 II-BF算法判断负回路96. 城市间货物运输 III-BF之单源有限最短路(有负回路) 94. 城市间货物运输 I-Bellman_ford 队列优化算法(SPFA) 题目地址…...
SpringBoot中整合RabbitMQ(测试+部署上线 最完整)
一、RabbitMQ安装 由于在测试环境中,我们现在虚拟机上基于docker安装mq docker run \-e RABBITMQ_DEFAULT_USERquick \-e RABBITMQ_DEFAULT_PASS123 \-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \--network your-net\-d \r…...
算法板子:线性DP——算出三角形中的最大路径值、求最长上升子序列、求最长公共子序列
目录 一、数字三角形——算出三角形中的最大路径值 二、最长上升子序列——求一个数组中的最长递增子序列 三、最长公共子序列——求两个字符串中的最长公共子序列 一、数字三角形——算出三角形中的最大路径值 #include <iostream> using namespace std;const int N …...
【C++】值传递
函数值传递的特点:值传递过程中即使形参改变也不会改变实参 没有返回值的函数用“ void ”定义 下面是一个实例: #include<iostream> using namespace std;//值传递 //定义函数,实现两个数字进行交换函数//如果函数不需要返回值&…...
工业三防平板助力MES系统打造工厂移动式生产管理
随着工业4.0时代的到来,智能制造、数字化车间等概念层出不穷,生产过程的可视化管理也成为了企业提升效率、优化生产的关键。而工业三防平板,凭借其坚固耐用、功能强大、便携易用等特性,成为了实现生产过程可视化管理的重要利器&am…...
keepalived+nginx实现的简单高可用故障转移
keepalived和nginx和适配 nginx服务停止后对keepalived的影响最近研究了一下keepalived绑定虚拟Ip,然后实现集群的方案,发现实现故障转移的模式,只有在keepalived服务整个挂掉后才能实现虚拟IP的漂移,和实际应用的场景不怎么适配,所以把它和nginx结合在一起实现集群高可用…...
openai api使用
1OpenAI 的 API 介绍 1.1 api分类 常用的 OpenAI Api 接口总共分为 4 类:对话类、私有化模型训练类、通用类、图片 & 音频类,其中对话类与私有化模型训练类是最常用的。 a .对话类 这类是最常用也是最核心的接口,用于人机对话。对话类…...
带你走进haproxy的世界
华子目录 前言什么是负载均衡为什么用haproxy负载均衡负载均衡公司负载均衡类型四层负载均衡七层负载均衡四层和七层的区别 haproxy介绍haproxy的安装与服务信息软件安装haproxy基本配置信息proxies配置socat工具 haproxy算法静态算法动态算法其他算法 高级功能及配置基于cooki…...
STM32--中断使用(超详细!)
STM32中断机制是嵌入式系统设计中一个非常重要的组成部分,它允许单片机在执行程序的过程中,对外部或内部发生的事件做出快速响应。以下是一篇关于STM32中断机制的详细介绍和示例代码,希望能够帮助你更好地理解和应用中断。 一、中断的基本概…...
【深度学习实践】基于深度学习的图像去雾算法-ChaIR-实践
本文介绍一个去雾算法ChaIR的使用方法,可以完成图像去雾,也可以用于图像去雨、去噪音等任务。本文不涉及论文原理,只包含源代码的跑通和使用。 先展示一下效果: 原图去雾 论文:Exploring the potential of channel …...
《乳腺密度高的女性中,使用AI辅助的乳腺X线筛查与补充筛查超声的比较研究》| 文献速递-基于深度学习的乳房、前列腺疾病诊断系统
Title 题目 Screening Outcomes of Mammography with AI in Dense Breasts: A Comparative Study with Supplemental Screening US 《乳腺密度高的女性中,使用AI辅助的乳腺X线筛查与补充筛查超声的比较研究》 Background 背景 Comparative performance between…...
crm 销售管理系统有哪些?国内外排名前十盘点
本文深入对比的 crm销售管理系统有:1.纷享销客; 2.Zoho CRM; 3.销售易; 4.有赞CRM; 5.Salesforce; 6.HubSpot; 7.简道云CRM; 8.爱客CRM; 9.Apptivo。 如果你正寻找一种方…...
package-lock.json 要提交到git吗?
之前一直没有提交package-lock.json文件到git仓库,直到我打包失败了。。。 我才知道package-lock.json需要提交到git仓库。 npm官网建议将package-lock.json一起提交到代码库中,不要忽略它。 package-lock.json的主要作用是锁定dependencies的版…...
算法学习day32
一、解码方法II(解码方法I的升级版) 在I的基础上增加了*,可以代替1-9中任意一个数字,求解码的方法有多少种 输入:s "*" 输出:9 解释:这一条编码消息可以表示 "1"、"…...
知识与智慧
前两天在medium上看到一篇文章,探讨知识(knowledge)和智慧(wisdom)之间的区别,很受启发,结合自己的经历和理解,形成此文: 何为知识 知识通常指的是信息的积累和对特定领…...
使用FFmpeg实现摄像头RTMP实时推流
在当今的数字时代,视频直播已成为连接人与人之间的重要桥梁,广泛应用于在线教育、远程会议、娱乐直播等多个领域。随着技术的不断进步,人们对于直播的实时性、稳定性和高质量需求日益增加。为了实现高效的视频直播,选择合适的工具和协议至关重要。 RTMP(Real-Time Messagi…...
使用 LabVIEW 编程更改 IMAQ/IMAQdx 接口的相机文件
问题详情 可能需要通过编程方式更改与 IMAQ/IMAQdx 接口关联的相机文件。这种需求通常发生在图像采集系统中,例如使用 PCIe-1433 硬件时,可能需要动态切换不同的相机配置文件来适应不同的应用场景。 解决方案 当前在 Measurement & Automation Ex…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
