Stirling-PDF

Stirling-PDF

本地部署的全能PDF处理开源解决方案

Stirling-PDF是一款功能全面的开源PDF处理工具,支持本地部署。它提供PDF分割、合并、转换、重组、添加图片、旋转和压缩等多项功能。该工具基于Spring Boot开发,集成PDFBox和LibreOffice等技术,通过Docker快速部署。支持暗黑模式、并行处理和API集成,可满足各类PDF处理需求。

Stirling-PDFPDF处理Docker开源软件文档管理Github开源项目
<p align="center"><img src="https://yellow-cdn.veclightyear.com/835a84d5/dce1f523-e739-4b7c-8e60-48be3602dac8.png" width="80" ></p> <h1 align="center">Stirling-PDF</h1>

Docker 拉取次数 Discord Docker 镜像版本 (最新语义化版本标签) GitHub 仓库星标数 Paypal 捐赠 Github 赞助

部署到 DO <img src="https://yellow-cdn.veclightyear.com/835a84d5/560b2970-0978-4d34-9ce5-d903670c9123.svg" alt="Name" height="40">

这是一个强大的、基于本地托管的Web PDF处理工具,使用Docker部署。它允许您对PDF文件进行各种操作,包括拆分、合并、转换、重新组织、添加图像、旋转、压缩等。这个本地托管的Web应用程序已经发展成为一套全面的功能集,满足您所有的PDF需求。

Stirling PDF不会发起任何外部调用用于记录或跟踪目的。

所有文件和PDF要么仅存在于客户端,要么仅在任务执行期间存在于服务器内存中,或者仅为执行任务而暂时存在于文件中。用户下载的任何文件在此时都已从服务器上删除。

stirling-home

