ChatGPT PDF

100%始于ChatGPT的PDF工具

一个本地托管的Web应用程序,允许您对PDF文件执行各种操作。

2023年12月29日
stirling-pdf
分享

这是一个强大的本地托管的基于 Web 的 PDF 操作工具,使用 docker,允许您对 PDF 文件执行各种操作,例如拆分合并、转换、重新组织、添加图像、旋转、压缩等。这个本地托管的 Web 应用程序最初是 100% ChatGPT 制作的应用程序,现已发展到包含广泛的功能来满足您的所有 PDF 需求。

Stirling PDF 没有任何关于记录保存和跟踪的外部调用。

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

特性

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

PDF 功能

页面操作

  • 查看和修改 PDF - 通过自定义查看的排序和搜索查看多页 PDF。加上页面编辑功能,如注释、绘图以及添加文本和图像。(使用 Joxit 和 Liberation.Liberation 字体的 PDF.js)
  • 用于合并/分割/旋转/移动 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。

有关每个任务和使用的技术的概述,请查看Endpoint-groups.md,该应用程序的托管实例/演示可以在 adminforge.de 上托管的此处 查看。

使用的技术

  • Spring Boot + Thymeleaf
  • PDFBox
  • LibreOffice用于高级转换
  • OcrMyPdf
  • HTML、CSS、JavaScript
  • Docker
  • PDF.js
  • PDF-LIB.js

如何使用

本地

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

Docker/Podman

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

Stirling PDF 有 3 个不同的版本:完整版、精简版和超精简版。根据您使用的功能类型,您可能需要较小的镜像以节省空间。要了解不同版本提供的功能,请查看我们的版本说明。对于不需要省空间的人,只需使用最新标签。

Docker 运行

docker run -d \
  -p 8080:8080 \
  -v /location/of/trainingData:/usr/share/tesseract-ocr/5/tessdata \
  -v /location/of/extraConfigs:/configs \
  -v /location/of/logs:/logs \
  -e DOCKER_ENABLE_SECURITY=false \
  --name stirling-pdf \
  frooodle/s-pdf:latest


  Can also add these for customisation but are not required

  -v /location/of/customFiles:/customFiles \

Docker 组合

version: '3.3'
services:
  stirling-pdf:
    image: frooodle/s-pdf:latest
    ports:
      - '8080:8080'
    volumes:
      - /location/of/trainingData:/usr/share/tesseract-ocr/5/tessdata #Required for extra OCR languages
      - /location/of/extraConfigs:/configs
#      - /location/of/customFiles:/customFiles/
#      - /location/of/logs:/logs/
    environment:
      - DOCKER_ENABLE_SECURITY=false

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

启用 OCR/压缩功能

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

想要添加您自己的语言吗?

Stirling PDF 目前支持 20 种语言!

  • 英语(英语)(en_GB)
  • 英语(美国)(en_US)
  • 阿拉伯语(阿拉伯语)(ar_AR)
  • 德语 (Deutsch) (de_DE)
  • 法语 (Français) (fr_FR)
  • 西班牙语 (Español) (es_ES)
  • 中文 (简体中文) (zh_CN)
  • 加泰罗尼亚语 (Català) (ca_CA)
  • 意大利语 (Italiano) (it_IT)
  • 瑞典语 (Svenska) (sv_SE)
  • 波兰语 (Polski) (pl_PL)
  • 罗马尼亚语 (Română) (ro_RO)
  • 韩语 (한국어) (ko_KR)
  • 巴西葡萄牙语 (Português) (pt_BR)
  • 俄语 (Русский) (ru_RU)
  • 巴斯克语(巴斯克语)(eu_ES)
  • 日语 (日本语) (ja_JP)
  • 荷兰语(荷兰)(nl_NL)
  • 希腊语 (el_GR)
  • 土耳其语 (Türkçe) (tr_TR)
  • 印度尼西亚(印度尼西亚语)(id_ID)

如果您想将自己的语言添加到 Stirling-PDF,请参阅 https://github.com/Frooodle/Stirling-PDF/blob/main/HowToAddNewLanguage.md

请创建一个 PR 将其合回来,以便其他人可以使用它!

如何查看

  1. 打开网络浏览器并查看http://localhost:8080/
  2. 按照网站上的说明使用该应用程序。

定制化

Stirling PDF 允许轻松定制应用程序。如

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

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

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

system:
  defaultLocale: 'en-US'

要通过环境变量来实现这一点,您将拥有SYSTEM_DEFAULTLOCALE

当前设置列表是

security:
  enableLogin: false # set to 'true' to enable login
  csrfDisabled: true

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
  customStaticFilePath: '/customFiles/static/' # Directory path for custom static files

#ui:
#  appName: exampleAppName # Application's visible name
#  homeDescription: I am a description # Short description or tagline shown on homepage.
#  appNameNavbar: navbarName # 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 endpoints (view http://localhost:8080/swagger-ui/index.html#/API to learn more), 'false' to disable

额外说明

  • 端。目前,ENDPOINTS_TO_REMOVE 和 GROUPS_TO_REMOVE 可以包含要禁用的端和组的逗号分隔列表,例如 ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages 将禁用图像到 pdf 和删除页面,GROUPS_TO_REMOVE=LibreOffice 将禁用所有使用 LibreOffice 的功能。您可以在此处查看所有端和组的列表
  • 自定义静态文件路径。通过将文件放置在 /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)

应用程序 API 接口

对于那些想要使用 Stirling-PDFs 后端 API 链接到自己的自定义脚本来编辑 PDF 的用户,您可以 在此处查看所有现有 API 文档,或导航到 Stirling-pdf 实例的 /swagger-ui/index.html 以获取版本文档(或者按照 Stirling-PDF 设置中的 API 按钮进行操作)

登录认证

stirling-pdf2

先决条件:

  • 用户必须将 ./configs 文件夹用卷加载到 docker 中,以便在更新期间保留它。
  • Docker 使用者必须将环境变量DOCKER_ENABLE_SECURITY设置为true来下载安全 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 密钥。

常问问题

问题1:计划中的功能是什么?

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

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

这是一个通常由 NGINX 配置引起的问题。NGINX 的默认文件上传大小为 1MB,您需要在 Nginx 站点可用文件中添加以下内容。client_max_body_size SIZE;其中“SIZE”为 50M(例如 50MB 文件)。

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

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

来自:https://github.com/Frooodle/Stirling-PDF

更多文章

OthersideAI开发人员Josh Bickett在半夜喂女儿吃饭时产生了一个开创性的新型“自操作计算机框架”的想法。

2023年12月28日 · AI
chatgpt-prompt
收集的一些ChatGPT的系统提示,以及提示注入的技巧。
2023年12月27日 · ChatGPT
ollama
Ollama支持在本地启动和运行Llama2等大语言模型。
2023年12月26日 · LLM
示例如何使用Three.js和localStorage在多个窗口中“同步”3D场景。
2023年12月25日 · 3D