mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-09-11 22:19:24 +00:00

# Description of Changes - **What was changed** - Reworked `ConvertOfficeController` to use a dedicated temporary working directory per request and cleaned up with directory-level deletion. - Added detection for converter availability via `EndpointConfiguration` to choose between **unoconvert** and a **soffice** headless fallback. - Ensured safe filename handling (sanitization, extension checks, lowercase normalization) and early validation errors for missing/invalid filenames. - Switched raw temp file writes to `Files.copy` / `Files.writeString` with `StandardCopyOption.REPLACE_EXISTING`. - Implemented robust output handling: - Verified non-zero exit codes and null results. - Checked for missing/empty PDF outputs. - Added fallback lookup for any produced `.pdf` within the work directory if the expected name is not present. - Introduced `@Slf4j` logging; improved error and cleanup logging. - Replaced ad-hoc temp cleanup with `FileUtils.deleteDirectory` for full working-dir removal. - Minor imports/cleanup: removed unused `Arrays`, added `StandardCopyOption`, `FileUtils`, and related imports. - **Why the change was made** - Increase conversion reliability across environments where either unoconvert or soffice may be available. - Harden security and stability through strict input validation and sanitized HTML processing. - Prevent orphaned files/directories and ensure consistent cleanup to reduce disk footprint and operational issues. - Provide clearer operational signals (logging, explicit exceptions) for easier troubleshooting. --- ## Checklist ### General - [x] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [x] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [x] I have performed a self-review of my own code - [x] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing) for more details.