* use transform instead of change * disable workflows * updates expect commands as well * try "highlighted" * update versions * update workflow files * Remove pro badge if enabled * add some wait time * Fix metricCollection * Update PostHogService.java * Update messages_de_DE.properties (#2070) * Update messages_de_DE.properties Completed translations for German language. * Update messages_de_DE.properties * Update messages_it_IT.properties (#2077) * extract and apply the image orientation from exif data in imageToPdf (#2073) * Update 3rd Party Licenses (#2080) Signed-off-by: GitHub Action <action@github.com> Co-authored-by: GitHub Action <action@github.com> * visual certificate signing (#2084) add visual digital signature * added some missing translations (#2085) * Auto detect presence of external dependencies (LibreOffice etc) and disable/enable features dynamically (#2082) * Create ExternalAppDepConfig.java * Update EndpointConfiguration.java * Hardening suggestions for Stirling-PDF / ExternalAppDepConfig (#2083) Switch order of literals to prevent NullPointerException Co-authored-by: pixeebot[bot] <104101892+pixeebot[bot]@users.noreply.github.com> --------- Co-authored-by: pixeebot[bot] <104101892+pixeebot[bot]@users.noreply.github.com> * 📝 Update README: Translation Progress Table (#2072) 📝 Sync README > Made via sync_files.yml Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * Spanish translate (#2102) * Spanish translate * Added blank line --------- Co-authored-by: Manu <manuel@fusiontelecom.co> * Optimierung der SAML2-Integration und Verbesserung der Zertifikats- und Fehlerbehandlung (#2105) * certificate processing * Hides dialog when provider list is empty * removed: unused * Modernize and secure temp file creation (#2106) Co-authored-by: pixeebot[bot] <104101892+pixeebot[bot]@users.noreply.github.com> * Bump springBootVersion from 3.3.4 to 3.3.5 (#2117) Bumps `springBootVersion` from 3.3.4 to 3.3.5. Updates `org.springframework.boot:spring-boot-starter-web` from 3.3.4 to 3.3.5 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.4...v3.3.5) Updates `org.springframework.boot:spring-boot-starter-jetty` from 3.3.4 to 3.3.5 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.4...v3.3.5) Updates `org.springframework.boot:spring-boot-starter-thymeleaf` from 3.3.4 to 3.3.5 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.4...v3.3.5) Updates `org.springframework.boot:spring-boot-starter-security` from 3.3.4 to 3.3.5 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.4...v3.3.5) Updates `org.springframework.boot:spring-boot-starter-data-jpa` from 3.3.4 to 3.3.5 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.4...v3.3.5) Updates `org.springframework.boot:spring-boot-starter-oauth2-client` from 3.3.4 to 3.3.5 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.4...v3.3.5) Updates `org.springframework.boot:spring-boot-starter-test` from 3.3.4 to 3.3.5 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.4...v3.3.5) Updates `org.springframework.boot:spring-boot-starter-actuator` from 3.3.4 to 3.3.5 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.4...v3.3.5) Updates `org.springframework.boot:spring-boot-devtools` from 3.3.4 to 3.3.5 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.4...v3.3.5) --- updated-dependencies: - dependency-name: org.springframework.boot:spring-boot-starter-web dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.springframework.boot:spring-boot-starter-jetty dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.springframework.boot:spring-boot-starter-thymeleaf dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.springframework.boot:spring-boot-starter-security dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.springframework.boot:spring-boot-starter-data-jpa dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.springframework.boot:spring-boot-starter-oauth2-client dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.springframework.boot:spring-boot-starter-test dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.springframework.boot:spring-boot-starter-actuator dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.springframework.boot:spring-boot-devtools dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump org.springframework.boot from 3.3.4 to 3.3.5 (#2118) Bumps [org.springframework.boot](https://github.com/spring-projects/spring-boot) from 3.3.4 to 3.3.5. - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.4...v3.3.5) --- updated-dependencies: - dependency-name: org.springframework.boot dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * 📝 Update README: Translation Progress Table (#2103) 📝 Sync README > Made via sync_files.yml Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * Update 3rd Party Licenses (#2119) Signed-off-by: GitHub Action <action@github.com> Co-authored-by: GitHub Action <action@github.com> * Add new french translations (#2120) Add new french translations and improve simple quote * Feature/298 improve compare performance (#2124) * Implement Diff.js * Compare feature - add service worker and improve efficiency for large files * Compare - messages updated to be compatable with language packs * Compare - Acknowledge Diff.js usage * Add message warning there is no text in uploaded pdf to messages file --------- Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> * Update translation files (#2125) Signed-off-by: GitHub Action <action@github.com> Co-authored-by: GitHub Action <action@github.com> * 📝 Update README: Translation Progress Table (#2121) 📝 Sync README > Made via sync_files.yml Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * Fix csrf (#2126) * apply fix * Fixes empty th:action * Update build.gradle * fix * formatting --------- Co-authored-by: Dimitrios Kaitantzidis <james_k23@hotmail.gr> * Update id_ID Translation and fix some grammars (#2108) * Update id_ID Translation and fix some grammars * sync lines to fix build warning * get back new line at end of file --------- Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> * 📝 Update README: Translation Progress Table (#2129) 📝 Sync README > Made via sync_files.yml Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * Feature/save signs (#2127) * apply fix * Fixes empty th:action * Update build.gradle * fix * formatting * Save signatures * Fix code scanning alert no. 42: Uncontrolled data used in path expression Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> * fix UserServiceInterface * Merge branch 'feature/saveSigns' of git@github.com:Stirling-Tools/Stirling-PDF.git into feature/saveSigns * 0.31.0 bump and further csrf * formatting * preview name * add * sign doc * Update translation files (#2128) Signed-off-by: GitHub Action <action@github.com> Co-authored-by: GitHub Action <action@github.com> --------- Signed-off-by: GitHub Action <action@github.com> Co-authored-by: Dimitrios Kaitantzidis <james_k23@hotmail.gr> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: a <a> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: GitHub Action <action@github.com> * 📝 Update README: Translation Progress Table (#2133) 📝 Sync README > Made via sync_files.yml Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * 💾 Update Version (#2132) 💾 Sync Versions > Made via sync_files.yml Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * Bump org.springframework.security:spring-security-saml2-service-provider from 6.3.3 to 6.3.4 (#2052) Bump org.springframework.security:spring-security-saml2-service-provider Bumps [org.springframework.security:spring-security-saml2-service-provider](https://github.com/spring-projects/spring-security) from 6.3.3 to 6.3.4. - [Release notes](https://github.com/spring-projects/spring-security/releases) - [Changelog](https://github.com/spring-projects/spring-security/blob/main/RELEASE.adoc) - [Commits](https://github.com/spring-projects/spring-security/compare/6.3.3...6.3.4) --- updated-dependencies: - dependency-name: org.springframework.security:spring-security-saml2-service-provider dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update 3rd Party Licenses (#2134) Signed-off-by: GitHub Action <action@github.com> Co-authored-by: GitHub Action <action@github.com> * chore(helm): bump chart version according to semver (#2109) Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr> * Update messages_it_IT.properties (#2135) * [bug fix] Update compress-pdf.html (#2138) Update compress-pdf.html * Update build.gradle * 💾 Update Version (#2139) 💾 Sync Versions > Made via sync_files.yml Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * Update README.md * navbar.css: prevent overlapping of elements (#2140) go-pro-link is overlapping the settings button * Update pull_request_template.md * fix signature logo not loading and add option to disable it (#2143) * fix signature logo not loading and add option to disable it * Hardening suggestions for Stirling-PDF / fix-sig-logo (#2144) Modernize and secure temp file creation Co-authored-by: pixeebot[bot] <104101892+pixeebot[bot]@users.noreply.github.com> --------- Co-authored-by: pixeebot[bot] <104101892+pixeebot[bot]@users.noreply.github.com> * Update translation files (#2145) Signed-off-by: GitHub Action <action@github.com> Co-authored-by: GitHub Action <action@github.com> * 📝 Update README: Translation Progress Table (#2136) 📝 Sync README > Made via sync_files.yml Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * Update messages_it_IT.properties (#2146) * fixed minor bugs in Markdown (#2152) * re-config labeler & add new labels (#2153) Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> * Fix: redeclaration of const and add: tranlation placeholder for Session Expiry Messages (#2158) Fix: redeclaration of const * Fix: Path correction to draggable.js #2154 + little makeup (#2159) * Fix: Add missing .map file for minified files (#2156) * Update messages_it_IT.properties (#2161) * Fix: Auto language detection #2122 (#2148) * Fix: Auto language detection #2122 * add LanguageService and AdditionalLanguageJsController * hidden swagger * 📝 Update README: Translation Progress Table (#2160) 📝 Sync README > Made via sync_files.yml Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * Completed translations for 19 languages using AI (#2164) Created translations for various languages using AI * Corrects AI generated translation (#2166) * Fix: Navbar layout overflow (#2162) Fix: Navbar layout overflow using Bootstrap class .navbar-expand-xl Co-authored-by: Harshad Marathe <harshad@DESKTOP-1MNKUHA> * 📝 Update README: Translation Progress Table (#2165) 📝 Sync README > Made via sync_files.yml Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * feat: add helm chart github action (#2113) * feat: add helm chart github action Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr> * fix: remove test branch Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr> * fix: run helm-docs-built after syncing version Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr> * fix: helm repo url --------- Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr> * fix remmeber me (#2184) * fix remmeber me * remove uselss comment * Update translation files (#2185) Signed-off-by: GitHub Action <action@github.com> Co-authored-by: GitHub Action <action@github.com> --------- Signed-off-by: GitHub Action <action@github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: GitHub Action <action@github.com> * Added input sanitization to fix self-xss issue (#2189) * Update and improve zh_TW Traditional Chinese locale (#2188) * 📝 Update README: Translation Progress Table (#2190) 📝 Sync README > Made via sync_files.yml Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * [Feature] Set Executor Instances limits dynamically from properties (#2193) * Update 'ProcessExecutor.java' to use dynamic process limits from properties * Move limits location out of 'application.properties' * Rename 'SemaphoreLimit' to 'SessionLimit' and bundle with 'Timeout...' into one parent class * Searchbar in nav auto select, and exe nolonger disable CLI (#2197) * fix remmeber me * remove uselss comment * Update translation files (#2185) Signed-off-by: GitHub Action <action@github.com> Co-authored-by: GitHub Action <action@github.com> * exe no longer disable CLI --------- Signed-off-by: GitHub Action <action@github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: GitHub Action <action@github.com> Co-authored-by: a <a> * Add option to insert blank page between pages in Multi-tool (#2194) (#2201) * Fix: Card has no favorite icon (#2203) fixes the bug if the card has no favorite icon * Rename lint-helm-charts.yml to lint-helm-charts.yml-disabled * Rename release-helm-charts.yml to release-helm-charts.yml-disabled * Update build.gradle * 💾 Update Version (#2204) 💾 Sync Versions > Made via sync_files.yml Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * Update build.gradle * 💾 Update Version (#2205) 💾 Sync Versions > Made via sync_files.yml Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * Fix: missing opener for View PDF #2206 (#2207) Fix missing opener for View PDF #2206 * feat: move helm chart to https://github.com/Stirling-Tools/Stirling-PDF-chart (#2208) * feat: remove helm chart Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr> * feat: mention kubernetes in install doc Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr> --------- Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr> * Update Version-groups.md * Fix: Reading the username based on the login method. (#2211) * Update messages_ca_CA.properties (#2210) * Update messages_ca_CA.properties Partial Catalan Translation Contribution for Stirling PDF Hi, I’ve completed a partial Catalan translation for Stirling PDF, covering all strings up to the Pipeline section. I focused on maintaining consistency in terminology to ensure a smooth user experience in Catalan. * Update messages_ca_CA.properties Update on Catalan Translation Verification – Test 2 Passed Hi [Developer’s Name], I’ve now completed the verification for Test 2 and ensured that all keys in messages_en_GB.properties align with those in messages_ca_CA.properties. The files should now be fully synchronized with no missing or extra keys. I’ll proceed to re-run the tests to confirm everything is in order. Please feel free to review the updated pull request, and let me know if there’s anything further you’d like me to adjust. Thank you for your support! Best regards, --------- Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> * Update get-info-on-pdf.html #2212 * 📝 Update README: Translation Progress Table (#2214) 📝 Sync README > Made via sync_files.yml Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * Update README.md * Update HowToUseOCR.md * Restricting file input to .md files for Markdown to PDF conversion (#2219) Co-authored-by: Harshad Marathe <harshad@DESKTOP-1MNKUHA> * Removes references to nonexistent endpoint (#2223) * Catalan Translation - Stirling PDF String Updates (#2222) * Update messages_ca_CA.properties Partial Catalan Translation Contribution for Stirling PDF Hi, I’ve completed a partial Catalan translation for Stirling PDF, covering all strings up to the Pipeline section. I focused on maintaining consistency in terminology to ensure a smooth user experience in Catalan. * Update messages_ca_CA.properties Update on Catalan Translation Verification – Test 2 Passed Hi [Developer’s Name], I’ve now completed the verification for Test 2 and ensured that all keys in messages_en_GB.properties align with those in messages_ca_CA.properties. The files should now be fully synchronized with no missing or extra keys. I’ll proceed to re-run the tests to confirm everything is in order. Please feel free to review the updated pull request, and let me know if there’s anything further you’d like me to adjust. Thank you for your support! Best regards, * Catalan Translation - Stirling PDF String Updates Hi, I have worked on the Catalan translation for some of the text strings in the Stirling PDF project. Attached are my contributions, which include the relevant strings for various parts of the system. I’ve made a few small adjustments to ensure the translation is as accurate and coherent as possible in technical contexts. Changes made: 1. Translation of strings related to PDF manipulation tools (e.g., Add Watermark, Split PDF, etc.). 2. Adjustments of terms for better accuracy, such as using “Eliminar” instead of “Treure” or “Esborrar”. 3. Review of technical translations to ensure consistency, such as using “Nombre” instead of “Quantitat” for referring to the number of documents or pages. Attached are the modified strings for your review: • [Attach the modified strings file] If you have any questions or need further adjustments, I’m happy to help. Thank you for your attention and for all your work on the project! Best regards, * Catalan Translation - Stirling PDF String Updates Hi, I have worked on the Catalan translation for some of the text strings in the Stirling PDF project. Attached are my contributions, which include the relevant strings for various parts of the system. I’ve made a few small adjustments to ensure the translation is as accurate and coherent as possible in technical contexts. Changes made: 1. Translation of strings related to PDF manipulation tools (e.g., Add Watermark, Split PDF, etc.). 2. Adjustments of terms for better accuracy, such as using “Eliminar” instead of “Treure” or “Esborrar”. 3. Review of technical translations to ensure consistency, such as using “Nombre” instead of “Quantitat” for referring to the number of documents or pages. Attached are the modified strings for your review: • [Attach the modified strings file] If you have any questions or need further adjustments, I’m happy to help. Thank you for your attention and for all your work on the project! Best regards, * Catalan Translation - Stirling PDF String Updates Hi, I have worked on the Catalan translation for some of the text strings in the Stirling PDF project. Attached are my contributions, which include the relevant strings for various parts of the system. I’ve made a few small adjustments to ensure the translation is as accurate and coherent as possible in technical contexts. Changes made: 1. Translation of strings related to PDF manipulation tools (e.g., Add Watermark, Split PDF, etc.). 2. Adjustments of terms for better accuracy, such as using “Eliminar” instead of “Treure” or “Esborrar”. 3. Review of technical translations to ensure consistency, such as using “Nombre” instead of “Quantitat” for referring to the number of documents or pages. Attached are the modified strings for your review: • [Attach the modified strings file] If you have any questions or need further adjustments, I’m happy to help. Thank you for your attention and for all your work on the project! Best regards, * Catalan Translation - Stirling PDF String Updates * 📝 Sync README > Made via sync_files.yml --------- Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * adds missing dependencies in the endpoints (#2224) * Mention HTTP error 413 in FAQ (#2226) * Fix canvas crop (#2221) * WIP: fixes canvas and rect to crop - small problem in smaller screens - neew to fix re render page on resize * Closes #2209 * Increase watermark coverage to fill page (#2049) (#2220) * Increase watermark coverage to fill page (#2049) * Increase watermark coverage to fill page with the new calculation (#2049) * Update pull_request_template.md * Setup new docker org stirlingtools/stirling-pdf (#2232) * Update push-docker.yml * Update push-docker.yml * Update push-docker.yml * Feature/1976/multi tool multiple pages (#2200) * Multitool - Select multiple pages for rotation tool * Multitool multi select delete feature * Multitool multi select UI improvements and big fixes * Multitool multi select select all and UI improvements * Multi tool multi select, download selected, clean up and bug fixes * Comments * Update buttons for page selection * Update translation files Signed-off-by: GitHub Action <action@github.com> * Multitool multiselect split functionality and UI updates * Download selected button, additional tooltips * Update translation files Signed-off-by: GitHub Action <action@github.com> * revert CertSignController * remove material icons * restore to previous certsigncontroller * Update CertSignController.java --------- Signed-off-by: GitHub Action <action@github.com> Co-authored-by: GitHub Action <action@github.com> Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> * 📝 Update README: Translation Progress Table (#2236) 📝 Sync README > Made via sync_files.yml Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * Fix: Ensure backend receives false when checkbox is unchecked in split-pdf-by-chapters feature (#2234) * Implemented hidden input tags to resolve issue with file input handling * Cleanup: Remove log statements for production readiness --------- Co-authored-by: Harshad Marathe <harshad@DESKTOP-1MNKUHA> Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> * Update the Tests (#2066) * use transform instead of change * disable workflows * updates expect commands as well * try "highlighted" * update versions * update workflow files * Remove pro badge if enabled * add some wait time --------- Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Co-authored-by: a <a> * try this --------- Signed-off-by: GitHub Action <action@github.com> Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr> Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Co-authored-by: a <a> Co-authored-by: Corbinian Grimm <23664150+pixma140@users.noreply.github.com> Co-authored-by: albanobattistella <34811668+albanobattistella@users.noreply.github.com> Co-authored-by: Eric <71648843+sbplat@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: GitHub Action <action@github.com> Co-authored-by: swanemar <107953493+swanemar@users.noreply.github.com> Co-authored-by: pixeebot[bot] <104101892+pixeebot[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Manuel Mora Gordillo <manuito@gmail.com> Co-authored-by: Manu <manuel@fusiontelecom.co> Co-authored-by: Ludy <Ludy87@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Florian Fish <florian@poissonmail.fr> Co-authored-by: reecebrowne <74901996+reecebrowne@users.noreply.github.com> Co-authored-by: Dimitrios Kaitantzidis <james_k23@hotmail.gr> Co-authored-by: Rania Amina <reaamina@gmail.com> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: Ludovic Ortega <ludovic.ortega@adminafk.fr> Co-authored-by: Philip H. <47042125+pheiduck@users.noreply.github.com> Co-authored-by: Saud Fatayerji <Sf298@users.noreply.github.com> Co-authored-by: MaratheHarshad <97970262+MaratheHarshad@users.noreply.github.com> Co-authored-by: Harshad Marathe <harshad@DESKTOP-1MNKUHA> Co-authored-by: ninjat <hotanya.r@gmail.com> Co-authored-by: Peter Dave Hello <hsu@peterdavehello.org> Co-authored-by: Rafael Encinas <rafael.encinas@encora.com> Co-authored-by: Renan <82916964+thisisrenan@users.noreply.github.com> Co-authored-by: leo-jmateo <128976497+leo-jmateo@users.noreply.github.com> Co-authored-by: S. Neuhaus <neuhaus@users.noreply.github.com> Co-authored-by: Dimitris Kaitantzidis <44621809+DimK10@users.noreply.github.com>
9.3 KiB
To run the application without Docker/Podman, you will need to manually install all dependencies and build the necessary components.
Note that some dependencies might not be available in the standard repositories of all Linux distributions, and may require additional steps to install.
The following guide assumes you have a basic understanding of using a command line interface in your operating system.
It should work on most Linux distributions and MacOS. For Windows, you might need to use Windows Subsystem for Linux (WSL) for certain steps. The amount of dependencies is to actually reduce overall size, i.e., installing LibreOffice subcomponents rather than the full LibreOffice package.
You could theoretically use a Distrobox/Toolbox if your distribution has old or not all packages. But you might just as well use the Docker container then.
Step 1: Prerequisites
Install the following software, if not already installed:
- Java 17 or later (21 recommended)
- Gradle 7.0 or later (included within repo so not needed on server)
- Git
- Python 3.8 (with pip)
- Make
- GCC/G++
- Automake
- Autoconf
- libtool
- pkg-config
- zlib1g-dev
- libleptonica-dev
For Debian-based systems, you can use the following command:
sudo apt-get update
sudo apt-get install -y git automake autoconf libtool libleptonica-dev pkg-config zlib1g-dev make g++ openjdk-21-jdk python3 python3-pip
For Fedora-based systems use this command:
sudo dnf install -y git automake autoconf libtool leptonica-devel pkg-config zlib-devel make gcc-c++ java-21-openjdk python3 python3-pip
For non-root users with Nix Package Manager, use the following command:
nix-channel --update
nix-env -iA nixpkgs.jdk21 nixpkgs.git nixpkgs.python38 nixpkgs.gnumake nixpkgs.libgcc nixpkgs.automake nixpkgs.autoconf nixpkgs.libtool nixpkgs.pkg-config nixpkgs.zlib nixpkgs.leptonica
Step 2: Clone and Build jbig2enc (Only required for certain OCR functionality)
For Debian and Fedora, you can build it from source using the following commands:
mkdir ~/.git
cd ~/.git && \
git clone https://github.com/agl/jbig2enc.git && \
cd jbig2enc && \
./autogen.sh && \
./configure && \
make && \
sudo make install
For Nix, you will face Leptonica not detected
. Bypass this by installing it directly using the following command:
nix-env -iA nixpkgs.jbig2enc
Step 3: Install Additional Software
Next we need to install LibreOffice for conversions, ocrmypdf for OCR, and OpenCV for pattern recognition functionality.
Install the following software:
- libreoffice-core
- libreoffice-common
- libreoffice-writer
- libreoffice-calc
- libreoffice-impress
- python3-uno
- unoconv
- pngquant
- unpaper
- ocrmypdf
- opencv-python-headless
For Debian-based systems, you can use the following command:
sudo apt-get install -y libreoffice-writer libreoffice-calc libreoffice-impress unpaper ocrmypdf
pip3 install uno opencv-python-headless unoconv pngquant WeasyPrint --break-system-packages
For Fedora:
sudo dnf install -y libreoffice-writer libreoffice-calc libreoffice-impress unpaper ocrmypdf
pip3 install uno opencv-python-headless unoconv pngquant WeasyPrint
For Nix:
nix-env -iA nixpkgs.unpaper nixpkgs.libreoffice nixpkgs.ocrmypdf nixpkgs.poppler_utils
pip3 install uno opencv-python-headless unoconv pngquant WeasyPrint
Step 4: Clone and Build Stirling-PDF
cd ~/.git && \
git clone https://github.com/Stirling-Tools/Stirling-PDF.git && \
cd Stirling-PDF && \
chmod +x ./gradlew && \
./gradlew build
Step 5: Move Jar to Desired Location
After the build process, a .jar
file will be generated in the build/libs
directory. You can move this file to a desired location, for example, /opt/Stirling-PDF/
. You must also move the Script folder within the Stirling-PDF repo that you have downloaded to this directory. This folder is required for the Python scripts using OpenCV.
sudo mkdir /opt/Stirling-PDF && \
sudo mv ./build/libs/Stirling-PDF-*.jar /opt/Stirling-PDF/ && \
sudo mv scripts /opt/Stirling-PDF/ && \
echo "Scripts installed."
For non-root users, you can just keep the jar in the main directory of Stirling-PDF using the following command:
mv ./build/libs/Stirling-PDF-*.jar ./Stirling-PDF-*.jar
Step 6: Other Files
OCR
If you plan to use the OCR (Optical Character Recognition) functionality, you might need to install language packs for Tesseract if running non-English scanning.
Installing Language Packs
The easiest method is to use the language packs provided by your repositories. Skip the other steps if they are available.
Manual:
- Download the desired language pack(s) by selecting the
.traineddata
file(s) for the language(s) you need. - Place the
.traineddata
files in the Tesseract tessdata directory:/usr/share/tessdata
- Please view OCRmyPDF install guide for more info.
IMPORTANT: DO NOT REMOVE EXISTING eng.traineddata
, IT'S REQUIRED.
Debian-based systems, install languages with this command:
sudo apt update && \
# All languages
# sudo apt install -y 'tesseract-ocr-*'
# Find languages:
apt search tesseract-ocr-
# View installed languages:
dpkg-query -W tesseract-ocr- | sed 's/tesseract-ocr-//g'
Fedora:
# All languages
# sudo dnf install -y tesseract-langpack-*
# Find languages:
dnf search -C tesseract-langpack-
# View installed languages:
rpm -qa | grep tesseract-langpack | sed 's/tesseract-langpack-//g'
Nix:
nix-env -iA nixpkgs.tesseract
Note: Nix Package Manager pre-installs almost all the language packs when Tesseract is installed.
Step 7: Run Stirling-PDF
Those who have pushed to the root directory, run the following commands:
./gradlew bootRun
or
java -jar /opt/Stirling-PDF/Stirling-PDF-*.jar
Since LibreOffice, soffice, and conversion tools have their dbus_tmp_dir set as dbus_tmp_dir="/run/user/$(id -u)/libreoffice-dbus"
, you might get the following error when using their endpoints:
[Thread-7] INFO s.s.SPDF.utils.ProcessExecutor - mkdir: cannot create directory ‘/run/user/1501’: Permission denied
To resolve this, before starting Stirling-PDF, you have to set the environment variable to a directory you have write access to by using the following commands:
mkdir temp
export DBUS_SESSION_BUS_ADDRESS="unix:path=./temp"
./gradlew bootRun
or
java -jar ./Stirling-PDF-*.jar
Step 8: Adding a Desktop Icon
This will add a modified app starter to your app menu.
location=$(pwd)/gradlew
image=$(pwd)/docs/stirling-transparent.svg
cat > ~/.local/share/applications/Stirling-PDF.desktop <<EOF
[Desktop Entry]
Name=Stirling PDF;
GenericName=Launch StirlingPDF and open its WebGUI;
Category=Office;
Exec=xdg-open http://localhost:8080 && nohup $location bootRun &;
Icon=$image;
Keywords=pdf;
Type=Application;
NoDisplay=false;
Terminal=true;
EOF
Note: Currently the app will run in the background until manually closed.
Optional: Changing the Host and Port of the Application
To override the default configuration, you can add the following to /.git/Stirling-PDF/configs/custom_settings.yml
file:
server:
host: 0.0.0.0 # Not working - use instead address
address: 0.0.0.0
port: 3000
-Djava.net.preferIPv4Stack=true
--> To force IPv4 only in the Java starting command
Note: This file is created after the first application launch. To have it before that, you can create the directory and add the file yourself.
Optional: Run Stirling-PDF as a Service (requires root)
First create a .env
file, where you can store environment variables:
touch /opt/Stirling-PDF/.env
In this file, you can add all variables, one variable per line, as stated in the main readme (for example SYSTEM_DEFAULTLOCALE="de-DE"
).
Create a new file where we store our service settings and open it with the nano editor:
nano /etc/systemd/system/stirlingpdf.service
Paste this content, make sure to update the filename of the jar file. Press Ctrl+S
and Ctrl+X
to save and exit the nano editor:
[Unit]
Description=Stirling-PDF service
After=syslog.target network.target
[Service]
SuccessExitStatus=143
User=root
Group=root
Type=simple
EnvironmentFile=/opt/Stirling-PDF/.env
WorkingDirectory=/opt/Stirling-PDF
ExecStart=/usr/bin/java -jar Stirling-PDF-0.17.2.jar
ExecStop=/bin/kill -15 $MAINPID
[Install]
WantedBy=multi-user.target
Notify systemd that it has to rebuild its internal service database (you have to run this command every time you make a change in the service file):
sudo systemctl daemon-reload
Enable the service to tell it to start automatically:
sudo systemctl enable stirlingpdf.service
See the status of the service:
sudo systemctl status stirlingpdf.service
Manually start/stop/restart the service:
sudo systemctl start stirlingpdf.service
sudo systemctl stop stirlingpdf.service
sudo systemctl restart stirlingpdf.service
Remember to set the necessary environment variables before running the project if you want to customize the application. The list can be seen in the main readme.
You can do this in the terminal by using the export
command or -D
argument to the Java -jar
command:
export APP_HOME_NAME="Stirling PDF"
or
-DAPP_HOME_NAME="Stirling PDF"