Stirling PDF:开源在线PDF文档编辑工具库源码

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

Stirling PDF 不会出于记录保存或跟踪目的发起任何出站请求。所有文件和 PDF 要么仅存在于客户端,仅在任务执行期间驻留在服务器内存中,要么仅在执行任务时临时驻留在文件中。届时,用户下载的任何文件都将从服务器中删除。

Stirling PDF特点

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

Stirling PDF功能

页面操作

  • 查看和修改 PDF – 通过自定义查看排序和搜索查看多页 PDF。加上页面编辑功能,如注释、绘图以及添加文本和图像。 (使用 PDF.js 和 Joxit 和 Liberation.Liberation 字体)
  • 用于合并/分割/旋转/移动 PDF 及其页面的完整交互式 GUI。
  • 将多个 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。
  • 检测并删除空白页。
  • 比较 2 个 PDF 并显示文本差异。
  • 将图像添加到 PDF。
  • 压缩 PDF 以减小文件大小(使用 OCRMyPDF)。
  • 从 PDF 中提取图像。
  • 从扫描中提取图像。
  • 添加页码。
  • 通过检测 PDF 标题文本自动重命名文件。
  • PDF 上的 OCR(使用 OCRMyPDF)。
  • PDF/A 转换(使用 OCRMyPDF)。
  • 编辑元数据。
  • 拼合 PDF。
  • 获取 PDF 上的所有信息以查看或导出为 JSON。

使用技术

  • Spring Boot + Thymeleaf
  • PDFBox
  • LibreOffice for advanced conversions
  • OcrMyPdf
  • HTML, CSS, JavaScript
  • Docker
  • PDF.js
  • PDF-LIB.js

支持语言

当前支持27种语言

如何安装和使用?

详见文章:《开源PDF工具库Stirling-PDF如何安装和使用?

如何自定义?

Stirling PDF 允许轻松定制应用程序。包括类似的东西

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

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

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

system:
  defaultLocale: 'en-US'

每个配置都对应一个环境变量,该配置有对应的环境变量是SYSTEM_DEFAULTLOCALE

当前全套设置列表如下:

security:
  enableLogin: false # set to 'true' to enable login
  csrfDisabled: true # Set to 'true' to disable CSRF protection (not recommended for production)
  loginAttemptCount: 5 # lock user account after 5 tries
  loginResetTimeMinutes : 120 # lock account for 2 hours after x attempts
#  initialLogin:
#    username: "admin" # Initial username for the first login (these are defaulted)
#    password: "stirling" # Initial password for the first login
#  oauth2:
#    enabled: false # set to 'true' to enable login (Note: enableLogin must also be 'true' for this to work)
#    issuer: "" # set to any provider that supports OpenID Connect Discovery (/.well-known/openid-configuration) end-point
#    clientId: "" # Client ID from your provider
#    clientSecret: "" # Client Secret from your provider
#    autoCreateUser: false # set to 'true' to allow auto-creation of non-existing users
#    useAsUsername: "email" # Default is 'email'; custom fields can be used as the username
#    scopes: "openid, profile, email" # Specify the scopes for which the application will request permissions
#    provider: "google" # Set this to your OAuth provider's name, e.g., 'google' or 'keycloak'

system:
  defaultLocale: 'en-US' # Set the default language (e.g. 'de-DE', 'fr-FR', etc)
  googlevisibility: false # 'true' to allow Google visibility (via robots.txt), 'false' to disallow
  enableAlphaFunctionality: false # Set to enable functionality which might need more testing before it fully goes live (This feature might make no changes)
  showUpdate: true # see when a new update is available
  showUpdateOnlyAdmin: false # Only admins can see when a new update is available, depending on showUpdate it must be set to 'true'
  customHTMLFiles: false # enable to have files placed in /customFiles/templates override the existing template html files

ui:
  appName: null # Application's visible name
  homeDescription: null # Short description or tagline shown on homepage.
  appNameNavbar: null # Name displayed on the navigation bar

endpoints:
  toRemove: [] # List endpoints to disable (e.g. ['img-to-pdf', 'remove-pages'])
  groupsToRemove: [] # List groups to disable (e.g. ['LibreOffice'])

metrics:
  enabled: true # 'true' to enable Info APIs (`/api/*`) endpoints, 'false' to disable

还有一个额外的配置文件 /configs/custom_settings.yml 供熟悉 java 和 spring application.properties 的用户使用,可以在 Stirling-PDF 现有设置的基础上输入自己的设置。

其它说明

  • 端点Endpoint。目前,端点 ENDPOINTS_TO_REMOVE 和 GROUPS_TO_REMOVE 可以包含要禁用的端点和组的逗号分隔列表,例如 ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages 将禁用图像到 pdf 和删除页面,GROUPS_TO_REMOVE=LibreOffice 将禁用所有功能使用 LibreOffice。您可以在此处查看所有端点和组的列表。
  • 自定义静态文件路径。通过将文件放置在 /customFiles/static/ 目录中来自定义静态文件,例如应用程序Logo。自定义应用程序Logo的一个示例是放置 /customFiles/static/favicon.svg 来覆盖当前的 SVG。这可用于更改 Stirling-PDF 中的任何图像/图标/css/字体/js 等。

仅含环境变量的参数

  • SYSTEM_ROOTURIPATH 设置将应用程序的根URI,比如设置为/pdf-app,那么应用程序的根 URI为localhost:8080/pdf-app
  • SYSTEM_CONNECTIONTIMEOUTMINUTES 设置自定义连接超时值
  • DOCKER_ENABLE_SECURITY 告诉 docker 下载安全 jar(身份验证登录时需要为 true)
  • INSTALL_BOOK_AND_ADVANCED_HTML_OPS 将 calibre 下载到 Stirling-pdf 上,实现 pdf 与书籍之间的转换以及高级 html 转换
  • LANGS 定义要安装的自定义字体库以用于文档转换

API接口

对于那些想要使用 Stirling-PDFs 后端 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_USERNAME 和 SECURITY_INITIALLOGIN_PASSWORD 立即设置自己的环境变量(建议在创建用户后将其删除)。

完成上述操作后,重新启动时,如果一切正常,将显示新的 stirling-pdf-DB.mv.db。

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

要访问您的帐户设置,请转到设置齿轮菜单(导航栏右上角)中的帐户设置,您也可以在此帐户设置菜单中找到您的 API 密钥。

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

对于 API 的使用,您必须提供带有“X-API-Key”的标题以及与该用户关联的 API 密钥。

 

原文链接:https://vuesite.cn/41690.html,转载请注明出处。
0
显示验证码
没有账号?注册  忘记密码?