
本地部署的全能PDF处理开源 解决方案
Stirling-PDF是一款功能全面的开源PDF处理工具,支持本地部署。它提供PDF分割、合并、转换、重组、添加图片、旋转和压缩等多项功能。该工具基于Spring Boot开发,集成PDFBox和LibreOffice等技术,通过Docker快速部署。支持暗黑模式、并行处理和API集成,可满足各类PDF处理需求。
<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要么仅存在于客户端,要么仅在任务执行期间存在于服务器内存中,或者仅为执行任务而暂时存在于文件中。用户下载的任何文件在此时都已从服务器上删除。

有关任务和每个任务使用的技术的概述,请查看Endpoint-groups.md
应用程序的演示版可在此处获得。
请查看 https://github.com/Stirling-Tools/Stirling-PDF/blob/main/LocalRunGuide.md
https://hub.docker.com/r/frooodle/s-pdf
Stirling PDF有3个不同的版本,一个完整版、一个超轻量版以及一个"胖"版。根据您使用的功能类型,您可能需要一个较小的镜像以节省空间。
要了解不同版本提供的功能,请查看我们的版本映射
对于不介意空间优化的人,只需使用最新标签即可。
请注意,在以下示例中,您可能需要根据需要更改卷路径,当前示例将它们安装到当前工作目录
例如 ./extraConfigs:/configs 改为 /opt/stirlingpdf/extraConfigs:/configs
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 \
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"即可。
请查看 https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToUseOCR.md
Stirling PDF 目 前支持 38 种语言!
| 语言 | 进度 |
|---|---|
| 阿拉伯语 (العربية) (ar_AR) | |
| 巴斯克语 (Euskara) (eu_ES) | |
| 保加利亚语 (Български) (bg_BG) | |
| 加泰罗尼亚语 (Català) (ca_CA) | |
| 克罗地亚语 (Hrvatski) (hr_HR) | |
| 捷克语 (Česky) (cs_CZ) | |
| 丹麦语 (Dansk) (da_DK) | |
| 荷兰语 (Nederlands) (nl_NL) | |
| 英语 (English) (en_GB) | |
| 美式英语 (en_US) | |
| 法语 (Français) (fr_FR) | |
| 德语 (Deutsch) (de_DE) | |
| 希腊语 (Ελληνικά) (el_GR) | |
| 印地语 (हिंदी) (hi_IN) | |
| 匈牙利语 (Magyar) (hu_HU) | |
| 印度尼西亚语 (Bahasa Indonesia) (id_ID) | |
| 爱尔兰语 (Gaeilge) (ga_IE) | |
| 意大利语 (Italiano) (it_IT) | |
| 日语 (日本語) (ja_JP) | |
| 韩语 (한국어) (ko_KR) | |
| 挪威语 (Norsk) (no_NB) | |
| 波兰语 (Polski) (pl_PL) | |
| 葡萄牙语 (Português) (pt_PT) | |
| 巴西葡萄牙语 (Português) (pt_BR) | |
| 罗马尼亚语 (Română) (ro_RO) | |
| 俄语 (Русский) (ru_RU) | |
| 塞尔维亚语拉丁字母 (Srpski) (sr_LATN_RS) | |
| 简体中文 (zh_CN) | |
| 斯洛伐克语 (Slovensky) (sk_SK) | |
| 西班牙语 (Español) (es_ES) | |
| 瑞典语 (Svenska) (sv_SE) | |
| 泰语 (ไทย) (th_TH) | |
| 繁体中文 (zh_TW) | |
| 土耳其语 (Türkçe) (tr_TR) | |
| 乌克兰语 (Українська) (uk_UA) | |
| 越南语 (Tiếng Việt) (vi_VN) |
请参阅我们的贡献指南!
Stirling PDF 允许轻松自定义应用程序。 包括以下内容:
有两种选择,一种是使用生成的设置文件 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 按钮)
## 登录认证

### 先决条件
- 用户必须在 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自动化工作流

大模型驱动的Excel数据处理工具
基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。


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


AI论文写作指导平台
AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。


AI一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频


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

微信扫一扫关注公众号