Stirling-PDF adalah alat manipulasi PDF berbasis web yang kuat dan dihosting secara lokal menggunakan Docker. Ini memungkinkan Anda melakukan berbagai operasi pada file PDF, termasuk pemisahan, penggabungan, konversi, pengorganisasian ulang, penambahan gambar, rotasi, kompresi, dan banyak lagi. Aplikasi web yang dihosting secara lokal ini telah berevolusi untuk mencakup serangkaian fitur komprehensif, yang memenuhi semua kebutuhan PDF Anda.
Stirling-PDF tidak memulai panggilan keluar apa pun untuk tujuan pencatatan atau pelacakan.
Semua file dan PDF ada secara eksklusif di sisi klien, berada di memori server hanya selama pelaksanaan tugas, atau sementara berada di file semata-mata untuk pelaksanaan tugas. File apa pun yang diunduh oleh pengguna akan dihapus dari server pada saat itu.
Untuk ikhtisar tugas dan teknologi yang digunakan masing-masing, silakan lihat Endpoint-groups.md.
Demo aplikasi tersedia di sini.
Untuk pengguna Windows, unduh Stirling-PDF.exe terbaru dari bagian rilis kami atau dengan mengklik di sini.
Silakan lihat LocalRunGuide.
Catatan
https://hub.docker.com/r/stirlingtools/stirling-pdf
Stirling-PDF memiliki tiga versi berbeda: versi lengkap, versi ultra-lite, dan versi 'gemuk'. Tergantung pada jenis fitur yang Anda gunakan, Anda mungkin menginginkan gambar yang lebih kecil untuk menghemat ruang. Untuk melihat apa yang ditawarkan oleh berbagai versi, silakan lihat pemetaan versi kami. Bagi yang tidak keberatan dengan optimasi ruang, gunakan saja tag terbaru.
Harap dicatat dalam contoh di bawah, Anda mungkin perlu mengubah jalur volume sesuai kebutuhan, misalnya ./extraConfigs:/configs
menjadi /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
Catatan: Podman kompatibel dengan CLI dengan Docker, jadi cukup ganti "docker" dengan "podman".
Lihat diagram kemudi kubernetes di sini
Silakan lihat HowToUseOCR.md.
Fungsionalitas tertentu seperti Sign
mendukung file yang disimpan sebelumnya di /customFiles/signatures/
. File gambar yang ditempatkan di sini akan dapat diakses untuk digunakan melalui UI web. Saat ini, ini mendukung dua jenis folder:
/customFiles/signatures/ALL_USERS
: Dapat diakses oleh semua pengguna, berguna untuk organisasi di mana banyak pengguna menggunakan file yang sama atau untuk pengguna yang tidak menggunakan otentikasi/customFiles/signatures/{username}
: Seperti /customFiles/signatures/froodle
, hanya dapat diakses oleh nama pengguna froodle
, bersifat pribadi untuk semua orang lain Stirling-PDF saat ini mendukung 36 bahasa!
Bahasa | Kemajuan |
---|---|
Arab (العربية) (ar_AR) | |
Basque (Euskara) (eu_ES) | |
Bulgaria (Български) (bg_BG) | |
Katalan (Català) (ca_CA) | |
Kroasia (Hrvatski) (hr_HR) | |
Ceko (Česky) (cs_CZ) | |
Denmark (Dansk) (da_DK) | |
Belanda (Nederlands) (nl_NL) | |
Bahasa Inggris (Bahasa Inggris) (en_GB) | |
Inggris (AS) (en_US) | |
Prancis (Français) (fr_FR) | |
Jerman (Jerman) (de_DE) | |
Yunani (Ελληνικά) (el_GR) | |
Hindi (हिंदी) (hi_IN) | |
Hongaria (Magyar) (hu_HU) | |
Bahasa Indonesia (Bahasa Indonesia) (id_ID) | |
Irlandia (Gaeilge) (ga_IE) | |
Italia (Italia) (it_IT) | |
Jepang (日本語) (ja_JP) | |
Korea (한국어) (ko_KR) | |
Norwegia (Norsk) (no_NB) | |
Polandia (Polski) (pl_PL) | |
Portugis (Português) (pt_PT) | |
Portugis Brasil (Português) (pt_BR) | |
Rumania (Romawi) (ro_RO) | |
Rusia (Русский) (ru_RU) | |
Alfabet Latin Serbia (Srpski) (sr_LATN_RS) | |
Bahasa Cina Sederhana (简体中文) (zh_CN) | |
Slowakia (Slovensky) (sk_SK) | |
Spanyol (Español) (es_ES) | |
Swedia (Svenska) (sv_SE) | |
Thailand (ไทย) (th_TH) | |
Bahasa Cina Tradisional (繁體中文) (zh_TW) | |
Turki (Türkçe) (tr_TR) | |
Ukraina (Українська) (uk_UA) | |
Vietnam (Tiếng Việt) (vi_VN) |
Silakan lihat Panduan Berkontribusi kami.
Stirling PDF menawarkan perangkat lunak edisi Perusahaan, Ini adalah perangkat lunak hebat yang sama tetapi dengan fitur dan kenyamanan tambahan
Lihat dokumen di sana atau situs web resmi kami
Stirling-PDF memungkinkan penyesuaian aplikasi dengan mudah, termasuk hal-hal seperti:
Ada dua opsi untuk ini, baik menggunakan file pengaturan yang dihasilkan settings.yml
, yang terletak di direktori /configs
dan mengikuti format YAML standar, atau menggunakan variabel lingkungan, yang akan menggantikan file pengaturan.
Misalnya, di settings.yml
, Anda mungkin memiliki:
security :
enableLogin : ' true '
Untuk mendapatkannya melalui variabel lingkungan, Anda akan menggunakan SECURITY_ENABLELOGIN
.
Daftar pengaturan saat ini adalah:
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
Ada file konfigurasi tambahan /configs/custom_settings.yml
di mana pengguna yang akrab dengan Java dan Spring application.properties
dapat memasukkan pengaturan mereka sendiri di atas pengaturan Stirling-PDF yang sudah ada.
ENDPOINTS_TO_REMOVE
dan GROUPS_TO_REMOVE
dapat menyertakan daftar titik akhir dan grup yang dipisahkan koma untuk dinonaktifkan. Misalnya, ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages
akan menonaktifkan image-to-pdf dan menghapus halaman, sedangkan GROUPS_TO_REMOVE=LibreOffice
akan menonaktifkan semua hal yang menggunakan LibreOffice. Anda dapat melihat daftar semua titik akhir dan grup di sini./customFiles/static/
. Contoh penyesuaian logo aplikasi adalah menempatkan /customFiles/static/favicon.svg
untuk mengganti SVG saat ini. Ini dapat digunakan untuk mengubah images/icons/css/fonts/js
apa pun, dll. di Stirling-PDF.SYSTEM_ROOTURIPATH
- Tetapkan URI root aplikasi (misalnya /pdf-app
untuk mengatur URI root ke localhost:8080/pdf-app
)SYSTEM_CONNECTIONTIMEOUTMINUTES
- Tetapkan nilai batas waktu koneksi khususDOCKER_ENABLE_SECURITY
- Setel ke true
untuk mengunduh jar keamanan (diperlukan untuk login otentikasi)INSTALL_BOOK_AND_ADVANCED_HTML_OPS
- Unduh Calibre ke Stirling-PDF untuk mengaktifkan PDF ke/dari buku dan konversi HTML tingkat lanjutLANGS
- Tentukan pustaka font khusus yang akan diinstal untuk konversi dokumen Bagi mereka yang ingin menggunakan API backend Stirling-PDF untuk menautkan dengan skrip khusus mereka sendiri untuk mengedit PDF, Anda dapat melihat semua dokumentasi API yang ada di sini, atau navigasikan ke /swagger-ui/index.html
dari instance Stirling-PDF Anda untuk versi Anda dokumentasi (atau dengan mengikuti tombol API di pengaturan Stirling-PDF).
./configs
yang diberi volume dalam Docker agar dapat dipertahankan selama pembaruan.DOCKER_ENABLE_SECURITY
ke true
dalam variabel lingkungan.settings.yml
atau setel SECURITY_ENABLE_LOGIN
ke true
.admin
dan kata sandi stirling
. Saat login, Anda akan dipaksa untuk mengubah kata sandi ke yang baru. Anda juga dapat menggunakan variabel lingkungan SECURITY_INITIALLOGIN_USERNAME
dan SECURITY_INITIALLOGIN_PASSWORD
untuk langsung menyetel kredensial Anda sendiri (disarankan untuk menghapusnya setelah pembuatan pengguna). Setelah hal di atas selesai, saat restart, stirling-pdf-DB.mv.db
baru akan menunjukkan apakah semuanya berfungsi.
Saat Anda masuk ke Stirling-PDF, Anda akan diarahkan ke halaman /login
untuk masuk dengan kredensial default tersebut. Setelah login, semuanya akan berfungsi seperti biasa.
Untuk mengakses pengaturan akun Anda, buka Pengaturan Akun di menu roda pengaturan (kanan atas di bilah navigasi). Menu Pengaturan Akun ini juga merupakan tempat Anda menemukan kunci API Anda.
Untuk menambahkan pengguna baru, buka bagian bawah Pengaturan Akun dan tekan 'Pengaturan Admin'. Di sini Anda dapat menambahkan pengguna baru. Berbagai peran yang disebutkan dalam hal ini adalah untuk membatasi tarif. Ini adalah pekerjaan yang sedang berjalan dan akan diperluas lebih lanjut di masa depan.
Untuk penggunaan API, Anda harus menyediakan header dengan X-API-Key
dan kunci API terkait untuk pengguna tersebut.
Ini adalah masalah yang biasanya disebabkan oleh konfigurasi NGINX Anda. Ukuran unggahan file default untuk NGINX adalah 1MB. Anda perlu menambahkan yang berikut ini ke file yang tersedia di situs Nginx Anda: client_max_body_size SIZE;
(di mana "SIZE" adalah 50M misalnya untuk file 50MB).
NGINX memiliki nilai batas waktu secara default, jadi jika Anda menjalankan Stirling-PDF di belakang NGINX, Anda mungkin perlu menetapkan nilai batas waktu, seperti menambahkan konfigurasi proxy_read_timeout 3600;
.