前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Stirling-PDF一款开源可本地托管的pdf处理利器

Stirling-PDF一款开源可本地托管的pdf处理利器

作者头像
山行AI
发布2024-05-09 15:55:15
1.4K0
发布2024-05-09 15:55:15
举报
文章被收录于专栏:山行AI

Stirling-PDF

这是一个健壮的、本地托管的基于Web的PDF操作工具,使用Docker实现。它使您能够对PDF文件执行各种操作,包括分割、合并、转换、重新组织、添加图像、旋转、压缩等。这个本地托管的Web应用程序已发展成为包含全面功能的套件,满足您所有的PDF需求。

Stirling PDF不发起任何出站调用用于记录保留或跟踪目的。

所有文件和PDF只存在于客户端,或仅在任务执行期间驻留在服务器内存中,或临时驻留在文件中,仅用于执行任务。任何由用户下载的文件都将在那时从服务器中删除。

功能

• 支持暗黑模式。

• 自定义下载选项(参见此处的示例)

• 并行文件处理和下载

• API用于与外部脚本集成

• 可选的登录和身份验证支持(参见此处的文档)

PDF功能

页面操作

• 查看和修改PDF - 查看多页PDF,自定义查看排序和搜索。另外在页面上编辑功能,如注释、绘图、添加文本和图像。(使用PDF.js与Joxit和Liberation.Liberation字体)

• 全交互式GUI用于合并/分割/旋转/移动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。应用程序的演示在这里可用,用户名:demo,密码:demo。

使用的技术

• Spring Boot + Thymeleaf

• PDFBox

• LibreOffice用于高级转换

• OcrMyPdf

• HTML, CSS, JavaScript

• Docker

• PDF.js

• PDF-LIB.js

如何使用

本地

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

Docker / Podman

https://hub.docker.com/r/frooodle/s-pdf Stirling PDF有两个不同版本,完整版本和超轻版。根据您使用的功能类型,您可能需要一个较小的镜像以节省空间。要查看不同版本提供的内容,请查看我们的版本映射。对于不在乎空间优化的人来说,只需使用最新标签。

Docker运行

代码语言:javascript
复制
docker run -d \
  -p 8080:8080 \
  -v /location/of/trainingData:/usr/share/tessdata \
  -v /location/of/extraConfigs:/configs \
  -v /location/of/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

代码语言:javascript
复制
version: '3.3'
services:
  stirling-pdf:
    image: frooodle/s-pdf:latest
    ports:
      - '8080:8080'
    volumes:
      - /location/of/trainingData:/usr/share/tessdata #Required for extra OCR languages
      - /location/of/extraConfigs:/configs
      # - /location/of/customFiles:/customFiles/
      # - /location/of/logs:/logs/
    environment:
      - DOCKER_ENABLE_SECURITY=false
      - INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false
      - LANGS=en_GB

注意:Podman与Docker的命令行兼容,因此只需将“docker”替换为“podman”。

启用OCR/压缩功能

请查看 如何使用OCRhttps://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToUseOCR.md

定制化

Stirling PDF允许轻松定制应用程序。包括如下内容:

自定义应用程序名称 自定义口号、图标、HTML、图片、CSS等(通过文件覆盖) 有两种选项,一种是使用生成的设置文件settings.yml,该文件位于/configs目录,并遵循标准的YAML格式。环境变量也支持,并将覆盖设置文件。例如,在settings.yml中你有:

代码语言:javascript
复制
system:
  defaultLocale: 'en-US'

要通过环境变量设置,你会有SYSTEM_DEFAULTLOCALE 当前的设置列表

代码语言:javascript
复制
security:
  enableLogin: false # 设置为'true'以启用登录
  csrfDisabled: true

system:
  defaultLocale: 'en-US' # 设置默认语言(例如,'de-DE', 'fr-FR'等)
  googlevisibility: false # 'true'允许谷歌可见性(通过robots.txt),'false'则不允许
  customStaticFilePath: '/customFiles/static/' # 自定义静态文件的目录路径
  showUpdate: true # 查看是否有新的更新可用
  showUpdateOnlyAdmin: false # 只有管理员可以看到新的更新是否可用,取决于showUpdate必须设置为'true'
  customHTMLFiles: false # 启用则可以将文件放在/customFiles/templates中覆盖现有的模板html文件

