Stirling PDF-PDF工具箱
大约 7 分钟
Stirling PDF-PDF工具箱
介绍
版本
Fat:包含所有完整功能以及附加字体和预捆绑的 jar 安全版本
完整:所有功能均已预先配置并可立即使用
Ultra-Lite:仅包含核心功能的最小安装
部署
Docker
docker run -d \
--name stirling-pdf \
-p 8080:8080 \
-v "./StirlingPDF/trainingData:/usr/share/tessdata" \
-v "./StirlingPDF/extraConfigs:/configs" \
-v "./StirlingPDF/customFiles:/customFiles/" \
-v "./StirlingPDF/logs:/logs/" \
-v "./StirlingPDF/pipeline:/pipeline/" \
-e DISABLE_ADDITIONAL_FEATURES=false \
-e LANGS=zh_CN \
-e LEGAL_COOKIEPOLICY= \
-e SYSTEM_ENABLEANALYTICS=false \
stirlingtools/stirling-pdf:latest-fat
docker run -d --name stirling-pdf -p 8080:8080 -e DISABLE_ADDITIONAL_FEATURES=false -e LEGAL_COOKIEPOLICY= -e LANGS=zh_CN -e SYSTEM_ENABLEANALYTICS=false stirlingtools/stirling-pdf:latest-fat
docker-compose
version: '3.3'
services:
stirling-pdf:
image: stirlingtools/stirling-pdf:latest-fat
ports:
- '8080:8080'
volumes:
- ./StirlingPDF/trainingData:/usr/share/tessdata # Required for extra OCR languages
- ./StirlingPDF/extraConfigs:/configs
- ./StirlingPDF/customFiles:/customFiles/
- ./StirlingPDF/logs:/logs/
- ./StirlingPDF/pipeline:/pipeline/
environment:
- DISABLE_ADDITIONAL_FEATURES=false
- LANGS=zh_CN
配置
配置文件
配置文件在 /configs/settings.yml 中。 Springboot配置在/configs/custom_settings.yml,可以配置:日志、服务、SSL docker 可以指定环境变量,如-e "UI_APPNAME=Stirling PDF",(大写,下划线分隔)
security:
enableLogin: false # 设为 'true' 启用登录功能
csrfDisabled: false # 设为 'true' 禁用 CSRF 保护(生产环境不建议禁用)
loginAttemptCount: 5 # 用户账户锁定前允许的尝试次数(使用 Fail2Ban 时可通过设为 -1 禁用此功能)
loginResetTimeMinutes: 120 # 达到尝试次数后锁定账户的时长(分钟)
loginMethod: all # 可选值:'all'(全部方式)、'normal'(仅用户名/密码)、'oauth2'(仅OAuth2)、'saml2'(仅SAML2)
initialLogin:
username: '' # 首次登录的初始用户名
password: '' # 首次登录的初始密码
oauth2:
enabled: false # 设为 'true' 启用登录(注意:enableLogin 也必须为 'true' 才生效)
client:
keycloak:
issuer: '' # Keycloak 领域的 OpenID Connect Discovery 端点 URL
clientId: '' # Keyclaok OAuth2 客户端 ID
clientSecret: '' # Keycloak OAuth2 客户端密钥
scopes: openid, profile, email # Keycloak OAuth2 的权限范围
useAsUsername: preferred_username # 用作 Keycloak OAuth2 用户名的字段,可选:[email | name | given_name | family_name | preferred_name]
google:
clientId: '' # Google OAuth2 客户端 ID
clientSecret: '' # Google OAuth2 客户端密钥
scopes: email, profile # Google OAuth2 权限范围
useAsUsername: email # 用作 Google OAuth2 用户名的字段,可选:[email | name | given_name | family_name]
github:
clientId: '' # GitHub OAuth2 客户端 ID
clientSecret: '' # GitHub OAuth2 客户端密钥
scopes: read:user # GitHub OAuth2 权限范围
useAsUsername: login # 用作 GitHub OAuth2 用户名的字段,可选:[email | login | name]
issuer: '' # 设置为支持 OpenID Connect Discovery (/.well-known/openid-configuration) 端点的任何提供商
clientId: '' # 来自提供商的客户端 ID
clientSecret: '' # 来自提供商的客户端密钥
autoCreateUser: true # 设为 'true' 允许自动创建不存在用户
blockRegistration: false # 设为 'true' 拒绝未经管理员注册的 SSO 登录
useAsUsername: email # 默认为 'email',可使用自定义字段作为用户名
scopes: openid, profile, email # 指定应用请求的权限范围
provider: google # 设置为 OAuth 提供商名称,例如 'google' 或 'keycloak'
saml2:
enabled: false # 仅对付费企业客户启用(enterpriseEdition.enabled 必须为 true)
provider: '' # 提供商名称
autoCreateUser: true # 设为 'true' 允许自动创建不存在用户
blockRegistration: false # 设为 'true' 拒绝未经管理员注册的 SSO 登录
registrationId: stirling # 服务提供商 (SP) 应用名称,应与 SSO 和 SLO URL 路径中的名称匹配
idpMetadataUri: https://dev-XXXXXXXX.okta.com/app/externalKey/sso/saml/metadata # 提供商的元数据 uri
idpSingleLoginUrl: https://dev-XXXXXXXX.okta.com/app/dev-XXXXXXXX_stirlingpdf_1/externalKey/sso/saml # 发起 SSO 的 URL(由提供商提供)
idpSingleLogoutUrl: https://dev-XXXXXXXX.okta.com/app/dev-XXXXXXXX_stirlingpdf_1/externalKey/slo/saml # 发起 SLO 的 URL(由提供商提供)
idpIssuer: '' # 提供商 ID
idpCert: classpath:okta.cert # 提供商用于认证 SAML 请求的证书(由提供商提供)
privateKey: classpath:saml-private-key.key # 您的私钥(从密钥对生成)
spCert: classpath:saml-public-cert.crt # 您的签名证书(从密钥对生成)
premium:
key: 00000000-0000-0000-0000-000000000000
enabled: false # 启用专业版/企业版功能的许可密钥检查
proFeatures:
SSOAutoLogin: false
CustomMetadata:
autoUpdateMetadata: false
author: username
creator: Stirling-PDF
producer: Stirling-PDF
googleDrive:
enabled: false
clientId: ''
apiKey: ''
appId: ''
legal:
termsAndConditions: https://www.stirlingpdf.com/terms-and-conditions # 应用条款和条件的 URL(例如 https://example.com/terms),设置为空字符串禁用或设置为静态文件夹中的本地文件名
privacyPolicy: https://www.stirlingpdf.com/privacy-policy # 应用隐私政策的 URL(例如 https://example.com/privacy),设置为空字符串禁用或设置为静态文件夹中的本地文件名
accessibilityStatement: '' # 应用无障碍声明的 URL(例如 https://example.com/accessibility),设置为空字符串禁用或设置为静态文件夹中的本地文件名
cookiePolicy: '' # 应用 cookie 政策的 URL(例如 https://example.com/cookie),设置为空字符串禁用或设置为静态文件夹中的本地文件名
impressum: '' # 应用出版声明的 URL(例如 https://example.com/impressum),设置为空字符串禁用或设置为静态文件夹中的本地文件名
system:
defaultLocale: en-US # 设置默认语言(例如 'de-DE'、'fr-FR' 等)
googlevisibility: false # 设为 'true' 允许 Google 抓取(通过 robots.txt),'false' 则禁止
enableAlphaFunctionality: false # 启用可能需要更多测试才能正式发布的功能(此功能可能没有任何改变)
showUpdate: false # 显示新版本可用通知
showUpdateOnlyAdmin: false # 仅管理员可看到新版本通知(showUpdate 也必须设为 'true')
customHTMLFiles: false # 启用后,/customFiles/templates 中的文件将覆盖现有 HTML 模板文件
tessdataDir: /usr/share/tessdata # 包含 Tessdata 文件的目录路径(该设置与 Windows 系统相关,Windows 用户应调整此路径指向 Tessdata 文件的正确目录)
enableAnalytics: null # 设为 'true' 启用分析,'false' 禁用;企业用户默认为 true
enableUrlToPDF: false # 设为 'true' 启用 URL 转 PDF 功能(仅限内部使用,存在已知安全问题,不应对外部使用)
disableSanitize: false # 设为 true 禁用 HTML 净化(可能导致 HTML 注入)
datasource:
enableCustomDatabase: false # 仅限企业用户,设为 'true' 可使用自定义数据库配置
customDatabaseUrl: '' # 例如 jdbc:postgresql://localhost:5432/postgres,设置自定义数据库连接 URL。如果提供此参数,则 type、hostName、port 和 name 不是必需的且不会被使用
username: postgres # 设置数据库用户名
password: postgres # 设置数据库密码
type: postgresql # 设置的数据库类型(例如 'h2'、'postgresql')
hostName: localhost # 数据库 URL 的主机名,本地运行时设为 'localhost',在服务器运行时设为数据库容器名称(Docker 配置)
port: 5432 # 设置数据库端口号,确保与数据库监听端口匹配
name: postgres # 设置数据库名称,应与创建的数据库名称匹配
customPaths:
pipeline:
watchedFoldersDir: '' # 默认值为 /pipeline/watchedFolders
finishedFoldersDir: '' # 默认值为 /pipeline/finishedFolders
operations:
weasyprint: '' # 默认值为 /opt/venv/bin/weasyprint
unoconvert: '' # 默认值为 /opt/venv/bin/unoconvert
fileUploadLimit: '' # 默认为 ""(空字符串表示无限制)。设置一个 0 到 999 之间的数字,后跟以下字符串之一来设置限制:"KB"、"MB"、"GB"
ui:
appName: '' # 应用的显示名称
homeDescription: '' # 主页上显示的简短描述或标语
appNameNavbar: '' # 导航栏中显示的名称
languages: [] # 如果为空,则启用所有语言。要仅显示德语和波兰语,请设置为 ["de_DE", "pl_PL"]。英式英语始终启用
endpoints:
toRemove: [] # 要禁用的端点列表(例如 ['img-to-pdf', 'remove-pages'])
groupsToRemove: [] # 要禁用的组列表(例如 ['LibreOffice'])
metrics:
enabled: true # 设为 'true' 启用 Info API 端点('/api/*'),'false' 则禁用
processExecutor:
sessionLimit: # 进程执行器实例限制
libreOfficeSessionLimit: 1
pdfToHtmlSessionLimit: 1
qpdfSessionLimit: 4
tesseractSessionLimit: 1
pythonOpenCvSessionLimit: 8
weasyPrintSessionLimit: 16
installAppSessionLimit: 1
calibreSessionLimit: 1
timeoutMinutes: # 进程执行器超时时间(分钟)
libreOfficetimeoutMinutes: 30
pdfToHtmltimeoutMinutes: 20
pythonOpenCvtimeoutMinutes: 30
weasyPrinttimeoutMinutes: 30
installApptimeoutMinutes: 60
calibretimeoutMinutes: 30
tesseractTimeoutMinutes: 30
ocr
Stirling-PDF 使用 Tesseract 进行文本识别
Tesseract OCR 支持多种语言。您可以在 Tesseract GitHub 仓库中找到其他语言包:
- tessdata_fast:这些语言包更小,加载速度更快,但识别准确率可能较低。
- tessdata:这些语言包更大,提供更好的识别精度,但可能需要更长时间才能加载。 根据您的需求,您可以根据用例选择合适的语言包。Stirling-PDF 默认使用tessdata_fast英语,但您可以替换。
安装语言包
.traineddata通过选择您需要的语言的文件来下载所需的语言包。
将.traineddata文件放在 Tesseract tessdata 目录中:(/usr/share/tessdata或等效目录)
请勿删除现有的eng.traineddata,这是必需的。
docker
-v /location/of/trainingData:/usr/share/tessdata
UI定制
API
访问 /swagger-ui/index.html您的 Stirling-PDF 实例上的本地 Swagger UI 或者在线Swagger 文档
使用情况监控
所有用户均可使用以下 API 端点来监控使用情况统计信息。这些端点提供非持久性使用情况数据,可按需查询。
| 端点 | 描述 |
|---|---|
GET /api/v1/info/status | 应用程序状态和版本信息 |
GET /api/v1/info/requests | 特定端点的 POST 请求总数(可选查询参数endpoint:) |
GET /api/v1/info/requests/unique | 特定端点的 POST 请求的唯一用户数 |
GET /api/v1/info/requests/all | 所有端点的 POST 请求计数 |
GET /api/v1/info/requests/all/unique | 所有端点的 POST 请求的唯一用户数 |
GET /api/v1/info/load | 特定端点的 GET 请求总数(可选查询参数endpoint:) |
GET /api/v1/info/load/unique | 特定端点的 GET 请求的唯一用户数 |
GET /api/v1/info/load/all | 所有端点的 GET 请求计数 |
GET /api/v1/info/load/all/unique | 所有端点的 GET 请求的唯一用户数 |
