Stirling-PDF는 Docker를 사용하는 강력한 로컬 호스팅 웹 기반 PDF 조작 도구입니다. 분할, 병합, 변환, 재구성, 이미지 추가, 회전, 압축 등을 포함하여 PDF 파일에 대한 다양한 작업을 수행할 수 있습니다. 로컬로 호스팅되는 이 웹 응용 프로그램은 모든 PDF 요구 사항을 해결하는 포괄적인 기능 세트를 포함하도록 발전했습니다.
Stirling-PDF는 기록 보관 또는 추적 목적으로 아웃바운드 통화를 시작하지 않습니다.
모든 파일과 PDF는 클라이언트 측에만 존재하거나 작업 실행 중에만 서버 메모리에 존재하거나 작업 실행을 위해서만 일시적으로 파일에 존재합니다. 해당 시점에 사용자가 다운로드한 모든 파일은 서버에서 삭제됩니다.
작업에 대한 개요와 각 작업이 사용하는 기술을 보려면 Endpoint-groups.md를 참조하세요.
앱 데모는 여기에서 볼 수 있습니다.
Windows 사용자의 경우 릴리스 섹션에서 최신 Stirling-PDF.exe를 다운로드하거나 여기를 클릭하여 다운로드하십시오.
LocalRunGuide를 보십시오.
메모
https://hub.docker.com/r/stirlingtools/stirling-pdf
Stirling-PDF에는 정식 버전, 울트라 라이트 버전, '지방' 버전의 세 가지 버전이 있습니다. 사용하는 기능 유형에 따라 공간을 절약하기 위해 더 작은 이미지를 원할 수도 있습니다. 다양한 버전이 무엇을 제공하는지 확인하려면 버전 매핑을 살펴보세요. 공간 최적화에 신경 쓰지 않는 사람들은 최신 태그를 사용하세요.
아래 예에서 필요에 따라 볼륨 경로를 변경해야 할 수도 있습니다(예: ./extraConfigs:/configs
에서 /opt/stirlingpdf/extraConfigs:/configs
.
docker run -d
-p 8080:8080
-v ./trainingData:/usr/share/tessdata
-v ./extraConfigs:/configs
-v ./logs:/logs
# Optional customization (not required)
# -v /location/of/customFiles:/customFiles
-e DOCKER_ENABLE_SECURITY=false
-e INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false
-e LANGS=en_GB
--name stirling-pdf
stirlingtools/stirling-pdf:latest
version : ' 3.3 '
services :
stirling-pdf :
image : stirlingtools/stirling-pdf:latest
ports :
- ' 8080:8080 '
volumes :
- ./trainingData:/usr/share/tessdata # Required for extra OCR languages
- ./extraConfigs:/configs
# - ./customFiles:/customFiles/
# - ./logs:/logs/
environment :
- DOCKER_ENABLE_SECURITY=false
- INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false
- LANGS=en_GB
참고: Podman은 Docker와 CLI와 호환되므로 "docker"를 "podman"으로 바꾸면 됩니다.
여기에서 kubernetes helm 차트를 확인하세요.
HowToUseOCR.md를 확인하세요.
Sign
과 같은 특정 기능은 /customFiles/signatures/
에 저장된 사전 저장된 파일을 지원합니다. 여기에 있는 이미지 파일은 웹 UI를 통해 액세스하여 사용할 수 있습니다. 현재 이는 두 가지 폴더 유형을 지원합니다.
/customFiles/signatures/ALL_USERS
: 모든 사용자가 접근 가능하며, 많은 사용자가 동일한 파일을 사용하는 조직이나 인증을 사용하지 않는 사용자에게 유용합니다./customFiles/signatures/{username}
: 예: /customFiles/signatures/froodle
, froodle
사용자 이름만 액세스 가능, 기타 모든 사용자는 비공개 Stirling-PDF는 현재 36개 언어를 지원합니다!
언어 | 진전 |
---|---|
아랍어(العربية)(ar_AR) | |
바스크어(유스카라)(eu_ES) | |
불가리아어(Български)(bg_BG) | |
카탈로니아어(Català)(ca_CA) | |
크로아티아어(Hrvatski)(hr_HR) | |
체코어(체스키)(cs_CZ) | |
덴마크어(단스크)(da_DK) | |
네덜란드어(네덜란드)(nl_NL) | |
영어(영어)(en_GB) | |
영어(미국) (en_US) | |
프랑스어(프랑스어)(fr_FR) | |
독일어(독일어)(de_DE) | |
그리스어(Εlamlamnνικά)(el_GR) | |
힌디어(اندي) (hi_IN) | |
헝가리어(마자르)(hu_HU) | |
인도네시아어(인도네시아어)(id_ID) | |
아일랜드어(개일게)(ga_IE) | |
이탈리아어(Italiano)(it_IT) | |
일본어(일본어)(ja_JP) | |
한국어(한국어) (ko_KR) | |
노르웨이어(노르스크)(no_NB) | |
폴란드어(Polski)(pl_PL) | |
포르투갈어(포르투갈어)(pt_PT) | |
포르투갈어(포르투갈어)(pt_BR) | |
루마니아어(Română)(ro_RO) | |
러시아어(Русский)(ru_RU) | |
세르비아어 라틴 알파벳(Srpski)(sr_LATN_RS) | |
중국어 간체(简体中文)(zh_CN) | |
슬로바키아어(Slovensky)(sk_SK) | |
스페인어(Español)(es_ES) | |
스웨덴어(스벤스카)(sv_SE) | |
태국어(ไท้) (th_TH) | |
중국어 번체(繁體中文)(zh_TW) | |
터키어(Türkçe)(tr_TR) | |
우크라이나어(Украѕнська)(uk_UA) | |
베트남어(Tiếng Viet)(vi_VN) |
기여 가이드를 참조하세요.
Stirling PDF는 소프트웨어의 Enterprise 버전을 제공합니다. 이는 동일한 훌륭한 소프트웨어이지만 기능과 편안함이 추가되었습니다.
해당 문서나 공식 웹사이트를 확인하세요.
Stirling-PDF를 사용하면 다음과 같은 앱을 쉽게 사용자 정의할 수 있습니다.
이를 위한 두 가지 옵션이 있습니다. 생성된 설정 파일인 settings.yml
을 사용하는 것입니다. 이 파일은 /configs
디렉터리에 있으며 표준 YAML 형식을 따릅니다. 또는 환경 변수를 사용하여 설정 파일을 재정의합니다.
예를 들어 settings.yml
에는 다음이 있을 수 있습니다.
security :
enableLogin : ' true '
환경 변수를 통해 이를 수행하려면 SECURITY_ENABLELOGIN
사용합니다.
현재 설정 목록은 다음과 같습니다.
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; when using e.g. Fail2Ban you can deactivate the function with -1
loginResetTimeMinutes : 120 # lock account for 2 hours after x attempts
loginMethod : all # 'all' (Login Username/Password and OAuth2[must be enabled and configured]), 'normal'(only Login with Username/Password) or 'oauth2'(only Login with OAuth2)
initialLogin :
username : ' ' # initial username for the first login
password : ' ' # 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)
client :
keycloak :
issuer : ' ' # URL of the Keycloak realm's OpenID Connect Discovery endpoint
clientId : ' ' # client ID for Keycloak OAuth2
clientSecret : ' ' # client secret for Keycloak OAuth2
scopes : openid, profile, email # scopes for Keycloak OAuth2
useAsUsername : preferred_username # field to use as the username for Keycloak OAuth2
google :
clientId : ' ' # client ID for Google OAuth2
clientSecret : ' ' # client secret for Google OAuth2
scopes : https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/userinfo.profile # scopes for Google OAuth2
useAsUsername : email # field to use as the username for Google OAuth2
github :
clientId : ' ' # client ID for GitHub OAuth2
clientSecret : ' ' # client secret for GitHub OAuth2
scopes : read:user # scope for GitHub OAuth2
useAsUsername : login # field to use as the username for GitHub OAuth2
issuer : ' ' # set to any provider that supports OpenID Connect Discovery (/.well-known/openid-configuration) endpoint
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
blockRegistration : false # set to 'true' to deny login with SSO without prior registration by an admin
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'
saml2 :
enabled : false # currently in alpha, not recommended for use yet, enableAlphaFunctionality must be set to true
autoCreateUser : false # set to 'true' to allow auto-creation of non-existing users
blockRegistration : false # set to 'true' to deny login with SSO without prior registration by an admin
registrationId : stirling
idpMetadataUri : https://dev-XXXXXXXX.okta.com/app/externalKey/sso/saml/metadata
idpSingleLogoutUrl : https://dev-XXXXXXXX.okta.com/app/dev-XXXXXXXX_stirlingpdf_1/externalKey/slo/saml
idpSingleLoginUrl : https://dev-XXXXXXXX.okta.com/app/dev-XXXXXXXX_stirlingpdf_1/externalKey/sso/saml
idpIssuer : http://www.okta.com/externalKey
idpCert : classpath:okta.crt
privateKey : classpath:saml-private-key.key
spCert : classpath:saml-public-cert.crt
enterpriseEdition :
enabled : false # set to 'true' to enable enterprise edition
key : 00000000-0000-0000-0000-000000000000
CustomMetadata :
autoUpdateMetadata : false # set to 'true' to automatically update metadata with below values
author : username # supports text such as 'John Doe' or types such as username to autopopulate with user's username
creator : Stirling-PDF # supports text such as 'Company-PDF'
producer : Stirling-PDF # supports text such as 'Company-PDF'
legal :
termsAndConditions : https://www.stirlingpdf.com/terms-and-conditions # URL to the terms and conditions of your application (e.g. https://example.com/terms). Empty string to disable or filename to load from local file in static folder
privacyPolicy : https://www.stirlingpdf.com/privacy-policy # URL to the privacy policy of your application (e.g. https://example.com/privacy). Empty string to disable or filename to load from local file in static folder
accessibilityStatement : ' ' # URL to the accessibility statement of your application (e.g. https://example.com/accessibility). Empty string to disable or filename to load from local file in static folder
cookiePolicy : ' ' # URL to the cookie policy of your application (e.g. https://example.com/cookie). Empty string to disable or filename to load from local file in static folder
impressum : ' ' # URL to the impressum of your application (e.g. https://example.com/impressum). Empty string to disable or filename to load from local file in static folder
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 : false # 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
tessdataDir : /usr/share/tessdata # path to the directory containing the Tessdata files. This setting is relevant for Windows systems. For Windows users, this path should be adjusted to point to the appropriate directory where the Tessdata files are stored.
enableAnalytics : undefined # set to 'true' to enable analytics, set to 'false' to disable analytics; for enterprise users, this is set to true
ui :
appName : ' ' # application's visible name
homeDescription : ' ' # short description or tagline shown on the homepage
appNameNavbar : ' ' # 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
# Automatically Generated Settings (Do Not Edit Directly)
AutomaticallyGenerated :
key : example
UUID : example
Java 및 Spring application.properties
에 익숙한 사용자가 Stirling-PDF의 기존 설정 위에 자신의 설정을 입력할 수 있는 추가 구성 파일 /configs/custom_settings.yml
이 있습니다.
ENDPOINTS_TO_REMOVE
및 GROUPS_TO_REMOVE
엔드포인트에는 비활성화할 엔드포인트 및 그룹의 쉼표로 구분된 목록이 포함될 수 있습니다. 예를 들어 ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages
image-to-pdf와 페이지 제거를 모두 비활성화하는 반면, GROUPS_TO_REMOVE=LibreOffice
LibreOffice를 사용하는 모든 항목을 비활성화합니다. 여기에서 모든 엔드포인트 및 그룹 목록을 볼 수 있습니다./customFiles/static/
디렉터리에 파일을 배치하여 앱 로고와 같은 정적 파일을 사용자 지정합니다. 앱 로고를 사용자 정의하는 예는 /customFiles/static/favicon.svg
배치하여 현재 SVG를 재정의하는 것입니다. 이는 Stirling-PDF의 images/icons/css/fonts/js
등을 변경하는 데 사용할 수 있습니다.SYSTEM_ROOTURIPATH
- 애플리케이션의 루트 URI를 설정합니다(예: 루트 URI를 localhost:8080/pdf-app
으로 설정하려면 /pdf-app
app ).SYSTEM_CONNECTIONTIMEOUTMINUTES
- 사용자 정의 연결 시간 초과 값 설정DOCKER_ENABLE_SECURITY
- 보안 jar을 다운로드하려면 true
로 설정합니다(인증 로그인에 필요).INSTALL_BOOK_AND_ADVANCED_HTML_OPS
- 책과 고급 HTML 변환에서 PDF를 활성화하려면 Stirling-PDF에 Calibre를 다운로드하세요.LANGS
- 문서 변환을 위해 설치할 사용자 정의 글꼴 라이브러리 정의 Stirling-PDF의 백엔드 API를 사용하여 자체 사용자 정의 스크립트와 연결하여 PDF를 편집하려는 경우 여기에서 기존 API 문서를 모두 보거나 해당 버전에 대한 Stirling-PDF 인스턴스의 /swagger-ui/index.html
로 이동할 수 있습니다. 문서화(또는 Stirling-PDF 설정의 API 버튼을 따라).
./configs
폴더를 볼륨화해야 합니다.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 키가 포함된 헤더를 제공해야 합니다.
이는 일반적으로 NGINX 구성으로 인해 발생하는 문제입니다. NGINX의 기본 파일 업로드 크기는 1MB입니다. Nginx 사이트에서 사용 가능한 파일에 다음을 추가해야 합니다: client_max_body_size SIZE;
(여기서 "SIZE"는 50MB 파일의 경우 50M입니다.)
NGINX에는 기본적으로 시간 초과 값이 있으므로 NGINX 뒤에서 Stirling-PDF를 실행하는 경우 구성 proxy_read_timeout 3600;
.