diff --git a/.github/workflows/PR-Demo-Comment-with-react.yml b/.github/workflows/PR-Demo-Comment-with-react.yml index 105fb60b1..361b8b5df 100644 --- a/.github/workflows/PR-Demo-Comment-with-react.yml +++ b/.github/workflows/PR-Demo-Comment-with-react.yml @@ -41,7 +41,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit @@ -129,7 +129,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/PR-Demo-cleanup.yml b/.github/workflows/PR-Demo-cleanup.yml index bcb547588..1962bb83d 100644 --- a/.github/workflows/PR-Demo-cleanup.yml +++ b/.github/workflows/PR-Demo-cleanup.yml @@ -21,7 +21,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/auto-labeler.yml b/.github/workflows/auto-labeler.yml index 2bd50d8d4..5f350d2d4 100644 --- a/.github/workflows/auto-labeler.yml +++ b/.github/workflows/auto-labeler.yml @@ -13,7 +13,7 @@ jobs: pull-requests: write steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 238773596..7db007ea5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,7 +24,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit @@ -62,7 +62,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit @@ -106,7 +106,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/check_properties.yml b/.github/workflows/check_properties.yml index 84531e094..fc0e7eac2 100644 --- a/.github/workflows/check_properties.yml +++ b/.github/workflows/check_properties.yml @@ -18,7 +18,7 @@ jobs: pull-requests: write steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 2eece92fe..304267160 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/licenses-update.yml b/.github/workflows/licenses-update.yml index a86a7c945..0851b1490 100644 --- a/.github/workflows/licenses-update.yml +++ b/.github/workflows/licenses-update.yml @@ -18,7 +18,7 @@ jobs: pull-requests: write steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/manage-label.yml b/.github/workflows/manage-label.yml index 63a3f7b7d..73ece41ae 100644 --- a/.github/workflows/manage-label.yml +++ b/.github/workflows/manage-label.yml @@ -15,7 +15,7 @@ jobs: issues: write steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/multiOSReleases.yml b/.github/workflows/multiOSReleases.yml index b8c463bf6..538f74a3a 100644 --- a/.github/workflows/multiOSReleases.yml +++ b/.github/workflows/multiOSReleases.yml @@ -2,13 +2,13 @@ name: Test Installers Build on: workflow_dispatch: - release: - types: [created] inputs: test_mode: - description: "Run in test mode (skips release step)" + description: "Run in test mode (skip release step)" required: false default: "false" + release: + types: [created] permissions: contents: read @@ -21,7 +21,7 @@ jobs: versionMac: ${{ steps.versionNumberMac.outputs.versionNumberMac }} steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit @@ -56,7 +56,7 @@ jobs: file_suffix: "" steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit @@ -106,7 +106,7 @@ jobs: file_suffix: "" steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit @@ -144,7 +144,7 @@ jobs: contents: write steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit @@ -175,7 +175,7 @@ jobs: STIRLING_PDF_DESKTOP_UI: true BROWSER_OPEN: true - - name: ☕ Set up JDK (x86_64) + - name: Set up JDK (x86_64) if: matrix.os == 'macos-latest' run: | curl -L -o jdk.tar.gz https://cdn.azul.com/zulu/bin/zulu17.56.15-ca-jdk17.0.14-macosx_x64.tar.gz @@ -200,10 +200,10 @@ jobs: ls -lah ./build/jpackage/ mkdir ./binaries if [ "${{ matrix.os }}" = "windows-latest" ]; then - mv "./build/jpackage/Stirling-PDF-${{ needs.read_versions.outputs.version }}.exe" "./binaries/Stirling-PDF-win-installer.exe" + mv "./build/jpackage/Stirling PDF-${{ needs.read_versions.outputs.version }}.exe" "./binaries/Stirling-PDF-win-installer.exe" elif [ "${{ matrix.os }}" = "macos-latest" ]; then - mv "./build/jpackage/Stirling-PDF-${{ needs.read_versions.outputs.versionMac }}.dmg" "./binaries/Stirling-PDF-mac-installer.dmg" - mv "./build/jpackage/x86_64/Stirling-PDF (x86_64)-${{ needs.read_versions.outputs.versionMac }}.dmg" "./binaries/Stirling-PDF-mac-x86_64-installer.dmg" + mv "./build/jpackage/Stirling PDF-${{ needs.read_versions.outputs.versionMac }}.dmg" "./binaries/Stirling-PDF-mac-installer.dmg" + mv "./build/jpackage/x86_64/Stirling PDF (x86_64)-${{ needs.read_versions.outputs.versionMac }}.dmg" "./binaries/Stirling-PDF-mac-x86_64-installer.dmg" else mv "./build/jpackage/stirling-pdf_${{ needs.read_versions.outputs.version }}-1_amd64.deb" "./binaries/Stirling-PDF-linux-installer.deb" fi @@ -234,7 +234,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit @@ -297,7 +297,7 @@ jobs: contents: write steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/pre_commit.yml b/.github/workflows/pre_commit.yml index ad39a1b9a..82745fc4d 100644 --- a/.github/workflows/pre_commit.yml +++ b/.github/workflows/pre_commit.yml @@ -16,7 +16,7 @@ jobs: pull-requests: write steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/push-docker.yml b/.github/workflows/push-docker.yml index 8485a85b4..b8b4cba9c 100644 --- a/.github/workflows/push-docker.yml +++ b/.github/workflows/push-docker.yml @@ -18,7 +18,7 @@ jobs: id-token: write steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/releaseArtifacts.yml b/.github/workflows/releaseArtifacts.yml index 8844b3a1c..7c2de5e23 100644 --- a/.github/workflows/releaseArtifacts.yml +++ b/.github/workflows/releaseArtifacts.yml @@ -23,7 +23,7 @@ jobs: version: ${{ steps.versionNumber.outputs.versionNumber }} steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit @@ -83,7 +83,7 @@ jobs: file_suffix: "" steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit @@ -161,7 +161,7 @@ jobs: file_suffix: "" steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 4e50b7325..e226f6592 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -34,7 +34,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/sonarqube.yml b/.github/workflows/sonarqube.yml index 3220da581..ddf0980ab 100644 --- a/.github/workflows/sonarqube.yml +++ b/.github/workflows/sonarqube.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 24375021c..4000f0e6f 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -16,7 +16,7 @@ jobs: pull-requests: write steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/swagger.yml b/.github/workflows/swagger.yml index cd72a2483..19c0aaa89 100644 --- a/.github/workflows/swagger.yml +++ b/.github/workflows/swagger.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/sync_files.yml b/.github/workflows/sync_files.yml index a47d3ee60..1bfa11167 100644 --- a/.github/workflows/sync_files.yml +++ b/.github/workflows/sync_files.yml @@ -24,7 +24,7 @@ jobs: committer: ${{ steps.committer.outputs.committer }} steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit @@ -57,7 +57,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/.github/workflows/testdriver.yml b/.github/workflows/testdriver.yml index 5986c38f4..4489dd56a 100644 --- a/.github/workflows/testdriver.yml +++ b/.github/workflows/testdriver.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit @@ -105,7 +105,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit @@ -134,7 +134,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 with: egress-policy: audit diff --git a/README.md b/README.md index 50e2f8c42..480abd567 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ Stirling-PDF currently supports 39 languages! | Simplified Chinese (简体中文) (zh_CN) | ![93%](https://geps.dev/progress/93) | | Slovakian (Slovensky) (sk_SK) | ![69%](https://geps.dev/progress/69) | | Slovenian (Slovenščina) (sl_SI) | ![95%](https://geps.dev/progress/95) | -| Spanish (Español) (es_ES) | ![93%](https://geps.dev/progress/93) | +| Spanish (Español) (es_ES) | ![99%](https://geps.dev/progress/99) | | Swedish (Svenska) (sv_SE) | ![87%](https://geps.dev/progress/87) | | Thai (ไทย) (th_TH) | ![80%](https://geps.dev/progress/80) | | Tibetan (བོད་ཡིག་) (zh_BO) | ![89%](https://geps.dev/progress/89) | diff --git a/build.gradle b/build.gradle index ed85787f2..80745ade5 100644 --- a/build.gradle +++ b/build.gradle @@ -23,7 +23,7 @@ ext { imageioVersion = "3.12.0" lombokVersion = "1.18.38" bouncycastleVersion = "1.80" - springSecuritySamlVersion = "6.4.4" + springSecuritySamlVersion = "6.4.5" openSamlVersion = "4.3.2" tempJrePath = null } @@ -118,10 +118,10 @@ jpackage { input = "build/libs" destination = "${projectDir}/build/jpackage" mainJar = "Stirling-PDF-${project.version}.jar" - appName = "Stirling-PDF" + appName = "Stirling PDF" appVersion = project.version // appVersion = "2005.45.1" - vendor = "Stirling-Software" + vendor = "Stirling PDF Inc" appDescription = "Stirling PDF - Your Local PDF Editor" icon = "src/main/resources/static/favicon.ico" verbose = true @@ -153,7 +153,7 @@ jpackage { winShortcutPrompt = true // Lets user choose whether to create shortcuts winDirChooser = true // Allows users to choose installation directory winPerUserInstall = false - winMenuGroup = "Stirling Software" + winMenuGroup = "Stirling PDF" winUpgradeUuid = "2a43ed0c-b8c2-40cf-89e1-751129b87641" // Unique identifier for updates winHelpUrl = "https://github.com/Stirling-Tools/Stirling-PDF" winUpdateUrl = "https://github.com/Stirling-Tools/Stirling-PDF/releases" @@ -166,8 +166,8 @@ jpackage { appVersion = getMacVersion(project.version.toString()) icon = "src/main/resources/static/favicon.icns" type = "dmg" - macPackageIdentifier = "Stirling-PDF" - macPackageName = "Stirling-PDF" + macPackageIdentifier = "Stirling PDF" + macPackageName = "Stirling PDF" macAppCategory = "public.app-category.productivity" macSign = false // Enable signing macAppStore = false // Not targeting App Store initially @@ -251,18 +251,32 @@ tasks.register('jpackageMacX64') { def result = exec { commandLine 'jpackage', - '--type', 'dmg', - '--name', 'Stirling-PDF (x86_64)', - '--input', 'build/libs', - '--main-jar', "Stirling-PDF-${project.version}.jar", - '--main-class', 'org.springframework.boot.loader.launch.JarLauncher', - '--runtime-image', file(jrePath + "/zulu-17.jre/Contents/Home"), - '--dest', 'build/jpackage/x86_64', - '--icon', 'src/main/resources/static/favicon.icns', - '--app-version', getMacVersion(project.version.toString()), - '--mac-package-name', 'Stirling-PDF (x86_64)', - '--mac-package-identifier', 'Stirling-PDF (x86_64)', - '--mac-app-category', 'public.app-category.productivity' + '--type', 'dmg', + '--name', 'Stirling PDF (x86_64)', + '--input', 'build/libs', + '--main-jar', "Stirling-PDF-${project.version}.jar", + '--main-class', 'org.springframework.boot.loader.launch.JarLauncher', + '--runtime-image', file(jrePath + "/zulu-17.jre/Contents/Home"), + '--dest', 'build/jpackage/x86_64', + '--icon', 'src/main/resources/static/favicon.icns', + '--app-version', getMacVersion(project.version.toString()), + '--mac-package-name', 'Stirling PDF (x86_64)', + '--mac-package-identifier', 'Stirling PDF (x86_64)', + '--mac-app-category', 'public.app-category.productivity', + + // Java options + '--java-options', '-DBROWSER_OPEN=true', + '--java-options', '-DSTIRLING_PDF_DESKTOP_UI=true', + '--java-options', '-Djava.awt.headless=false', + '--java-options', '-Dapple.awt.UIElement=true', + '--java-options', '--add-opens=java.base/java.lang=ALL-UNNAMED', + '--java-options', '--add-opens=java.desktop/java.awt.event=ALL-UNNAMED', + '--java-options', '--add-opens=java.desktop/sun.awt=ALL-UNNAMED', + '--java-options', '--add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED', + '--java-options', '--add-opens=java.desktop/sun.awt.windows=ALL-UNNAMED', + '--java-options', '--add-opens=java.desktop/sun.lwawt=ALL-UNNAMED', + '--java-options', '--add-opens=java.desktop/sun.lwawt.macosx=ALL-UNNAMED' + standardOutput = outputStream errorOutput = errorStream ignoreExitValue = true @@ -494,7 +508,7 @@ dependencies { implementation "com.drewnoakes:metadata-extractor:2.19.0" implementation "commons-io:commons-io:2.19.0" - implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0" + implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.6" //general PDF // https://mvnrepository.com/artifact/com.opencsv/opencsv diff --git a/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java b/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java index a7dd8a0ec..6df02f24d 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java @@ -51,7 +51,7 @@ public class PipelineController { this.postHogService = postHogService; } - @PostMapping("/handleData") + @PostMapping(value = "/handleData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public ResponseEntity handleData(@ModelAttribute HandleDataRequest request) throws JsonMappingException, JsonProcessingException { MultipartFile[] files = request.getFileInput(); diff --git a/src/main/java/stirling/software/SPDF/controller/api/security/ValidateSignatureController.java b/src/main/java/stirling/software/SPDF/controller/api/security/ValidateSignatureController.java index 4b4da4bdd..400bdf44a 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/security/ValidateSignatureController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/security/ValidateSignatureController.java @@ -22,6 +22,7 @@ import org.bouncycastle.cms.SignerInformationStore; import org.bouncycastle.cms.jcajce.JcaSimpleSignerInfoVerifierBuilder; import org.bouncycastle.util.Store; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; @@ -58,7 +59,7 @@ public class ValidateSignatureController { description = "Validates the digital signatures in a PDF file against default or custom" + " certificates. Input:PDF Output:JSON Type:SISO") - @PostMapping(value = "/validate-signature") + @PostMapping(value = "/validate-signature", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public ResponseEntity> validateSignature( @ModelAttribute SignatureValidationRequest request) throws IOException { List results = new ArrayList<>(); diff --git a/src/main/java/stirling/software/SPDF/model/api/PDFFile.java b/src/main/java/stirling/software/SPDF/model/api/PDFFile.java index 685621904..930f9b0ff 100644 --- a/src/main/java/stirling/software/SPDF/model/api/PDFFile.java +++ b/src/main/java/stirling/software/SPDF/model/api/PDFFile.java @@ -6,10 +6,12 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; @Data +@NoArgsConstructor @EqualsAndHashCode public class PDFFile { - @Schema(description = "The input PDF file") + @Schema(description = "The input PDF file", format = "binary") private MultipartFile fileInput; } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index cccfd3b06..d7d074223 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -39,5 +39,6 @@ server.servlet.session.timeout:30m springdoc.api-docs.path=/v1/api-docs # Set the URL of the OpenAPI JSON for the Swagger UI springdoc.swagger-ui.url=/v1/api-docs +springdoc.swagger-ui.path=/index.html posthog.api.key=phc_fiR65u5j6qmXTYL56MNrLZSWqLaDW74OrZH0Insd2xq posthog.host=https://eu.i.posthog.com diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties index f50d3c8b6..fd228fe09 100644 --- a/src/main/resources/messages_es_ES.properties +++ b/src/main/resources/messages_es_ES.properties @@ -10,18 +10,18 @@ multiPdfPrompt=Seleccionar PDFs (2+) multiPdfDropPrompt=Seleccione (o arrastre y suelte) todos los PDFs que quiera imgPrompt=Seleccionar Imagen(es) genericSubmit=Enviar -uploadLimit=Maximum file size: -uploadLimitExceededSingular=is too large. Maximum allowed size is -uploadLimitExceededPlural=are too large. Maximum allowed size is +uploadLimit=Tamaño máximo de archivo: +uploadLimitExceededSingular=es demasiado grande. El tamaño máximo permitido es +uploadLimitExceededPlural=son demasiado grandes. El tamaño máximo permitido es processTimeWarning=Advertencia: este proceso puede tardar hasta un minuto dependiendo del tamaño del archivo pageOrderPrompt=Orden de páginas (Introduzca una lista de números de página separados por coma): -pageSelectionPrompt=Selección de página personalizada (Intruduzca una lista de números de página separados por comas 1,5,6 o funciones como 2n+1) : +pageSelectionPrompt=Selección de página personalizada (Introduzca una lista de números de página separados por comas 1,5,6 o funciones como 2n+1): goToPage=Ir a true=Verdadero false=Falso unknown=Desconocido save=Guardar -saveToBrowser=Guardar en el Navegador +saveToBrowser=Guardar en el navegador close=Cerrar filesSelected=archivos seleccionados noFavourites=No se agregaron favoritos @@ -59,7 +59,7 @@ userNotFoundMessage=Usuario no encontrado. incorrectPasswordMessage=La contraseña actual no es correcta. usernameExistsMessage=El nuevo nombre de usuario está en uso. invalidUsernameMessage=Nombre de usuario no válido, el nombre de usuario solo puede contener letras, números y los siguientes caracteres especiales @._+- o debe ser una dirección de correo electrónico válida. -invalidPasswordMessage=La contraseña no puede dejarse en blanco y no puede ni empezar ni terminar con espacios. +invalidPasswordMessage=La contraseña no puede dejarse en blanco y no puede empezar ni terminar con espacios. confirmPasswordErrorMessage=Deben coincidir Nueva Contraseña y Confirmar Nueva Contraseña. deleteCurrentUserMessage=No puede eliminar el usuario que tiene la sesión actualmente en uso. deleteUsernameExistsMessage=El usuario no existe y no puede eliminarse. @@ -86,37 +86,37 @@ loading=Cargando... addToDoc=Agregar al Documento reset=Restablecer apply=Aplicar -noFileSelected=No file selected. Please upload one. +noFileSelected=No ha seleccionado ningún archivo. Por favor, cargue uno. legal.privacy=Política de Privacidad legal.terms=Términos y Condiciones legal.accessibility=Accesibilidad legal.cookie=Política de Cookies legal.impressum=Impresión -legal.showCookieBanner=Cookie Preferences +legal.showCookieBanner=Preferencias de cookies ############### # Pipeline # ############### -pipeline.header=Menú de canalización (Alfa) +pipeline.header=Menú de automatización (Alfa) pipeline.uploadButton=Cargar personalización pipeline.configureButton=Configurar pipeline.defaultOption=Personalizar pipeline.submitButton=Enviar -pipeline.help=Ayuda de Canalización +pipeline.help=Ayuda de automatización pipeline.scanHelp=Ayuda de escaneado de carpetas -pipeline.deletePrompt=¿Seguro que quiere eliminar la canalización? +pipeline.deletePrompt=¿Seguro que quiere eliminar la automatización? ###################### # Pipeline Options # ###################### -pipelineOptions.header=Configuración de la canalización -pipelineOptions.pipelineNameLabel=Nombre de la canalización -pipelineOptions.saveSettings=Guardar configuración de la canalización -pipelineOptions.pipelineNamePrompt=Introduzca aquí el nombre de la canalización +pipelineOptions.header=Configuración de la automatización +pipelineOptions.pipelineNameLabel=Nombre de la automatización +pipelineOptions.saveSettings=Guardar configuración de la automatización +pipelineOptions.pipelineNamePrompt=Introduzca aquí el nombre de la automatización pipelineOptions.selectOperation=Seleccione la operación pipelineOptions.addOperationButton=Añadir operación -pipelineOptions.pipelineHeader=Canalización: +pipelineOptions.pipelineHeader=Automatización: pipelineOptions.saveButton=Descargar pipelineOptions.validateButton=Validar @@ -237,31 +237,31 @@ adminUserSettings.activeUsers=Usuarios Activos: adminUserSettings.disabledUsers=Usuarios deshabilitados: adminUserSettings.totalUsers=Usuarios totales: adminUserSettings.lastRequest=Última petición -adminUserSettings.usage=View Usage +adminUserSettings.usage=Ver uso -endpointStatistics.title=Endpoint Statistics -endpointStatistics.header=Endpoint Statistics +endpointStatistics.title=Estadísticas de funciones +endpointStatistics.header=Estadísticas de funciones endpointStatistics.top10=Top 10 endpointStatistics.top20=Top 20 -endpointStatistics.all=All -endpointStatistics.refresh=Refresh -endpointStatistics.includeHomepage=Include Homepage ('/') -endpointStatistics.includeLoginPage=Include Login Page ('/login') -endpointStatistics.totalEndpoints=Total Endpoints -endpointStatistics.totalVisits=Total Visits -endpointStatistics.showing=Showing -endpointStatistics.selectedVisits=Selected Visits -endpointStatistics.endpoint=Endpoint -endpointStatistics.visits=Visits -endpointStatistics.percentage=Percentage -endpointStatistics.loading=Loading... -endpointStatistics.failedToLoad=Failed to load endpoint data. Please try refreshing. -endpointStatistics.home=Home -endpointStatistics.login=Login -endpointStatistics.top=Top -endpointStatistics.numberOfVisits=Number of Visits -endpointStatistics.visitsTooltip=Visits: {0} ({1}% of total) -endpointStatistics.retry=Retry +endpointStatistics.all=Todas +endpointStatistics.refresh=Refrescar +endpointStatistics.includeHomepage=Incluir página de inicio ('/') +endpointStatistics.includeLoginPage=Incluir página de inicio de sesión ('/login') +endpointStatistics.totalEndpoints=Funciones totales +endpointStatistics.totalVisits=Visitas totales +endpointStatistics.showing=Mostrando +endpointStatistics.selectedVisits=Visitas seleccionadas +endpointStatistics.endpoint=Funciones +endpointStatistics.visits=Visitas +endpointStatistics.percentage=Porcentaje +endpointStatistics.loading=Cargando... +endpointStatistics.failedToLoad=Falló la carga de los datos de funciones. Por favor, recargue para volver a intentarlo. +endpointStatistics.home=Inicio +endpointStatistics.login=Inicio de sesión +endpointStatistics.top=Lo más usado +endpointStatistics.numberOfVisits=Número de visitas +endpointStatistics.visitsTooltip=Visitas: {0} ({1}% del total) +endpointStatistics.retry=Reintentar database.title=Base de Datos Importar/Exportar database.header=Base de Datos Importar/Exportar @@ -275,14 +275,14 @@ database.downloadBackupFile=Descargar archivo de copia de seguridad database.info_1=Al importar datos, es fundamental garantizar la estructura correcta. Si no está seguro de lo que está haciendo, busque consejo y apoyo de un profesional. Un error en la estructura puede causar un mal funcionamiento de la aplicación, incluyendo la imposibilidad total de ejecutar la aplicación. database.info_2=El nombre del archivo no importa al cargarlo. Posteriormente se le cambiará el nombre para que siga el formato backup_user_yyyyMMddHHmm.sql, lo que garantiza una convención de nomenclatura coherente. database.submit=Importar Copia de Seguridad -database.importIntoDatabaseSuccessed=Importación a la base de datos ha sido exitosa +database.importIntoDatabaseSuccessed=La importación a la base de datos ha sido exitosa database.backupCreated=Respaldo de la Base de Datos exitoso database.fileNotFound=Archivo no encontrado -database.fileNullOrEmpty=El archivo no debe ser nulo o vacío. +database.fileNullOrEmpty=El archivo no puede ser nulo o vacío. database.failedImportFile=Archivo de importación fallido database.notSupported=Esta función no esta disponible para su conexión de Base de Datos -session.expired=Tu sesión ha caducado. Actualice la página e inténtelo de nuevo. +session.expired=Su sesión ha caducado. Actualice la página e inténtelo de nuevo. session.refreshPage=Refrescar Página ############# @@ -301,8 +301,8 @@ home.hideFavorites=Ocultar Favoritos home.showFavorites=Mostrar Favoritos home.legacyHomepage=Página de inicio anterior home.newHomePage=¡Prueba nuestra nueva página de inicio! -home.alphabetical=Alfabetico -home.globalPopularity=Popularidad Global +home.alphabetical=Alfabético +home.globalPopularity=Las más populares home.sortBy=Ordenado por: home.multiTool.title=Multi-herramienta PDF @@ -311,15 +311,15 @@ multiTool.tags=Multi-herramienta,Multi-operación,Interfaz de usuario,Arrastrar home.merge.title=Unir home.merge.desc=Unir fácilmente múltiples PDFs en uno -merge.tags=Unir,Operaciones de página,Back end,lado del servidor +merge.tags=Unir,Operaciones de página,Back end,Backend home.split.title=Dividir home.split.desc=Dividir PDFs en múltiples documentos -split.tags=Operaciones de página,dividir,Multi-página,cortar,lado del servidor +split.tags=Operaciones de página,dividir,Multi-página,cortar,Backend home.rotate.title=Rotar home.rotate.desc=Rotar fácilmente sus PDFs -rotate.tags=lado del servidor +rotate.tags=Backend home.imageToPdf.title=Imagen a PDF @@ -451,7 +451,7 @@ home.scalePages.title=Escalar/ajustar tamaño de página home.scalePages.desc=Escalar/cambiar el tamaño de una pagina y/o su contenido scalePages.tags=cambiar tamaño,modificar,dimensionar,adaptar -home.pipeline.title=Secuencia +home.pipeline.title=Automatización home.pipeline.desc=Ejecutar varias tareas a PDFs definiendo una secuencia de comandos pipeline.tags=automatizar,secuencia,con script,proceso por lotes @@ -548,7 +548,7 @@ AddStampRequest.tags=Sello, Añadir imagen, centrar imagen, Marca de agua, PDF, home.removeImagePdf.title=Eliminar imagen home.removeImagePdf.desc=Eliminar imagen del PDF> para reducir el tamaño de archivo -removeImagePdf.tags=Eliminar imagen,Operaciones de página,Back end,lado del servidor +removeImagePdf.tags=Eliminar imagen,Operaciones de página,Back end,Backend home.splitPdfByChapters.title=Dividir PDF por capítulos @@ -564,7 +564,7 @@ replace-color.title=Reemplazar-Invertir-Color replace-color.header=Reemplazar-Invertir Color en PDF home.replaceColorPdf.title=Reemplazar e Invertir Color home.replaceColorPdf.desc=Reemplaza el color del texto y el fondo en el PDF e invierte el color completo del PDF para reducir el tamaño del archivo -replaceColorPdf.tags=Reemplazar Color,Operaciones de Página,Back end,Lado del servidor +replaceColorPdf.tags=Reemplazar Color,Operaciones de Página,Back end,Backend replace-color.selectText.1=Opciones para Reemplazar o Invertir color replace-color.selectText.2=Predeterminado (Colores de alto contraste predeterminados) replace-color.selectText.3=Personalizado (Colores personalizados) @@ -595,7 +595,7 @@ login.locked=Su cuenta se ha bloqueado. login.signinTitle=Por favor, inicie sesión login.ssoSignIn=Iniciar sesión a través del inicio de sesión único login.oAuth2AutoCreateDisabled=Usuario de creación automática de OAUTH2 DESACTIVADO -login.oAuth2AdminBlockedUser=El registro o inicio de sesión de usuarios no registrados está actualmente bloqueado. Por favor, contáctese con el administrador. +login.oAuth2AdminBlockedUser=El registro o inicio de sesión de usuarios no registrados está actualmente bloqueado. Por favor, póngase en contacto con el administrador. login.oauth2RequestNotFound=Solicitud de autorización no encontrada login.oauth2InvalidUserInfoResponse=Respuesta de información de usuario no válida login.oauth2invalidRequest=Solicitud no válida @@ -604,9 +604,9 @@ login.oauth2InvalidTokenResponse=Respuesta de token no válida login.oauth2InvalidIdToken=Token de identificación no válido login.relyingPartyRegistrationNotFound=No hay registro de terceros confiables login.userIsDisabled=El usuario está desactivado, actualmente el acceso está bloqueado para ese nombre de usuario. Por favor, póngase en contacto con el administrador. -login.alreadyLoggedIn=Ya has iniciado sesión en -login.alreadyLoggedIn2=dispositivos. Cierra sesión en los dispositivos y vuelve a intentarlo. -login.toManySessions=Tienes demasiadas sesiones activas +login.alreadyLoggedIn=Ya ha iniciado sesión en +login.alreadyLoggedIn2=dispositivos. Cierre sesión en los dispositivos y vuelva a intentarlo. +login.toManySessions=Tiene demasiadas sesiones activas #auto-redact autoRedact.title=Auto Censurar Texto @@ -616,7 +616,7 @@ autoRedact.textsToRedactLabel=Texto para Censurar (separado por líneas) autoRedact.textsToRedactPlaceholder=por ej. \nConfidencial \nAlto-Secreto autoRedact.useRegexLabel=Usar Regex autoRedact.wholeWordSearchLabel=Búsqueda por palabra completa -autoRedact.customPaddingLabel=Extra Padding personalizado +autoRedact.customPaddingLabel=Espaciado adicional personalizado autoRedact.convertPDFToImageLabel=Convertir PDF a imagen PDF (Utilizado para eliminar el texto detrás del cajetín de censura) autoRedact.submitButton=Enviar @@ -626,26 +626,26 @@ redact.header=Censurar texto Manualmente redact.submit=Enviar redact.textBasedRedaction=Censura basada en texto redact.pageBasedRedaction=Censura basada en la página -redact.convertPDFToImageLabel=Convertir PDF a PDF-Image (Utilizado para eliminar el texto detrás del cajetín de censura) +redact.convertPDFToImageLabel=Convertir PDF a PDF-Imagen (Utilizado para eliminar el texto detrás del cajetín de censura) redact.pageRedactionNumbers.title=Páginas -redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.pageRedactionNumbers.placeholder=(por ejemplo 1,2,8 o 4,7,12-16 o 2n-1) redact.redactionColor.title=Color del cajetín redact.export=Exportar redact.upload=Cargar redact.boxRedaction=Dibujar cajetín de censura redact.zoom=Zoom -redact.zoomIn=Zoom in -redact.zoomOut=Zoom out -redact.nextPage=Siguiente página -redact.previousPage=Pagina Anterior +redact.zoomIn=Acercar +redact.zoomOut=Alejar +redact.nextPage=Página siguiente +redact.previousPage=Pagina anterior redact.toggleSidebar=Activar/desactivar barra lateral redact.showThumbnails=Mostrar Miniaturas -redact.showDocumentOutline=Mostra Esquema del documento (doble-click para expandir/colapsar elementos) +redact.showDocumentOutline=Mostrar esquema del documento (doble clic para expandir/contraer elementos) redact.showAttatchments=Mostrar Adjuntos -redact.showLayers=Mostrar Capas (doble-click para reiniciar las capas a su estado inicial) -redact.colourPicker=Seleccionador de Color -redact.findCurrentOutlineItem=Buscar elemento actual de esquema -redact.applyChanges=Aplicar Cambios +redact.showLayers=Mostrar Capas (doble clic para restablecer las capas a su estado inicial) +redact.colourPicker=Selector de color +redact.findCurrentOutlineItem=Resaltar el marcador +redact.applyChanges=Aplicar cambios #showJS showJS.title=Mostrar Javascript @@ -664,7 +664,7 @@ pdfToSinglePage.submit=Convertir a página única pageExtracter.title=Extraer Páginas pageExtracter.header=Extraer Páginas pageExtracter.submit=Extraer -pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +pageExtracter.placeholder=(por ejemplo, 1,2,8 o 4,7,12-16 o 2n-1) #getPdfInfo @@ -739,10 +739,10 @@ sanitizePDF.title=Limpiar archivo PDF sanitizePDF.header=Limpiar un archivo PDF sanitizePDF.selectText.1=Eliminar código JavaScript sanitizePDF.selectText.2=Eliminar archivos incrustados -sanitizePDF.selectText.3=Remove XMP metadata +sanitizePDF.selectText.3=Eliminar metadatos XMP sanitizePDF.selectText.4=Eliminar enlaces sanitizePDF.selectText.5=Eliminar fuentes -sanitizePDF.selectText.6=Remove Document Info Metadata +sanitizePDF.selectText.6=Eliminar metadatos asociados al documento sanitizePDF.submit=Limpiar PDF @@ -797,7 +797,7 @@ autoSplitPDF.submit=Entregar #pipeline -pipeline.title=Canalización +pipeline.title=Automatización #pageLayout @@ -891,8 +891,8 @@ sign.last=Última página sign.next=Siguiente página sign.previous=Página anterior sign.maintainRatio=Activar/desactivar la relación de aspecto -sign.undo=Undo -sign.redo=Redo +sign.undo=Deshacer +sign.redo=Rehacer #repair repair.title=Reparar @@ -964,7 +964,7 @@ compress.header=Comprimir PDF compress.credit=Este servicio utiliza qpdf para compresión/optimización de PDF compress.grayscale.label=Aplicar escala de grises para compresión compress.selectText.1=Compression Settings -compress.selectText.1.1=1-3 PDF compression,
4-6 lite image compression,
7-9 intense image compression Will dramatically reduce image quality +compress.selectText.1.1=1-3 compresión PDF,
4-6 compresión de imagen suave,
7-9 compresión de imágenes intensa reducirá drásticamente la calidad de imagen compress.selectText.2=Nivel de optimización: compress.selectText.4=Modo automático: ajusta automáticamente la calidad para que el PDF tenga el tamaño exacto compress.selectText.5=Tamaño esperado del PDF (por ejemplo, 25 MB, 10.8 MB, 25 KB) @@ -1003,8 +1003,8 @@ pdfOrganiser.mode.7=Quitar primera pdfOrganiser.mode.8=Quitar última pdfOrganiser.mode.9=Quitar primera y última pdfOrganiser.mode.10=Unir impar-par -pdfOrganiser.mode.11=Duplicate all pages -pdfOrganiser.placeholder=(por ej., 1,3,2 o 4-8,2,10-12 o 2n-1) +pdfOrganiser.mode.11=Duplicar todas las páginas +pdfOrganiser.placeholder=(por ejemplo, 1,3,2 o 4-8,2,10-12 o 2n-1) #multiTool @@ -1054,7 +1054,7 @@ pageRemover.title=Eliminador de páginas pageRemover.header=Eliminador de páginas PDF pageRemover.pagesToDelete=Páginas a eliminar (introducir una lista de números de página separados por coma): pageRemover.submit=Eliminar Páginas -pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30) +pageRemover.placeholder=(por ejemplo 1,2,6 o 1-10,15-30) #rotate @@ -1074,7 +1074,7 @@ split.desc.4=Documento #2: Páginas 2 y 3 split.desc.5=Documento #3: Páginas 4, 5, 6 y 7 split.desc.6=Documento #4: Página 8 split.desc.7=Documento #5: Página 9 -split.desc.8=Documento #6: Páginas 10 +split.desc.8=Documento #6: Página 10 split.splitPages=Introducir las páginas para dividir: split.submit=Dividir @@ -1106,7 +1106,7 @@ pdfToImage.grey=Escala de grises pdfToImage.blackwhite=Blanco y Negro (¡Puede perder datos!) pdfToImage.submit=Convertir pdfToImage.info=Python no está instalado. Se requiere para la conversión WebP. -pdfToImage.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +pdfToImage.placeholder=(por ejemplo 1,2,8 o 4,7,12-16 o 2n-1) #addPassword @@ -1201,7 +1201,7 @@ pdfToPDFA.credit=Este servicio usa libreoffice para la conversión a PDF/A pdfToPDFA.submit=Convertir pdfToPDFA.tip=Actualmente no funciona para múltiples entrada a la vez pdfToPDFA.outputFormat=Formato de salida -pdfToPDFA.pdfWithDigitalSignature=El PDF contiene una firma digital. Esto se eliminará en el siguiente paso. +pdfToPDFA.pdfWithDigitalSignature=El PDF contiene una firma digital. Ésta se eliminará en el siguiente paso. #PDFToWord @@ -1312,14 +1312,14 @@ survey.please=¡Considere realizar nuestra encuesta! survey.disabled=(La ventana emergente de la encuesta se desactivará en las siguientes actualizaciones, pero estará disponible al pie de la página.) survey.button=Realizar encuesta survey.dontShowAgain=No volver a mostrar -survey.meeting.1=Si estás utilizando Stirling PDF en el trabajo, nos encantaría hablar contigo. Ofrecemos sesiones de soporte técnico a cambio de una sesión de descubrimiento de usuario de 15 minutos. -survey.meeting.2=Esta es una oportunidad para: -survey.meeting.3=Obtén ayuda con la implementación, integraciones o solución de problemas -survey.meeting.4=Brinda comentarios directos sobre el rendimiento, casos extremos y carencias de funciones -survey.meeting.5=Ayudanos a mejorar Stirling PDF para su uso en entornos empresariales reales -survey.meeting.6=Si estás interesado, puedes agendar una reunión con nuestro equipo directamente. (Solo en inglés) -survey.meeting.7=¡Esperamos conocer tus casos de uso y mejorar aún más Stirling PDF! -survey.meeting.notInterested=¿No eres una empresa o no estás interesado en una reunión? +survey.meeting.1=Si está utilizando Stirling-PDF en el trabajo, nos encantaría hablar con usted. Ofrecemos sesiones de soporte técnico a cambio de una sesión de descubrimiento de usuario de 15 minutos. +survey.meeting.2=Es una oportunidad para: +survey.meeting.3=Obtenga ayuda con la implementación, integraciones o solución de problemas +survey.meeting.4=Brinde comentarios directos sobre el rendimiento, casos extremos y carencia de funciones +survey.meeting.5=Ayúdenos a mejorar Stirling-PDF para su uso en entornos empresariales reales +survey.meeting.6=Si está interesado, puede agendar una reunión con nuestro equipo directamente. (Sólo en inglés) +survey.meeting.7=¡Esperamos conocer sus casos de uso y mejorar aún más Stirling-PDF! +survey.meeting.notInterested=¿No es una empresa o no está interesado en una reunión? survey.meeting.button=Reservar reunión #error @@ -1375,13 +1375,13 @@ validateSignature.title=Validar firmas del PDF validateSignature.header=Validar firmas del PDF validateSignature.selectPDF=Seleccione el archivo PDF firmado validateSignature.submit=Validar firmas -validateSignature.results=Resultados de la Validación -validateSignature.status=Estador +validateSignature.results=Resultados de la validación +validateSignature.status=Estado de la validación validateSignature.signer=Firmante validateSignature.date=Fecha -validateSignature.reason=Razón +validateSignature.reason=Motivo validateSignature.location=Ubicación -validateSignature.noSignatures=No se encontrario firmas digiales en este documento +validateSignature.noSignatures=No se encontraron firmas digiales en este documento validateSignature.status.valid=Válido validateSignature.status.invalid=Inválido validateSignature.chain.invalid=Error en la validación de la cadena de certificados: no se puede verificar la identidad del firmante @@ -1394,39 +1394,39 @@ validateSignature.signature.mathValid=La firma es matemáticamente válida aunqu validateSignature.selectCustomCert=Archivo de certificado personalizado X.509 (opcional) validateSignature.cert.info=Detalles Certificado validateSignature.cert.issuer=Emisor -validateSignature.cert.subject=Subject -validateSignature.cert.serialNumber=Número Serie +validateSignature.cert.subject=Asunto +validateSignature.cert.serialNumber=Número de Serie validateSignature.cert.validFrom=Válido desde validateSignature.cert.validUntil=Válido hasta validateSignature.cert.algorithm=Algoritmo -validateSignature.cert.keySize=Tamaño llave +validateSignature.cert.keySize=Tamaño de la clave validateSignature.cert.version=Versión -validateSignature.cert.keyUsage=Uso de la llave +validateSignature.cert.keyUsage=Uso de la clave validateSignature.cert.selfSigned=Autofirmado validateSignature.cert.bits=bits #################### # Cookie banner # #################### -cookieBanner.popUp.title=How we use Cookies -cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. -cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. -cookieBanner.popUp.acceptAllBtn=Okay -cookieBanner.popUp.acceptNecessaryBtn=No Thanks -cookieBanner.popUp.showPreferencesBtn=Manage preferences -cookieBanner.preferencesModal.title=Consent Preferences Center -cookieBanner.preferencesModal.acceptAllBtn=Accept all -cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all -cookieBanner.preferencesModal.savePreferencesBtn=Save preferences -cookieBanner.preferencesModal.closeIconLabel=Close modal -cookieBanner.preferencesModal.serviceCounterLabel=Service|Services -cookieBanner.preferencesModal.subtitle=Cookie Usage -cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. -cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. -cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. -cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies -cookieBanner.preferencesModal.necessary.title.2=Always Enabled -cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. -cookieBanner.preferencesModal.analytics.title=Analytics -cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. +cookieBanner.popUp.title=Cómo usamos las cookies +cookieBanner.popUp.description.1=Usamos cookies y otras tecnologías para optimizar el funcionamiento de Stirling PDF, lo que contribuye a mejorar nuestras herramientas y a seguir desarrollando funciones que serán de su interés. +cookieBanner.popUp.description.2=Si prefiere no hacerlo, al hacer clic en 'No gracias' se activarán únicamente las cookies esenciales necesarias para que todo funcione correctamente. +cookieBanner.popUp.acceptAllBtn=De acuerdo +cookieBanner.popUp.acceptNecessaryBtn=No, gracias +cookieBanner.popUp.showPreferencesBtn=Gestionar preferencias +cookieBanner.preferencesModal.title=Centro de Preferencias de Consentimiento +cookieBanner.preferencesModal.acceptAllBtn=Aceptar todo +cookieBanner.preferencesModal.acceptNecessaryBtn=Rechazar todo +cookieBanner.preferencesModal.savePreferencesBtn=Guardar preferencias +cookieBanner.preferencesModal.closeIconLabel=Cerrar diálogo +cookieBanner.preferencesModal.serviceCounterLabel=Servicio|Servicios +cookieBanner.preferencesModal.subtitle=Uso de cookies +cookieBanner.preferencesModal.description.1=Stirling PDF utiliza cookies y tecnologías similares para mejorar su experiencia y entender cómo se usan nuestras herramientas. Esto nos ayuda a mejorar el rendimiento, desarrollar las funciones que le interesan y proporcionar soporte continuo a nuestros usuarios. +cookieBanner.preferencesModal.description.2=Stirling PDF no puede—y nunca podrá—rastrear ni acceder al contenido de los documentos que utiliza. +cookieBanner.preferencesModal.description.3=Su privacidad y confianza son el núcleo de lo que hacemos. +cookieBanner.preferencesModal.necessary.title.1=Cookies estrictsamente necesarias +cookieBanner.preferencesModal.necessary.title.2=Siempre activado +cookieBanner.preferencesModal.necessary.description=Estas cookies son esenciales para que el sitio web funcione correctamente. Permiten funciones básicas como configurar sus preferencias de privacidad, iniciar sesión y completar formularios, por lo que no se pueden desactivar. +cookieBanner.preferencesModal.analytics.title=Análisis +cookieBanner.preferencesModal.analytics.description=Estas cookies nos ayudan a entender cómo se están utilizando nuestras herramientas, para que podamos centrarnos en desarrollar las funciones que nuestra comunidad valora más. Tenga la seguridad de que Stirling PDF no puede y nunca podrá rastrear el contenido de los documentos con los que trabaja. diff --git a/src/main/resources/static/3rdPartyLicenses.json b/src/main/resources/static/3rdPartyLicenses.json index 79c2f7f1f..61134131f 100644 --- a/src/main/resources/static/3rdPartyLicenses.json +++ b/src/main/resources/static/3rdPartyLicenses.json @@ -623,21 +623,21 @@ { "moduleName": "io.swagger.core.v3:swagger-annotations-jakarta", "moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-annotations", - "moduleVersion": "2.2.15", + "moduleVersion": "2.2.29", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "io.swagger.core.v3:swagger-core-jakarta", "moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-core", - "moduleVersion": "2.2.15", + "moduleVersion": "2.2.29", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "io.swagger.core.v3:swagger-models-jakarta", "moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-models", - "moduleVersion": "2.2.15", + "moduleVersion": "2.2.29", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, @@ -1256,6 +1256,13 @@ "moduleLicense": "The MIT License", "moduleLicenseUrl": "https://jsoup.org/license" }, + { + "moduleName": "org.jspecify:jspecify", + "moduleUrl": "https://jspecify.dev/docs/start-here", + "moduleVersion": "1.0.0", + "moduleLicense": "The Apache License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, { "moduleName": "org.latencyutils:LatencyUtils", "moduleUrl": "http://latencyutils.github.io/LatencyUtils/", @@ -1416,19 +1423,19 @@ }, { "moduleName": "org.springdoc:springdoc-openapi-starter-common", - "moduleVersion": "2.2.0", + "moduleVersion": "2.8.6", "moduleLicense": "The Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "org.springdoc:springdoc-openapi-starter-webmvc-api", - "moduleVersion": "2.2.0", + "moduleVersion": "2.8.6", "moduleLicense": "The Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "org.springdoc:springdoc-openapi-starter-webmvc-ui", - "moduleVersion": "2.2.0", + "moduleVersion": "2.8.6", "moduleLicense": "The Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -1603,7 +1610,7 @@ { "moduleName": "org.springframework.security:spring-security-saml2-service-provider", "moduleUrl": "https://spring.io/projects/spring-security", - "moduleVersion": "6.4.4", + "moduleVersion": "6.4.5", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, @@ -1738,10 +1745,16 @@ }, { "moduleName": "org.webjars:swagger-ui", - "moduleUrl": "http://webjars.org", - "moduleVersion": "5.2.0", - "moduleLicense": "Apache 2.0", - "moduleLicenseUrl": "https://github.com/swagger-api/swagger-ui" + "moduleUrl": "https://www.webjars.org", + "moduleVersion": "5.20.1", + "moduleLicense": "Apache-2.0" + }, + { + "moduleName": "org.webjars:webjars-locator-lite", + "moduleUrl": "https://webjars.org", + "moduleVersion": "1.0.1", + "moduleLicense": "MIT", + "moduleLicenseUrl": "https://github.com/webjars/webjars-locator-lite/blob/main/LICENSE.md" }, { "moduleName": "org.yaml:snakeyaml", diff --git a/src/main/resources/static/css/footer.css b/src/main/resources/static/css/footer.css index 4a85e7566..3945b1b43 100644 --- a/src/main/resources/static/css/footer.css +++ b/src/main/resources/static/css/footer.css @@ -37,3 +37,24 @@ text-decoration: none; cursor: pointer; } + +.footer-link-list { + display: flex; + flex-direction: row; /* Align links in a row */ +} + +/* Responsive styles for smaller screens */ +@media (max-width: 650px) { + .footer-link { + font-size: 0.8rem; /* Adjust font size for smaller screens */ + } +} + +@media (max-width: 550px) { + .footer-link { + font-size: 1rem; /* Adjust font size for smaller screens */ + } + .footer-link-list{ + flex-direction: column; /* Stack links vertically on smaller screens */ + } +} \ No newline at end of file diff --git a/src/main/resources/templates/fragments/footer.html b/src/main/resources/templates/fragments/footer.html index a3c99e46a..324f550d9 100644 --- a/src/main/resources/templates/fragments/footer.html +++ b/src/main/resources/templates/fragments/footer.html @@ -4,7 +4,7 @@