功能

  • 支持深色模式
  • 自定义下载选项
  • 并行文件处理和下载
  • 用于与外部脚本集成的API
  • 可选的登录和身份验证支持(文档请参阅此处
  • 数据库备份和导入(文档请参阅此处

PDF 功能

页面操作

  • 查看和修改PDF - 使用自定义查看排序和搜索功能查看多页PDF。还有页面编辑功能,如注释、绘图以及添加文本和图像。(使用PDF.js,结合Joxit和Liberation字体)
  • 用于合并/拆分/旋转/移动PDF及其页面的完整交互式图形界面。
  • 将多个PDF合并成一个结果文件。
  • 在指定页码处将PDF拆分成多个文件,或将所有页面提取为单独的文件。
  • 重新组织PDF页面顺序。
  • 以90度为增量旋转PDF。
  • 删除页面。
  • 多页面布局(将PDF格式化为多页面页面)。
  • 按设定百分比缩放页面内容大小。
  • 调整对比度。
  • 裁剪PDF。
  • 自动拆分PDF(使用物理扫描的页面分隔符)。
  • 提取页面。
  • 将PDF转换为单页。

转换操作

  • 将PDF与图像互相转换。
  • 将任何常见文件转换为PDF(使用LibreOffice)。
  • 将PDF转换为Word/Powerpoint/其他格式(使用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。

有关任务和每个任务使用的技术的概述,请查看Endpoint-groups.md

应用程序的演示版可在此处获得。

使用的技术

使用方法

本地运行

请查看 https://github.com/Stirling-Tools/Stirling-PDF/blob/main/LocalRunGuide.md

Docker / Podman

https://hub.docker.com/r/frooodle/s-pdf

Stirling PDF有3个不同的版本,一个完整版、一个超轻量版以及一个"胖"版。根据您使用的功能类型,您可能需要一个较小的镜像以节省空间。 要了解不同版本提供的功能,请查看我们的版本映射 对于不介意空间优化的人,只需使用最新标签即可。 Docker镜像大小(标签) Docker镜像大小(标签) Docker镜像大小(标签)

请注意,在以下示例中,您可能需要根据需要更改卷路径,当前示例将它们安装到当前工作目录 例如 ./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:latest 也可以添加以下内容进行自定义,但不是必需的 -v /location/of/customFiles:/customFiles \

Docker Compose

version: '3.3' services: stirling-pdf: image: frooodle/s-pdf:latest ports: - '8080:8080' volumes: - ./trainingData:/usr/share/tessdata #额外OCR语言所需 - ./extraConfigs:/configs # - ./customFiles:/customFiles/ # - ./logs:/logs/ environment: - DOCKER_ENABLE_SECURITY=false - INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false - LANGS=en_GB

注意:Podman在命令行界面上与Docker兼容,因此只需将"docker"替换为"podman"即可。

启用OCR/压缩功能

请查看 https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToUseOCR.md

支持的语言

Stirling PDF 目前支持 38 种语言!

语言进度
阿拉伯语 (العربية) (ar_AR)45%
巴斯克语 (Euskara) (eu_ES)61%
保加利亚语 (Български) (bg_BG)94%
加泰罗尼亚语 (Català) (ca_CA)48%
克罗地亚语 (Hrvatski) (hr_HR)94%
捷克语 (Česky) (cs_CZ)89%
丹麦语 (Dansk) (da_DK)9%
荷兰语 (Nederlands) (nl_NL)95%
英语 (English) (en_GB)100%
美式英语 (en_US)100%
法语 (Français) (fr_FR)93%
德语 (Deutsch) (de_DE)99%
希腊语 (Ελληνικά) (el_GR)81%
印地语 (हिंदी) (hi_IN)76%
匈牙利语 (Magyar) (hu_HU)75%
印度尼西亚语 (Bahasa Indonesia) (id_ID)76%
爱尔兰语 (Gaeilge) (ga_IE)98%
意大利语 (Italiano) (it_IT)99%
日语 (日本語) (ja_JP)92%
韩语 (한국어) (ko_KR)84%
挪威语 (Norsk) (no_NB)97%
波兰语 (Polski) (pl_PL)92%
葡萄牙语 (Português) (pt_PT)78%
巴西葡萄牙语 (Português) (pt_BR)85%
罗马尼亚语 (Română) (ro_RO)38%
俄语 (Русский) (ru_RU)83%
塞尔维亚语拉丁字母 (Srpski) (sr_LATN_RS)78%
简体中文 (zh_CN)98%
斯洛伐克语 (Slovensky) (sk_SK)91%
西班牙语 (Español) (es_ES)97%
瑞典语 (Svenska) (sv_SE)39%
泰语 (ไทย) (th_TH)99%
繁体中文 (zh_TW)97%
土耳其语 (Türkçe) (tr_TR)98%
乌克兰语 (Українська) (uk_UA)89%
越南语 (Tiếng Việt) (vi_VN)98%

贡献(创建问题、翻译、修复错误等)

请参阅我们的贡献指南

自定义

Stirling PDF 允许轻松自定义应用程序。 包括以下内容:

  • 自定义应用程序名称
  • 自定义口号、图标、HTML、图像、CSS 等(通过文件覆盖)

有两种选择,一种是使用生成的设置文件 settings.yml 该文件位于 /configs 目录中,遵循标准的 YAML 格式

环境变量也受支持,并会覆盖设置文件 例如,在 settings.yml 中,你有

security: enableLogin: 'true'

要通过环境变量设置这个,你需要使用 SECURITY_ENABLELOGIN

当前设置列表如下:

security: enableLogin: false # 设置为 'true' 以启用登录 csrfDisabled: true # 设置为 'true' 以禁用 CSRF 保护(不建议在生产环境中使用) loginAttemptCount: 5 # 5 次尝试后锁定用户账户 loginResetTimeMinutes: 120 # x 次尝试后锁定账户 2 小时 loginMethod: all # 'all'(用户名/密码登录和 OAuth2[必须启用和配置]),'normal'(仅用户名/密码登录)或 'oauth2'(仅 OAuth2 登录) initialLogin: username: '' # 首次登录的初始用户名 password: '' # 首次登录的初始密码 oauth2: enabled: false # 设置为 'true' 以启用登录(注意:enableLogin 也必须为 'true' 才能生效) client: keycloak: issuer: '' # Keycloak 领域的 OpenID Connect Discovery 端点 URL clientId: '' # Keycloak OAuth2 的客户端 ID clientSecret: '' # Keycloak OAuth2 的客户端密钥 scopes: openid, profile, email # Keycloak OAuth2 的作用域 useAsUsername: preferred_username # Keycloak OAuth2 用作用户名的字段 google: clientId: '' # Google OAuth2 的客户端 ID clientSecret: '' # Google OAuth2 的客户端密钥 scopes: https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/userinfo.profile # Google OAuth2 的作用域 useAsUsername: email # Google OAuth2 用作用户名的字段 github: clientId: '' # GitHub OAuth2 的客户端 ID clientSecret: '' # GitHub OAuth2 的客户端密钥 scopes: read:user # GitHub OAuth2 的作用域 useAsUsername: login # GitHub OAuth2 用作用户名的字段 issuer: '' # 设置为支持 OpenID Connect Discovery (/.well-known/openid-configuration) 端点的任何提供商 clientId: '' # 来自你的提供商的客户端 ID clientSecret: '' # 来自你的提供商的客户端密钥 autoCreateUser: false # 设置为 'true' 以允许自动创建不存在的用户 blockRegistration: false # 设置为 'true' 以拒绝未经管理员事先注册的 SSO 登录 useAsUsername: email # 默认为 'email';可以使用自定义字段作为用户名 scopes: openid, profile, email # 指定应用程序将请求权限的作用域 provider: google # 将此设置为你的 OAuth 提供商的名称,例如 'google' 或 'keycloak'

system: defaultLocale: 'en-US' # 设置默认语言(例如 'de-DE'、'fr-FR' 等) googlevisibility: false # 'true' 允许 Google 可见(通过 robots.txt),'false' 禁止 enableAlphaFunctionality: false # 设置为启用可能需要更多测试才能完全上线的功能(此功能可能不会产生任何变化) showUpdate: true # 查看是否有新更新可用 showUpdateOnlyAdmin: false # 只有管理员可以看到新更新是否可用,取决于 showUpdate 必须设置为 'true' customHTMLFiles: false # 启用后,放置在 /customFiles/templates 中的文件将覆盖现有的模板 HTML 文件

ui: appName: '' # 应用程序的可见名称 homeDescription: '' # 首页显示的简短描述或标语 appNameNavbar: '' # 导航栏上显示的名称

endpoints: toRemove: [] # 要禁用的端点列表(例如 ['img-to-pdf', 'remove-pages']) groupsToRemove: [] # 要禁用的组列表(例如 ['LibreOffice'])

metrics: enabled: true # 'true' 启用 Info API(/api/*)端点,'false' 禁用

有一个额外的配置文件 ``/configs/custom_settings.yml``,熟悉 Java 和 Spring application.properties 的用户可以在其中输入他们自己的设置,以补充 Stirling-PDF 现有的设置。

### 额外说明

- 端点。目前,ENDPOINTS_TO_REMOVE 和 GROUPS_TO_REMOVE 可以包含用逗号分隔的端点和组列表以禁用,例如 ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages 将禁用 image-to-pdf 和 remove pages,GROUPS_TO_REMOVE=LibreOffice 将禁用所有使用 LibreOffice 的功能。你可以在[这里](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/Endpoint-groups.md)查看所有端点和组的列表。
- customStaticFilePath。通过在 /customFiles/static/ 目录中放置文件来自定义静态文件,如应用程序图标。自定义应用程序图标的一个例子是放置 /customFiles/static/favicon.svg 来覆盖当前的 SVG。这可以用来更改 Stirling-PDF 中的任何图像/图标/CSS/字体/JS 等。

### 仅环境参数

- ``SYSTEM_ROOTURIPATH`` 例如设置为 ``/pdf-app`` 将应用程序的根 URI 设置为 ``localhost:8080/pdf-app``
- ``SYSTEM_CONNECTIONTIMEOUTMINUTES`` 设置自定义连接超时值
- ``DOCKER_ENABLE_SECURITY`` 告诉 Docker 下载安全 jar(需要设置为 true 以启用身份验证登录)
- ``INSTALL_BOOK_AND_ADVANCED_HTML_OPS`` 在 Stirling-PDF 上下载 Calibre,启用 PDF 与书籍之间的转换以及高级 HTML 转换
- ``LANGS`` 定义要安装的自定义字体库,用于文档转换

## API

对于那些想使用 Stirling-PDF 后端 API 来链接自己的自定义脚本编辑 PDF 的人,你可以在[这里](https://app.swaggerhub.com/apis-docs/Stirling-Tools/Stirling-PDF/)查看所有现有的 API 文档,或者导航到你的 Stirling-PDF 实例的 /swagger-ui/index.html 查看你的版本的文档(或者通过在 Stirling-PDF 的设置中点击 API 按钮)

## 登录认证

![stirling-login](https://yellow-cdn.veclightyear.com/835a84d5/85245660-1094-40b3-acdf-d4b93a02f52d.png)

### 先决条件

- 用户必须在 Docker 中挂载 ./configs 文件夹,以便在更新期间保留。
- Docker 用户必须通过在环境变量中设置 ``DOCKER_ENABLE_SECURITY`` 为 ``true`` 来下载安全 jar 版本。
- 然后通过 settings.yml 文件或设置 ``SECURITY_ENABLE_LOGIN`` 为 ``true`` 来启用登录。
- 现在将生成初始用户,用户名为 ``admin``,密码为 ``stirling``。登录后,你将被强制更改密码为新密码。你也可以使用环境变量 ``SECURITY_INITIALLOGIN_USERNAME`` 和 ``SECURITY_INITIALLOGIN_PASSWORD`` 直接设置你自己的凭据(建议在创建用户后删除这些变量)。

完成上述步骤后,重新启动时,如果一切正常,将出现一个新的 stirling-pdf-DB.mv.db 文件。

当你登录到 Stirling PDF 时,你将被重定向到 /login 页面,使用这些默认凭据登录。登录后,一切应该正常运行。

要访问你的账户设置,请转到设置齿轮菜单(导航栏右上角)中的账户设置。这个账户设置菜单也是你找到 API 密钥的地方。

要添加新用户,请转到账户设置底部,点击"管理员设置",在这里你可以添加新用户。这里提到的不同角色是用于速率限制。这是一项正在进行的工作,将在未来进一步扩展。

对于 API 使用,你必须提供一个带有 'X-API-Key' 的头部和该用户相关的 API 密钥。

## 常见问题

### 问题1:你计划的功能有哪些?

- 进度条/跟踪
- 完整的自定义逻辑管道,将多个操作组合在一起
- 文件夹支持,自动扫描以执行操作
- 编辑文本(通过 UI,而不仅仅是自动化方式)
- 添加表单
- 多页面布局(拼接 PDF 页面)支持 x 行 y 列和自定义页面大小
- 手动或自动填写表单

### 问题2:为什么我的应用程序下载 .htm 文件?

这通常是由 NGINX 配置引起的问题。NGINX 的默认文件上传大小限制为 1MB,你需要在 Nginx sites-available 文件中添加以下内容:``client_max_body_size SIZE;``,其中 "SIZE" 例如为 50M,表示 50MB 的文件。

### 问题3:为什么我的下载超时?

NGINX 默认有超时值,所以如果你在 NGINX 后面运行 Stirling-PDF,你可能需要设置一个超时值,例如添加配置 ``proxy_read_timeout 3600;``

编辑推荐精选

问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多