#ui:
#  appName: exampleAppName # 应用的可见名称
#  homeDescription: I am a description # 首页显示的简短描述或标语。
#  appNameNavbar: navbarName # 导航栏显示的名称

额外说明

当前端点ENDPOINTS_TO_REMOVE和GROUPS_TO_REMOVE可以包含逗号分隔的端点和组的列表以禁用,例如ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages将禁用图像到PDF和删除页面,GROUPS_TO_REMOVE=LibreOffice将禁用所有使用LibreOffice的功能。你可以在这里查看所有端点和组的列表。

customStaticFilePath:通过将文件放在/customFiles/static/目录中来自定义静态文件,例如通过放置/customFiles/static/favicon.svg来覆盖当前SVG。这可以用来更改任何图像/图标/CSS/字体/JS等在Stirling-PDF中。

仅限环境参数 SYSTEM_ROOTURIPATH

例如设置为/pdf-app将应用程序的根URI设置为 localhost:8080/pdf-app

SYSTEM_CONNECTIONTIMEOUTMINUTES设置自定义连接超时值

DOCKER_ENABLE_SECURITY告诉docker下载安全jar(对于auth login是必需的)

INSTALL_BOOK_AND_ADVANCED_HTML_OPS下载calibre到stirling-pdf,启用PDF与书籍和高级HTML转换

LANGS定义要安装以用于文档转换的自定义字体库

API

对于那些想要使用Stirling-PDF的后端API与他们自己的自定义脚本链接以编辑PDF的人,你可以在这里查看所有现有的API文档,或者导航到你的stirling-pdf实例的/swagger-ui/index.html查看你的版本文档(或通过在Stirling-PDF的设置中跟随API按钮)

登录验证

先决条件:

用户必须在docker中设置./configs文件夹为卷,以便在更新时保留。Docker用户必须通过设置环境变量DOCKER_ENABLE_SECURITYtrue来下载安全jar版本。然后通过settings.yml文件或设置SECURITY_ENABLE_LOGINtrue来启用登录。现在,初始用户将以用户名admin和密码stirling生成。登录时,您将被要求更改密码为新密码。您也可以使用环境变量SECURITY_INITIALLOGIN_USERNAMESECURITY_INITIALLOGIN_PASSWORD来立即设置您自己的用户名和密码(建议在创建用户后删除它们)。一旦完成上述步骤,在重启后,如果一切正常,将显示新的stirling-pdf-DB.mv.db。登录Stirling PDF后,您将被重定向到/login页面使用这些默认凭据登录。登录后,一切应该正常工作。

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

要添加新用户,请到“账户设置”底部点击“管理员设置”,在这里您可以添加新用户。这里提到的不同角色用于限速。这是一个正在进行的工作,将来会有更多扩展。

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

常见问题解答

Q1: 你们计划的功能是什么?

进度条/跟踪 全自定义逻辑管道,以组合多个操作。支持自动扫描的文件夹支持,以执行操作 文本涂黑(通过用户界面,不仅仅是自动化方式) 添加表单 多页布局(将PDF页面拼接在一起)支持x行y列和自定义页面大小 手动或自动填写表单 Q2: 为什么我的应用程序正在下载.htm文件?

这通常是由您的NGINX配置引起的问题。NGINX的默认文件上传大小为1MB,您需要在您的Nginx sites-available文件中添加以下内容:client_max_body_size SIZE;,其中“SIZE”例如为50M,表示50MB文件。 Q3: 为什么我的下载超时?

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

声明

本文由山行翻译整理自:https://github.com/Stirling-Tools/Stirling-PDF,如果对您有帮助,请帮忙点赞、关注、收藏,谢谢~

另外,对提示词感兴趣的可以关注一下视频号,上面有比较多的提示词干货分享哦~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 山行AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Stirling-PDF
    • 功能
      • PDF功能
        • 使用的技术
          • 如何使用
            • 启用OCR/压缩功能
              • 定制化
                • 额外说明
              • API
                • 登录验证
                  • 常见问题解答
                  • 声明
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档