From a81856d83b31aa72551d33ca368796502f6151f1 Mon Sep 17 00:00:00 2001 From: Diallo Date: Sun, 22 Sep 2024 12:23:16 +0200 Subject: [PATCH 01/18] remove style color (#1948) --- src/main/resources/templates/view-pdf.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/templates/view-pdf.html b/src/main/resources/templates/view-pdf.html index 9e42dfb76..3e0b2326a 100644 --- a/src/main/resources/templates/view-pdf.html +++ b/src/main/resources/templates/view-pdf.html @@ -300,7 +300,7 @@ See https://github.com/adobe-type-tools/cmap-resources icon - Stirling PDF + Stirling PDF
From f47ed3b42e32468adf860ce5616cfb57992d9412 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Sun, 22 Sep 2024 22:25:38 +0200 Subject: [PATCH 02/18] Fix startup errors on ultra-lite image (#1950) * Add installFonts.sh to ultra-lite image Signed-off-by: yubiuser * Create /usr/share/fonts/opentype/noto on ultra-lite images Signed-off-by: yubiuser --------- Signed-off-by: yubiuser --- Dockerfile-ultra-lite | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Dockerfile-ultra-lite b/Dockerfile-ultra-lite index 6fcb1f50f..c1bdd80de 100644 --- a/Dockerfile-ultra-lite +++ b/Dockerfile-ultra-lite @@ -15,6 +15,7 @@ ENV DOCKER_ENABLE_SECURITY=false \ # Copy necessary files COPY scripts/download-security-jar.sh /scripts/download-security-jar.sh COPY scripts/init-without-ocr.sh /scripts/init-without-ocr.sh +COPY scripts/installFonts.sh /scripts/installFonts.sh COPY pipeline /pipeline COPY build/libs/*.jar app.jar @@ -33,11 +34,11 @@ RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /et su-exec \ openjdk21-jre && \ # User permissions - mkdir /configs /logs /customFiles && \ + mkdir -p /configs /logs /customFiles /usr/share/fonts/opentype/noto && \ chmod +x /scripts/*.sh && \ addgroup -S stirlingpdfgroup && adduser -S stirlingpdfuser -G stirlingpdfgroup && \ chown -R stirlingpdfuser:stirlingpdfgroup $HOME /scripts /configs /customFiles /pipeline && \ - chown stirlingpdfuser:stirlingpdfgroup /app.jar + chown stirlingpdfuser:stirlingpdfgroup /app.jar # Set environment variables ENV ENDPOINTS_GROUPS_TO_REMOVE=CLI From fde1f626eba59b96647127f87de9edbcfa2dea7d Mon Sep 17 00:00:00 2001 From: Akhil Sharma <88500527+Akhil-2020171@users.noreply.github.com> Date: Mon, 23 Sep 2024 04:17:11 +0530 Subject: [PATCH 03/18] Added functionality to use the next available port (#1913) * Added [Feature Request]: command flag to use the next available port #1882 * Added [Feature Request]: command flag to use the next available port #1882 * minor changes - build successful * Update: port finding starts from 0 instead of default 8080 port * Update: port finding starts from 0 instead of default 8080 port --------- Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> --- .../software/SPDF/SPdfApplication.java | 47 +++++++++++++------ .../web/ConverterWebController.java | 4 +- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/src/main/java/stirling/software/SPDF/SPdfApplication.java b/src/main/java/stirling/software/SPDF/SPdfApplication.java index 6c90ee3c8..94f1db983 100644 --- a/src/main/java/stirling/software/SPDF/SPdfApplication.java +++ b/src/main/java/stirling/software/SPDF/SPdfApplication.java @@ -1,6 +1,7 @@ package stirling.software.SPDF; import java.io.IOException; +import java.net.ServerSocket; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -30,14 +31,35 @@ public class SPdfApplication { private static final Logger logger = LoggerFactory.getLogger(SPdfApplication.class); @Autowired private Environment env; - @Autowired ApplicationProperties applicationProperties; private static String serverPortStatic; @Value("${server.port:8080}") public void setServerPortStatic(String port) { - SPdfApplication.serverPortStatic = port; + if (port.equalsIgnoreCase("auto")) { + // Use Spring Boot's automatic port assignment (server.port=0) + SPdfApplication.serverPortStatic = "0"; // This will let Spring Boot assign an available port + } else { + SPdfApplication.serverPortStatic = port; + } + } + + // Optionally keep this method if you want to provide a manual port-incrementation fallback. + private static String findAvailablePort(int startPort) { + int port = startPort; + while (!isPortAvailable(port)) { + port++; + } + return String.valueOf(port); + } + + private static boolean isPortAvailable(int port) { + try (ServerSocket socket = new ServerSocket(port)) { + return true; + } catch (IOException e) { + return false; + } } @PostConstruct @@ -47,13 +69,17 @@ public class SPdfApplication { boolean browserOpen = browserOpenEnv != null && "true".equalsIgnoreCase(browserOpenEnv); if (browserOpen) { try { - String url = "http://localhost:" + getNonStaticPort(); + String url = "http://localhost:" + getStaticPort(); String os = System.getProperty("os.name").toLowerCase(); Runtime rt = Runtime.getRuntime(); if (os.contains("win")) { // For Windows SystemCommand.runCommand(rt, "rundll32 url.dll,FileProtocolHandler " + url); + } else if (os.contains("mac")) { + rt.exec("open " + url); + } else if (os.contains("nix") || os.contains("nux")) { + rt.exec("xdg-open " + url); } } catch (Exception e) { logger.error("Error opening browser: {}", e.getMessage()); @@ -69,15 +95,13 @@ public class SPdfApplication { app.addInitializers(new ConfigInitializer()); Map propertyFiles = new HashMap<>(); - // stirling pdf settings file + // External config files if (Files.exists(Paths.get("configs/settings.yml"))) { propertyFiles.put("spring.config.additional-location", "file:configs/settings.yml"); } else { - logger.warn( - "External configuration file 'configs/settings.yml' does not exist. Using default configuration and environment configuration instead."); + logger.warn("External configuration file 'configs/settings.yml' does not exist."); } - // custom javs settings file if (Files.exists(Paths.get("configs/custom_settings.yml"))) { String existingLocation = propertyFiles.getOrDefault("spring.config.additional-location", ""); @@ -100,19 +124,14 @@ public class SPdfApplication { app.run(args); - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new RuntimeException("Thread interrupted while sleeping", e); - } - + // Ensure directories are created try { Files.createDirectories(Path.of("customFiles/static/")); Files.createDirectories(Path.of("customFiles/templates/")); } catch (Exception e) { logger.error("Error creating directories: {}", e.getMessage()); } + printStartupLogs(); } diff --git a/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java b/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java index 972d1fa90..d8f3e9b0c 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java @@ -15,7 +15,7 @@ import stirling.software.SPDF.utils.CheckProgramInstall; @Tag(name = "Convert", description = "Convert APIs") public class ConverterWebController { - @ConditionalOnExpression("#{bookAndHtmlFormatsInstalled}") + @ConditionalOnExpression("${bookAndHtmlFormatsInstalled}") @GetMapping("/book-to-pdf") @Hidden public String convertBookToPdfForm(Model model) { @@ -60,7 +60,7 @@ public class ConverterWebController { // PDF TO...... - @ConditionalOnExpression("#{bookAndHtmlFormatsInstalled}") + @ConditionalOnExpression("${bookAndHtmlFormatsInstalled}") @GetMapping("/pdf-to-book") @Hidden public String convertPdfToBookForm(Model model) { From df901db1f819ff9c3cb5478845820a74d6c65aca Mon Sep 17 00:00:00 2001 From: Aman Khan <79637672+amankhangit@users.noreply.github.com> Date: Mon, 23 Sep 2024 16:19:50 +0530 Subject: [PATCH 04/18] [Bug fix] Tooltip support added for Theme & Settings in the Navigation bar (#1947) * length of card which was getting displayed on hovering is reduced * issue #1818 solved * issue #1818 fixed * theme.css changed to previous code * issue #1801 fixed * navbar.html updated * multi language fixed --- src/main/resources/static/css/navbar.css | 28 +++++++++++++++++++ src/main/resources/static/css/theme/font.css | 2 +- .../resources/templates/fragments/navbar.html | 4 +-- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/main/resources/static/css/navbar.css b/src/main/resources/static/css/navbar.css index ca543ee4a..96255e0c8 100644 --- a/src/main/resources/static/css/navbar.css +++ b/src/main/resources/static/css/navbar.css @@ -128,6 +128,34 @@ span.icon-text::after { color: var(--md-sys-color-on-surface-variant); } +.nav-item { + position: relative; +} + +.tooltip-text { + visibility: hidden; + background-color: rgb(71 67 67 / 80%); + color: #fff; + text-align: center; + border-radius: 4px; + padding: 5px; + position: absolute; + z-index: 1; + top: 100%; + left: 50%; + transform: translateX(-50%); + opacity: 0; + transition: opacity 0.3s; + font-size: 12px; + white-space: nowrap; + margin-top: 5px; +} + +.nav-item:hover .tooltip-text { + visibility: visible; + opacity: 1; +} + .dropdown-menu.scrollable-y { overflow-y: scroll; height: 360px; diff --git a/src/main/resources/static/css/theme/font.css b/src/main/resources/static/css/theme/font.css index f245dd32d..547db7ca1 100644 --- a/src/main/resources/static/css/theme/font.css +++ b/src/main/resources/static/css/theme/font.css @@ -19,4 +19,4 @@ direction: ltr; -webkit-font-feature-settings: 'liga'; -webkit-font-smoothing: antialiased; -} \ No newline at end of file +} diff --git a/src/main/resources/templates/fragments/navbar.html b/src/main/resources/templates/fragments/navbar.html index 70475b541..b852569d7 100644 --- a/src/main/resources/templates/fragments/navbar.html +++ b/src/main/resources/templates/fragments/navbar.html @@ -316,7 +316,7 @@ dark_mode - + From 1c6e5df77d10fcd6f77c7b129041931fb1ac2428 Mon Sep 17 00:00:00 2001 From: maxi322 <66129899+maxi322@users.noreply.github.com> Date: Mon, 23 Sep 2024 21:52:57 +0200 Subject: [PATCH 05/18] [fix]: check for encryption in PageNumbers (#1949) [fix]: check for empty password encryption on load Co-authored-by: maxi322 --- .../api/SplitPdfByChaptersController.java | 9 --------- .../SPDF/service/CustomPDDocumentFactory.java | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/main/java/stirling/software/SPDF/controller/api/SplitPdfByChaptersController.java b/src/main/java/stirling/software/SPDF/controller/api/SplitPdfByChaptersController.java index 9d03f8b6b..0cca8f788 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/SplitPdfByChaptersController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/SplitPdfByChaptersController.java @@ -67,15 +67,6 @@ public class SplitPdfByChaptersController { } PDDocument sourceDocument = Loader.loadPDF(file.getBytes()); - // checks if the document is encrypted by an empty user password - if (sourceDocument.isEncrypted()) { - try { - sourceDocument.setAllSecurityToBeRemoved(true); - logger.info("Removing security from the source document "); - } catch (Exception e) { - logger.warn("Cannot decrypt the pdf"); - } - } PDDocumentOutline outline = sourceDocument.getDocumentCatalog().getDocumentOutline(); if (outline == null) { diff --git a/src/main/java/stirling/software/SPDF/service/CustomPDDocumentFactory.java b/src/main/java/stirling/software/SPDF/service/CustomPDDocumentFactory.java index b3f9eec7e..2d3d8990e 100644 --- a/src/main/java/stirling/software/SPDF/service/CustomPDDocumentFactory.java +++ b/src/main/java/stirling/software/SPDF/service/CustomPDDocumentFactory.java @@ -7,6 +7,8 @@ import java.io.InputStream; import org.apache.pdfbox.Loader; import org.apache.pdfbox.pdmodel.PDDocument; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; @@ -18,6 +20,8 @@ import stirling.software.SPDF.model.api.PDFFile; @Component public class CustomPDDocumentFactory { + private static final Logger logger = LoggerFactory.getLogger(CustomPDDocumentFactory.class); + private final PdfMetadataService pdfMetadataService; @Autowired @@ -71,6 +75,7 @@ public class CustomPDDocumentFactory { public PDDocument load(byte[] input) throws IOException { PDDocument document = Loader.loadPDF(input); pdfMetadataService.setDefaultMetadata(document); + removezeropassword(document); return document; } @@ -96,5 +101,17 @@ public class CustomPDDocumentFactory { return document; } + private PDDocument removezeropassword(PDDocument document) throws IOException { + if (document.isEncrypted()) { + try { + logger.info("Removing security from the source document"); + document.setAllSecurityToBeRemoved(true); + } catch (Exception e) { + logger.warn("Cannot decrypt the pdf"); + } + } + return document; + } + // Add other load methods as needed, following the same pattern } From 3ded6de5769b3f66ff0168a446b734865ae7f6f2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Sep 2024 13:27:37 +0100 Subject: [PATCH 06/18] Bump springBootVersion from 3.3.3 to 3.3.4 (#1953) Bumps `springBootVersion` from 3.3.3 to 3.3.4. Updates `org.springframework.boot:spring-boot-starter-web` from 3.3.3 to 3.3.4 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.3...v3.3.4) Updates `org.springframework.boot:spring-boot-starter-jetty` from 3.3.3 to 3.3.4 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.3...v3.3.4) Updates `org.springframework.boot:spring-boot-starter-thymeleaf` from 3.3.3 to 3.3.4 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.3...v3.3.4) Updates `org.springframework.boot:spring-boot-starter-security` from 3.3.3 to 3.3.4 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.3...v3.3.4) Updates `org.springframework.boot:spring-boot-starter-data-jpa` from 3.3.3 to 3.3.4 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.3...v3.3.4) Updates `org.springframework.boot:spring-boot-starter-oauth2-client` from 3.3.3 to 3.3.4 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.3...v3.3.4) Updates `org.springframework.boot:spring-boot-starter-test` from 3.3.3 to 3.3.4 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.3...v3.3.4) Updates `org.springframework.boot:spring-boot-starter-actuator` from 3.3.3 to 3.3.4 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.3...v3.3.4) Updates `org.springframework.boot:spring-boot-devtools` from 3.3.3 to 3.3.4 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.3...v3.3.4) --- 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] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index ce09352a6..870a6ad4a 100644 --- a/build.gradle +++ b/build.gradle @@ -13,7 +13,7 @@ plugins { import com.github.jk1.license.render.* ext { - springBootVersion = "3.3.3" + springBootVersion = "3.3.4" pdfboxVersion = "3.0.3" logbackVersion = "1.5.7" imageioVersion = "3.11.0" From 9b9636749679a81880ecb4e12055cd629d55132d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Sep 2024 13:27:46 +0100 Subject: [PATCH 07/18] Bump commons-io:commons-io from 2.16.1 to 2.17.0 (#1955) Bumps commons-io:commons-io from 2.16.1 to 2.17.0. --- updated-dependencies: - dependency-name: commons-io:commons-io dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 870a6ad4a..05f9d9c33 100644 --- a/build.gradle +++ b/build.gradle @@ -162,7 +162,7 @@ dependencies { runtimeOnly "com.twelvemonkeys.imageio:imageio-webp:$imageioVersion" // runtimeOnly "com.twelvemonkeys.imageio:imageio-xwd:$imageioVersion" - implementation "commons-io:commons-io:2.16.1" + implementation "commons-io:commons-io:2.17.0" implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0" //general PDF From b8115531e24f8625c1957cb7e5192479fdd76c0d Mon Sep 17 00:00:00 2001 From: HardikaZalavadia <158505268+HardikaZalavadia@users.noreply.github.com> Date: Wed, 25 Sep 2024 01:03:13 +0530 Subject: [PATCH 08/18] fix Show Javascript card layout (#1959) --- src/main/java/stirling/software/SPDF/SPdfApplication.java | 3 ++- src/main/resources/static/js/pipeline.js | 5 ++++- src/main/resources/templates/misc/show-javascript.html | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/stirling/software/SPDF/SPdfApplication.java b/src/main/java/stirling/software/SPDF/SPdfApplication.java index 94f1db983..7149088b6 100644 --- a/src/main/java/stirling/software/SPDF/SPdfApplication.java +++ b/src/main/java/stirling/software/SPDF/SPdfApplication.java @@ -39,7 +39,8 @@ public class SPdfApplication { public void setServerPortStatic(String port) { if (port.equalsIgnoreCase("auto")) { // Use Spring Boot's automatic port assignment (server.port=0) - SPdfApplication.serverPortStatic = "0"; // This will let Spring Boot assign an available port + SPdfApplication.serverPortStatic = + "0"; // This will let Spring Boot assign an available port } else { SPdfApplication.serverPortStatic = port; } diff --git a/src/main/resources/static/js/pipeline.js b/src/main/resources/static/js/pipeline.js index c36ba02b4..837b6665d 100644 --- a/src/main/resources/static/js/pipeline.js +++ b/src/main/resources/static/js/pipeline.js @@ -81,6 +81,8 @@ document.getElementById("submitConfigBtn").addEventListener("click", function () let selectedOperation = document.getElementById("operationsDropdown").value; var pipelineName = document.getElementById("pipelineName").value; + + let pipelineList = document.getElementById("pipelineList").children; let pipelineConfig = { name: pipelineName, @@ -218,7 +220,8 @@ fetch("v1/api-docs") document.getElementById('deletePipelineBtn').addEventListener('click', function(event) { event.preventDefault(); - let pipelineName = document.getElementById('pipelineName').value; + let pipelineName = document.getElementById('pipelineName').value; + if (confirm(deletePipelineText + pipelineName)) { removePipelineFromUI(pipelineName); let key = "#Pipeline-" + pipelineName; diff --git a/src/main/resources/templates/misc/show-javascript.html b/src/main/resources/templates/misc/show-javascript.html index 5c35d79f3..91dc74cf0 100644 --- a/src/main/resources/templates/misc/show-javascript.html +++ b/src/main/resources/templates/misc/show-javascript.html @@ -20,7 +20,7 @@

-
+
javascript @@ -30,7 +30,7 @@
-
+
From da988e812712f25ffcbfdea7dc00507933ba6952 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Sep 2024 13:46:46 +0100 Subject: [PATCH 09/18] Bump org.springframework.boot from 3.3.3 to 3.3.4 (#1954) Bumps [org.springframework.boot](https://github.com/spring-projects/spring-boot) from 3.3.3 to 3.3.4. - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.3...v3.3.4) --- updated-dependencies: - dependency-name: org.springframework.boot dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 05f9d9c33..860a574a1 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ plugins { id "java" - id "org.springframework.boot" version "3.3.3" + id "org.springframework.boot" version "3.3.4" id "io.spring.dependency-management" version "1.1.6" id "org.springdoc.openapi-gradle-plugin" version "1.8.0" id "io.swagger.swaggerhub" version "1.3.2" From 86bb37aa7ac11526504539c15e01ee86b65699b4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 25 Sep 2024 23:14:22 +0100 Subject: [PATCH 10/18] Update 3rd Party Licenses (#1956) Signed-off-by: GitHub Action Co-authored-by: GitHub Action --- .../resources/static/3rdPartyLicenses.json | 180 +++++++++--------- 1 file changed, 90 insertions(+), 90 deletions(-) diff --git a/src/main/resources/static/3rdPartyLicenses.json b/src/main/resources/static/3rdPartyLicenses.json index 703702db9..4c8de54ad 100644 --- a/src/main/resources/static/3rdPartyLicenses.json +++ b/src/main/resources/static/3rdPartyLicenses.json @@ -3,14 +3,14 @@ { "moduleName": "ch.qos.logback:logback-classic", "moduleUrl": "http://www.qos.ch", - "moduleVersion": "1.5.7", + "moduleVersion": "1.5.8", "moduleLicense": "GNU Lesser General Public License", "moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html" }, { "moduleName": "ch.qos.logback:logback-core", "moduleUrl": "http://www.qos.ch", - "moduleVersion": "1.5.7", + "moduleVersion": "1.5.8", "moduleLicense": "GNU Lesser General Public License", "moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html" }, @@ -258,7 +258,7 @@ { "moduleName": "commons-io:commons-io", "moduleUrl": "https://commons.apache.org/proper/commons-io/", - "moduleVersion": "2.16.1", + "moduleVersion": "2.17.0", "moduleLicense": "Apache-2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -279,7 +279,7 @@ { "moduleName": "io.micrometer:micrometer-commons", "moduleUrl": "https://github.com/micrometer-metrics/micrometer", - "moduleVersion": "1.13.3", + "moduleVersion": "1.13.4", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -293,14 +293,14 @@ { "moduleName": "io.micrometer:micrometer-jakarta9", "moduleUrl": "https://github.com/micrometer-metrics/micrometer", - "moduleVersion": "1.13.3", + "moduleVersion": "1.13.4", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "io.micrometer:micrometer-observation", "moduleUrl": "https://github.com/micrometer-metrics/micrometer", - "moduleVersion": "1.13.3", + "moduleVersion": "1.13.4", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -519,7 +519,7 @@ { "moduleName": "org.apache.tomcat.embed:tomcat-embed-el", "moduleUrl": "https://tomcat.apache.org/", - "moduleVersion": "10.1.28", + "moduleVersion": "10.1.30", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -592,183 +592,183 @@ }, { "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-client", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-common", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-server", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-servlet", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-annotations", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-plus", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-servlet", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-servlets", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-webapp", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-client", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-common", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-server", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-jetty-api", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-jetty-common", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-alpn-client", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-client", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-ee", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-http", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-io", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-plus", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-security", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-server", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-session", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-util", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-xml", - "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.12", + "moduleUrl": "https://jetty.org/", + "moduleVersion": "12.0.13", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, @@ -810,7 +810,7 @@ { "moduleName": "org.hibernate.orm:hibernate-core", "moduleUrl": "https://www.hibernate.org/orm/6.5", - "moduleVersion": "6.5.2.Final", + "moduleVersion": "6.5.3.Final", "moduleLicense": "GNU Library General Public License v2.1 or later", "moduleLicenseUrl": "https://www.opensource.org/licenses/LGPL-2.1" }, @@ -884,133 +884,133 @@ { "moduleName": "org.springframework.boot:spring-boot", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-actuator", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-actuator-autoconfigure", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-autoconfigure", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-devtools", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-actuator", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-aop", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-data-jpa", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-jdbc", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-jetty", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-json", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-logging", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-oauth2-client", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-security", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-thymeleaf", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-web", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.data:spring-data-commons", "moduleUrl": "https://spring.io/projects/spring-data", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.data:spring-data-jpa", "moduleUrl": "https://projects.spring.io/spring-data-jpa", - "moduleVersion": "3.3.3", + "moduleVersion": "3.3.4", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, @@ -1066,77 +1066,77 @@ { "moduleName": "org.springframework:spring-aop", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.12", + "moduleVersion": "6.1.13", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-aspects", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.12", + "moduleVersion": "6.1.13", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-beans", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.12", + "moduleVersion": "6.1.13", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-context", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.12", + "moduleVersion": "6.1.13", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-core", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.12", + "moduleVersion": "6.1.13", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-expression", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.12", + "moduleVersion": "6.1.13", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-jcl", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.12", + "moduleVersion": "6.1.13", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-jdbc", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.12", + "moduleVersion": "6.1.13", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-orm", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.12", + "moduleVersion": "6.1.13", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-tx", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.12", + "moduleVersion": "6.1.13", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-web", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.12", + "moduleVersion": "6.1.13", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, From 092b4cc5cbae153fbf21fa7160a76bb284c17327 Mon Sep 17 00:00:00 2001 From: FiratUsta <67150276+FiratUsta@users.noreply.github.com> Date: Mon, 30 Sep 2024 14:00:30 +0300 Subject: [PATCH 11/18] [Bug Fix] New Home Page Bug Fixes (#1973) * Fix favorites section being cut off if it has too many items. * Fix the group collapse transition animation playing on page load. --- src/main/resources/static/css/home.css | 5 ++++- src/main/resources/static/js/homecard.js | 18 +++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/resources/static/css/home.css b/src/main/resources/static/css/home.css index 12b69d94c..8faa91638 100644 --- a/src/main/resources/static/css/home.css +++ b/src/main/resources/static/css/home.css @@ -62,12 +62,15 @@ display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 3fr)); gap: 30px 30px; - transition: 0.5s all; overflow: hidden; margin: -20px; padding: 20px; } +.feature-group-container.animated-group { + transition: 0.5s all; +} + .feature-group.collapsed>.feature-group-container { max-height: 0 !important; margin: 0; diff --git a/src/main/resources/static/js/homecard.js b/src/main/resources/static/js/homecard.js index 4cdecdb7e..d4dfd7ea4 100644 --- a/src/main/resources/static/js/homecard.js +++ b/src/main/resources/static/js/homecard.js @@ -24,6 +24,7 @@ function filterCards() { function updateFavoritesSection() { const favoritesContainer = document.getElementById("groupFavorites").querySelector(".feature-group-container"); + favoritesContainer.style.maxHeight = "none"; favoritesContainer.innerHTML = ""; const cards = Array.from(document.querySelectorAll(".feature-card")); let favoritesAmount = 0; @@ -40,6 +41,7 @@ function updateFavoritesSection() { document.getElementById("groupFavorites").style.display = "flex"; }; reorderCards(favoritesContainer); + favoritesContainer.style.maxHeight = favoritesContainer.scrollHeight + "px"; }; function toggleFavorite(element) { @@ -197,8 +199,6 @@ document.addEventListener("DOMContentLoaded", function () { const container = header.parentNode.querySelector(".feature-group-container"); if (parent.id !== "groupFavorites") { container.style.maxHeight = container.clientHeight + "px"; - } else { - container.style.maxHeight = "500px"; } header.onclick = () => { expandCollapseToggle(parent); @@ -206,12 +206,24 @@ document.addEventListener("DOMContentLoaded", function () { }) const collapsed = localStorage.getItem("collapsedGroups") ? JSON.parse(localStorage.getItem("collapsedGroups")) : []; + const groupsArray = Array.from(document.querySelectorAll(".feature-group")); - Array.from(document.querySelectorAll(".feature-group")).forEach(group => { + groupsArray.forEach(group => { if (collapsed.indexOf(group.id) !== -1) { expandCollapseToggle(group, false); } }) + // Necessary in order to not fire the transition animation on page load, which looks wrong. + // The timeout isn't doing anything visible to the user, so it's not making the page load look slower. + setTimeout(() => { + groupsArray.forEach(group => { + const container = group.querySelector(".feature-group-container"); + container.classList.add("animated-group"); + }) + }, 500); + + + showFavoritesOnly(); }); From bb37ba1f30e5f695f56db1d9de073c155be80c98 Mon Sep 17 00:00:00 2001 From: dogancandemir <137727896+dogancandemir@users.noreply.github.com> Date: Wed, 2 Oct 2024 23:20:25 +0200 Subject: [PATCH 12/18] Turkish translation (#1980) * up to Settings translation completed * up to HomePage translation completed * up to WebPages translation completed * Whole translation done! --- src/main/resources/messages_tr_TR.properties | 64 ++++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/src/main/resources/messages_tr_TR.properties b/src/main/resources/messages_tr_TR.properties index 2958f9dbe..718271479 100644 --- a/src/main/resources/messages_tr_TR.properties +++ b/src/main/resources/messages_tr_TR.properties @@ -3,8 +3,8 @@ ########### # the direction that the language is written (ltr = left to right, rtl = right to left) language.direction=ltr -addPageNumbers.fontSize=Font Size -addPageNumbers.fontName=Font Name +addPageNumbers.fontSize=Font Büyüklüğü +addPageNumbers.fontName=Font İsmi pdfPrompt=PDF(leri) seçin multiPdfPrompt=PDFleri seçin (2+) multiPdfDropPrompt=Tüm gerekli PDF'leri seçin (ya da sürükleyip bırakın) @@ -56,12 +56,12 @@ userNotFoundMessage=Kullanıcı bulunamadı. incorrectPasswordMessage=Mevcut şifre yanlış. usernameExistsMessage=Yeni Kullanıcı Adı zaten var. invalidUsernameMessage=Geçersiz kullanıcı adı, kullanıcı adı yalnızca harf, rakam ve aşağıdaki özel karakterleri @._+- içerebilir veya geçerli bir e-posta adresi olmalıdır. -invalidPasswordMessage=The password must not be empty and must not have spaces at the beginning or end. +invalidPasswordMessage=Şifre boş olmamalı ve başında veya sonunda boşluk bulunmamalıdır. confirmPasswordErrorMessage=Yeni Şifre ve Yeni Şifreyi Onayla eşleşmelidir. deleteCurrentUserMessage=Şu anda oturum açmış olan kullanıcı silinemiyor. deleteUsernameExistsMessage=Kullanıcı adı mevcut değil ve silinemez. downgradeCurrentUserMessage=Mevcut kullanıcının rolü düşürülemiyor -disabledCurrentUserMessage=The current user cannot be disabled +disabledCurrentUserMessage=Mevcut kullanıcı devre dışı bırakılamaz downgradeCurrentUserLongMessage=Mevcut kullanıcının rolü düşürülemiyor. Bu nedenle, mevcut kullanıcı gösterilmeyecektir. userAlreadyExistsOAuthMessage=Kullanıcı zaten bir OAuth2 kullanıcısı olarak mevcut. userAlreadyExistsWebMessage=Kullanıcı zaten bir web kullanıcısı olarak mevcut. @@ -77,17 +77,17 @@ color=Renk sponsor=Bağış info=Bilgi -legal.privacy=Privacy Policy -legal.terms=Terms and Conditions -legal.accessibility=Accessibility -legal.cookie=Cookie Policy -legal.impressum=Impressum +legal.privacy=Gizlilik Politikası +legal.terms=Şartlar ve koşullar +legal.accessibility=Erişilebilirlik +legal.cookie=Çerez Politikası +legal.impressum=Hakkımızda ############### # Pipeline # ############### pipeline.header=Çoklu İşlemler Menü (Beta) -pipeline.uploadButton=Upload edin +pipeline.uploadButton=Yükle pipeline.configureButton=Yapılandır pipeline.defaultOption=Özel pipeline.submitButton=Gönder @@ -184,7 +184,7 @@ adminUserSettings.user=Kullanıcı adminUserSettings.addUser=Yeni Kullanıcı Ekle adminUserSettings.deleteUser=Kullanıcı Sil adminUserSettings.confirmDeleteUser=Kullanıcı silinsin mi? -adminUserSettings.confirmChangeUserStatus=Should the user be disabled/enabled? +adminUserSettings.confirmChangeUserStatus=Kullanıcı devre dışı bırakılmalı/aktifleştirilmeli mi ? adminUserSettings.usernameInfo=Kullanıcı adı yalnızca harf, rakam ve aşağıdaki özel karakterleri @._+- içerebilir veya geçerli bir e-posta adresi olmalıdır. adminUserSettings.roles=Roller adminUserSettings.role=Rol @@ -198,13 +198,13 @@ adminUserSettings.forceChange=Kullanıcının girişte kullanıcı adı/şifre d adminUserSettings.submit=Kullanıcıyı Kaydet adminUserSettings.changeUserRole=Kullanıcı rolünü değiştir adminUserSettings.authenticated=Onaylandı -adminUserSettings.editOwnProfil=Edit own profile -adminUserSettings.enabledUser=enabled user -adminUserSettings.disabledUser=disabled user -adminUserSettings.activeUsers=Active Users: -adminUserSettings.disabledUsers=Disabled Users: -adminUserSettings.totalUsers=Total Users: -adminUserSettings.lastRequest=Last Request +adminUserSettings.editOwnProfil=Profili düzenle +adminUserSettings.enabledUser=aktif kullanıcı +adminUserSettings.disabledUser=devre dışı kullanıcı +adminUserSettings.activeUsers=Aktif Kullanıcılar: +adminUserSettings.disabledUsers=Devre Dışı Kullanıcılar: +adminUserSettings.totalUsers=Toplam Kullanıcılar: +adminUserSettings.lastRequest=Son İstek database.title=Veri Tabanını İçe/Dışa Aktar @@ -476,9 +476,9 @@ home.BookToPDF.title=Kitaptan PDF'ye home.BookToPDF.desc=calibre kullanarak Kitap/Karikatür formatlarını PDF'ye dönüştürür BookToPDF.tags=Kitap,Çizgi Roman,Calibre,Dönüştür,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf -home.removeImagePdf.title=Remove image -home.removeImagePdf.desc=Remove image from PDF to reduce file size -removeImagePdf.tags=Remove Image,Page operations,Back end,server side +home.removeImagePdf.title=Resmi kaldır +home.removeImagePdf.desc=Dosya boyutunu küçültmek için PDF'den resmi kaldırın +removeImagePdf.tags=Resmi Kaldır,Sayfa İşlemleri,Arka uç,sunucu tarafı ########################### @@ -496,14 +496,14 @@ login.locked=Hesabınız kilitlendi. login.signinTitle=Lütfen giriş yapınız. login.ssoSignIn=Tek Oturum Açma ile Giriş Yap login.oauth2AutoCreateDisabled=OAUTH2 Otomatik Oluşturma Kullanıcı Devre Dışı Bırakıldı -login.oauth2AdminBlockedUser=Registration or logging in of non-registered users is currently blocked. Please contact the administrator. +login.oauth2AdminBlockedUser=Kayıtlı olmayan kullanıcıların kayıt veya giriş yapması şu anda engellenmiştir. Lütfen yöneticiyle iletişime geçin. login.oauth2RequestNotFound=Yetkilendirme isteği bulunamadı login.oauth2InvalidUserInfoResponse=Geçersiz Kullanıcı Bilgisi Yanıtı login.oauth2invalidRequest=Geçersiz İstek login.oauth2AccessDenied=Erişim Reddedildi login.oauth2InvalidTokenResponse=Geçersiz Belirteç Yanıtı login.oauth2InvalidIdToken=Geçersiz Kimlik Belirteci -login.userIsDisabled=User is deactivated, login is currently blocked with this username. Please contact the administrator. +login.userIsDisabled=Kullanıcı devre dışı bırakıldı, şu anda bu kullanıcı adıyla giriş engellendi. Lütfen yöneticiyle iletişime geçin. #auto-redact @@ -781,7 +781,7 @@ ScannerImageSplit.selectText.7=Minimum Kontur Alanı: ScannerImageSplit.selectText.8=Bir fotoğraf için minimum kontur alanı eşiğini ayarlar ScannerImageSplit.selectText.9=Kenar Boyutu: ScannerImageSplit.selectText.10=Çıktıda beyaz kenarların önlenmesi için eklenen ve kaldırılan kenarın boyutunu ayarlar (varsayılan: 1). -ScannerImageSplit.info=Python is not installed. It is required to run. +ScannerImageSplit.info=Python kurulu değil. Çalışması için gereklidir. #OCR @@ -808,7 +808,7 @@ ocr.submit=PDF'i OCR(Metin Tanıma) ile İşle extractImages.title=Resimleri Çıkar extractImages.header=Resimleri Çıkar extractImages.selectText=Çıkarılan resimleri dönüştürmek için resim formatını seçin -extractImages.allowDuplicates=Save duplicate images +extractImages.allowDuplicates=Yinelenen görselleri kaydet extractImages.submit=Çıkar @@ -933,7 +933,7 @@ pdfToImage.color=Renk pdfToImage.grey=Gri tonlama pdfToImage.blackwhite=Siyah ve Beyaz (Veri kaybolabilir!) pdfToImage.submit=Dönüştür -pdfToImage.info=Python is not installed. Required for WebP conversion. +pdfToImage.info=Python kurulu değil. WebP dönüşümü için gereklidir. #addPassword @@ -970,7 +970,7 @@ watermark.selectText.6=yükseklikBoşluk (Dikeyde her filigran arasında boşluk watermark.selectText.7=Opaklık (0% - 100%): watermark.selectText.8=Filigran Türü: watermark.selectText.9=Filigran Resmi: -watermark.selectText.10=Convert PDF to PDF-Image +watermark.selectText.10=PDF'yi PDF-Resim'e Dönüştür watermark.submit=Filigran Ekle watermark.type.1=Metin watermark.type.2=Resim @@ -1027,7 +1027,7 @@ pdfToPDFA.credit=Bu hizmet PDF/A dönüşümü için ghostscript kullanır pdfToPDFA.submit=Dönüştür pdfToPDFA.tip=Şu anda aynı anda birden fazla giriş için çalışmıyor pdfToPDFA.outputFormat=Çıkış formatı -pdfToPDFA.pdfWithDigitalSignature=The PDF contains a digital signature. This will be removed in the next step. +pdfToPDFA.pdfWithDigitalSignature=PDF dijital imza içeriyor. Bu bir sonraki adımda kaldırılacak. #PDFToWord @@ -1153,7 +1153,7 @@ error.discordSubmit=Discord - Destek gönderisi gönderin #remove-image -removeImage.title=Remove image -removeImage.header=Remove image -removeImage.removeImage=Remove image -removeImage.submit=Remove image +removeImage.title=Resmi kaldır +removeImage.header=Resmi kaldır +removeImage.removeImage=Resmi kaldır +removeImage.submit=Resmi kaldır From 22a58ad0c30baace7c1cda90cb9be9d4077df032 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Oct 2024 09:48:29 +0100 Subject: [PATCH 13/18] :memo: Update README: Translation Progress Table (#1981) :memo: Sync README > Made via sync_files.yml Co-authored-by: github-actions[bot] --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1ac27bb8e..e16232fa6 100644 --- a/README.md +++ b/README.md @@ -205,7 +205,7 @@ Stirling PDF currently supports 38! | Swedish (Svenska) (sv_SE) | ![97%](https://geps.dev/progress/97) | | Thai (ไทย) (th_TH) | ![96%](https://geps.dev/progress/96) | | Traditional Chinese (繁體中文) (zh_TW) | ![95%](https://geps.dev/progress/95) | -| Turkish (Türkçe) (tr_TR) | ![96%](https://geps.dev/progress/96) | +| Turkish (Türkçe) (tr_TR) | ![99%](https://geps.dev/progress/99) | | Ukrainian (Українська) (uk_UA) | ![87%](https://geps.dev/progress/87) | | Vietnamese (Tiếng Việt) (vi_VN) | ![96%](https://geps.dev/progress/96) | From 45e4c15d2db31acc90a687c7e274e7ed3e5ab8d7 Mon Sep 17 00:00:00 2001 From: bxjyj <68038449+bxjyj@users.noreply.github.com> Date: Fri, 4 Oct 2024 11:22:35 -0400 Subject: [PATCH 14/18] Searchbar Dynamically Resizes (#1985) Fixed Searchbar sizing --- src/main/resources/static/css/navbar.css | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/resources/static/css/navbar.css b/src/main/resources/static/css/navbar.css index 96255e0c8..7db824628 100644 --- a/src/main/resources/static/css/navbar.css +++ b/src/main/resources/static/css/navbar.css @@ -7,8 +7,8 @@ } #navbarSearch.show { - max-height: 300px; - /* Adjust this to your desired max height */ + height: auto; + /*dynamically changes height*/ } #searchResults .dropdown-item { @@ -268,6 +268,7 @@ span.icon-text::after { /* Dropdown min-width */ .dropdown-mw-28 { min-width: 280px; + min-height: 50px; } .dropdown-mw-20 { @@ -314,6 +315,7 @@ span.icon-text::after { display: block; margin-top: 0; } + .icon-hide { display: none; } From 494bc2c09f494122ea00de582e3c95f9935b0b5b Mon Sep 17 00:00:00 2001 From: Hashim <85452526+Hashim0510@users.noreply.github.com> Date: Fri, 4 Oct 2024 21:23:00 +0530 Subject: [PATCH 15/18] =?UTF-8?q?commit=20for=20feature=20developing=20inv?= =?UTF-8?q?ert-replace=20color=20of=20a=20pdf=20for=20stirl=E2=80=A6=20(#1?= =?UTF-8?q?982)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit for feature developing invert-replace color of a pdf for stirling PDF --- .../ReplaceAndInvertColorFactory.java | 39 +++++ .../misc/ReplaceAndInvertColorController.java | 55 ++++++ .../controller/web/OtherWebController.java | 7 + .../misc/HighContrastColorCombination.java | 8 + .../SPDF/model/api/misc/ReplaceAndInvert.java | 7 + .../misc/ReplaceAndInvertColorRequest.java | 40 +++++ .../misc/ReplaceAndInvertColorService.java | 42 +++++ .../misc/CustomColorReplaceStrategy.java | 163 ++++++++++++++++++ .../misc/HighContrastColorReplaceDecider.java | 30 ++++ .../utils/misc/InvertFullColorStrategy.java | 104 +++++++++++ .../utils/misc/PdfTextStripperCustom.java | 36 ++++ .../misc/ReplaceAndInvertColorStrategy.java | 24 +++ src/main/resources/messages_en_GB.properties | 20 +++ src/main/resources/messages_en_US.properties | 24 +++ .../resources/templates/fragments/navbar.html | 3 + src/main/resources/templates/home.html | 8 +- .../templates/misc/replace-color.html | 89 ++++++++++ 17 files changed, 697 insertions(+), 2 deletions(-) create mode 100644 src/main/java/stirling/software/SPDF/Factories/ReplaceAndInvertColorFactory.java create mode 100644 src/main/java/stirling/software/SPDF/controller/api/misc/ReplaceAndInvertColorController.java create mode 100644 src/main/java/stirling/software/SPDF/model/api/misc/HighContrastColorCombination.java create mode 100644 src/main/java/stirling/software/SPDF/model/api/misc/ReplaceAndInvert.java create mode 100644 src/main/java/stirling/software/SPDF/model/api/misc/ReplaceAndInvertColorRequest.java create mode 100644 src/main/java/stirling/software/SPDF/service/misc/ReplaceAndInvertColorService.java create mode 100644 src/main/java/stirling/software/SPDF/utils/misc/CustomColorReplaceStrategy.java create mode 100644 src/main/java/stirling/software/SPDF/utils/misc/HighContrastColorReplaceDecider.java create mode 100644 src/main/java/stirling/software/SPDF/utils/misc/InvertFullColorStrategy.java create mode 100644 src/main/java/stirling/software/SPDF/utils/misc/PdfTextStripperCustom.java create mode 100644 src/main/java/stirling/software/SPDF/utils/misc/ReplaceAndInvertColorStrategy.java create mode 100644 src/main/resources/templates/misc/replace-color.html diff --git a/src/main/java/stirling/software/SPDF/Factories/ReplaceAndInvertColorFactory.java b/src/main/java/stirling/software/SPDF/Factories/ReplaceAndInvertColorFactory.java new file mode 100644 index 000000000..6aeb4b2d8 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/Factories/ReplaceAndInvertColorFactory.java @@ -0,0 +1,39 @@ +package stirling.software.SPDF.Factories; + +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import stirling.software.SPDF.model.api.misc.HighContrastColorCombination; +import stirling.software.SPDF.model.api.misc.ReplaceAndInvert; +import stirling.software.SPDF.utils.misc.CustomColorReplaceStrategy; +import stirling.software.SPDF.utils.misc.InvertFullColorStrategy; +import stirling.software.SPDF.utils.misc.ReplaceAndInvertColorStrategy; + +@Component +public class ReplaceAndInvertColorFactory { + + public ReplaceAndInvertColorStrategy replaceAndInvert( + MultipartFile file, + ReplaceAndInvert replaceAndInvertOption, + HighContrastColorCombination highContrastColorCombination, + String backGroundColor, + String textColor) { + + if (replaceAndInvertOption == ReplaceAndInvert.CUSTOM_COLOR + || replaceAndInvertOption == ReplaceAndInvert.HIGH_CONTRAST_COLOR) { + + return new CustomColorReplaceStrategy( + file, + replaceAndInvertOption, + textColor, + backGroundColor, + highContrastColorCombination); + + } else if (replaceAndInvertOption == ReplaceAndInvert.FULL_INVERSION) { + + return new InvertFullColorStrategy(file, replaceAndInvertOption); + } + + return null; + } +} diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/ReplaceAndInvertColorController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/ReplaceAndInvertColorController.java new file mode 100644 index 000000000..c7296a1bf --- /dev/null +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/ReplaceAndInvertColorController.java @@ -0,0 +1,55 @@ +package stirling.software.SPDF.controller.api.misc; + +import java.io.IOException; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.InputStreamResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import io.swagger.v3.oas.annotations.Operation; + +import stirling.software.SPDF.model.api.misc.ReplaceAndInvertColorRequest; +import stirling.software.SPDF.service.misc.ReplaceAndInvertColorService; + +@RestController +@RequestMapping("/api/v1/misc") +public class ReplaceAndInvertColorController { + + private ReplaceAndInvertColorService replaceAndInvertColorService; + + @Autowired + public ReplaceAndInvertColorController( + ReplaceAndInvertColorService replaceAndInvertColorService) { + this.replaceAndInvertColorService = replaceAndInvertColorService; + } + + @PostMapping(consumes = "multipart/form-data", value = "/replace-invert-pdf") + @Operation( + summary = "Replace-Invert Color PDF", + description = + "This endpoint accepts a PDF file and option of invert all colors or replace text and background colors. Input:PDF Output:PDF Type:SISO") + public ResponseEntity replaceAndInvertColor( + @ModelAttribute ReplaceAndInvertColorRequest replaceAndInvertColorRequest) + throws IOException { + + InputStreamResource resource = + replaceAndInvertColorService.replaceAndInvertColor( + replaceAndInvertColorRequest.getFileInput(), + replaceAndInvertColorRequest.getReplaceAndInvertOption(), + replaceAndInvertColorRequest.getHighContrastColorCombination(), + replaceAndInvertColorRequest.getBackGroundColor(), + replaceAndInvertColorRequest.getTextColor()); + + // Return the modified PDF as a downloadable file + return ResponseEntity.ok() + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=inverted.pdf") + .contentType(MediaType.APPLICATION_PDF) + .body(resource); + } +} diff --git a/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java b/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java index 8b6178bd6..7f87d4f22 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java @@ -31,6 +31,13 @@ public class OtherWebController { return "misc/compress-pdf"; } + @GetMapping("/replace-and-invert-color-pdf") + @Hidden + public String replaceAndInvertColorPdfForm(Model model) { + model.addAttribute("currentPage", "replace-invert-color-pdf"); + return "misc/replace-color"; + } + @GetMapping("/extract-image-scans") @Hidden public ModelAndView extractImageScansForm() { diff --git a/src/main/java/stirling/software/SPDF/model/api/misc/HighContrastColorCombination.java b/src/main/java/stirling/software/SPDF/model/api/misc/HighContrastColorCombination.java new file mode 100644 index 000000000..27c6290bb --- /dev/null +++ b/src/main/java/stirling/software/SPDF/model/api/misc/HighContrastColorCombination.java @@ -0,0 +1,8 @@ +package stirling.software.SPDF.model.api.misc; + +public enum HighContrastColorCombination { + WHITE_TEXT_ON_BLACK, + BLACK_TEXT_ON_WHITE, + YELLOW_TEXT_ON_BLACK, + GREEN_TEXT_ON_BLACK, +} diff --git a/src/main/java/stirling/software/SPDF/model/api/misc/ReplaceAndInvert.java b/src/main/java/stirling/software/SPDF/model/api/misc/ReplaceAndInvert.java new file mode 100644 index 000000000..c3acdc560 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/model/api/misc/ReplaceAndInvert.java @@ -0,0 +1,7 @@ +package stirling.software.SPDF.model.api.misc; + +public enum ReplaceAndInvert { + HIGH_CONTRAST_COLOR, + CUSTOM_COLOR, + FULL_INVERSION, +} diff --git a/src/main/java/stirling/software/SPDF/model/api/misc/ReplaceAndInvertColorRequest.java b/src/main/java/stirling/software/SPDF/model/api/misc/ReplaceAndInvertColorRequest.java new file mode 100644 index 000000000..1d96d35b2 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/model/api/misc/ReplaceAndInvertColorRequest.java @@ -0,0 +1,40 @@ +package stirling.software.SPDF.model.api.misc; + +import io.swagger.v3.oas.annotations.media.Schema; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import stirling.software.SPDF.model.api.PDFFile; + +@Data +@EqualsAndHashCode(callSuper = true) +public class ReplaceAndInvertColorRequest extends PDFFile { + + @Schema( + description = "Replace and Invert color options of a pdf.", + allowableValues = {"HIGH_CONTRAST_COLOR", "CUSTOM_COLOR", "FULL_INVERSION"}) + private ReplaceAndInvert replaceAndInvertOption; + + @Schema( + description = + "If HIGH_CONTRAST_COLOR option selected, then pick the default color option for text and background.", + allowableValues = { + "WHITE_TEXT_ON_BLACK", + "BLACK_TEXT_ON_WHITE", + "YELLOW_TEXT_ON_BLACK", + "GREEN_TEXT_ON_BLACK" + }) + private HighContrastColorCombination highContrastColorCombination; + + @Schema( + description = + "If CUSTOM_COLOR option selected, then pick the custom color for background. " + + "Expected color value should be 24bit decimal value of a color") + private String backGroundColor; + + @Schema( + description = + "If CUSTOM_COLOR option selected, then pick the custom color for text. " + + "Expected color value should be 24bit decimal value of a color") + private String textColor; +} diff --git a/src/main/java/stirling/software/SPDF/service/misc/ReplaceAndInvertColorService.java b/src/main/java/stirling/software/SPDF/service/misc/ReplaceAndInvertColorService.java new file mode 100644 index 000000000..29df742a3 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/service/misc/ReplaceAndInvertColorService.java @@ -0,0 +1,42 @@ +package stirling.software.SPDF.service.misc; + +import java.io.IOException; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.InputStreamResource; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import stirling.software.SPDF.Factories.ReplaceAndInvertColorFactory; +import stirling.software.SPDF.model.api.misc.HighContrastColorCombination; +import stirling.software.SPDF.model.api.misc.ReplaceAndInvert; +import stirling.software.SPDF.utils.misc.ReplaceAndInvertColorStrategy; + +@Service +public class ReplaceAndInvertColorService { + private ReplaceAndInvertColorFactory replaceAndInvertColorFactory; + + @Autowired + public ReplaceAndInvertColorService(ReplaceAndInvertColorFactory replaceAndInvertColorFactory) { + this.replaceAndInvertColorFactory = replaceAndInvertColorFactory; + } + + public InputStreamResource replaceAndInvertColor( + MultipartFile file, + ReplaceAndInvert replaceAndInvertOption, + HighContrastColorCombination highContrastColorCombination, + String backGroundColor, + String textColor) + throws IOException { + + ReplaceAndInvertColorStrategy replaceColorStrategy = + replaceAndInvertColorFactory.replaceAndInvert( + file, + replaceAndInvertOption, + highContrastColorCombination, + backGroundColor, + textColor); + + return replaceColorStrategy.replace(); + } +} diff --git a/src/main/java/stirling/software/SPDF/utils/misc/CustomColorReplaceStrategy.java b/src/main/java/stirling/software/SPDF/utils/misc/CustomColorReplaceStrategy.java new file mode 100644 index 000000000..3c5753f02 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/utils/misc/CustomColorReplaceStrategy.java @@ -0,0 +1,163 @@ +package stirling.software.SPDF.utils.misc; + +import java.awt.*; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.Set; + +import org.apache.pdfbox.Loader; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.pdmodel.PDPageContentStream; +import org.apache.pdfbox.pdmodel.PDPageTree; +import org.apache.pdfbox.pdmodel.font.*; +import org.apache.pdfbox.text.TextPosition; +import org.springframework.core.io.InputStreamResource; +import org.springframework.web.multipart.MultipartFile; + +import stirling.software.SPDF.model.api.misc.HighContrastColorCombination; +import stirling.software.SPDF.model.api.misc.ReplaceAndInvert; + +public class CustomColorReplaceStrategy extends ReplaceAndInvertColorStrategy { + + private String textColor; + private String backgroundColor; + private HighContrastColorCombination highContrastColorCombination; + + public CustomColorReplaceStrategy( + MultipartFile file, + ReplaceAndInvert replaceAndInvert, + String textColor, + String backgroundColor, + HighContrastColorCombination highContrastColorCombination) { + super(file, replaceAndInvert); + this.textColor = textColor; + this.backgroundColor = backgroundColor; + this.highContrastColorCombination = highContrastColorCombination; + } + + @Override + public InputStreamResource replace() throws IOException { + + // If ReplaceAndInvert is HighContrastColor option, then get the colors of text and + // background from static + if (replaceAndInvert == ReplaceAndInvert.HIGH_CONTRAST_COLOR) { + String[] colors = + HighContrastColorReplaceDecider.getColors( + replaceAndInvert, highContrastColorCombination); + this.textColor = colors[0]; + this.backgroundColor = colors[1]; + } + + // Create a temporary file, with the original filename from the multipart file + File file = File.createTempFile("temp", getFileInput().getOriginalFilename()); + + // Transfer the content of the multipart file to the file + getFileInput().transferTo(file); + + try (PDDocument document = Loader.loadPDF(file)) { + + PDPageTree pages = document.getPages(); + + for (PDPage page : pages) { + + PdfTextStripperCustom pdfTextStripperCustom = new PdfTextStripperCustom(); + // Get text positions + List> charactersByArticle = + pdfTextStripperCustom.processPageCustom(page); + + // Begin a new content stream + PDPageContentStream contentStream = + new PDPageContentStream( + document, page, PDPageContentStream.AppendMode.APPEND, true, true); + + // Set the new text color + contentStream.setNonStrokingColor(Color.decode(this.textColor)); + + // Draw the text with the new color + for (List textPositions : charactersByArticle) { + for (TextPosition text : textPositions) { + // Move to the text position + contentStream.beginText(); + contentStream.newLineAtOffset( + text.getX(), page.getMediaBox().getHeight() - text.getY()); + PDFont font = null; + String unicodeText = text.getUnicode(); + try { + font = PDFontFactory.createFont(text.getFont().getCOSObject()); + } catch (IOException io) { + System.out.println("Primary font not found, using fallback font."); + font = new PDType1Font(Standard14Fonts.FontName.HELVETICA); + } + // if a character is not supported by font, then look for supported font + try { + byte[] bytes = font.encode(unicodeText); + } catch (IOException io) { + System.out.println("text could not be encoded "); + font = checkSupportedFontForCharacter(unicodeText); + } catch (IllegalArgumentException ie) { + System.out.println("text not supported by font "); + font = checkSupportedFontForCharacter(unicodeText); + } finally { + // if any other font is not supported, then replace default character * + if (font == null) { + font = new PDType1Font(Standard14Fonts.FontName.HELVETICA); + unicodeText = "*"; + } + } + contentStream.setFont(font, text.getFontSize()); + contentStream.showText(unicodeText); + contentStream.endText(); + } + } + // Close the content stream + contentStream.close(); + // Use a content stream to overlay the background color + try (PDPageContentStream contentStreamBg = + new PDPageContentStream( + document, + page, + PDPageContentStream.AppendMode.PREPEND, + true, + true)) { + // Set background color (e.g., light yellow) + contentStreamBg.setNonStrokingColor(Color.decode(this.backgroundColor)); + contentStreamBg.addRect( + 0, 0, page.getMediaBox().getWidth(), page.getMediaBox().getHeight()); + contentStreamBg.fill(); + } + } + // Save the modified PDF to a ByteArrayOutputStream + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + document.save(byteArrayOutputStream); + document.close(); + + // Prepare the modified PDF for download + ByteArrayInputStream inputStream = + new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); + InputStreamResource resource = new InputStreamResource(inputStream); + return resource; + } + } + + private PDFont checkSupportedFontForCharacter(String unicodeText) { + + Set fonts = Standard14Fonts.getNames(); + for (String font : fonts) { + Standard14Fonts.FontName fontName = Standard14Fonts.getMappedFontName(font); + PDFont currentFont = new PDType1Font(fontName); + try { + byte[] bytes = currentFont.encode(unicodeText); + return currentFont; + } catch (IOException io) { + System.out.println("text could not be encoded "); + } catch (IllegalArgumentException ie) { + System.out.println("text not supported by font "); + } + } + return null; + } +} diff --git a/src/main/java/stirling/software/SPDF/utils/misc/HighContrastColorReplaceDecider.java b/src/main/java/stirling/software/SPDF/utils/misc/HighContrastColorReplaceDecider.java new file mode 100644 index 000000000..70d226b55 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/utils/misc/HighContrastColorReplaceDecider.java @@ -0,0 +1,30 @@ +package stirling.software.SPDF.utils.misc; + +import stirling.software.SPDF.model.api.misc.HighContrastColorCombination; +import stirling.software.SPDF.model.api.misc.ReplaceAndInvert; + +public class HighContrastColorReplaceDecider { + + // To decide the text and background colors for High contrast color option for replace-invert + // color feature + public static String[] getColors( + ReplaceAndInvert replaceAndInvert, + HighContrastColorCombination highContrastColorCombination) { + + if (highContrastColorCombination == HighContrastColorCombination.BLACK_TEXT_ON_WHITE) { + return new String[] {"0", "16777215"}; + } else if (highContrastColorCombination + == HighContrastColorCombination.GREEN_TEXT_ON_BLACK) { + return new String[] {"65280", "0"}; + } else if (highContrastColorCombination + == HighContrastColorCombination.WHITE_TEXT_ON_BLACK) { + return new String[] {"16777215", "0"}; + } else if (highContrastColorCombination + == HighContrastColorCombination.YELLOW_TEXT_ON_BLACK) { + + return new String[] {"16776960", "0"}; + } + + return null; + } +} diff --git a/src/main/java/stirling/software/SPDF/utils/misc/InvertFullColorStrategy.java b/src/main/java/stirling/software/SPDF/utils/misc/InvertFullColorStrategy.java new file mode 100644 index 000000000..12cd5204f --- /dev/null +++ b/src/main/java/stirling/software/SPDF/utils/misc/InvertFullColorStrategy.java @@ -0,0 +1,104 @@ +package stirling.software.SPDF.utils.misc; + +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; + +import javax.imageio.ImageIO; + +import org.apache.pdfbox.Loader; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.pdmodel.PDPageContentStream; +import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; +import org.apache.pdfbox.rendering.PDFRenderer; +import org.springframework.core.io.InputStreamResource; +import org.springframework.web.multipart.MultipartFile; + +import stirling.software.SPDF.model.api.misc.ReplaceAndInvert; + +public class InvertFullColorStrategy extends ReplaceAndInvertColorStrategy { + + public InvertFullColorStrategy(MultipartFile file, ReplaceAndInvert replaceAndInvert) { + super(file, replaceAndInvert); + } + + @Override + public InputStreamResource replace() throws IOException { + + // Create a temporary file, with the original filename from the multipart file + File file = File.createTempFile("temp", getFileInput().getOriginalFilename()); + + // Transfer the content of the multipart file to the file + getFileInput().transferTo(file); + + // Load the uploaded PDF + PDDocument document = Loader.loadPDF(file); + + // Render each page and invert colors + PDFRenderer pdfRenderer = new PDFRenderer(document); + for (int page = 0; page < document.getNumberOfPages(); page++) { + BufferedImage image = + pdfRenderer.renderImageWithDPI(page, 300); // Render page at 300 DPI + + // Invert the colors + invertImageColors(image); + + // Create a new PDPage from the inverted image + PDPage pdPage = document.getPage(page); + PDImageXObject pdImage = + PDImageXObject.createFromFileByContent( + convertToBufferedImageTpFile(image), document); + + PDPageContentStream contentStream = + new PDPageContentStream( + document, pdPage, PDPageContentStream.AppendMode.OVERWRITE, true); + contentStream.drawImage( + pdImage, + 0, + 0, + pdPage.getMediaBox().getWidth(), + pdPage.getMediaBox().getHeight()); + contentStream.close(); + } + + // Save the modified PDF to a ByteArrayOutputStream + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + document.save(byteArrayOutputStream); + document.close(); + + // Prepare the modified PDF for download + ByteArrayInputStream inputStream = + new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); + InputStreamResource resource = new InputStreamResource(inputStream); + return resource; + } + + // Method to invert image colors + private void invertImageColors(BufferedImage image) { + int width = image.getWidth(); + int height = image.getHeight(); + for (int x = 0; x < width; x++) { + for (int y = 0; y < height; y++) { + int rgba = image.getRGB(x, y); + Color color = new Color(rgba, true); + Color invertedColor = + new Color( + 255 - color.getRed(), + 255 - color.getGreen(), + 255 - color.getBlue()); + image.setRGB(x, y, invertedColor.getRGB()); + } + } + } + + // Helper method to convert BufferedImage to InputStream + private File convertToBufferedImageTpFile(BufferedImage image) throws IOException { + File file = new File("image.png"); + ImageIO.write(image, "png", file); + return file; + } +} diff --git a/src/main/java/stirling/software/SPDF/utils/misc/PdfTextStripperCustom.java b/src/main/java/stirling/software/SPDF/utils/misc/PdfTextStripperCustom.java new file mode 100644 index 000000000..291acf5e3 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/utils/misc/PdfTextStripperCustom.java @@ -0,0 +1,36 @@ +package stirling.software.SPDF.utils.misc; + +import java.awt.geom.Rectangle2D; +import java.io.IOException; +import java.util.List; + +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.text.PDFTextStripperByArea; +import org.apache.pdfbox.text.TextPosition; + +public class PdfTextStripperCustom extends PDFTextStripperByArea { + + /** + * Constructor. + * + * @throws IOException If there is an error loading properties. + */ + public PdfTextStripperCustom() throws IOException {} + + // To process the page text using stripper and returns the TextPosition and its values + public List> processPageCustom(PDPage page) throws IOException { + + addRegion( + "wholePage", + new Rectangle2D.Float( + page.getMediaBox().getLowerLeftX(), + page.getMediaBox().getLowerLeftY(), + page.getMediaBox().getWidth(), + page.getMediaBox().getHeight())); + extractRegions(page); + + List> textPositions = getCharactersByArticle(); + + return textPositions; + } +} diff --git a/src/main/java/stirling/software/SPDF/utils/misc/ReplaceAndInvertColorStrategy.java b/src/main/java/stirling/software/SPDF/utils/misc/ReplaceAndInvertColorStrategy.java new file mode 100644 index 000000000..875907314 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/utils/misc/ReplaceAndInvertColorStrategy.java @@ -0,0 +1,24 @@ +package stirling.software.SPDF.utils.misc; + +import java.io.IOException; + +import org.springframework.core.io.InputStreamResource; +import org.springframework.web.multipart.MultipartFile; + +import lombok.Data; +import stirling.software.SPDF.model.api.PDFFile; +import stirling.software.SPDF.model.api.misc.ReplaceAndInvert; + +@Data +// @EqualsAndHashCode(callSuper = true) +public abstract class ReplaceAndInvertColorStrategy extends PDFFile { + + protected ReplaceAndInvert replaceAndInvert; + + public ReplaceAndInvertColorStrategy(MultipartFile file, ReplaceAndInvert replaceAndInvert) { + setFileInput(file); + setReplaceAndInvert(replaceAndInvert); + } + + public abstract InputStreamResource replace() throws IOException; +} diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index ecfec8207..761a85681 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -480,6 +480,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties index 027530b22..17a08ad75 100644 --- a/src/main/resources/messages_en_US.properties +++ b/src/main/resources/messages_en_US.properties @@ -480,6 +480,30 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + + + + + ########################### # # diff --git a/src/main/resources/templates/fragments/navbar.html b/src/main/resources/templates/fragments/navbar.html index b852569d7..fe0c8842d 100644 --- a/src/main/resources/templates/fragments/navbar.html +++ b/src/main/resources/templates/fragments/navbar.html @@ -198,6 +198,9 @@
+
+
diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html index f8f85440c..7f448f7a6 100644 --- a/src/main/resources/templates/home.html +++ b/src/main/resources/templates/home.html @@ -248,11 +248,15 @@
+
+
+
+
+
-
diff --git a/src/main/resources/templates/misc/replace-color.html b/src/main/resources/templates/misc/replace-color.html new file mode 100644 index 000000000..4defcff72 --- /dev/null +++ b/src/main/resources/templates/misc/replace-color.html @@ -0,0 +1,89 @@ + + + + + + + + + +
+
+ +

+
+
+
+
+ zoom_in_map + +
+
+
+
+
+
+

+ +
+
+ + + + + +
+
+
+
+
+ +
+ + + + \ No newline at end of file From 48aae48f0ec77262830cff6ce91e48a211fdc478 Mon Sep 17 00:00:00 2001 From: Charan19001A0231 Date: Sat, 5 Oct 2024 02:44:15 +0530 Subject: [PATCH 16/18] Added page counts to merge pdf tool (#1986) * Added page counts to merge pdf tool * used page and pages in en_GB and hindi properties file --- src/main/resources/messages_en_GB.properties | 2 + src/main/resources/messages_hi_IN.properties | 2 + src/main/resources/static/js/merge.js | 14 ++- src/main/resources/templates/merge-pdfs.html | 95 ++++++++++++-------- 4 files changed, 73 insertions(+), 40 deletions(-) diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index 761a85681..dbebccc01 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -76,6 +76,8 @@ donate=Donate color=Color sponsor=Sponsor info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions diff --git a/src/main/resources/messages_hi_IN.properties b/src/main/resources/messages_hi_IN.properties index 1cda37128..21d4669f6 100644 --- a/src/main/resources/messages_hi_IN.properties +++ b/src/main/resources/messages_hi_IN.properties @@ -76,6 +76,8 @@ donate=Donate color=Color sponsor=Sponsor info=Info +page=पृष्ठ +pages=पृष्ठों legal.privacy=Privacy Policy legal.terms=Terms and Conditions diff --git a/src/main/resources/static/js/merge.js b/src/main/resources/static/js/merge.js index 555757277..41d1fe1eb 100644 --- a/src/main/resources/static/js/merge.js +++ b/src/main/resources/static/js/merge.js @@ -11,7 +11,7 @@ document.getElementById("fileInput-input").addEventListener("change", function ( /** * @param {FileList} files */ -function displayFiles(files) { +async function displayFiles(files) { const list = document.getElementById("selectedFiles"); while (list.firstChild) { @@ -19,11 +19,16 @@ function displayFiles(files) { } for (let i = 0; i < files.length; i++) { + const pageCount = await getPDFPageCount(files[i]); + const pageLabel = pageCount === 1 ? pageTranslation : pagesTranslation; const item = document.createElement("li"); item.className = "list-group-item"; item.innerHTML = `
${files[i].name}
+
+ ${pageCount} ${pageLabel} +
@@ -37,6 +42,13 @@ function displayFiles(files) { attachMoveButtons(); } +async function getPDFPageCount(file) { + const blobUrl = URL.createObjectURL(file); + const pdf = await pdfjsLib.getDocument(blobUrl).promise; + URL.revokeObjectURL(blobUrl); + return pdf.numPages; +} + function attachMoveButtons() { var moveUpButtons = document.querySelectorAll(".move-up"); for (var i = 0; i < moveUpButtons.length; i++) { diff --git a/src/main/resources/templates/merge-pdfs.html b/src/main/resources/templates/merge-pdfs.html index 8e1e0fbce..8a874788c 100644 --- a/src/main/resources/templates/merge-pdfs.html +++ b/src/main/resources/templates/merge-pdfs.html @@ -1,46 +1,63 @@ - - - - - + - -
-
- -

-
-
-
-
- add_to_photos - -
-
-
- -
-
-
- - -
-
-
    -
    -
    - - - -
    -
    - + + + + + + +
    +
    + +

    +
    +
    +
    +
    + add_to_photos +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +
      +
      +
      + + + +
      +
      + + + + + +
      -
      - - + +
      + + + \ No newline at end of file From e325943f160184457d7603f49446d2499532af9b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 22:14:58 +0100 Subject: [PATCH 17/18] Update translation files (#1987) Signed-off-by: GitHub Action Co-authored-by: GitHub Action --- src/main/resources/messages_ar_AR.properties | 22 +++++++++++++++++++ src/main/resources/messages_bg_BG.properties | 22 +++++++++++++++++++ src/main/resources/messages_ca_CA.properties | 22 +++++++++++++++++++ src/main/resources/messages_cs_CZ.properties | 22 +++++++++++++++++++ src/main/resources/messages_da_DK.properties | 22 +++++++++++++++++++ src/main/resources/messages_de_DE.properties | 22 +++++++++++++++++++ src/main/resources/messages_el_GR.properties | 22 +++++++++++++++++++ src/main/resources/messages_en_US.properties | 6 ++--- src/main/resources/messages_es_ES.properties | 22 +++++++++++++++++++ src/main/resources/messages_eu_ES.properties | 22 +++++++++++++++++++ src/main/resources/messages_fr_FR.properties | 22 +++++++++++++++++++ src/main/resources/messages_ga_IE.properties | 22 +++++++++++++++++++ src/main/resources/messages_hi_IN.properties | 20 +++++++++++++++++ src/main/resources/messages_hr_HR.properties | 22 +++++++++++++++++++ src/main/resources/messages_hu_HU.properties | 22 +++++++++++++++++++ src/main/resources/messages_id_ID.properties | 22 +++++++++++++++++++ src/main/resources/messages_it_IT.properties | 22 +++++++++++++++++++ src/main/resources/messages_ja_JP.properties | 22 +++++++++++++++++++ src/main/resources/messages_ko_KR.properties | 22 +++++++++++++++++++ src/main/resources/messages_nl_NL.properties | 22 +++++++++++++++++++ src/main/resources/messages_no_NB.properties | 22 +++++++++++++++++++ src/main/resources/messages_pl_PL.properties | 22 +++++++++++++++++++ src/main/resources/messages_pt_BR.properties | 22 +++++++++++++++++++ src/main/resources/messages_pt_PT.properties | 22 +++++++++++++++++++ src/main/resources/messages_ro_RO.properties | 22 +++++++++++++++++++ src/main/resources/messages_ru_RU.properties | 22 +++++++++++++++++++ src/main/resources/messages_sk_SK.properties | 22 +++++++++++++++++++ .../resources/messages_sr_LATN_RS.properties | 22 +++++++++++++++++++ src/main/resources/messages_sv_SE.properties | 22 +++++++++++++++++++ src/main/resources/messages_th_TH.properties | 22 +++++++++++++++++++ src/main/resources/messages_tr_TR.properties | 22 +++++++++++++++++++ src/main/resources/messages_uk_UA.properties | 22 +++++++++++++++++++ src/main/resources/messages_vi_VN.properties | 22 +++++++++++++++++++ src/main/resources/messages_zh_CN.properties | 22 +++++++++++++++++++ src/main/resources/messages_zh_TW.properties | 22 +++++++++++++++++++ 35 files changed, 748 insertions(+), 4 deletions(-) diff --git a/src/main/resources/messages_ar_AR.properties b/src/main/resources/messages_ar_AR.properties index 284c43534..19fe99445 100644 --- a/src/main/resources/messages_ar_AR.properties +++ b/src/main/resources/messages_ar_AR.properties @@ -76,6 +76,8 @@ donate=تبرع color=لون sponsor=راعٍ info=معلومات +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=إزالة الصورة home.removeImagePdf.desc=إزالة الصورة من PDF لتقليل حجم الملف removeImagePdf.tags=إزالة الصورة,عمليات الصفحة,الخلفية,جانب الخادم +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_bg_BG.properties b/src/main/resources/messages_bg_BG.properties index e6df3a6c8..2e224ba74 100644 --- a/src/main/resources/messages_bg_BG.properties +++ b/src/main/resources/messages_bg_BG.properties @@ -76,6 +76,8 @@ donate=Направете дарение color=Цвят sponsor=Спонсор info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_ca_CA.properties b/src/main/resources/messages_ca_CA.properties index 43647bd83..48ffcb693 100644 --- a/src/main/resources/messages_ca_CA.properties +++ b/src/main/resources/messages_ca_CA.properties @@ -76,6 +76,8 @@ donate=Donate color=Color sponsor=Sponsor info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_cs_CZ.properties b/src/main/resources/messages_cs_CZ.properties index dba3c988d..4f4ec7821 100644 --- a/src/main/resources/messages_cs_CZ.properties +++ b/src/main/resources/messages_cs_CZ.properties @@ -76,6 +76,8 @@ donate=Přispějte color=Barva sponsor=Sponzor info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_da_DK.properties b/src/main/resources/messages_da_DK.properties index 4f914d7ed..7e2c4538d 100644 --- a/src/main/resources/messages_da_DK.properties +++ b/src/main/resources/messages_da_DK.properties @@ -76,6 +76,8 @@ donate=Donér color=Farve sponsor=Sponsor info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Fjern billede home.removeImagePdf.desc=Fjern billede fra PDF for at reducere filstørrelse removeImagePdf.tags=Fjern Billede,Sideoperationer,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_de_DE.properties b/src/main/resources/messages_de_DE.properties index 754745a29..e156dbf2a 100644 --- a/src/main/resources/messages_de_DE.properties +++ b/src/main/resources/messages_de_DE.properties @@ -76,6 +76,8 @@ donate=Spenden color=Farbe sponsor=Sponsor info=Informationen +page=Page +pages=Pages legal.privacy=Datenschutz legal.terms=AGB @@ -480,6 +482,26 @@ home.removeImagePdf.title=Bild entfernen home.removeImagePdf.desc=Bild aus PDF entfernen, um die Dateigröße zu verringern removeImagePdf.tags=bild entfernen,seitenoperationen,back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_el_GR.properties b/src/main/resources/messages_el_GR.properties index c48b8564d..b19770e0e 100644 --- a/src/main/resources/messages_el_GR.properties +++ b/src/main/resources/messages_el_GR.properties @@ -76,6 +76,8 @@ donate=Δωρισε color=Χρώμα sponsor=Yποστηρικτής info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties index 17a08ad75..6ea5dd959 100644 --- a/src/main/resources/messages_en_US.properties +++ b/src/main/resources/messages_en_US.properties @@ -76,6 +76,8 @@ donate=Donate color=Color sponsor=Sponsor info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -501,10 +503,6 @@ replace-color.submit=Replace - - - - ########################### # # # WEB PAGES # diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties index 7c0e8b0c3..5274fc1d2 100644 --- a/src/main/resources/messages_es_ES.properties +++ b/src/main/resources/messages_es_ES.properties @@ -76,6 +76,8 @@ donate=Donar color=Color sponsor=Patrocinador info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ 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 +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_eu_ES.properties b/src/main/resources/messages_eu_ES.properties index c8e3b8f3a..792955c32 100644 --- a/src/main/resources/messages_eu_ES.properties +++ b/src/main/resources/messages_eu_ES.properties @@ -76,6 +76,8 @@ donate=Donate color=Color sponsor=Sponsor info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_fr_FR.properties b/src/main/resources/messages_fr_FR.properties index 3e78e7a3f..ee00bb486 100644 --- a/src/main/resources/messages_fr_FR.properties +++ b/src/main/resources/messages_fr_FR.properties @@ -76,6 +76,8 @@ donate=Faire un don color=Couleur sponsor=Sponsor info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_ga_IE.properties b/src/main/resources/messages_ga_IE.properties index 07d728165..2360538a9 100644 --- a/src/main/resources/messages_ga_IE.properties +++ b/src/main/resources/messages_ga_IE.properties @@ -76,6 +76,8 @@ donate=Síntiúis color=Dath sponsor=Urraitheoir info=Eolas +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_hi_IN.properties b/src/main/resources/messages_hi_IN.properties index 21d4669f6..d93dc2dde 100644 --- a/src/main/resources/messages_hi_IN.properties +++ b/src/main/resources/messages_hi_IN.properties @@ -482,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_hr_HR.properties b/src/main/resources/messages_hr_HR.properties index fd69ac86f..e8f93b200 100644 --- a/src/main/resources/messages_hr_HR.properties +++ b/src/main/resources/messages_hr_HR.properties @@ -76,6 +76,8 @@ donate=Doniraj color=Boja sponsor=Sponzor info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_hu_HU.properties b/src/main/resources/messages_hu_HU.properties index c2c53163d..e22cee08c 100644 --- a/src/main/resources/messages_hu_HU.properties +++ b/src/main/resources/messages_hu_HU.properties @@ -76,6 +76,8 @@ donate=Donate color=Color sponsor=Sponsor info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_id_ID.properties b/src/main/resources/messages_id_ID.properties index fcf8e5e82..cbc0e61a1 100644 --- a/src/main/resources/messages_id_ID.properties +++ b/src/main/resources/messages_id_ID.properties @@ -76,6 +76,8 @@ donate=Donate color=Color sponsor=Sponsor info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties index 6355ea65d..33cfc8366 100644 --- a/src/main/resources/messages_it_IT.properties +++ b/src/main/resources/messages_it_IT.properties @@ -76,6 +76,8 @@ donate=Donazione color=Colore sponsor=Sponsor info=Info +page=Page +pages=Pages legal.privacy=Informativa sulla privacy legal.terms=Termini e Condizioni @@ -480,6 +482,26 @@ home.removeImagePdf.title=Rimuovi immagine home.removeImagePdf.desc=Rimuovi le immagini dal PDF per ridurre la dimensione del file removeImagePdf.tags=Rimuovi immagine,operazioni sulla pagina,back-end,lato server +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_ja_JP.properties b/src/main/resources/messages_ja_JP.properties index afb8ff548..e5286295d 100644 --- a/src/main/resources/messages_ja_JP.properties +++ b/src/main/resources/messages_ja_JP.properties @@ -76,6 +76,8 @@ donate=寄付する color=色 sponsor=スポンサー info=Info +page=Page +pages=Pages legal.privacy=プライバシーポリシー legal.terms=利用規約 @@ -480,6 +482,26 @@ home.removeImagePdf.title=画像の削除 home.removeImagePdf.desc=PDFから画像を削除してファイルサイズを小さくします removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_ko_KR.properties b/src/main/resources/messages_ko_KR.properties index 02d5c3da2..43d8f84ec 100644 --- a/src/main/resources/messages_ko_KR.properties +++ b/src/main/resources/messages_ko_KR.properties @@ -76,6 +76,8 @@ donate=기부하기 color=색상 sponsor=스폰서 info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_nl_NL.properties b/src/main/resources/messages_nl_NL.properties index 391c7e696..4d1469d8b 100644 --- a/src/main/resources/messages_nl_NL.properties +++ b/src/main/resources/messages_nl_NL.properties @@ -76,6 +76,8 @@ donate=Doneer color=Kleur sponsor=Sponsor info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_no_NB.properties b/src/main/resources/messages_no_NB.properties index 1592c3e13..abd0738a3 100644 --- a/src/main/resources/messages_no_NB.properties +++ b/src/main/resources/messages_no_NB.properties @@ -76,6 +76,8 @@ donate=Doner color=Farge sponsor=Sponsor info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_pl_PL.properties b/src/main/resources/messages_pl_PL.properties index 76a98ad36..c15170cbd 100755 --- a/src/main/resources/messages_pl_PL.properties +++ b/src/main/resources/messages_pl_PL.properties @@ -76,6 +76,8 @@ donate=Podaruj color=kolor sponsor=sponsor info=informacje +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_pt_BR.properties b/src/main/resources/messages_pt_BR.properties index 61a6d7fa0..b1fc9dee2 100644 --- a/src/main/resources/messages_pt_BR.properties +++ b/src/main/resources/messages_pt_BR.properties @@ -76,6 +76,8 @@ donate=Doar color=Cor sponsor=Patrocine info=Informações +page=Page +pages=Pages legal.privacy=Política de Privacidade legal.terms=Termos e Condições @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remover imagem home.removeImagePdf.desc=Remova a imagem do PDF para reduzir o tamanho do arquivo removeImagePdf.tags=Remover imagem,operações de página,back-end,lado do servidor +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_pt_PT.properties b/src/main/resources/messages_pt_PT.properties index a5f9f48b2..7f6e29568 100644 --- a/src/main/resources/messages_pt_PT.properties +++ b/src/main/resources/messages_pt_PT.properties @@ -76,6 +76,8 @@ donate=Donate color=Color sponsor=Sponsor info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_ro_RO.properties b/src/main/resources/messages_ro_RO.properties index e035ee7fa..f065256d6 100644 --- a/src/main/resources/messages_ro_RO.properties +++ b/src/main/resources/messages_ro_RO.properties @@ -76,6 +76,8 @@ donate=Donează color=Culoare sponsor=Sponsor info=Informații +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Elimină imagine home.removeImagePdf.desc=Elimină imaginea din PDF pentru a reduce dimensiunea fișierului removeImagePdf.tags=Elimină Imagine,Operații pagină,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_ru_RU.properties b/src/main/resources/messages_ru_RU.properties index a4001a498..b5db3c478 100644 --- a/src/main/resources/messages_ru_RU.properties +++ b/src/main/resources/messages_ru_RU.properties @@ -76,6 +76,8 @@ donate=Пожертвовать color=Цвет sponsor=Спонсор info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_sk_SK.properties b/src/main/resources/messages_sk_SK.properties index 1b9bb358e..d64aaeaf8 100644 --- a/src/main/resources/messages_sk_SK.properties +++ b/src/main/resources/messages_sk_SK.properties @@ -76,6 +76,8 @@ donate=Darovať color=Farba sponsor=Sponzorovať info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_sr_LATN_RS.properties b/src/main/resources/messages_sr_LATN_RS.properties index 900edc079..53bb42300 100644 --- a/src/main/resources/messages_sr_LATN_RS.properties +++ b/src/main/resources/messages_sr_LATN_RS.properties @@ -76,6 +76,8 @@ donate=Donate color=Color sponsor=Sponsor info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_sv_SE.properties b/src/main/resources/messages_sv_SE.properties index d13164942..a85d294ce 100644 --- a/src/main/resources/messages_sv_SE.properties +++ b/src/main/resources/messages_sv_SE.properties @@ -76,6 +76,8 @@ donate=Donera color=Färg sponsor=Sponsor info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Ta bort bild home.removeImagePdf.desc=Ta bort bild från PDF för att minska filstorlek removeImagePdf.tags=Ta bort bild,Sidoperationer,Backend,serversida +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_th_TH.properties b/src/main/resources/messages_th_TH.properties index bcccaad86..69f93721a 100644 --- a/src/main/resources/messages_th_TH.properties +++ b/src/main/resources/messages_th_TH.properties @@ -76,6 +76,8 @@ donate=บริจาค color=สี sponsor=ผู้สนับสนุน info=ข้อมูล +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_tr_TR.properties b/src/main/resources/messages_tr_TR.properties index 718271479..ad3a5339a 100644 --- a/src/main/resources/messages_tr_TR.properties +++ b/src/main/resources/messages_tr_TR.properties @@ -76,6 +76,8 @@ donate=Bağış Yapın color=Renk sponsor=Bağış info=Bilgi +page=Page +pages=Pages legal.privacy=Gizlilik Politikası legal.terms=Şartlar ve koşullar @@ -480,6 +482,26 @@ home.removeImagePdf.title=Resmi kaldır home.removeImagePdf.desc=Dosya boyutunu küçültmek için PDF'den resmi kaldırın removeImagePdf.tags=Resmi Kaldır,Sayfa İşlemleri,Arka uç,sunucu tarafı +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_uk_UA.properties b/src/main/resources/messages_uk_UA.properties index 8a06a720f..ed35d4e66 100644 --- a/src/main/resources/messages_uk_UA.properties +++ b/src/main/resources/messages_uk_UA.properties @@ -76,6 +76,8 @@ donate=Задонатити color=Колір sponsor=Спонсор info=Інформація +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_vi_VN.properties b/src/main/resources/messages_vi_VN.properties index 245129e98..c12a40d53 100644 --- a/src/main/resources/messages_vi_VN.properties +++ b/src/main/resources/messages_vi_VN.properties @@ -76,6 +76,8 @@ donate=Ủng hộ color=Màu sắc sponsor=Nhà tài trợ info=Thông tin +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_zh_CN.properties b/src/main/resources/messages_zh_CN.properties index 80e9e0cf5..096c6a412 100644 --- a/src/main/resources/messages_zh_CN.properties +++ b/src/main/resources/messages_zh_CN.properties @@ -76,6 +76,8 @@ donate=捐款 color=颜色 sponsor=赞助 info=信息 +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=删除图像 home.removeImagePdf.desc=删除图像减少PDF大小 removeImagePdf.tags=删除图像, 页面操作, 后端, 服务端 +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # diff --git a/src/main/resources/messages_zh_TW.properties b/src/main/resources/messages_zh_TW.properties index 221e46af4..9e912b554 100644 --- a/src/main/resources/messages_zh_TW.properties +++ b/src/main/resources/messages_zh_TW.properties @@ -76,6 +76,8 @@ donate=捐贈 color=顏色 sponsor=贊助 info=Info +page=Page +pages=Pages legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -480,6 +482,26 @@ home.removeImagePdf.title=Remove image home.removeImagePdf.desc=Remove image from PDF to reduce file size removeImagePdf.tags=Remove Image,Page operations,Back end,server side +#replace-invert-color +replace-color.title=Replace-Invert-Color +replace-color.header=Replace-Invert Color PDF +home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Replace Color,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.2=Default(Default high contrast colors) +replace-color.selectText.3=Custom(Customized colors) +replace-color.selectText.4=Full-Invert(Invert all colors) +replace-color.selectText.5=High contrast color options +replace-color.selectText.6=white text on black background +replace-color.selectText.7=Black text on white background +replace-color.selectText.8=Yellow text on black background +replace-color.selectText.9=Green text on black background +replace-color.selectText.10=Choose text Color +replace-color.selectText.11=Choose background Color +replace-color.submit=Replace + + ########################### # # From 2a6b4ca87ffbdfe2cbe11991fa50713e1fcc6aaf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 22:15:30 +0100 Subject: [PATCH 18/18] :memo: Update README: Translation Progress Table (#1988) :memo: Sync README > Made via sync_files.yml Co-authored-by: github-actions[bot] --- README.md | 68 +++++++++++++++++++++++++++---------------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index e16232fa6..e092fcfa3 100644 --- a/README.md +++ b/README.md @@ -172,42 +172,42 @@ Stirling PDF currently supports 38! | Language | Progress | | ------------------------------------------- | -------------------------------------- | -| Arabic (العربية) (ar_AR) | ![99%](https://geps.dev/progress/99) | -| Basque (Euskara) (eu_ES) | ![60%](https://geps.dev/progress/60) | -| Bulgarian (Български) (bg_BG) | ![91%](https://geps.dev/progress/91) | -| Catalan (Català) (ca_CA) | ![47%](https://geps.dev/progress/47) | -| Croatian (Hrvatski) (hr_HR) | ![91%](https://geps.dev/progress/91) | -| Czech (Česky) (cs_CZ) | ![87%](https://geps.dev/progress/87) | -| Danish (Dansk) (da_DK) | ![96%](https://geps.dev/progress/96) | -| Dutch (Nederlands) (nl_NL) | ![93%](https://geps.dev/progress/93) | +| Arabic (العربية) (ar_AR) | ![97%](https://geps.dev/progress/97) | +| Basque (Euskara) (eu_ES) | ![58%](https://geps.dev/progress/58) | +| Bulgarian (Български) (bg_BG) | ![89%](https://geps.dev/progress/89) | +| Catalan (Català) (ca_CA) | ![46%](https://geps.dev/progress/46) | +| Croatian (Hrvatski) (hr_HR) | ![89%](https://geps.dev/progress/89) | +| Czech (Česky) (cs_CZ) | ![85%](https://geps.dev/progress/85) | +| Danish (Dansk) (da_DK) | ![94%](https://geps.dev/progress/94) | +| Dutch (Nederlands) (nl_NL) | ![91%](https://geps.dev/progress/91) | | English (English) (en_GB) | ![100%](https://geps.dev/progress/100) | | English (US) (en_US) | ![100%](https://geps.dev/progress/100) | -| French (Français) (fr_FR) | ![90%](https://geps.dev/progress/90) | -| German (Deutsch) (de_DE) | ![99%](https://geps.dev/progress/99) | -| Greek (Ελληνικά) (el_GR) | ![79%](https://geps.dev/progress/79) | -| Hindi (हिंदी) (hi_IN) | ![76%](https://geps.dev/progress/76) | -| Hungarian (Magyar) (hu_HU) | ![73%](https://geps.dev/progress/73) | -| Indonesia (Bahasa Indonesia) (id_ID) | ![74%](https://geps.dev/progress/74) | -| Irish (Gaeilge) (ga_IE) | ![95%](https://geps.dev/progress/95) | -| Italian (Italiano) (it_IT) | ![99%](https://geps.dev/progress/99) | -| Japanese (日本語) (ja_JP) | ![92%](https://geps.dev/progress/92) | -| Korean (한국어) (ko_KR) | ![81%](https://geps.dev/progress/81) | -| Norwegian (Norsk) (no_NB) | ![95%](https://geps.dev/progress/95) | -| Polish (Polski) (pl_PL) | ![89%](https://geps.dev/progress/89) | -| Portuguese (Português) (pt_PT) | ![76%](https://geps.dev/progress/76) | -| Portuguese Brazilian (Português) (pt_BR) | ![99%](https://geps.dev/progress/99) | -| Romanian (Română) (ro_RO) | ![97%](https://geps.dev/progress/97) | -| Russian (Русский) (ru_RU) | ![81%](https://geps.dev/progress/81) | -| Serbian Latin alphabet (Srpski) (sr_LATN_RS) | ![76%](https://geps.dev/progress/76) | -| Simplified Chinese (简体中文) (zh_CN) | ![98%](https://geps.dev/progress/98) | -| Slovakian (Slovensky) (sk_SK) | ![89%](https://geps.dev/progress/89) | -| Spanish (Español) (es_ES) | ![98%](https://geps.dev/progress/98) | -| Swedish (Svenska) (sv_SE) | ![97%](https://geps.dev/progress/97) | -| Thai (ไทย) (th_TH) | ![96%](https://geps.dev/progress/96) | -| Traditional Chinese (繁體中文) (zh_TW) | ![95%](https://geps.dev/progress/95) | -| Turkish (Türkçe) (tr_TR) | ![99%](https://geps.dev/progress/99) | -| Ukrainian (Українська) (uk_UA) | ![87%](https://geps.dev/progress/87) | -| Vietnamese (Tiếng Việt) (vi_VN) | ![96%](https://geps.dev/progress/96) | +| French (Français) (fr_FR) | ![88%](https://geps.dev/progress/88) | +| German (Deutsch) (de_DE) | ![97%](https://geps.dev/progress/97) | +| Greek (Ελληνικά) (el_GR) | ![78%](https://geps.dev/progress/78) | +| Hindi (हिंदी) (hi_IN) | ![74%](https://geps.dev/progress/74) | +| Hungarian (Magyar) (hu_HU) | ![71%](https://geps.dev/progress/71) | +| Indonesia (Bahasa Indonesia) (id_ID) | ![72%](https://geps.dev/progress/72) | +| Irish (Gaeilge) (ga_IE) | ![93%](https://geps.dev/progress/93) | +| Italian (Italiano) (it_IT) | ![97%](https://geps.dev/progress/97) | +| Japanese (日本語) (ja_JP) | ![90%](https://geps.dev/progress/90) | +| Korean (한국어) (ko_KR) | ![80%](https://geps.dev/progress/80) | +| Norwegian (Norsk) (no_NB) | ![93%](https://geps.dev/progress/93) | +| Polish (Polski) (pl_PL) | ![87%](https://geps.dev/progress/87) | +| Portuguese (Português) (pt_PT) | ![74%](https://geps.dev/progress/74) | +| Portuguese Brazilian (Português) (pt_BR) | ![97%](https://geps.dev/progress/97) | +| Romanian (Română) (ro_RO) | ![95%](https://geps.dev/progress/95) | +| Russian (Русский) (ru_RU) | ![79%](https://geps.dev/progress/79) | +| Serbian Latin alphabet (Srpski) (sr_LATN_RS) | ![74%](https://geps.dev/progress/74) | +| Simplified Chinese (简体中文) (zh_CN) | ![96%](https://geps.dev/progress/96) | +| Slovakian (Slovensky) (sk_SK) | ![87%](https://geps.dev/progress/87) | +| Spanish (Español) (es_ES) | ![96%](https://geps.dev/progress/96) | +| Swedish (Svenska) (sv_SE) | ![95%](https://geps.dev/progress/95) | +| Thai (ไทย) (th_TH) | ![94%](https://geps.dev/progress/94) | +| Traditional Chinese (繁體中文) (zh_TW) | ![93%](https://geps.dev/progress/93) | +| Turkish (Türkçe) (tr_TR) | ![97%](https://geps.dev/progress/97) | +| Ukrainian (Українська) (uk_UA) | ![85%](https://geps.dev/progress/85) | +| Vietnamese (Tiếng Việt) (vi_VN) | ![94%](https://geps.dev/progress/94) | ## Contributing (creating issues, translations, fixing bugs, etc.)