mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2025-02-21 00:17:05 +01:00
# Description of Changes This pull request includes several updates to the Docker configuration and Java application UI scaling. The changes enhance environment variable management, dependency installation, and UI responsiveness to different screen sizes. ### Docker Configuration Updates: * Added new environment variables `STIRLING_PDF_DESKTOP_UI`, `PYTHONPATH`, `UNO_PATH`, and `URE_BOOTSTRAP` to `Dockerfile` and `Dockerfile.fat` to improve the configuration and integration of the LibreOffice environment. [[1]](diffhunk://#diff-dd2c0eb6ea5cfc6c4bd4eac30934e2d5746747af48fef6da689e85b752f39557L38-R46) [[2]](diffhunk://#diff-571631582b988e88c52c86960cc083b0b8fa63cf88f056f26e9e684195221c27L40-R49) * Updated the `CMD` instruction in `Dockerfile` and `Dockerfile.fat` to run both the Java application and `unoserver` simultaneously. [[1]](diffhunk://#diff-dd2c0eb6ea5cfc6c4bd4eac30934e2d5746747af48fef6da689e85b752f39557L87-R96) [[2]](diffhunk://#diff-571631582b988e88c52c86960cc083b0b8fa63cf88f056f26e9e684195221c27L87-R100) * Modified the `RUN` instruction to include additional Python dependencies and setup a virtual environment. [[1]](diffhunk://#diff-dd2c0eb6ea5cfc6c4bd4eac30934e2d5746747af48fef6da689e85b752f39557L68-R81) [[2]](diffhunk://#diff-571631582b988e88c52c86960cc083b0b8fa63cf88f056f26e9e684195221c27R72-R86) ### Workflow Enhancements: * Added `STIRLING_PDF_DESKTOP_UI` environment variable to the GitHub Actions workflows (`PR-Demo-Comment.yml` and `push-docker.yml`) to ensure consistent environment settings. [[1]](diffhunk://#diff-145fe5c0ed8c24e4673c9ad39800dd171a2d0a2e8050497cff980fc7e3a3df0dR106) [[2]](diffhunk://#diff-76056236de05155107f6a660f1e3956059e37338011b8f0e72188afcb9b17b6fR41) ### Java Application UI Scaling: * Introduced `UIScaling` utility to dynamically adjust the size of UI components based on screen resolution in `DesktopBrowser` and `LoadingWindow` classes. [[1]](diffhunk://#diff-dff83b0fe53cba8ee80dc8cee96b9c2bfec612ec1f2c636ebdf22dedb36671e8L218-R219) [[2]](diffhunk://#diff-dff83b0fe53cba8ee80dc8cee96b9c2bfec612ec1f2c636ebdf22dedb36671e8L267-R270) [[3]](diffhunk://#diff-3e287daf297213b698b3c94d6e6ed4aae139d570ba6b115da459d72b5c36c42fL44-R64) [[4]](diffhunk://#diff-3e287daf297213b698b3c94d6e6ed4aae139d570ba6b115da459d72b5c36c42fL86-R102) * Improved the loading of icons by using the `UIScaling` utility for better visual quality. --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/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/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] 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/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/DeveloperGuide.md#6-testing) for more details. --------- Co-authored-by: pixeebot[bot] <104101892+pixeebot[bot]@users.noreply.github.com> Co-authored-by: a <a>
230 lines
8.9 KiB
Gherkin
230 lines
8.9 KiB
Gherkin
Feature: API Validation
|
|
|
|
|
|
@libre @positive
|
|
Scenario: Repair PDF
|
|
Given I generate a PDF file as "fileInput"
|
|
When I send the API request to the endpoint "/api/v1/misc/repair"
|
|
Then the response content type should be "application/pdf"
|
|
And the response file should have size greater than 0
|
|
And the response status code should be 200
|
|
|
|
|
|
@ocr @positive
|
|
Scenario: Process PDF with OCR
|
|
Given I generate a PDF file as "fileInput"
|
|
And the request data includes
|
|
| parameter | value |
|
|
| languages | eng |
|
|
| sidecar | false |
|
|
| deskew | true |
|
|
| clean | true |
|
|
| cleanFinal | true |
|
|
| ocrType | Normal |
|
|
| ocrRenderType | hocr |
|
|
| removeImagesAfter| false |
|
|
When I send the API request to the endpoint "/api/v1/misc/ocr-pdf"
|
|
Then the response content type should be "application/pdf"
|
|
And the response file should have size greater than 0
|
|
And the response status code should be 200
|
|
|
|
|
|
@ocr @positive
|
|
Scenario: Extract Image Scans
|
|
Given I generate a PDF file as "fileInput"
|
|
And the pdf contains 3 images of size 300x300 on 2 pages
|
|
And the request data includes
|
|
| parameter | value |
|
|
| angleThreshold | 5 |
|
|
| tolerance | 20 |
|
|
| minArea | 8000 |
|
|
| minContourArea | 500 |
|
|
| borderSize | 1 |
|
|
When I send the API request to the endpoint "/api/v1/misc/extract-image-scans"
|
|
Then the response content type should be "application/octet-stream"
|
|
And the response file should have extension ".zip"
|
|
And the response ZIP should contain 2 files
|
|
And the response file should have size greater than 0
|
|
And the response status code should be 200
|
|
|
|
|
|
@ocr @positive
|
|
Scenario: Process PDF with OCR
|
|
Given I generate a PDF file as "fileInput"
|
|
And the request data includes
|
|
| parameter | value |
|
|
| languages | eng |
|
|
| sidecar | false |
|
|
| deskew | true |
|
|
| clean | true |
|
|
| cleanFinal | true |
|
|
| ocrType | Force |
|
|
| ocrRenderType | hocr |
|
|
| removeImagesAfter| false |
|
|
When I send the API request to the endpoint "/api/v1/misc/ocr-pdf"
|
|
Then the response content type should be "application/pdf"
|
|
And the response file should have size greater than 0
|
|
And the response status code should be 200
|
|
|
|
|
|
@libre @positive
|
|
Scenario Outline: Convert PDF to various word formats
|
|
Given I generate a PDF file as "fileInput"
|
|
And the pdf contains 3 pages with random text
|
|
And the request data includes
|
|
| parameter | value |
|
|
| outputFormat | <format> |
|
|
When I send the API request to the endpoint "/api/v1/convert/pdf/word"
|
|
Then the response status code should be 200
|
|
And the response file should have size greater than 100
|
|
And the response file should have extension "<extension>"
|
|
|
|
Examples:
|
|
| format | extension |
|
|
| docx | .docx |
|
|
| odt | .odt |
|
|
| doc | .doc |
|
|
|
|
@ocr @pdfa1
|
|
Scenario: PDFA
|
|
Given I use an example file at "exampleFiles/pdfa2.pdf" as parameter "fileInput"
|
|
And the request data includes
|
|
| parameter | value |
|
|
| outputFormat | pdfa |
|
|
When I send the API request to the endpoint "/api/v1/convert/pdf/pdfa"
|
|
Then the response status code should be 200
|
|
And the response file should have extension ".pdf"
|
|
And the response file should have size greater than 100
|
|
|
|
@ocr @pdfa2
|
|
Scenario: PDFA1
|
|
Given I use an example file at "exampleFiles/pdfa1.pdf" as parameter "fileInput"
|
|
And the request data includes
|
|
| parameter | value |
|
|
| outputFormat | pdfa-1 |
|
|
When I send the API request to the endpoint "/api/v1/convert/pdf/pdfa"
|
|
Then the response status code should be 200
|
|
And the response file should have extension ".pdf"
|
|
And the response file should have size greater than 100
|
|
|
|
@compress @qpdf @positive
|
|
Scenario: Compress
|
|
Given I use an example file at "exampleFiles/ghost3.pdf" as parameter "fileInput"
|
|
And the request data includes
|
|
| parameter | value |
|
|
| optimizeLevel | 4 |
|
|
When I send the API request to the endpoint "/api/v1/misc/compress-pdf"
|
|
Then the response status code should be 200
|
|
And the response file should have extension ".pdf"
|
|
And the response file should have size greater than 100
|
|
|
|
@compress @qpdf @positive
|
|
Scenario: Compress
|
|
Given I use an example file at "exampleFiles/ghost2.pdf" as parameter "fileInput"
|
|
And the request data includes
|
|
| parameter | value |
|
|
| optimizeLevel | 1 |
|
|
| expectedOutputSize | 5KB |
|
|
When I send the API request to the endpoint "/api/v1/misc/compress-pdf"
|
|
Then the response status code should be 200
|
|
And the response file should have extension ".pdf"
|
|
And the response file should have size greater than 100
|
|
|
|
|
|
@compress @qpdf @positive
|
|
Scenario: Compress
|
|
Given I use an example file at "exampleFiles/ghost1.pdf" as parameter "fileInput"
|
|
And the request data includes
|
|
| parameter | value |
|
|
| optimizeLevel | 1 |
|
|
| expectedOutputSize | 5KB |
|
|
When I send the API request to the endpoint "/api/v1/misc/compress-pdf"
|
|
Then the response status code should be 200
|
|
And the response file should have extension ".pdf"
|
|
And the response file should have size greater than 100
|
|
|
|
@libre @positive
|
|
Scenario Outline: Convert PDF to various types
|
|
Given I generate a PDF file as "fileInput"
|
|
And the pdf contains 3 pages with random text
|
|
And the request data includes
|
|
| parameter | value |
|
|
| outputFormat | <format> |
|
|
When I send the API request to the endpoint "/api/v1/convert/pdf/<type>"
|
|
Then the response status code should be 200
|
|
And the response file should have size greater than 100
|
|
And the response file should have extension "<extension>"
|
|
|
|
Examples:
|
|
| type | format | extension |
|
|
| text | rtf | .rtf |
|
|
| text | txt | .txt |
|
|
| presentation | ppt | .ppt |
|
|
| presentation | pptx | .pptx |
|
|
| presentation | odp | .odp |
|
|
| html | html | .zip |
|
|
|
|
|
|
@libre @positive @topdf
|
|
Scenario Outline: Convert PDF to various types
|
|
Given I use an example file at "exampleFiles/example<extension>" as parameter "fileInput"
|
|
When I send the API request to the endpoint "/api/v1/convert/file/pdf"
|
|
Then the response status code should be 200
|
|
And the response file should have size greater than 100
|
|
And the response file should have extension ".pdf"
|
|
|
|
Examples:
|
|
| extension |
|
|
| .docx |
|
|
| .odp |
|
|
| .odt |
|
|
| .pptx |
|
|
| .rtf |
|
|
|
|
@calibre @positive @htmltopdf
|
|
Scenario: Convert HTML to PDF
|
|
Given I use an example file at "exampleFiles/example.html" as parameter "fileInput"
|
|
When I send the API request to the endpoint "/api/v1/convert/html/pdf"
|
|
Then the response status code should be 200
|
|
And the response file should have size greater than 100
|
|
And the response file should have extension ".pdf"
|
|
|
|
@calibre @positive @zippedhtmltopdf
|
|
Scenario: Convert zipped HTML to PDF
|
|
Given I use an example file at "exampleFiles/example_html.zip" as parameter "fileInput"
|
|
When I send the API request to the endpoint "/api/v1/convert/html/pdf"
|
|
Then the response status code should be 200
|
|
And the response file should have size greater than 100
|
|
And the response file should have extension ".pdf"
|
|
|
|
@calibre @positive @markdowntopdf
|
|
Scenario: Convert Markdown to PDF
|
|
Given I use an example file at "exampleFiles/example.md" as parameter "fileInput"
|
|
When I send the API request to the endpoint "/api/v1/convert/markdown/pdf"
|
|
Then the response status code should be 200
|
|
And the response file should have size greater than 100
|
|
And the response file should have extension ".pdf"
|
|
|
|
@markdown @positive
|
|
Scenario: Convert PDF to Markdown format
|
|
Given I generate a PDF file as "fileInput"
|
|
And the pdf contains 3 pages with random text
|
|
When I send the API request to the endpoint "/api/v1/convert/pdf/markdown"
|
|
Then the response status code should be 200
|
|
And the response file should have size greater than 100
|
|
And the response file should have extension ".md"
|
|
|
|
|
|
@positive @pdftocsv
|
|
Scenario: Convert PDF with tables to CSV format
|
|
Given I use an example file at "exampleFiles/tables.pdf" as parameter "fileInput"
|
|
And the request data includes
|
|
| parameter | value |
|
|
| outputFormat | csv |
|
|
| pageNumbers | all |
|
|
When I send the API request to the endpoint "/api/v1/convert/pdf/csv"
|
|
Then the response status code should be 200
|
|
And the response file should have size greater than 200
|
|
And the response file should have extension ".zip"
|
|
And the response ZIP should contain 3 files
|
|
|