From 5923cb38d3ac6c0c74086b646ddc79f6fcad5a34 Mon Sep 17 00:00:00 2001
From: "stirlingbot[bot]" <195170888+stirlingbot[bot]@users.noreply.github.com>
Date: Wed, 16 Jul 2025 10:34:51 +0100
Subject: [PATCH 01/25] :globe_with_meridians: Sync Translations + Update
README Progress Table (#3960)
### Description of Changes
This Pull Request was automatically generated to synchronize updates to
translation files and documentation. Below are the details of the
changes made:
#### **1. Synchronization of Translation Files**
- Updated translation files (`messages_*.properties`) to reflect changes
in the reference file `messages_en_GB.properties`.
- Ensured consistency and synchronization across all supported language
files.
- Highlighted any missing or incomplete translations.
#### **2. Update README.md**
- Generated the translation progress table in `README.md`.
- Added a summary of the current translation status for all supported
languages.
- Included up-to-date statistics on translation coverage.
#### **Why these changes are necessary**
- Keeps translation files aligned with the latest reference updates.
- Ensures the documentation reflects the current translation progress.
---
Auto-generated by [create-pull-request][1].
[1]: https://github.com/peter-evans/create-pull-request
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 02712a1ad..8e592bd7a 100644
--- a/README.md
+++ b/README.md
@@ -143,7 +143,7 @@ Stirling-PDF currently supports 40 languages!
| Portuguese (Português) (pt_PT) |  |
| Portuguese Brazilian (Português) (pt_BR) |  |
| Romanian (Română) (ro_RO) |  |
-| Russian (Русский) (ru_RU) |  |
+| Russian (Русский) (ru_RU) |  |
| Serbian Latin alphabet (Srpski) (sr_LATN_RS) |  |
| Simplified Chinese (简体中文) (zh_CN) |  |
| Slovakian (Slovensky) (sk_SK) |  |
From 638d9ec43c14568dd606476e9fae7151f5821fe4 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 16 Jul 2025 12:42:05 +0100
Subject: [PATCH 02/25] build(deps): bump io.micrometer:micrometer-core from
1.15.1 to 1.15.2 (#3947)
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
app/core/build.gradle | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/core/build.gradle b/app/core/build.gradle
index 0974a0577..745dbb87a 100644
--- a/app/core/build.gradle
+++ b/app/core/build.gradle
@@ -46,7 +46,7 @@ dependencies {
implementation 'commons-io:commons-io:2.19.0'
implementation "org.bouncycastle:bcprov-jdk18on:$bouncycastleVersion"
implementation "org.bouncycastle:bcpkix-jdk18on:$bouncycastleVersion"
- implementation 'io.micrometer:micrometer-core:1.15.1'
+ implementation 'io.micrometer:micrometer-core:1.15.2'
implementation 'com.google.zxing:core:3.5.3'
implementation "org.commonmark:commonmark:$commonmarkVersion" // https://mvnrepository.com/artifact/org.commonmark/commonmark
implementation "org.commonmark:commonmark-ext-gfm-tables:$commonmarkVersion"
From cc7f16308541eee3fc7b94285d5d290b3e6870e5 Mon Sep 17 00:00:00 2001
From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
Date: Wed, 16 Jul 2025 14:33:04 +0100
Subject: [PATCH 03/25] fake scan to scanner effect (#3954)
# Description of Changes
---
## Checklist
### General
- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings
### Documentation
- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)
### UI Changes (if applicable)
- [ ] Screenshots or videos demonstrating the UI changes are attached
(e.g., as comments or direct attachments in the PR)
### Testing (if applicable)
- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing)
for more details.
---
...ller.java => ScannerEffectController.java} | 18 ++---
.../controller/web/OtherWebController.java | 8 +--
...Request.java => ScannerEffectRequest.java} | 2 +-
.../main/resources/messages_ar_AR.properties | 66 +++++++++---------
.../main/resources/messages_az_AZ.properties | 66 +++++++++---------
.../main/resources/messages_bg_BG.properties | 66 +++++++++---------
.../main/resources/messages_bo_CN.properties | 66 +++++++++---------
.../main/resources/messages_ca_CA.properties | 66 +++++++++---------
.../main/resources/messages_cs_CZ.properties | 66 +++++++++---------
.../main/resources/messages_da_DK.properties | 66 +++++++++---------
.../main/resources/messages_de_DE.properties | 66 +++++++++---------
.../main/resources/messages_el_GR.properties | 66 +++++++++---------
.../main/resources/messages_en_GB.properties | 66 +++++++++---------
.../main/resources/messages_en_US.properties | 66 +++++++++---------
.../main/resources/messages_es_ES.properties | 66 +++++++++---------
.../main/resources/messages_eu_ES.properties | 66 +++++++++---------
.../main/resources/messages_fa_IR.properties | 66 +++++++++---------
.../main/resources/messages_fr_FR.properties | 66 +++++++++---------
.../main/resources/messages_ga_IE.properties | 66 +++++++++---------
.../main/resources/messages_hi_IN.properties | 66 +++++++++---------
.../main/resources/messages_hr_HR.properties | 66 +++++++++---------
.../main/resources/messages_hu_HU.properties | 66 +++++++++---------
.../main/resources/messages_id_ID.properties | 66 +++++++++---------
.../main/resources/messages_it_IT.properties | 66 +++++++++---------
.../main/resources/messages_ja_JP.properties | 66 +++++++++---------
.../main/resources/messages_ko_KR.properties | 66 +++++++++---------
.../main/resources/messages_ml_IN.properties | 66 +++++++++---------
.../main/resources/messages_nl_NL.properties | 66 +++++++++---------
.../main/resources/messages_no_NB.properties | 66 +++++++++---------
.../main/resources/messages_pl_PL.properties | 66 +++++++++---------
.../main/resources/messages_pt_BR.properties | 66 +++++++++---------
.../main/resources/messages_pt_PT.properties | 66 +++++++++---------
.../main/resources/messages_ro_RO.properties | 66 +++++++++---------
.../main/resources/messages_ru_RU.properties | 67 +++++++++----------
.../main/resources/messages_sk_SK.properties | 66 +++++++++---------
.../main/resources/messages_sl_SI.properties | 66 +++++++++---------
.../resources/messages_sr_LATN_RS.properties | 66 +++++++++---------
.../main/resources/messages_sv_SE.properties | 66 +++++++++---------
.../main/resources/messages_th_TH.properties | 66 +++++++++---------
.../main/resources/messages_tr_TR.properties | 66 +++++++++---------
.../main/resources/messages_uk_UA.properties | 66 +++++++++---------
.../main/resources/messages_vi_VN.properties | 66 +++++++++---------
.../main/resources/messages_zh_CN.properties | 66 +++++++++---------
.../main/resources/messages_zh_TW.properties | 66 +++++++++---------
.../templates/fragments/navElements.html | 2 +-
.../src/main/resources/templates/home.html | 2 +-
.../{fake-scan.html => scanner-effect.html} | 52 +++++++-------
scripts/ignore_translation.toml | 2 +-
48 files changed, 1396 insertions(+), 1397 deletions(-)
rename app/core/src/main/java/stirling/software/SPDF/controller/api/misc/{FakeScanController.java => ScannerEffectController.java} (96%)
rename app/core/src/main/java/stirling/software/SPDF/model/api/misc/{FakeScanRequest.java => ScannerEffectRequest.java} (98%)
rename app/core/src/main/resources/templates/misc/{fake-scan.html => scanner-effect.html} (80%)
diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/FakeScanController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ScannerEffectController.java
similarity index 96%
rename from app/core/src/main/java/stirling/software/SPDF/controller/api/misc/FakeScanController.java
rename to app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ScannerEffectController.java
index d221ed52c..a94b487b4 100644
--- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/FakeScanController.java
+++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ScannerEffectController.java
@@ -33,7 +33,7 @@ import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import stirling.software.SPDF.model.api.misc.FakeScanRequest;
+import stirling.software.SPDF.model.api.misc.ScannerEffectRequest;
import stirling.software.common.service.CustomPDFDocumentFactory;
import stirling.software.common.util.WebResponseUtils;
@@ -42,7 +42,7 @@ import stirling.software.common.util.WebResponseUtils;
@Tag(name = "Misc", description = "Miscellaneous PDF APIs")
@RequiredArgsConstructor
@Slf4j
-public class FakeScanController {
+public class ScannerEffectController {
private final CustomPDFDocumentFactory pdfDocumentFactory;
private static final Random RANDOM = new Random();
@@ -52,12 +52,12 @@ public class FakeScanController {
private static final int MAX_IMAGE_HEIGHT = 8192;
private static final long MAX_IMAGE_PIXELS = 16_777_216; // 4096x4096
- @PostMapping(value = "/fake-scan", consumes = "multipart/form-data")
+ @PostMapping(value = "/scanner-effect", consumes = "multipart/form-data")
@Operation(
- summary = "Convert PDF to look like a scanned document",
+ summary = "Apply scanner effect to PDF",
description =
- "Applies various effects to make a PDF look like it was scanned, including rotation, noise, and edge softening. Input:PDF Output:PDF Type:SISO")
- public ResponseEntity fakeScan(@Valid @ModelAttribute FakeScanRequest request)
+ "Applies various effects to simulate a scanned document, including rotation, noise, and edge softening. Input:PDF Output:PDF Type:SISO")
+ public ResponseEntity scannerEffect(@Valid @ModelAttribute ScannerEffectRequest request)
throws IOException {
MultipartFile file = request.getFileInput();
@@ -80,7 +80,7 @@ public class FakeScanController {
float noise = request.getNoise();
boolean yellowish = request.isYellowish();
int resolution = request.getResolution();
- FakeScanRequest.Colorspace colorspace = request.getColorspace();
+ ScannerEffectRequest.Colorspace colorspace = request.getColorspace();
try (PDDocument document = pdfDocumentFactory.load(file)) {
PDDocument outputDocument = new PDDocument();
@@ -130,7 +130,7 @@ public class FakeScanController {
// 1. Convert to grayscale or keep color
BufferedImage processed;
- if (colorspace == FakeScanRequest.Colorspace.grayscale) {
+ if (colorspace == ScannerEffectRequest.Colorspace.grayscale) {
processed =
new BufferedImage(
image.getWidth(),
@@ -316,7 +316,7 @@ public class FakeScanController {
String outputFilename =
Filenames.toSimpleFileName(file.getOriginalFilename())
.replaceFirst("[.][^.]+$", "")
- + "_scanned.pdf";
+ + "_scanner_effect.pdf";
return WebResponseUtils.bytesToWebResponse(
outputStream.toByteArray(), outputFilename, MediaType.APPLICATION_PDF);
diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java b/app/core/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java
index aac9cb6a0..bc63a4b84 100644
--- a/app/core/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java
+++ b/app/core/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java
@@ -70,11 +70,11 @@ public class OtherWebController {
return "misc/add-page-numbers";
}
- @GetMapping("/fake-scan")
+ @GetMapping("/scanner-effect")
@Hidden
- public String fakeScanForm(Model model) {
- model.addAttribute("currentPage", "fake-scan");
- return "misc/fake-scan";
+ public String scannerEffectForm(Model model) {
+ model.addAttribute("currentPage", "scanner-effect");
+ return "misc/scanner-effect";
}
@GetMapping("/extract-images")
diff --git a/app/core/src/main/java/stirling/software/SPDF/model/api/misc/FakeScanRequest.java b/app/core/src/main/java/stirling/software/SPDF/model/api/misc/ScannerEffectRequest.java
similarity index 98%
rename from app/core/src/main/java/stirling/software/SPDF/model/api/misc/FakeScanRequest.java
rename to app/core/src/main/java/stirling/software/SPDF/model/api/misc/ScannerEffectRequest.java
index 1237d2305..72ecb42f6 100644
--- a/app/core/src/main/java/stirling/software/SPDF/model/api/misc/FakeScanRequest.java
+++ b/app/core/src/main/java/stirling/software/SPDF/model/api/misc/ScannerEffectRequest.java
@@ -11,7 +11,7 @@ import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode
-public class FakeScanRequest {
+public class ScannerEffectRequest {
public enum Quality {
low,
medium,
diff --git a/app/core/src/main/resources/messages_ar_AR.properties b/app/core/src/main/resources/messages_ar_AR.properties
index 4691fa989..2993800ac 100644
--- a/app/core/src/main/resources/messages_ar_AR.properties
+++ b/app/core/src/main/resources/messages_ar_AR.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_az_AZ.properties b/app/core/src/main/resources/messages_az_AZ.properties
index 79ebfdcdb..c719d7139 100644
--- a/app/core/src/main/resources/messages_az_AZ.properties
+++ b/app/core/src/main/resources/messages_az_AZ.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_bg_BG.properties b/app/core/src/main/resources/messages_bg_BG.properties
index a5f12ec06..eaaeb5d95 100644
--- a/app/core/src/main/resources/messages_bg_BG.properties
+++ b/app/core/src/main/resources/messages_bg_BG.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_bo_CN.properties b/app/core/src/main/resources/messages_bo_CN.properties
index 87cf84b24..d84b4a387 100644
--- a/app/core/src/main/resources/messages_bo_CN.properties
+++ b/app/core/src/main/resources/messages_bo_CN.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_ca_CA.properties b/app/core/src/main/resources/messages_ca_CA.properties
index 488ac87a8..30a7f7624 100644
--- a/app/core/src/main/resources/messages_ca_CA.properties
+++ b/app/core/src/main/resources/messages_ca_CA.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_cs_CZ.properties b/app/core/src/main/resources/messages_cs_CZ.properties
index ab0b45b4d..7eb854aaa 100644
--- a/app/core/src/main/resources/messages_cs_CZ.properties
+++ b/app/core/src/main/resources/messages_cs_CZ.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_da_DK.properties b/app/core/src/main/resources/messages_da_DK.properties
index ba2b18cf5..118e545e6 100644
--- a/app/core/src/main/resources/messages_da_DK.properties
+++ b/app/core/src/main/resources/messages_da_DK.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_de_DE.properties b/app/core/src/main/resources/messages_de_DE.properties
index 207a36007..5f01823f1 100644
--- a/app/core/src/main/resources/messages_de_DE.properties
+++ b/app/core/src/main/resources/messages_de_DE.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=Diese Cookies sind für das
cookieBanner.preferencesModal.analytics.title=Analyse
cookieBanner.preferencesModal.analytics.description=Diese Cookies helfen uns zu verstehen, wie unsere Tools genutzt werden, damit wir uns darauf konzentrieren können, die Funktionen zu entwickeln, die unserer Community am meisten am Herzen liegen. Seien Sie beruhigt – Stirling PDF kann und wird niemals den Inhalt der Dokumente verfolgen, mit denen Sie arbeiten.
-#fakeScan
-fakeScan.title=Fake-Scan-PDF
-fakeScan.header=Fake-Scan-PDF
-fakeScan.description=Erstellen Sie ein PDF, das so aussieht, als wäre es gescannt worden
-fakeScan.selectPDF=Wählen Sie PDF:
-fakeScan.quality=Scan-Qualität
-fakeScan.quality.low=Niedrig
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=Hoch
-fakeScan.rotation=Rotationswinkel
-fakeScan.rotation.none=Keiner
-fakeScan.rotation.slight=Leicht
-fakeScan.rotation.moderate=Mäßig
-fakeScan.rotation.severe=Schwer
-fakeScan.submit=Erstellen Sie einen Fake-Scan
+#scannerEffect
+scannerEffect.title=Scanner-Effect-PDF
+scannerEffect.header=Scanner-Effect-PDF
+scannerEffect.description=Erstellen Sie ein PDF, das so aussieht, als wäre es gescannt worden
+scannerEffect.selectPDF=Wählen Sie PDF:
+scannerEffect.quality=Scan-Qualität
+scannerEffect.quality.low=Niedrig
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=Hoch
+scannerEffect.rotation=Rotationswinkel
+scannerEffect.rotation.none=Keiner
+scannerEffect.rotation.slight=Leicht
+scannerEffect.rotation.moderate=Mäßig
+scannerEffect.rotation.severe=Schwer
+scannerEffect.submit=Erstellen Sie einen Scanner-Effect
-#home.fakeScan
-home.fakeScan.title=Fake-Scan-PDF
-home.fakeScan.desc=Erstellen Sie ein PDF, das so aussieht, als wäre es gescannt worden
-fakeScan.tags=scannen,simulieren,realistisch,konvertieren,fake,scan,pdf
+#home.scannerEffect
+home.scannerEffect.title=Scanner-Effect-PDF
+home.scannerEffect.desc=Erstellen Sie ein PDF, das so aussieht, als wäre es gescannt worden
+scannerEffect.tags=scannen,simulieren,realistisch,konvertieren,fake,scan,pdf
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Aktivieren Sie erweiterte Scaneinstellungen
-fakeScan.colorspace=Farbraum
-fakeScan.colorspace.grayscale=Graustufen
-fakeScan.colorspace.color=Farbe
-fakeScan.border=Grenze (PX)
-fakeScan.rotate=Grundrotation (Grad)
-fakeScan.rotateVariance=Rotationsvarianz (Grad)
-fakeScan.brightness=Helligkeit
-fakeScan.contrast=Kontrast
-fakeScan.blur=Verwischen
-fakeScan.noise=Rauschen
-fakeScan.yellowish=Gelblich (simulieren Sie altes Papier)
-fakeScan.resolution=Auflösung (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Aktivieren Sie erweiterte Scaneinstellungen
+scannerEffect.colorspace=Farbraum
+scannerEffect.colorspace.grayscale=Graustufen
+scannerEffect.colorspace.color=Farbe
+scannerEffect.border=Grenze (PX)
+scannerEffect.rotate=Grundrotation (Grad)
+scannerEffect.rotateVariance=Rotationsvarianz (Grad)
+scannerEffect.brightness=Helligkeit
+scannerEffect.contrast=Kontrast
+scannerEffect.blur=Verwischen
+scannerEffect.noise=Rauschen
+scannerEffect.yellowish=Gelblich (simulieren Sie altes Papier)
+scannerEffect.resolution=Auflösung (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_el_GR.properties b/app/core/src/main/resources/messages_el_GR.properties
index b04948a41..82fc98ef9 100644
--- a/app/core/src/main/resources/messages_el_GR.properties
+++ b/app/core/src/main/resources/messages_el_GR.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_en_GB.properties b/app/core/src/main/resources/messages_en_GB.properties
index 24ad9b465..f78e80b65 100644
--- a/app/core/src/main/resources/messages_en_GB.properties
+++ b/app/core/src/main/resources/messages_en_GB.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_en_US.properties b/app/core/src/main/resources/messages_en_US.properties
index 0b37cc0ea..eb8a9236c 100644
--- a/app/core/src/main/resources/messages_en_US.properties
+++ b/app/core/src/main/resources/messages_en_US.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_es_ES.properties b/app/core/src/main/resources/messages_es_ES.properties
index bf86c3dee..5601e76c0 100644
--- a/app/core/src/main/resources/messages_es_ES.properties
+++ b/app/core/src/main/resources/messages_es_ES.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=Estas cookies son esenciales
cookieBanner.preferencesModal.analytics.title=Análisis
cookieBanner.preferencesModal.analytics.description=Estas cookies nos ayudan a entender cómo se están utilizando nuestras herramientas, para que podamos centrarnos en desarrollar las funciones que nuestra comunidad valora más. Tenga la seguridad de que Stirling PDF no puede y nunca podrá rastrear el contenido de los documentos con los que trabaja.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_eu_ES.properties b/app/core/src/main/resources/messages_eu_ES.properties
index 8a614af65..bda28227f 100644
--- a/app/core/src/main/resources/messages_eu_ES.properties
+++ b/app/core/src/main/resources/messages_eu_ES.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_fa_IR.properties b/app/core/src/main/resources/messages_fa_IR.properties
index 50dc3f6f7..a1cfbe5b5 100644
--- a/app/core/src/main/resources/messages_fa_IR.properties
+++ b/app/core/src/main/resources/messages_fa_IR.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_fr_FR.properties b/app/core/src/main/resources/messages_fr_FR.properties
index 7b1e71100..2a3a7c6b5 100644
--- a/app/core/src/main/resources/messages_fr_FR.properties
+++ b/app/core/src/main/resources/messages_fr_FR.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=Ces cookies sont essentiels
cookieBanner.preferencesModal.analytics.title=Analyse
cookieBanner.preferencesModal.analytics.description=Ces cookies nous aident à comprendre comment nos outils sont utilisés, afin que nous puissions nous concentrer sur les fonctionnalités les plus appréciées par notre communauté. Soyez rassuré — Stirling PDF ne peut pas et ne suivra jamais le contenu des documents que vous utilisez.
-#fakeScan
-fakeScan.title=Fausse numérisation
-fakeScan.header=Fausse numérisation
-fakeScan.description=Créer un PDF qui ressemble à une numérisation
-fakeScan.selectPDF=Sélectionner un PDF :
-fakeScan.quality=Qualité de numérisation
-fakeScan.quality.low=Faible
-fakeScan.quality.medium=Moyenne
-fakeScan.quality.high=Élevée
-fakeScan.rotation=Angle de rotation
-fakeScan.rotation.none=Aucun
-fakeScan.rotation.slight=Léger
-fakeScan.rotation.moderate=Modéré
-fakeScan.rotation.severe=Sévère
-fakeScan.submit=Créer une fausse numérisation
+#scannerEffect
+scannerEffect.title=Fausse numérisation
+scannerEffect.header=Fausse numérisation
+scannerEffect.description=Créer un PDF qui ressemble à une numérisation
+scannerEffect.selectPDF=Sélectionner un PDF :
+scannerEffect.quality=Qualité de numérisation
+scannerEffect.quality.low=Faible
+scannerEffect.quality.medium=Moyenne
+scannerEffect.quality.high=Élevée
+scannerEffect.rotation=Angle de rotation
+scannerEffect.rotation.none=Aucun
+scannerEffect.rotation.slight=Léger
+scannerEffect.rotation.moderate=Modéré
+scannerEffect.rotation.severe=Sévère
+scannerEffect.submit=Créer une fausse numérisation
-#home.fakeScan
-home.fakeScan.title=Fausse numérisation
-home.fakeScan.desc=Créer un PDF qui ressemble à une numérisation
-fakeScan.tags=numérisation,simuler,réaliste,convertir,scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Fausse numérisation
+home.scannerEffect.desc=Créer un PDF qui ressemble à une numérisation
+scannerEffect.tags=numérisation,simuler,réaliste,convertir,scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Activer les paramètres de numérisation avancés
-fakeScan.colorspace=Espace colorimétrique
-fakeScan.colorspace.grayscale=Niveaux de gris
-fakeScan.colorspace.color=Couleur
-fakeScan.border=Bordure (px)
-fakeScan.rotate=Rotation de base (degrés)
-fakeScan.rotateVariance=Variance de rotation (degrés)
-fakeScan.brightness=Luminosité
-fakeScan.contrast=Contraste
-fakeScan.blur=Flou
-fakeScan.noise=Bruit
-fakeScan.yellowish=Jaunâtre (simuler du vieux papier)
-fakeScan.resolution=Résolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Activer les paramètres de numérisation avancés
+scannerEffect.colorspace=Espace colorimétrique
+scannerEffect.colorspace.grayscale=Niveaux de gris
+scannerEffect.colorspace.color=Couleur
+scannerEffect.border=Bordure (px)
+scannerEffect.rotate=Rotation de base (degrés)
+scannerEffect.rotateVariance=Variance de rotation (degrés)
+scannerEffect.brightness=Luminosité
+scannerEffect.contrast=Contraste
+scannerEffect.blur=Flou
+scannerEffect.noise=Bruit
+scannerEffect.yellowish=Jaunâtre (simuler du vieux papier)
+scannerEffect.resolution=Résolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_ga_IE.properties b/app/core/src/main/resources/messages_ga_IE.properties
index 332ac4e76..7a5d87de3 100644
--- a/app/core/src/main/resources/messages_ga_IE.properties
+++ b/app/core/src/main/resources/messages_ga_IE.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_hi_IN.properties b/app/core/src/main/resources/messages_hi_IN.properties
index 29d1e1ee5..ced3f3300 100644
--- a/app/core/src/main/resources/messages_hi_IN.properties
+++ b/app/core/src/main/resources/messages_hi_IN.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_hr_HR.properties b/app/core/src/main/resources/messages_hr_HR.properties
index 321e1b141..f311a93dd 100644
--- a/app/core/src/main/resources/messages_hr_HR.properties
+++ b/app/core/src/main/resources/messages_hr_HR.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_hu_HU.properties b/app/core/src/main/resources/messages_hu_HU.properties
index 8c38c44c4..f04440968 100644
--- a/app/core/src/main/resources/messages_hu_HU.properties
+++ b/app/core/src/main/resources/messages_hu_HU.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=Ezek a sütik elengedhetetle
cookieBanner.preferencesModal.analytics.title=Adatelemzések
cookieBanner.preferencesModal.analytics.description=Ezek a sütik segítenek megérteni, hogyan használják eszközeinket, így a közösségünk által leginkább értékelt funkciókra összpontosíthatunk. Nyugodt lehet-a Stirling PDF nem képes és soha nem is fog nyomon követni az Ön által használt dokumentumok tartalmát.
-#fakeScan
-fakeScan.title=Látszat szkennelés
-fakeScan.header=Látszat szkennelés
-fakeScan.description=Olyan PDF létrehozása, amely szkenneltnek tűnik
-fakeScan.selectPDF=PDF kiválasztása:
-fakeScan.quality=Szkennelési minőség
-fakeScan.quality.low=Alacsony
-fakeScan.quality.medium=Közepes
-fakeScan.quality.high=Magas
-fakeScan.rotation=Forgatási szög
-fakeScan.rotation.none=Nincs
-fakeScan.rotation.slight=Enyhe
-fakeScan.rotation.moderate=Mérsékelt
-fakeScan.rotation.severe=Erős
-fakeScan.submit=Látszat szkennelés létrehozása
+#scannerEffect
+scannerEffect.title=Látszat szkennelés
+scannerEffect.header=Látszat szkennelés
+scannerEffect.description=Olyan PDF létrehozása, amely szkenneltnek tűnik
+scannerEffect.selectPDF=PDF kiválasztása:
+scannerEffect.quality=Szkennelési minőség
+scannerEffect.quality.low=Alacsony
+scannerEffect.quality.medium=Közepes
+scannerEffect.quality.high=Magas
+scannerEffect.rotation=Forgatási szög
+scannerEffect.rotation.none=Nincs
+scannerEffect.rotation.slight=Enyhe
+scannerEffect.rotation.moderate=Mérsékelt
+scannerEffect.rotation.severe=Erős
+scannerEffect.submit=Látszat szkennelés létrehozása
-#home.fakeScan
-home.fakeScan.title=Látszat szkennelés
-home.fakeScan.desc=Olyan PDF létrehozása, amely szkenneltnek tűnik
-fakeScan.tags=szkennelés,szimuláció,valósághű,konvertálás
+#home.scannerEffect
+home.scannerEffect.title=Látszat szkennelés
+home.scannerEffect.desc=Olyan PDF létrehozása, amely szkenneltnek tűnik
+scannerEffect.tags=szkennelés,szimuláció,valósághű,konvertálás
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Haladó szkennelési beállítások engedélyezése
-fakeScan.colorspace=Színtér
-fakeScan.colorspace.grayscale=Szürkeárnyalatos
-fakeScan.colorspace.color=Színes
-fakeScan.border=Keret (px)
-fakeScan.rotate=Alapforgatás (fok)
-fakeScan.rotateVariance=Forgatási változó (fok)
-fakeScan.brightness=Fényerő
-fakeScan.contrast=Kontraszt
-fakeScan.blur=Elmosás
-fakeScan.noise=Zaj
-fakeScan.yellowish=Sárgás (régi papír szimulálása)
-fakeScan.resolution=Felbontás (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Haladó szkennelési beállítások engedélyezése
+scannerEffect.colorspace=Színtér
+scannerEffect.colorspace.grayscale=Szürkeárnyalatos
+scannerEffect.colorspace.color=Színes
+scannerEffect.border=Keret (px)
+scannerEffect.rotate=Alapforgatás (fok)
+scannerEffect.rotateVariance=Forgatási változó (fok)
+scannerEffect.brightness=Fényerő
+scannerEffect.contrast=Kontraszt
+scannerEffect.blur=Elmosás
+scannerEffect.noise=Zaj
+scannerEffect.yellowish=Sárgás (régi papír szimulálása)
+scannerEffect.resolution=Felbontás (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_id_ID.properties b/app/core/src/main/resources/messages_id_ID.properties
index 218a7275c..3a706535a 100644
--- a/app/core/src/main/resources/messages_id_ID.properties
+++ b/app/core/src/main/resources/messages_id_ID.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_it_IT.properties b/app/core/src/main/resources/messages_it_IT.properties
index 2cce71c66..bba74394b 100644
--- a/app/core/src/main/resources/messages_it_IT.properties
+++ b/app/core/src/main/resources/messages_it_IT.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=Questi cookie sono essenzial
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=Questi cookie ci aiutano a capire come vengono utilizzati i nostri strumenti, così possiamo concentrarci sullo sviluppo delle funzionalità che la nostra community apprezza di più. Non preoccuparti: Stirling PDF non può e non traccerà mai il contenuto dei documenti con cui lavori.
-#fakeScan
-fakeScan.title=Falsa scansione
-fakeScan.header=Falsa scansione
-fakeScan.description=Crea un PDF che sembra scansionato
-fakeScan.selectPDF=Seleziona PDF:
-fakeScan.quality=Qualità di scansione
-fakeScan.quality.low=Bassa
-fakeScan.quality.medium=Media
-fakeScan.quality.high=Alta
-fakeScan.rotation=Angolo di rotazione
-fakeScan.rotation.none=Nessuno
-fakeScan.rotation.slight=Lieve
-fakeScan.rotation.moderate=Moderato
-fakeScan.rotation.severe=Severo
-fakeScan.submit=Crea una falsa scansione
+#scannerEffect
+scannerEffect.title=Falsa scansione
+scannerEffect.header=Falsa scansione
+scannerEffect.description=Crea un PDF che sembra scansionato
+scannerEffect.selectPDF=Seleziona PDF:
+scannerEffect.quality=Qualità di scansione
+scannerEffect.quality.low=Bassa
+scannerEffect.quality.medium=Media
+scannerEffect.quality.high=Alta
+scannerEffect.rotation=Angolo di rotazione
+scannerEffect.rotation.none=Nessuno
+scannerEffect.rotation.slight=Lieve
+scannerEffect.rotation.moderate=Moderato
+scannerEffect.rotation.severe=Severo
+scannerEffect.submit=Crea una falsa scansione
-#home.fakeScan
-home.fakeScan.title=Falsa scansione
-home.fakeScan.desc=Crea un PDF che sembra scansionato
-fakeScan.tags=scansiona, simula, realistico, converti
+#home.scannerEffect
+home.scannerEffect.title=Falsa scansione
+home.scannerEffect.desc=Crea un PDF che sembra scansionato
+scannerEffect.tags=scansiona, simula, realistico, converti
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Abilita impostazioni di scansione avanzate
-fakeScan.colorspace=Spazio colore
-fakeScan.colorspace.grayscale=Scala di grigi
-fakeScan.colorspace.color=Colore
-fakeScan.border=Bordo (px)
-fakeScan.rotate=Rotazione di base (gradi)
-fakeScan.rotateVariance=Varianza di rotazione (gradi)
-fakeScan.brightness=Luminosità
-fakeScan.contrast=Contrasto
-fakeScan.blur=Sfocatura
-fakeScan.noise=Rumore
-fakeScan.yellowish=Giallastro (simula carta vecchia)
-fakeScan.resolution=Risoluzione (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Abilita impostazioni di scansione avanzate
+scannerEffect.colorspace=Spazio colore
+scannerEffect.colorspace.grayscale=Scala di grigi
+scannerEffect.colorspace.color=Colore
+scannerEffect.border=Bordo (px)
+scannerEffect.rotate=Rotazione di base (gradi)
+scannerEffect.rotateVariance=Varianza di rotazione (gradi)
+scannerEffect.brightness=Luminosità
+scannerEffect.contrast=Contrasto
+scannerEffect.blur=Sfocatura
+scannerEffect.noise=Rumore
+scannerEffect.yellowish=Giallastro (simula carta vecchia)
+scannerEffect.resolution=Risoluzione (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_ja_JP.properties b/app/core/src/main/resources/messages_ja_JP.properties
index b4a2bdbc0..bdb30dc7b 100644
--- a/app/core/src/main/resources/messages_ja_JP.properties
+++ b/app/core/src/main/resources/messages_ja_JP.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=これらのCookieはウェ
cookieBanner.preferencesModal.analytics.title=分析
cookieBanner.preferencesModal.analytics.description=これらのCookieはツールがどのように使用されているかを把握するのに役立ちます。これによりコミュニティが最も重視する機能の開発に集中することができます。ご安心ください。Stirling PDFはお客様が操作するドキュメントの内容を追跡することは決してありません。
-#fakeScan
-fakeScan.title=フェイクスキャン
-fakeScan.header=フェイクスキャン
-fakeScan.description=スキャンされたように見えるPDFを作成します
-fakeScan.selectPDF=PDFを選択:
-fakeScan.quality=スキャン品質
-fakeScan.quality.low=低
-fakeScan.quality.medium=中
-fakeScan.quality.high=高
-fakeScan.rotation=回転角度
-fakeScan.rotation.none=なし
-fakeScan.rotation.slight=微少
-fakeScan.rotation.moderate=適度
-fakeScan.rotation.severe=多大
-fakeScan.submit=フェイクスキャンの生成
+#scannerEffect
+scannerEffect.title=フェイクスキャン
+scannerEffect.header=フェイクスキャン
+scannerEffect.description=スキャンされたように見えるPDFを作成します
+scannerEffect.selectPDF=PDFを選択:
+scannerEffect.quality=スキャン品質
+scannerEffect.quality.low=低
+scannerEffect.quality.medium=中
+scannerEffect.quality.high=高
+scannerEffect.rotation=回転角度
+scannerEffect.rotation.none=なし
+scannerEffect.rotation.slight=微少
+scannerEffect.rotation.moderate=適度
+scannerEffect.rotation.severe=多大
+scannerEffect.submit=フェイクスキャンの生成
-#home.fakeScan
-home.fakeScan.title=フェイクスキャン
-home.fakeScan.desc=スキャンされたように見えるPDFを作成します
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=フェイクスキャン
+home.scannerEffect.desc=スキャンされたように見えるPDFを作成します
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=高度なスキャン設定を有効にする
-fakeScan.colorspace=色空間
-fakeScan.colorspace.grayscale=グレースケール
-fakeScan.colorspace.color=カラー
-fakeScan.border=縁 (px)
-fakeScan.rotate=ベースの回転(度)
-fakeScan.rotateVariance=回転分散(度)
-fakeScan.brightness=輝度
-fakeScan.contrast=コントラスト
-fakeScan.blur=ぼかし
-fakeScan.noise=ノイズ
-fakeScan.yellowish=黄色がかった(古い紙をシミュレート)
-fakeScan.resolution=解像度 (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=高度なスキャン設定を有効にする
+scannerEffect.colorspace=色空間
+scannerEffect.colorspace.grayscale=グレースケール
+scannerEffect.colorspace.color=カラー
+scannerEffect.border=縁 (px)
+scannerEffect.rotate=ベースの回転(度)
+scannerEffect.rotateVariance=回転分散(度)
+scannerEffect.brightness=輝度
+scannerEffect.contrast=コントラスト
+scannerEffect.blur=ぼかし
+scannerEffect.noise=ノイズ
+scannerEffect.yellowish=黄色がかった(古い紙をシミュレート)
+scannerEffect.resolution=解像度 (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_ko_KR.properties b/app/core/src/main/resources/messages_ko_KR.properties
index 224e84ce0..76f7ca715 100644
--- a/app/core/src/main/resources/messages_ko_KR.properties
+++ b/app/core/src/main/resources/messages_ko_KR.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_ml_IN.properties b/app/core/src/main/resources/messages_ml_IN.properties
index 418cfe100..164209212 100644
--- a/app/core/src/main/resources/messages_ml_IN.properties
+++ b/app/core/src/main/resources/messages_ml_IN.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=വെബ്സൈറ്റ
cookieBanner.preferencesModal.analytics.title=അനലിറ്റിക്സ്
cookieBanner.preferencesModal.analytics.description=ഞങ്ങളുടെ ടൂളുകൾ എങ്ങനെ ഉപയോഗിക്കുന്നുവെന്ന് മനസ്സിലാക്കാൻ ഈ കുക്കികൾ ഞങ്ങളെ സഹായിക്കുന്നു, അതിനാൽ ഞങ്ങളുടെ കമ്മ്യൂണിറ്റി ഏറ്റവും കൂടുതൽ വിലമതിക്കുന്ന ഫീച്ചറുകൾ നിർമ്മിക്കുന്നതിൽ ഞങ്ങൾക്ക് ശ്രദ്ധ കേന്ദ്രീകരിക്കാൻ കഴിയും. ഉറപ്പാക്കുക—സ്റ്റെർലിംഗ് PDF-ന് നിങ്ങൾ പ്രവർത്തിക്കുന്ന പ്രമാണങ്ങളുടെ ഉള്ളടക്കം ട്രാക്ക് ചെയ്യാൻ കഴിയില്ല, ഒരിക്കലും കഴിയില്ല.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_nl_NL.properties b/app/core/src/main/resources/messages_nl_NL.properties
index eb6f132af..9a1af6e0a 100644
--- a/app/core/src/main/resources/messages_nl_NL.properties
+++ b/app/core/src/main/resources/messages_nl_NL.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_no_NB.properties b/app/core/src/main/resources/messages_no_NB.properties
index fa99d5ac9..03d42816d 100644
--- a/app/core/src/main/resources/messages_no_NB.properties
+++ b/app/core/src/main/resources/messages_no_NB.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_pl_PL.properties b/app/core/src/main/resources/messages_pl_PL.properties
index c08fda43d..4963d7bc6 100644
--- a/app/core/src/main/resources/messages_pl_PL.properties
+++ b/app/core/src/main/resources/messages_pl_PL.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_pt_BR.properties b/app/core/src/main/resources/messages_pt_BR.properties
index ef570453c..552139b52 100644
--- a/app/core/src/main/resources/messages_pt_BR.properties
+++ b/app/core/src/main/resources/messages_pt_BR.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=Estes cookies são essenciai
cookieBanner.preferencesModal.analytics.title=Cookies Analíticos
cookieBanner.preferencesModal.analytics.description=Estes cookies nos ajudam a entender como nossas ferramentas estão sendo utilizadas, para que possamos nos concentrar na construção dos recursos que nossa comunidade mais valoriza. Fique tranquilo: o Stirling PDF não pode e nunca rastreará o conteúdo dos documentos com os quais você manipula.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_pt_PT.properties b/app/core/src/main/resources/messages_pt_PT.properties
index fd6c34b90..dc99a45c9 100644
--- a/app/core/src/main/resources/messages_pt_PT.properties
+++ b/app/core/src/main/resources/messages_pt_PT.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_ro_RO.properties b/app/core/src/main/resources/messages_ro_RO.properties
index da8f7eaf2..25bc477b1 100644
--- a/app/core/src/main/resources/messages_ro_RO.properties
+++ b/app/core/src/main/resources/messages_ro_RO.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_ru_RU.properties b/app/core/src/main/resources/messages_ru_RU.properties
index 66a1bc93d..302a518f8 100644
--- a/app/core/src/main/resources/messages_ru_RU.properties
+++ b/app/core/src/main/resources/messages_ru_RU.properties
@@ -1811,42 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Поддельное сканирование
-fakeScan.header=Поддельное сканирование
-fakeScan.description=Создайте PDF-файл, который выглядит так, как будто он был отсканирован
-fakeScan.selectPDF=Выбрать PDF:
-fakeScan.quality=Качество сканирования
-fakeScan.quality.low=Низкое
-fakeScan.quality.medium=Среднее
-fakeScan.quality.high=Хорошее
-fakeScan.rotation=Угол поворота
-fakeScan.rotation.none=Нет
-fakeScan.rotation.slight=Незначительный
-fakeScan.rotation.moderate=Умеренный
-fakeScan.rotation.severe=Сильный
-fakeScan.submit=Создать поддельное сканирование
+#scannerEffect
+scannerEffect.title=Поддельное сканирование
+scannerEffect.header=Поддельное сканирование
+scannerEffect.description=Создайте PDF-файл, который выглядит так, как будто он был отсканирован
+scannerEffect.selectPDF=Выбрать PDF:
+scannerEffect.quality=Качество сканирования
+scannerEffect.quality.low=Низкое
+scannerEffect.quality.medium=Среднее
+scannerEffect.quality.high=Хорошее
+scannerEffect.rotation=Угол поворота
+scannerEffect.rotation.none=Нет
+scannerEffect.rotation.slight=Незначительный
+scannerEffect.rotation.moderate=Умеренный
+scannerEffect.rotation.severe=Сильный
+scannerEffect.submit=Создать поддельное сканирование
-#home.fakeScan
-home.fakeScan.title=Поддельное сканирование
-home.fakeScan.desc=Создайте PDF-файл, который выглядит так, как будто он был отсканирован
-fakeScan.tags=scan,simulate,realistic,convert
-
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Включите расширенные параметры сканирования
-fakeScan.colorspace=Цветовое пространство
-fakeScan.colorspace.grayscale=Оттенки серого
-fakeScan.colorspace.color=Цветное
-fakeScan.border=Рамка (px)
-fakeScan.rotate=Базовый наклон (degrees)
-fakeScan.rotateVariance=Скорость вращения (degrees)
-fakeScan.brightness=Яркость
-fakeScan.contrast=Контраст
-fakeScan.blur=Размытие
-fakeScan.noise=Шум
-fakeScan.yellowish=Желтоватый оттенок (имитация старой бумаги)
-fakeScan.resolution=Разрешение (DPI)
+#home.scannerEffect
+home.scannerEffect.title=Поддельное сканирование
+home.scannerEffect.desc=Создайте PDF-файл, который выглядит так, как будто он был отсканирован
+scannerEffect.tags=scan,simulate,realistic,convert
+# scannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Включите расширенные параметры сканирования
+scannerEffect.colorspace=Цветовое пространство
+scannerEffect.colorspace.grayscale=Оттенки серого
+scannerEffect.colorspace.color=Цветное
+scannerEffect.border=Рамка (px)
+scannerEffect.rotate=Базовый наклон (degrees)
+scannerEffect.rotateVariance=Скорость вращения (degrees)
+scannerEffect.brightness=Яркость
+scannerEffect.contrast=Контраст
+scannerEffect.blur=Размытие
+scannerEffect.noise=Шум
+scannerEffect.yellowish=Желтоватый оттенок (имитация старой бумаги)
+scannerEffect.resolution=Разрешение (DPI)
# Table of Contents Feature
home.editTableOfContents.title=Редактировать оглавление
diff --git a/app/core/src/main/resources/messages_sk_SK.properties b/app/core/src/main/resources/messages_sk_SK.properties
index 0b77464ad..094265d29 100644
--- a/app/core/src/main/resources/messages_sk_SK.properties
+++ b/app/core/src/main/resources/messages_sk_SK.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_sl_SI.properties b/app/core/src/main/resources/messages_sl_SI.properties
index de27dccc4..f75e714af 100644
--- a/app/core/src/main/resources/messages_sl_SI.properties
+++ b/app/core/src/main/resources/messages_sl_SI.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_sr_LATN_RS.properties b/app/core/src/main/resources/messages_sr_LATN_RS.properties
index 12f8f9abd..809a785ee 100644
--- a/app/core/src/main/resources/messages_sr_LATN_RS.properties
+++ b/app/core/src/main/resources/messages_sr_LATN_RS.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=Ovi kolačići su neophodni
cookieBanner.preferencesModal.analytics.title=Analitika
cookieBanner.preferencesModal.analytics.description=Ovi kolačići nam pomažu da razumemo kako se naši alati koriste, kako bismo mogli da se fokusiramo na razvoj funkcija koje naša zajednica najviše ceni. Budite sigurni — Stirling PDF ne može i nikada neće pratiti sadržaj dokumenata sa kojima radite.
-#fakeScan
-fakeScan.title=Lažno skeniranje
-fakeScan.header=Lažno skeniranje
-fakeScan.description=Kreiraj PDF koji izgleda kao da je skeniran
-fakeScan.selectPDF=Izaberi PDF:
-fakeScan.quality=Kvalitet skeniranja:
-fakeScan.quality.low=Nizak
-fakeScan.quality.medium=Srednji
-fakeScan.quality.high=Visok
-fakeScan.rotation=Ugao rotiranja:
-fakeScan.rotation.none=Nijedno
-fakeScan.rotation.slight=Blago
-fakeScan.rotation.moderate=Umereno
-fakeScan.rotation.severe=Značajno
-fakeScan.submit=Kreiraj lažno skeniranje
+#scannerEffect
+scannerEffect.title=Lažno skeniranje
+scannerEffect.header=Lažno skeniranje
+scannerEffect.description=Kreiraj PDF koji izgleda kao da je skeniran
+scannerEffect.selectPDF=Izaberi PDF:
+scannerEffect.quality=Kvalitet skeniranja:
+scannerEffect.quality.low=Nizak
+scannerEffect.quality.medium=Srednji
+scannerEffect.quality.high=Visok
+scannerEffect.rotation=Ugao rotiranja:
+scannerEffect.rotation.none=Nijedno
+scannerEffect.rotation.slight=Blago
+scannerEffect.rotation.moderate=Umereno
+scannerEffect.rotation.severe=Značajno
+scannerEffect.submit=Kreiraj lažno skeniranje
-#home.fakeScan
-home.fakeScan.title=Lažno skeniranje
-home.fakeScan.desc=Kreiraj PDF koji izgleda kao da je skeniran
-fakeScan.tags=sken,simuliraj,realistično,konvertuj
+#home.scannerEffect
+home.scannerEffect.title=Lažno skeniranje
+home.scannerEffect.desc=Kreiraj PDF koji izgleda kao da je skeniran
+scannerEffect.tags=sken,simuliraj,realistično,konvertuj
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Omogući naprednja podešavanja za skeniranje
-fakeScan.colorspace=Režim boja:
-fakeScan.colorspace.grayscale=Monohromatski
-fakeScan.colorspace.color=Kolor
-fakeScan.border=Ivica (px)
-fakeScan.rotate=Osnovni ugao rotacije (stepeni)
-fakeScan.rotateVariance=Varijacija rotacije (stepeni)
-fakeScan.brightness=Osvetljenje
-fakeScan.contrast=Kontrast
-fakeScan.blur=Zamućenje
-fakeScan.noise=Buka
-fakeScan.yellowish=Žutilo (simulacija starog papira)
-fakeScan.resolution=Rezolucija (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Omogući naprednja podešavanja za skeniranje
+scannerEffect.colorspace=Režim boja:
+scannerEffect.colorspace.grayscale=Monohromatski
+scannerEffect.colorspace.color=Kolor
+scannerEffect.border=Ivica (px)
+scannerEffect.rotate=Osnovni ugao rotacije (stepeni)
+scannerEffect.rotateVariance=Varijacija rotacije (stepeni)
+scannerEffect.brightness=Osvetljenje
+scannerEffect.contrast=Kontrast
+scannerEffect.blur=Zamućenje
+scannerEffect.noise=Buka
+scannerEffect.yellowish=Žutilo (simulacija starog papira)
+scannerEffect.resolution=Rezolucija (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_sv_SE.properties b/app/core/src/main/resources/messages_sv_SE.properties
index 1b05a7b05..086789fcd 100644
--- a/app/core/src/main/resources/messages_sv_SE.properties
+++ b/app/core/src/main/resources/messages_sv_SE.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_th_TH.properties b/app/core/src/main/resources/messages_th_TH.properties
index 094bf6632..2637eadf2 100644
--- a/app/core/src/main/resources/messages_th_TH.properties
+++ b/app/core/src/main/resources/messages_th_TH.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_tr_TR.properties b/app/core/src/main/resources/messages_tr_TR.properties
index 5a16196cd..2da6244ff 100644
--- a/app/core/src/main/resources/messages_tr_TR.properties
+++ b/app/core/src/main/resources/messages_tr_TR.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=Bu çerezler, web sitesinin
cookieBanner.preferencesModal.analytics.title=Analitik
cookieBanner.preferencesModal.analytics.description=Bu çerezler, araçlarımızın nasıl kullanıldığını anlamamıza yardımcı olur, böylece topluluğumuzun en çok değer verdiği özellikleri geliştirmeye odaklanabiliriz. İçiniz rahat olsun — Stirling PDF, belgelerinizin içeriğini asla takip etmez ve etmeyecektir.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Sahte Tarama
-home.fakeScan.desc=Tarama yapılmış gibi görünen bir PDF oluşturun
-fakeScan.tags=tarama,simülasyon,gerçekçi,dönüştürme
+#home.scannerEffect
+home.scannerEffect.title=Sahte Tarama
+home.scannerEffect.desc=Tarama yapılmış gibi görünen bir PDF oluşturun
+scannerEffect.tags=tarama,simülasyon,gerçekçi,dönüştürme
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Gelişmiş Tarama Ayarlarını Etkinleştir
-fakeScan.colorspace=Renk Uzayı
-fakeScan.colorspace.grayscale=Gri Tonlama
-fakeScan.colorspace.color=Renkli
-fakeScan.border=Kenar Boşluğu (piksel)
-fakeScan.rotate=Temel Döndürme (derece)
-fakeScan.rotateVariance=Döndürme Varyansı (derece)
-fakeScan.brightness=Parlaklık
-fakeScan.contrast=Kontrast
-fakeScan.blur=Bulanıklık
-fakeScan.noise=Gürültü
-fakeScan.yellowish=Sarartı (eski kağıt efekti)
-fakeScan.resolution=Çözünürlük (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Gelişmiş Tarama Ayarlarını Etkinleştir
+scannerEffect.colorspace=Renk Uzayı
+scannerEffect.colorspace.grayscale=Gri Tonlama
+scannerEffect.colorspace.color=Renkli
+scannerEffect.border=Kenar Boşluğu (piksel)
+scannerEffect.rotate=Temel Döndürme (derece)
+scannerEffect.rotateVariance=Döndürme Varyansı (derece)
+scannerEffect.brightness=Parlaklık
+scannerEffect.contrast=Kontrast
+scannerEffect.blur=Bulanıklık
+scannerEffect.noise=Gürültü
+scannerEffect.yellowish=Sarartı (eski kağıt efekti)
+scannerEffect.resolution=Çözünürlük (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_uk_UA.properties b/app/core/src/main/resources/messages_uk_UA.properties
index 1389189d2..89518dca8 100644
--- a/app/core/src/main/resources/messages_uk_UA.properties
+++ b/app/core/src/main/resources/messages_uk_UA.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_vi_VN.properties b/app/core/src/main/resources/messages_vi_VN.properties
index e7aa8b568..dcf69cce8 100644
--- a/app/core/src/main/resources/messages_vi_VN.properties
+++ b/app/core/src/main/resources/messages_vi_VN.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=These cookies are essential
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_zh_CN.properties b/app/core/src/main/resources/messages_zh_CN.properties
index 8dba289a2..247b6ea70 100644
--- a/app/core/src/main/resources/messages_zh_CN.properties
+++ b/app/core/src/main/resources/messages_zh_CN.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=这些Cookie对网站基础
cookieBanner.preferencesModal.analytics.title=分析统计
cookieBanner.preferencesModal.analytics.description=这些Cookie帮助我们分析工具使用情况,以便聚焦开发用户最需要的功能。再次强调:Stirling PDF绝不会追踪您处理的文档内容。
-#fakeScan
-fakeScan.title=模拟扫描
-fakeScan.header=模拟扫描
-fakeScan.description=创建一个看起来像扫描的 PDF
-fakeScan.selectPDF=选择 PDF:
-fakeScan.quality=扫描质量
-fakeScan.quality.low=低
-fakeScan.quality.medium=中
-fakeScan.quality.high=高
-fakeScan.rotation=旋转角度
-fakeScan.rotation.none=无
-fakeScan.rotation.slight=轻微
-fakeScan.rotation.moderate=中等
-fakeScan.rotation.severe=严重
-fakeScan.submit=创建模拟扫描
+#scannerEffect
+scannerEffect.title=模拟扫描
+scannerEffect.header=模拟扫描
+scannerEffect.description=创建一个看起来像扫描的 PDF
+scannerEffect.selectPDF=选择 PDF:
+scannerEffect.quality=扫描质量
+scannerEffect.quality.low=低
+scannerEffect.quality.medium=中
+scannerEffect.quality.high=高
+scannerEffect.rotation=旋转角度
+scannerEffect.rotation.none=无
+scannerEffect.rotation.slight=轻微
+scannerEffect.rotation.moderate=中等
+scannerEffect.rotation.severe=严重
+scannerEffect.submit=创建模拟扫描
-#home.fakeScan
-home.fakeScan.title=模拟扫描
-home.fakeScan.desc=创建一个看起来像扫描的 PDF
-fakeScan.tags=扫描、模拟、真实、转换
+#home.scannerEffect
+home.scannerEffect.title=模拟扫描
+home.scannerEffect.desc=创建一个看起来像扫描的 PDF
+scannerEffect.tags=扫描、模拟、真实、转换
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=启用高级扫描设置
-fakeScan.colorspace=色彩空间
-fakeScan.colorspace.grayscale=灰度
-fakeScan.colorspace.color=颜色
-fakeScan.border=边框(像素)
-fakeScan.rotate=基础旋转(度)
-fakeScan.rotateVariance=旋转偏差(度)
-fakeScan.brightness=亮度
-fakeScan.contrast=对比度
-fakeScan.blur=模糊
-fakeScan.noise=噪点
-fakeScan.yellowish=泛黄效果(模拟旧纸张)
-fakeScan.resolution=分辨率(DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=启用高级扫描设置
+scannerEffect.colorspace=色彩空间
+scannerEffect.colorspace.grayscale=灰度
+scannerEffect.colorspace.color=颜色
+scannerEffect.border=边框(像素)
+scannerEffect.rotate=基础旋转(度)
+scannerEffect.rotateVariance=旋转偏差(度)
+scannerEffect.brightness=亮度
+scannerEffect.contrast=对比度
+scannerEffect.blur=模糊
+scannerEffect.noise=噪点
+scannerEffect.yellowish=泛黄效果(模拟旧纸张)
+scannerEffect.resolution=分辨率(DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/messages_zh_TW.properties b/app/core/src/main/resources/messages_zh_TW.properties
index 7ef8b99f4..134f7c8a6 100644
--- a/app/core/src/main/resources/messages_zh_TW.properties
+++ b/app/core/src/main/resources/messages_zh_TW.properties
@@ -1811,41 +1811,41 @@ cookieBanner.preferencesModal.necessary.description=這些 Cookies 對網站正
cookieBanner.preferencesModal.analytics.title=分析 Cookies
cookieBanner.preferencesModal.analytics.description=這些 Cookies 幫助我們分析您如何使用我們的工具,好讓我們能專注在建構社群最重視的功能。儘管放心—— Stirling PDF 不會且永不追蹤您的文件
-#fakeScan
-fakeScan.title=Fake Scan
-fakeScan.header=Fake Scan
-fakeScan.description=Create a PDF that looks like it was scanned
-fakeScan.selectPDF=Select PDF:
-fakeScan.quality=Scan Quality
-fakeScan.quality.low=Low
-fakeScan.quality.medium=Medium
-fakeScan.quality.high=High
-fakeScan.rotation=Rotation Angle
-fakeScan.rotation.none=None
-fakeScan.rotation.slight=Slight
-fakeScan.rotation.moderate=Moderate
-fakeScan.rotation.severe=Severe
-fakeScan.submit=Create Fake Scan
+#scannerEffect
+scannerEffect.title=Scanner Effect
+scannerEffect.header=Scanner Effect
+scannerEffect.description=Create a PDF that looks like it was scanned
+scannerEffect.selectPDF=Select PDF:
+scannerEffect.quality=Scan Quality
+scannerEffect.quality.low=Low
+scannerEffect.quality.medium=Medium
+scannerEffect.quality.high=High
+scannerEffect.rotation=Rotation Angle
+scannerEffect.rotation.none=None
+scannerEffect.rotation.slight=Slight
+scannerEffect.rotation.moderate=Moderate
+scannerEffect.rotation.severe=Severe
+scannerEffect.submit=Create Scanner Effect
-#home.fakeScan
-home.fakeScan.title=Fake Scan
-home.fakeScan.desc=Create a PDF that looks like it was scanned
-fakeScan.tags=scan,simulate,realistic,convert
+#home.scannerEffect
+home.scannerEffect.title=Scanner Effect
+home.scannerEffect.desc=Create a PDF that looks like it was scanned
+scannerEffect.tags=scan,simulate,realistic,convert
-# FakeScan advanced settings (frontend)
-fakeScan.advancedSettings=Enable Advanced Scan Settings
-fakeScan.colorspace=Colorspace
-fakeScan.colorspace.grayscale=Grayscale
-fakeScan.colorspace.color=Color
-fakeScan.border=Border (px)
-fakeScan.rotate=Base Rotation (degrees)
-fakeScan.rotateVariance=Rotation Variance (degrees)
-fakeScan.brightness=Brightness
-fakeScan.contrast=Contrast
-fakeScan.blur=Blur
-fakeScan.noise=Noise
-fakeScan.yellowish=Yellowish (simulate old paper)
-fakeScan.resolution=Resolution (DPI)
+# ScannerEffect advanced settings (frontend)
+scannerEffect.advancedSettings=Enable Advanced Scan Settings
+scannerEffect.colorspace=Colorspace
+scannerEffect.colorspace.grayscale=Grayscale
+scannerEffect.colorspace.color=Color
+scannerEffect.border=Border (px)
+scannerEffect.rotate=Base Rotation (degrees)
+scannerEffect.rotateVariance=Rotation Variance (degrees)
+scannerEffect.brightness=Brightness
+scannerEffect.contrast=Contrast
+scannerEffect.blur=Blur
+scannerEffect.noise=Noise
+scannerEffect.yellowish=Yellowish (simulate old paper)
+scannerEffect.resolution=Resolution (DPI)
# Table of Contents Feature
diff --git a/app/core/src/main/resources/templates/fragments/navElements.html b/app/core/src/main/resources/templates/fragments/navElements.html
index 38dfa0ac6..19d6536ce 100644
--- a/app/core/src/main/resources/templates/fragments/navElements.html
+++ b/app/core/src/main/resources/templates/fragments/navElements.html
@@ -270,7 +270,7 @@
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
app/common/build.gradle | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/common/build.gradle b/app/common/build.gradle
index 2ab8c3b97..3c46a59af 100644
--- a/app/common/build.gradle
+++ b/app/common/build.gradle
@@ -26,7 +26,7 @@ dependencies {
api 'com.vladsch.flexmark:flexmark-html2md-converter:0.64.8'
api "org.apache.pdfbox:pdfbox:$pdfboxVersion"
api 'jakarta.servlet:jakarta.servlet-api:6.1.0'
- api 'org.snakeyaml:snakeyaml-engine:2.9'
+ api 'org.snakeyaml:snakeyaml-engine:2.10'
api "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.9"
api 'jakarta.mail:jakarta.mail-api:2.1.3'
runtimeOnly 'org.eclipse.angus:angus-mail:2.0.3'
From fc9551a3320332bead30b65be210c513483c8706 Mon Sep 17 00:00:00 2001
From: Ludy
Date: Wed, 16 Jul 2025 18:17:11 +0200
Subject: [PATCH 06/25] ci: enhance GitHub Actions workflows with Gradle setup,
caching improvements, and Docker image testing (#3956)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
# Description of Changes
- **What was changed**:
- Added a new path filter configuration file at
`.github/config/.files.yaml` to centralize filter groups (`build`,
`app`, `openapi`, `project`).
- Updated `.github/workflows/build.yml` to:
- Rename the workflow to “Build and Test Workflow” and add a manual
`workflow_dispatch` trigger.
- Integrate the path-filter step and conditionally run jobs
(`check-generateOpenApiDocs`, `check-licence`, `docker-compose-tests`)
based on changed files.
- Standardize Gradle setup to version 8.14.
- Introduce a new `test-build-docker-images` job that builds Docker
images for each `Dockerfile*` in PRs.
- Updated `.github/workflows/pre_commit.yml` to cache pre-commit
dependencies via `cache-dependency-path:
./.github/scripts/requirements_pre_commit.txt`.
- Updated `.github/workflows/testdriver.yml` to add dedicated Gradle
(`gradle-version: 8.14`) and Node/npm setup steps with caching.
- **Why the change was made**:
To optimize CI performance by only running relevant jobs when specific
files change, improve maintainability through a single source of truth
for path filters, enable manual workflow dispatch, ensure consistent
environments (Gradle, Node), and speed up runs with better caching.
---
## Checklist
### General
- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings
### Documentation
- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)
### UI Changes (if applicable)
- [ ] Screenshots or videos demonstrating the UI changes are attached
(e.g., as comments or direct attachments in the PR)
### Testing (if applicable)
- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing)
for more details.
---
.github/config/.files.yaml | 36 ++++
.../workflows/PR-Demo-Comment-with-react.yml | 1 +
.github/workflows/build.yml | 188 +++++++++++++++---
.github/workflows/licenses-update.yml | 3 +-
.github/workflows/multiOSReleases.yml | 3 +
.github/workflows/pre_commit.yml | 1 +
.github/workflows/push-docker.yml | 1 +
.github/workflows/releaseArtifacts.yml | 1 +
.github/workflows/swagger.yml | 1 +
.github/workflows/testdriver.yml | 11 +
lauch4jConfig.xml => launch4jConfig.xml | 0
11 files changed, 213 insertions(+), 33 deletions(-)
create mode 100644 .github/config/.files.yaml
rename lauch4jConfig.xml => launch4jConfig.xml (100%)
diff --git a/.github/config/.files.yaml b/.github/config/.files.yaml
new file mode 100644
index 000000000..4e335b350
--- /dev/null
+++ b/.github/config/.files.yaml
@@ -0,0 +1,36 @@
+build: &build
+ - build.gradle
+ - app/core/build.gradle
+ - app/common/build.gradle
+ - app/proprietary/build.gradle
+
+app: &app
+ - app/core/src/main/java/**
+ - app/common/src/main/java/**
+ - app/proprietary/src/main/java/**
+
+openapi: &openapi
+ - build.gradle
+ - app/core/build.gradle
+ - app/core/src/main/java/**
+ - app/common/build.gradle
+ - app/common/src/main/java/**
+ - app/proprietary/build.gradle
+ - app/proprietary/src/main/java/**
+
+project: &project
+ - app/**
+ - exampleYmlFiles/**
+ - gradle/**
+ - libs/**
+ - scripts/**
+ - testing/**
+ - build.gradle
+ - Dockerfile
+ - Dockerfile.fat
+ - Dockerfile.ultra-lite
+ - gradle.properties
+ - gradlew
+ - gradlew.bat
+ - launch4jConfig.xml
+ - settings.gradle
\ No newline at end of file
diff --git a/.github/workflows/PR-Demo-Comment-with-react.yml b/.github/workflows/PR-Demo-Comment-with-react.yml
index 877a78524..6375f73d2 100644
--- a/.github/workflows/PR-Demo-Comment-with-react.yml
+++ b/.github/workflows/PR-Demo-Comment-with-react.yml
@@ -180,6 +180,7 @@ jobs:
with:
java-version: "17"
distribution: "temurin"
+ cache: gradle
- name: Run Gradle Command
run: |
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index aa98d2a1e..126c82221 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -1,8 +1,9 @@
-name: Build repo
+name: Build and Test Workflow
on:
- push:
- branches: ["main"]
+ workflow_dispatch:
+ # push:
+ # branches: ["main"]
pull_request:
branches: ["main"]
@@ -37,6 +38,12 @@ jobs:
with:
java-version: ${{ matrix.jdk-version }}
distribution: "temurin"
+ cache: gradle
+
+ - name: Setup Gradle
+ uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
+ with:
+ gradle-version: 8.14
- name: Build with Gradle and spring security ${{ matrix.spring-security }}
run: ./gradlew clean build
@@ -88,33 +95,7 @@ jobs:
if-no-files-found: warn
check-generateOpenApiDocs:
- runs-on: ubuntu-latest
- steps:
- - name: Harden Runner
- uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
- with:
- egress-policy: audit
-
- - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
-
- - name: Set up JDK 17
- uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
- with:
- java-version: "17"
- distribution: "temurin"
-
- - uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
-
- - name: Generate OpenAPI documentation
- run: ./gradlew :stirling-pdf:generateOpenApiDocs
-
- - name: Upload OpenAPI Documentation
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
- with:
- name: openapi-docs
- path: ./SwaggerDoc.json
-
- check-licence:
+ needs: build
runs-on: ubuntu-latest
steps:
- name: Harden Runner
@@ -125,13 +106,63 @@ jobs:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ - name: Filter for integration changes
+ uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
+ id: files
+ with:
+ filters: ".github/config/.files.yaml"
+
- name: Set up JDK 17
+ if: ${{ steps.files.outputs.openapi == 'true' }}
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
with:
java-version: "17"
- distribution: "adopt"
+ distribution: "temurin"
+ cache: gradle
+
+ - name: Setup Gradle
+ if: ${{ steps.files.outputs.openapi == 'true' }}
+ uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
+
+ - name: Generate OpenAPI documentation
+ if: ${{ steps.files.outputs.openapi == 'true' }}
+ run: ./gradlew :stirling-pdf:generateOpenApiDocs
+
+ - name: Upload OpenAPI Documentation
+ if: ${{ steps.files.outputs.openapi == 'true' }}
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
+ with:
+ name: openapi-docs
+ path: ./SwaggerDoc.json
+
+ check-licence:
+ needs: build
+ runs-on: ubuntu-latest
+ steps:
+ - name: Harden Runner
+ uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
+ with:
+ egress-policy: audit
+
+ - name: Checkout repository
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+
+ - name: Filter for integration changes
+ uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
+ id: files
+ with:
+ filters: ".github/config/.files.yaml"
+
+ - name: Set up JDK 17
+ if: ${{ steps.files.outputs.build == 'true' }}
+ uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
+ with:
+ java-version: "17"
+ distribution: "temurin"
+ cache: gradle
- name: check the licenses for compatibility
+ if: ${{ steps.files.outputs.build == 'true' }}
run: ./gradlew clean checkLicense
- name: FAILED - check the licenses for compatibility
@@ -169,33 +200,126 @@ jobs:
- name: Checkout Repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ - name: Filter for integration changes
+ uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
+ id: files
+ with:
+ filters: ".github/config/.files.yaml"
+
- name: Set up Java 17
+ if: ${{ steps.files.outputs.project == 'true' }}
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
with:
java-version: "17"
- distribution: "adopt"
+ distribution: "temurin"
+ cache: gradle
- name: Set up Docker Buildx
+ if: ${{ steps.files.outputs.project == 'true' }}
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Install Docker Compose
+ if: ${{ steps.files.outputs.project == 'true' }}
run: |
sudo curl -SL "https://github.com/docker/compose/releases/download/v2.37.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Set up Python
+ if: ${{ steps.files.outputs.project == 'true' }}
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: "3.12"
cache: 'pip' # caching pip dependencies
+ cache-dependency-path: ./testing/cucumber/requirements.txt
- name: Pip requirements
+ if: ${{ steps.files.outputs.project == 'true' }}
run: |
pip install --require-hashes -r ./testing/cucumber/requirements.txt
- name: Run Docker Compose Tests
+ if: ${{ steps.files.outputs.project == 'true' }}
run: |
chmod +x ./testing/test_webpages.sh
chmod +x ./testing/test.sh
chmod +x ./testing/test_disabledEndpoints.sh
./testing/test.sh
+
+ test-build-docker-images:
+ if: github.event_name == 'pull_request'
+ needs: [build, check-generateOpenApiDocs, check-licence]
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ docker-rev: ["Dockerfile", "Dockerfile.ultra-lite", "Dockerfile.fat"]
+ steps:
+ - name: Harden Runner
+ uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
+ with:
+ egress-policy: audit
+
+ - name: Checkout Repository
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+
+ - name: Filter for integration changes
+ uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
+ id: files
+ with:
+ filters: ".github/config/.files.yaml"
+
+ - name: Set up JDK 17
+ if: ${{ steps.files.outputs.project == 'true' }}
+ uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
+ with:
+ java-version: "17"
+ distribution: "temurin"
+ cache: gradle
+
+ - name: Set up Gradle
+ if: ${{ steps.files.outputs.project == 'true' }}
+ uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
+ with:
+ gradle-version: 8.14
+
+ - name: Build application
+ if: ${{ steps.files.outputs.project == 'true' }}
+ run: ./gradlew clean build
+ env:
+ DISABLE_ADDITIONAL_FEATURES: true
+ STIRLING_PDF_DESKTOP_UI: false
+
+ - name: Set up QEMU
+ if: ${{ steps.files.outputs.project == 'true' }}
+ uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
+
+ - name: Set up Docker Buildx
+ if: ${{ steps.files.outputs.project == 'true' }}
+ id: buildx
+ uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
+
+ - name: Build ${{ matrix.docker-rev }}
+ if: ${{ steps.files.outputs.project == 'true' }}
+ uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
+ with:
+ builder: ${{ steps.buildx.outputs.name }}
+ context: .
+ file: ./${{ matrix.docker-rev }}
+ push: false
+ cache-from: type=gha
+ cache-to: type=gha,mode=max
+ platforms: linux/amd64,linux/arm64/v8
+ provenance: true
+ sbom: true
+
+ - name: Upload Reports
+ if: always()
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
+ with:
+ name: reports-docker-${{ matrix.docker-rev }}
+ path: |
+ build/reports/tests/
+ build/test-results/
+ build/reports/problems/
+ retention-days: 3
+ if-no-files-found: warn
diff --git a/.github/workflows/licenses-update.yml b/.github/workflows/licenses-update.yml
index ba66627ad..4c6188476 100644
--- a/.github/workflows/licenses-update.yml
+++ b/.github/workflows/licenses-update.yml
@@ -39,7 +39,8 @@ jobs:
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
with:
java-version: "17"
- distribution: "adopt"
+ distribution: "temurin"
+ cache: gradle
- name: Setup Gradle
uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
diff --git a/.github/workflows/multiOSReleases.yml b/.github/workflows/multiOSReleases.yml
index 3cac33e1f..014410193 100644
--- a/.github/workflows/multiOSReleases.yml
+++ b/.github/workflows/multiOSReleases.yml
@@ -32,6 +32,7 @@ jobs:
with:
distribution: 'temurin'
java-version: '21'
+ cache: gradle
# ✅ Get version from Gradle
- name: Get version number
@@ -71,6 +72,7 @@ jobs:
with:
java-version: "21"
distribution: "temurin"
+ cache: gradle
- uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
with:
@@ -159,6 +161,7 @@ jobs:
with:
java-version: "21"
distribution: "temurin"
+ cache: gradle
- uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
with:
diff --git a/.github/workflows/pre_commit.yml b/.github/workflows/pre_commit.yml
index ebe81c5a8..ba80e9bcd 100644
--- a/.github/workflows/pre_commit.yml
+++ b/.github/workflows/pre_commit.yml
@@ -37,6 +37,7 @@ jobs:
with:
python-version: 3.12
cache: 'pip' # caching pip dependencies
+ cache-dependency-path: ./.github/scripts/requirements_pre_commit.txt
- name: Run Pre-Commit Hooks
run: |
diff --git a/.github/workflows/push-docker.yml b/.github/workflows/push-docker.yml
index 432925f1a..f31e5c9b7 100644
--- a/.github/workflows/push-docker.yml
+++ b/.github/workflows/push-docker.yml
@@ -29,6 +29,7 @@ jobs:
with:
java-version: "17"
distribution: "temurin"
+ cache: gradle
- uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
with:
diff --git a/.github/workflows/releaseArtifacts.yml b/.github/workflows/releaseArtifacts.yml
index 701bb678e..3294c7246 100644
--- a/.github/workflows/releaseArtifacts.yml
+++ b/.github/workflows/releaseArtifacts.yml
@@ -34,6 +34,7 @@ jobs:
with:
java-version: "17"
distribution: "temurin"
+ cache: gradle
- uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
with:
diff --git a/.github/workflows/swagger.yml b/.github/workflows/swagger.yml
index 463736b65..97c4ffa0e 100644
--- a/.github/workflows/swagger.yml
+++ b/.github/workflows/swagger.yml
@@ -25,6 +25,7 @@ jobs:
with:
java-version: "17"
distribution: "temurin"
+ cache: gradle
- uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
diff --git a/.github/workflows/testdriver.yml b/.github/workflows/testdriver.yml
index 2f818fbd0..c0e6f589c 100644
--- a/.github/workflows/testdriver.yml
+++ b/.github/workflows/testdriver.yml
@@ -24,6 +24,12 @@ jobs:
with:
java-version: '17'
distribution: 'temurin'
+ cache: gradle
+
+ - name: Setup Gradle
+ uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
+ with:
+ gradle-version: 8.14
- name: Build with Gradle
run: ./gradlew clean build
@@ -111,6 +117,11 @@ jobs:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ - name: Set up Node
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ with:
+ cache: 'npm'
+
- name: Run TestDriver.ai
uses: testdriverai/action@f0d0f45fdd684db628baa843fe9313f3ca3a8aa8 #1.1.3
with:
diff --git a/lauch4jConfig.xml b/launch4jConfig.xml
similarity index 100%
rename from lauch4jConfig.xml
rename to launch4jConfig.xml
From de43038fd957fbb770c06aa6af9c9a5d3d28b5d6 Mon Sep 17 00:00:00 2001
From: "pixeebotstirling[bot]"
<221352955+pixeebotstirling[bot]@users.noreply.github.com>
Date: Thu, 17 Jul 2025 17:15:39 +0100
Subject: [PATCH 07/25] =?UTF-8?q?=E2=9C=A8=20(Snyk)=20Fixed=20finding:=20"?=
=?UTF-8?q?java/PT"=20(#3971)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
**Pixee Fix ID:**
[baa2e86a-2e2f-4c8e-99e0-bc99ce846b94](https://stirlingpdf.getpixee.com/analysis/3c9d2b94-57c2-4525-9776-c5cd149902c4/fix/baa2e86a-2e2f-4c8e-99e0-bc99ce846b94)
Confidence: HIGH
Fix confidence is a rating derived from an internal benchmark and
includes High, Medium, and Low confidence fixes. It comprises three
weighted scores reflecting the safety, effectiveness and cleanliness of
Pixee's code changes within a fix. [View Details in
Pixee.](https://stirlingpdf.getpixee.com/analysis/3c9d2b94-57c2-4525-9776-c5cd149902c4/fix/baa2e86a-2e2f-4c8e-99e0-bc99ce846b94)
---
✨✨✨
## Remediation
This change fixes "java/PT" (id = java/PT) identified by Snyk.
## Details
Path Traversal is a security vulnerability that enables attackers to
gain unauthorized access to files and directories stored outside the web
root folder. To address this, a fix was made by adding
java.nio.file.Paths import for path validation, ensuring that paths are
properly sanitized and validated.
Co-authored-by: pixeebotstirling[bot] <221352955+pixeebotstirling[bot]@users.noreply.github.com>
---
.../SPDF/controller/api/misc/PrintFileController.java | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/PrintFileController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/PrintFileController.java
index 79140c571..e572432df 100644
--- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/PrintFileController.java
+++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/PrintFileController.java
@@ -7,6 +7,7 @@ import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.IOException;
+import java.nio.file.Paths;
import java.util.Arrays;
import javax.imageio.ImageIO;
@@ -45,6 +46,10 @@ public class PrintFileController {
public ResponseEntity printFile(@ModelAttribute PrintFileRequest request)
throws IOException {
MultipartFile file = request.getFileInput();
+ String originalFilename = file.getOriginalFilename();
+ if (originalFilename != null && (originalFilename.contains("..") || Paths.get(originalFilename).isAbsolute())) {
+ throw new IOException("Invalid file path detected: " + originalFilename);
+ }
String printerName = request.getPrinterName();
String contentType = file.getContentType();
try {
From 526071059e640caee654fb7958ac525be864ecb9 Mon Sep 17 00:00:00 2001
From: "pixeebotstirling[bot]"
<221352955+pixeebotstirling[bot]@users.noreply.github.com>
Date: Thu, 17 Jul 2025 17:16:09 +0100
Subject: [PATCH 08/25] =?UTF-8?q?=E2=9C=A8=20(Snyk)=20Fixed=20finding:=20"?=
=?UTF-8?q?java/PT"=20(#3972)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
**Pixee Fix ID:**
[8be62d8f-950d-4780-bc08-a8c04d176806](https://stirlingpdf.getpixee.com/analysis/3c9d2b94-57c2-4525-9776-c5cd149902c4/fix/8be62d8f-950d-4780-bc08-a8c04d176806)
Confidence: HIGH
Fix confidence is a rating derived from an internal benchmark and
includes High, Medium, and Low confidence fixes. It comprises three
weighted scores reflecting the safety, effectiveness and cleanliness of
Pixee's code changes within a fix. [View Details in
Pixee.](https://stirlingpdf.getpixee.com/analysis/3c9d2b94-57c2-4525-9776-c5cd149902c4/fix/8be62d8f-950d-4780-bc08-a8c04d176806)
---
✨✨✨
## Remediation
This change fixes "java/PT" (id = java/PT) identified by Snyk.
## Details
Path Traversal vulnerabilities allow attackers to manipulate paths to
access files and directories that are outside of the intended scope. The
fix involves adding an import for java.io.File to handle file paths more
securely.
Co-authored-by: pixeebotstirling[bot] <221352955+pixeebotstirling[bot]@users.noreply.github.com>
---
.../controller/api/converters/ConvertImgPDFController.java | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java
index 2466a0007..82dcc2bc5 100644
--- a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java
+++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java
@@ -1,6 +1,7 @@
package stirling.software.SPDF.controller.api.converters;
import java.io.ByteArrayOutputStream;
+import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URLConnection;
@@ -87,7 +88,7 @@ public class ConvertImgPDFController {
// returns bytes for image
boolean singleImage = "single".equals(singleOrMultiple);
String filename =
- Filenames.toSimpleFileName(file.getOriginalFilename())
+ Filenames.toSimpleFileName(new File(file.getOriginalFilename()).getName())
.replaceFirst("[.][^.]+$", "");
result =
@@ -231,7 +232,7 @@ public class ConvertImgPDFController {
PdfUtils.imageToPdf(file, fitOption, autoRotate, colorType, pdfDocumentFactory);
return WebResponseUtils.bytesToWebResponse(
bytes,
- file[0].getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_converted.pdf");
+ new File(file[0].getOriginalFilename()).getName().replaceFirst("[.][^.]+$", "") + "_converted.pdf");
}
private String getMediaType(String imageFormat) {
From 76d150289e97d8be471a30af6d500fc80bb31cd1 Mon Sep 17 00:00:00 2001
From: "pixeebotstirling[bot]"
<221352955+pixeebotstirling[bot]@users.noreply.github.com>
Date: Thu, 17 Jul 2025 17:16:50 +0100
Subject: [PATCH 09/25] =?UTF-8?q?=E2=9C=A8=20(Snyk)=20Fixed=20finding:=20"?=
=?UTF-8?q?java/Ssrf"=20(#3973)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
**Pixee Fix ID:**
[54568072-e1ef-4428-9da3-46b9197f6dcd](https://stirlingpdf.getpixee.com/analysis/3c9d2b94-57c2-4525-9776-c5cd149902c4/fix/54568072-e1ef-4428-9da3-46b9197f6dcd)
Confidence: HIGH
Fix confidence is a rating derived from an internal benchmark and
includes High, Medium, and Low confidence fixes. It comprises three
weighted scores reflecting the safety, effectiveness and cleanliness of
Pixee's code changes within a fix. [View Details in
Pixee.](https://stirlingpdf.getpixee.com/analysis/3c9d2b94-57c2-4525-9776-c5cd149902c4/fix/54568072-e1ef-4428-9da3-46b9197f6dcd)
---
✨✨✨
## Remediation
This change fixes "java/Ssrf" (id = java/Ssrf) identified by Snyk.
## Details
Server-Side Request Forgery (SSRF) can allow attackers to make
unauthorized requests from the server, potentially accessing sensitive
internal systems. The fix involved adding a validation check to ensure
that the 'operation' parameter matches a safe regex pattern, thereby
preventing such vulnerabilities.
Co-authored-by: pixeebotstirling[bot] <221352955+pixeebotstirling[bot]@users.noreply.github.com>
---
.../SPDF/controller/api/pipeline/PipelineProcessor.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineProcessor.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineProcessor.java
index 5c1fd5f4a..9d919c12a 100644
--- a/app/core/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineProcessor.java
+++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineProcessor.java
@@ -108,7 +108,9 @@ public class PipelineProcessor {
if (inputFileTypes == null) {
inputFileTypes = new ArrayList(Arrays.asList("ALL"));
}
- // List outputFileTypes = apiDocService.getExtensionTypes(true, operation);
+ if (!operation.matches("^[a-zA-Z0-9_-]+$")) {
+ throw new IllegalArgumentException("Invalid operation value received.");
+ }
String url = getBaseUrl() + operation;
List newOutputFiles = new ArrayList<>();
if (!isMultiInputOperation) {
From ed894f021b25df46d48ff91b78e169a8e2199506 Mon Sep 17 00:00:00 2001
From: "pixeebotstirling[bot]"
<221352955+pixeebotstirling[bot]@users.noreply.github.com>
Date: Thu, 17 Jul 2025 17:17:11 +0100
Subject: [PATCH 10/25] =?UTF-8?q?=E2=9C=A8=20(Snyk)=20Fixed=20finding:=20"?=
=?UTF-8?q?java/PT"=20(#3974)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
**Pixee Fix ID:**
[dab7f6f1-da39-4654-a537-2de8eee936db](https://stirlingpdf.getpixee.com/analysis/3c9d2b94-57c2-4525-9776-c5cd149902c4/fix/dab7f6f1-da39-4654-a537-2de8eee936db)
Confidence: HIGH
Fix confidence is a rating derived from an internal benchmark and
includes High, Medium, and Low confidence fixes. It comprises three
weighted scores reflecting the safety, effectiveness and cleanliness of
Pixee's code changes within a fix. [View Details in
Pixee.](https://stirlingpdf.getpixee.com/analysis/3c9d2b94-57c2-4525-9776-c5cd149902c4/fix/dab7f6f1-da39-4654-a537-2de8eee936db)
---
✨✨✨
## Remediation
This change fixes "java/PT" (id = java/PT) identified by Snyk.
## Details
Path Traversal is a security vulnerability that allows attackers to
access files and directories stored outside the web root folder. The
impact can include unauthorized access to sensitive files. The fix
involved adding validation checks on filenames to ensure they do not
contain suspicious patterns like '..' or '/' which are indicative of
path traversal attempts.
Co-authored-by: pixeebotstirling[bot] <221352955+pixeebotstirling[bot]@users.noreply.github.com>
---
.../SPDF/controller/api/misc/StampController.java | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/StampController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/StampController.java
index bdf27c519..a784b0f39 100644
--- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/StampController.java
+++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/StampController.java
@@ -42,6 +42,7 @@ import stirling.software.common.service.CustomPDFDocumentFactory;
import stirling.software.common.util.TempFile;
import stirling.software.common.util.TempFileManager;
import stirling.software.common.util.WebResponseUtils;
+import java.lang.IllegalArgumentException;
@RestController
@RequestMapping("/api/v1/misc")
@@ -62,9 +63,18 @@ public class StampController {
public ResponseEntity addStamp(@ModelAttribute AddStampRequest request)
throws IOException, Exception {
MultipartFile pdfFile = request.getFileInput();
+ String pdfFileName = pdfFile.getOriginalFilename();
+ if (pdfFileName.contains("..") || pdfFileName.startsWith("/")) {
+ throw new IllegalArgumentException("Invalid PDF file path");
+ }
+
String stampType = request.getStampType();
String stampText = request.getStampText();
MultipartFile stampImage = request.getStampImage();
+ String stampImageName = stampImage.getOriginalFilename();
+ if (stampImageName.contains("..") || stampImageName.startsWith("/")) {
+ throw new IllegalArgumentException("Invalid stamp image file path");
+ }
String alphabet = request.getAlphabet();
float fontSize = request.getFontSize();
float rotation = request.getRotation();
From d15a27540682b9e9718a24aef1f2429c122a9df4 Mon Sep 17 00:00:00 2001
From: "pixeebotstirling[bot]"
<221352955+pixeebotstirling[bot]@users.noreply.github.com>
Date: Thu, 17 Jul 2025 17:17:55 +0100
Subject: [PATCH 11/25] =?UTF-8?q?=E2=9C=A8=20(Snyk)=20Fixed=20finding:=20"?=
=?UTF-8?q?java/PT"=20(#3975)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
**Pixee Fix ID:**
[203062ab-1b9b-42b8-be64-1358106dccab](https://stirlingpdf.getpixee.com/analysis/3c9d2b94-57c2-4525-9776-c5cd149902c4/fix/203062ab-1b9b-42b8-be64-1358106dccab)
Confidence: HIGH
Fix confidence is a rating derived from an internal benchmark and
includes High, Medium, and Low confidence fixes. It comprises three
weighted scores reflecting the safety, effectiveness and cleanliness of
Pixee's code changes within a fix. [View Details in
Pixee.](https://stirlingpdf.getpixee.com/analysis/3c9d2b94-57c2-4525-9776-c5cd149902c4/fix/203062ab-1b9b-42b8-be64-1358106dccab)
---
✨✨✨
## Remediation
This change fixes "java/PT" (id = java/PT) identified by Snyk.
## Details
Path Traversal is a security vulnerability that allows attackers to gain
unauthorized access to files and directories outside the permitted
access path by manipulating file paths. The fix involves adding
validation to detect potential directory traversal attempts by
normalizing the file path and checking if it begins with '..', thereby
preventing malicious manipulation.
Co-authored-by: pixeebotstirling[bot] <221352955+pixeebotstirling[bot]@users.noreply.github.com>
---
.../SPDF/controller/api/pipeline/PipelineProcessor.java | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineProcessor.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineProcessor.java
index 9d919c12a..d79105c26 100644
--- a/app/core/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineProcessor.java
+++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineProcessor.java
@@ -329,6 +329,10 @@ public class PipelineProcessor {
}
List outputFiles = new ArrayList<>();
for (File file : files) {
+ Path normalizedPath = Paths.get(file.getName()).normalize();
+ if (normalizedPath.startsWith("..")) {
+ throw new SecurityException("Potential path traversal attempt in file name: " + file.getName());
+ }
Path path = Paths.get(file.getAbsolutePath());
// debug statement
log.info("Reading file: " + path);
From d79d179d80a8b39264f91928a06ff2b6b6b0855a Mon Sep 17 00:00:00 2001
From: "pixeebotstirling[bot]"
<221352955+pixeebotstirling[bot]@users.noreply.github.com>
Date: Thu, 17 Jul 2025 17:18:27 +0100
Subject: [PATCH 12/25] =?UTF-8?q?=E2=9C=A8=20(Snyk)=20Fixed=20finding:=20"?=
=?UTF-8?q?java/PT"=20(#3976)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
**Pixee Fix ID:**
[fb5fe72b-5b22-4654-a733-20930cb4f96a](https://stirlingpdf.getpixee.com/analysis/3c9d2b94-57c2-4525-9776-c5cd149902c4/fix/fb5fe72b-5b22-4654-a733-20930cb4f96a)
Confidence: HIGH
Fix confidence is a rating derived from an internal benchmark and
includes High, Medium, and Low confidence fixes. It comprises three
weighted scores reflecting the safety, effectiveness and cleanliness of
Pixee's code changes within a fix. [View Details in
Pixee.](https://stirlingpdf.getpixee.com/analysis/3c9d2b94-57c2-4525-9776-c5cd149902c4/fix/fb5fe72b-5b22-4654-a733-20930cb4f96a)
---
✨✨✨
## Remediation
This change fixes "java/PT" (id = java/PT) identified by Snyk.
## Details
Path traversal is a security vulnerability that occurs when an attacker
is able to access directories and files stored outside the intended
directory. It bypasses security mechanisms by manipulating variables
that reference files with `../` sequences. The fix involved adding
validation for `pdfFile` and `watermarkImage` to check for directory
traversal sequences, thereby preventing SecurityException occurrences.
Co-authored-by: pixeebotstirling[bot] <221352955+pixeebotstirling[bot]@users.noreply.github.com>
---
.../controller/api/security/WatermarkController.java | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java
index 47a53a4f9..fd5a9b288 100644
--- a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java
+++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java
@@ -74,9 +74,19 @@ public class WatermarkController {
public ResponseEntity addWatermark(@ModelAttribute AddWatermarkRequest request)
throws IOException, Exception {
MultipartFile pdfFile = request.getFileInput();
+ String pdfFileName = pdfFile.getOriginalFilename();
+ if (pdfFileName != null && (pdfFileName.contains("..") || pdfFileName.startsWith("/"))) {
+ throw new SecurityException("Invalid file path in pdfFile");
+ }
String watermarkType = request.getWatermarkType();
String watermarkText = request.getWatermarkText();
MultipartFile watermarkImage = request.getWatermarkImage();
+ if (watermarkImage != null) {
+ String watermarkImageFileName = watermarkImage.getOriginalFilename();
+ if (watermarkImageFileName != null && (watermarkImageFileName.contains("..") || watermarkImageFileName.startsWith("/"))) {
+ throw new SecurityException("Invalid file path in watermarkImage");
+ }
+ }
String alphabet = request.getAlphabet();
float fontSize = request.getFontSize();
float rotation = request.getRotation();
From 64d8ef4a39ae58a87b56e16ae4abd4514cbb4a24 Mon Sep 17 00:00:00 2001
From: ConnorYoh <40631091+ConnorYoh@users.noreply.github.com>
Date: Fri, 18 Jul 2025 18:25:50 +0100
Subject: [PATCH 13/25] Update CODEOWNERS (#3981)
Co-authored-by: Connor Yoh
---
.github/CODEOWNERS | 2 +-
.github/config/repo_devs.json | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 85e115bff..8d4e98e5a 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1,2 +1,2 @@
# All PRs to V1 must be approved by Frooodle
-* @Frooodle @reecebrowne @Ludy87 @DarioGii @ConnorYoh
+* @Frooodle @reecebrowne @Ludy87 @DarioGii @ConnorYoh @EthanHealy01
diff --git a/.github/config/repo_devs.json b/.github/config/repo_devs.json
index 6f8b9f90c..86d43fd98 100644
--- a/.github/config/repo_devs.json
+++ b/.github/config/repo_devs.json
@@ -7,6 +7,7 @@
"sbplat",
"reecebrowne",
"DarioGii",
- "ConnorYoh"
+ "ConnorYoh",
+ "EthanHealy01"
]
}
From d1b9cfd1a4fce9359668cee6ec3dcbb2a7ed04ed Mon Sep 17 00:00:00 2001
From: Ludy
Date: Sun, 20 Jul 2025 22:37:04 +0200
Subject: [PATCH 14/25] fix(ci): disable Gradle caching in GitHub workflows to
resolve cache conflicts (#3986)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
# Description of Changes
- **What was changed**
In all affected GitHub Actions workflow files under
`.github/workflows/`, the `cache: gradle` setting was replaced with
`cache: false # Disable Gradle caching for this job`.
- **Why the change was made**
Gradle’s cache was causing intermittent build conflicts; disabling it
ensures each job starts from a clean state and avoids cache corruption.
#3980
---
## Checklist
### General
- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings
### Documentation
- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)
### UI Changes (if applicable)
- [ ] Screenshots or videos demonstrating the UI changes are attached
(e.g., as comments or direct attachments in the PR)
### Testing (if applicable)
- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing)
for more details.
---
.github/config/.files.yaml | 16 +---
.../workflows/PR-Demo-Comment-with-react.yml | 1 -
.github/workflows/build.yml | 77 +++++++------------
.github/workflows/licenses-update.yml | 1 -
.github/workflows/multiOSReleases.yml | 3 -
.github/workflows/push-docker.yml | 1 -
.github/workflows/releaseArtifacts.yml | 1 -
.github/workflows/swagger.yml | 1 -
.github/workflows/testdriver.yml | 1 -
9 files changed, 30 insertions(+), 72 deletions(-)
diff --git a/.github/config/.files.yaml b/.github/config/.files.yaml
index 4e335b350..5ee241863 100644
--- a/.github/config/.files.yaml
+++ b/.github/config/.files.yaml
@@ -1,22 +1,14 @@
build: &build
- build.gradle
- - app/core/build.gradle
- - app/common/build.gradle
- - app/proprietary/build.gradle
+ - app/(common|core|proprietary)/build.gradle
app: &app
- - app/core/src/main/java/**
- - app/common/src/main/java/**
- - app/proprietary/src/main/java/**
+ - app/(common|core|proprietary)/src/main/java/**
openapi: &openapi
- build.gradle
- - app/core/build.gradle
- - app/core/src/main/java/**
- - app/common/build.gradle
- - app/common/src/main/java/**
- - app/proprietary/build.gradle
- - app/proprietary/src/main/java/**
+ - app/(common|core|proprietary)/build.gradle
+ - app/(common|core|proprietary)/src/main/java/**
project: &project
- app/**
diff --git a/.github/workflows/PR-Demo-Comment-with-react.yml b/.github/workflows/PR-Demo-Comment-with-react.yml
index 6375f73d2..877a78524 100644
--- a/.github/workflows/PR-Demo-Comment-with-react.yml
+++ b/.github/workflows/PR-Demo-Comment-with-react.yml
@@ -180,7 +180,6 @@ jobs:
with:
java-version: "17"
distribution: "temurin"
- cache: gradle
- name: Run Gradle Command
run: |
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 126c82221..d5b637899 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -11,6 +11,24 @@ permissions:
contents: read
jobs:
+ files-changed:
+ name: detect what files changed
+ runs-on: ubuntu-latest
+ timeout-minutes: 3
+ # Map a step output to a job output
+ outputs:
+ build: ${{ steps.changes.outputs.build }}
+ app: ${{ steps.changes.outputs.app }}
+ project: ${{ steps.changes.outputs.project }}
+ openapi: ${{ steps.changes.outputs.openapi }}
+ steps:
+ - uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e # v2
+
+ - name: Check for file changes
+ uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
+ id: changes
+ with:
+ filters: ".github/config/.files.yaml"
build:
runs-on: ubuntu-latest
@@ -38,7 +56,6 @@ jobs:
with:
java-version: ${{ matrix.jdk-version }}
distribution: "temurin"
- cache: gradle
- name: Setup Gradle
uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
@@ -95,7 +112,8 @@ jobs:
if-no-files-found: warn
check-generateOpenApiDocs:
- needs: build
+ if: needs.files-changed.outputs.openapi == 'true'
+ needs: [files-changed, build]
runs-on: ubuntu-latest
steps:
- name: Harden Runner
@@ -106,37 +124,27 @@ jobs:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- - name: Filter for integration changes
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: files
- with:
- filters: ".github/config/.files.yaml"
-
- name: Set up JDK 17
- if: ${{ steps.files.outputs.openapi == 'true' }}
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
with:
java-version: "17"
distribution: "temurin"
- cache: gradle
- name: Setup Gradle
- if: ${{ steps.files.outputs.openapi == 'true' }}
uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
- name: Generate OpenAPI documentation
- if: ${{ steps.files.outputs.openapi == 'true' }}
run: ./gradlew :stirling-pdf:generateOpenApiDocs
- name: Upload OpenAPI Documentation
- if: ${{ steps.files.outputs.openapi == 'true' }}
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: openapi-docs
path: ./SwaggerDoc.json
check-licence:
- needs: build
+ if: needs.files-changed.outputs.build == 'true'
+ needs: [files-changed, build]
runs-on: ubuntu-latest
steps:
- name: Harden Runner
@@ -147,22 +155,13 @@ jobs:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- - name: Filter for integration changes
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: files
- with:
- filters: ".github/config/.files.yaml"
-
- name: Set up JDK 17
- if: ${{ steps.files.outputs.build == 'true' }}
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
with:
java-version: "17"
distribution: "temurin"
- cache: gradle
- name: check the licenses for compatibility
- if: ${{ steps.files.outputs.build == 'true' }}
run: ./gradlew clean checkLicense
- name: FAILED - check the licenses for compatibility
@@ -175,6 +174,8 @@ jobs:
retention-days: 3
docker-compose-tests:
+ if: needs.files-changed.outputs.project == 'true'
+ needs: files-changed
# if: github.event_name == 'push' && github.ref == 'refs/heads/main' ||
# (github.event_name == 'pull_request' &&
# contains(github.event.pull_request.labels.*.name, 'licenses') == false &&
@@ -200,32 +201,21 @@ jobs:
- name: Checkout Repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- - name: Filter for integration changes
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: files
- with:
- filters: ".github/config/.files.yaml"
-
- name: Set up Java 17
- if: ${{ steps.files.outputs.project == 'true' }}
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
with:
java-version: "17"
distribution: "temurin"
- cache: gradle
- name: Set up Docker Buildx
- if: ${{ steps.files.outputs.project == 'true' }}
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Install Docker Compose
- if: ${{ steps.files.outputs.project == 'true' }}
run: |
sudo curl -SL "https://github.com/docker/compose/releases/download/v2.37.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Set up Python
- if: ${{ steps.files.outputs.project == 'true' }}
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: "3.12"
@@ -233,12 +223,10 @@ jobs:
cache-dependency-path: ./testing/cucumber/requirements.txt
- name: Pip requirements
- if: ${{ steps.files.outputs.project == 'true' }}
run: |
pip install --require-hashes -r ./testing/cucumber/requirements.txt
- name: Run Docker Compose Tests
- if: ${{ steps.files.outputs.project == 'true' }}
run: |
chmod +x ./testing/test_webpages.sh
chmod +x ./testing/test.sh
@@ -246,8 +234,8 @@ jobs:
./testing/test.sh
test-build-docker-images:
- if: github.event_name == 'pull_request'
- needs: [build, check-generateOpenApiDocs, check-licence]
+ if: github.event_name == 'pull_request' && needs.files-changed.outputs.project == 'true'
+ needs: [files-changed, build, check-generateOpenApiDocs, check-licence]
runs-on: ubuntu-latest
strategy:
fail-fast: false
@@ -262,44 +250,31 @@ jobs:
- name: Checkout Repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- - name: Filter for integration changes
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: files
- with:
- filters: ".github/config/.files.yaml"
-
- name: Set up JDK 17
- if: ${{ steps.files.outputs.project == 'true' }}
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
with:
java-version: "17"
distribution: "temurin"
- cache: gradle
- name: Set up Gradle
- if: ${{ steps.files.outputs.project == 'true' }}
uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
with:
gradle-version: 8.14
- name: Build application
- if: ${{ steps.files.outputs.project == 'true' }}
run: ./gradlew clean build
env:
DISABLE_ADDITIONAL_FEATURES: true
STIRLING_PDF_DESKTOP_UI: false
- name: Set up QEMU
- if: ${{ steps.files.outputs.project == 'true' }}
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
- name: Set up Docker Buildx
- if: ${{ steps.files.outputs.project == 'true' }}
id: buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Build ${{ matrix.docker-rev }}
- if: ${{ steps.files.outputs.project == 'true' }}
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
builder: ${{ steps.buildx.outputs.name }}
diff --git a/.github/workflows/licenses-update.yml b/.github/workflows/licenses-update.yml
index 4c6188476..23c15816f 100644
--- a/.github/workflows/licenses-update.yml
+++ b/.github/workflows/licenses-update.yml
@@ -40,7 +40,6 @@ jobs:
with:
java-version: "17"
distribution: "temurin"
- cache: gradle
- name: Setup Gradle
uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
diff --git a/.github/workflows/multiOSReleases.yml b/.github/workflows/multiOSReleases.yml
index 014410193..3cac33e1f 100644
--- a/.github/workflows/multiOSReleases.yml
+++ b/.github/workflows/multiOSReleases.yml
@@ -32,7 +32,6 @@ jobs:
with:
distribution: 'temurin'
java-version: '21'
- cache: gradle
# ✅ Get version from Gradle
- name: Get version number
@@ -72,7 +71,6 @@ jobs:
with:
java-version: "21"
distribution: "temurin"
- cache: gradle
- uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
with:
@@ -161,7 +159,6 @@ jobs:
with:
java-version: "21"
distribution: "temurin"
- cache: gradle
- uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
with:
diff --git a/.github/workflows/push-docker.yml b/.github/workflows/push-docker.yml
index f31e5c9b7..432925f1a 100644
--- a/.github/workflows/push-docker.yml
+++ b/.github/workflows/push-docker.yml
@@ -29,7 +29,6 @@ jobs:
with:
java-version: "17"
distribution: "temurin"
- cache: gradle
- uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
with:
diff --git a/.github/workflows/releaseArtifacts.yml b/.github/workflows/releaseArtifacts.yml
index 3294c7246..701bb678e 100644
--- a/.github/workflows/releaseArtifacts.yml
+++ b/.github/workflows/releaseArtifacts.yml
@@ -34,7 +34,6 @@ jobs:
with:
java-version: "17"
distribution: "temurin"
- cache: gradle
- uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
with:
diff --git a/.github/workflows/swagger.yml b/.github/workflows/swagger.yml
index 97c4ffa0e..463736b65 100644
--- a/.github/workflows/swagger.yml
+++ b/.github/workflows/swagger.yml
@@ -25,7 +25,6 @@ jobs:
with:
java-version: "17"
distribution: "temurin"
- cache: gradle
- uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
diff --git a/.github/workflows/testdriver.yml b/.github/workflows/testdriver.yml
index c0e6f589c..85c93a244 100644
--- a/.github/workflows/testdriver.yml
+++ b/.github/workflows/testdriver.yml
@@ -24,7 +24,6 @@ jobs:
with:
java-version: '17'
distribution: 'temurin'
- cache: gradle
- name: Setup Gradle
uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
From be7780d7f812cbc73be4d5aae1abb875936302e7 Mon Sep 17 00:00:00 2001
From: Angel <41905618+TheShadowAngel@users.noreply.github.com>
Date: Mon, 21 Jul 2025 03:41:27 +0700
Subject: [PATCH 15/25] Update messages_ru_RU.properties (#3967)
Updated Russian translation
Co-authored-by: Ludy
---
.../main/resources/messages_ru_RU.properties | 346 +++++++++---------
1 file changed, 173 insertions(+), 173 deletions(-)
diff --git a/app/core/src/main/resources/messages_ru_RU.properties b/app/core/src/main/resources/messages_ru_RU.properties
index 819d415cd..8663ec404 100644
--- a/app/core/src/main/resources/messages_ru_RU.properties
+++ b/app/core/src/main/resources/messages_ru_RU.properties
@@ -221,7 +221,7 @@ error.fileNotFound=Файл с идентификатором: {0} не найд
# Database and configuration messages
error.noBackupScripts=Сценарий резервного копирования не найден
error.unsupportedProvider={0} в настоящее время не поддерживается.
-error.pathTraversalDetected=Path traversal detected for security reasons.
+error.pathTraversalDetected=Обнаружено пересечение пути по соображениям безопасности.
# Validation messages
error.invalidArgument=Недопустимый аргумент: {0}
@@ -439,8 +439,8 @@ adminUserSettings.activeUsers=Активные пользователи:
adminUserSettings.disabledUsers=Отключенные пользователи:
adminUserSettings.totalUsers=Всего пользователей:
adminUserSettings.lastRequest=Последний запрос
-adminUserSettings.usage=View Usage
-adminUserSettings.teams=View/Edit Teams
+adminUserSettings.usage=Просмотр использования
+adminUserSettings.teams=Просмотр/редактирование групп
adminUserSettings.team=Группа
adminUserSettings.manageTeams=Управление группами
adminUserSettings.createTeam=Создать группу
@@ -454,34 +454,34 @@ adminUserSettings.teamHidden=Скрытая
adminUserSettings.totalMembers=Общее количество участников
adminUserSettings.confirmDeleteTeam=Вы уверены, что хотите удалить эту группу?
-teamCreated=Team created successfully
-teamExists=A team with that name already exists
-teamNameExists=Another team with that name already exists
-teamNotFound=Team not found
-teamDeleted=Team deleted
-teamHasUsers=Cannot delete a team with users assigned
-teamRenamed=Team renamed successfully
+teamCreated=Группа успешно создана
+teamExists=Группа с таким названием уже существует
+teamNameExists=Другая группа с таким названием уже существует
+teamNotFound=Группа не найдена
+teamDeleted=Группа удалена
+teamHasUsers=Не удается удалить группу с назначенными пользователями
+teamRenamed=Команда успешно переименована
# Team user management
-team.addUser=Add User to Team
-team.selectUser=Select User
-team.warning.moveUser=Warning: This will move the user from "{0}" team to "{1}" team. Are you sure?
-team.confirm.moveUser=Are you sure you want to move this user from "{0}" team to "{1}" team?
-team.userAdded=User successfully added to team
-team.back=Back to Teams
-team.internal=Internal Team
-team.internalTeamNotAccessible=The Internal team is a system team and cannot be accessed
-team.cannotMoveInternalUsers=Users in the Internal team cannot be moved to other teams
-team.hidden=Hidden
-team.name=Team Name
-team.totalMembers=Total Members
-team.members=Members
-team.username=Username
-team.role=Role
-team.status=Status
-team.enabled=Enabled
-team.disabled=Disabled
-team.noMembers=This team has no members yet.
+team.addUser=Добавить пользователя в группу
+team.selectUser=Выбрать пользователя
+team.warning.moveUser=Внимание: Это приведет к перемещению пользователя из группы "{0}" в группу "{1}". Вы уверены?
+team.confirm.moveUser=Вы уверены, что хотите перевести этого пользователя из группы "{0}" в группу "{1}"?
+team.userAdded=Пользователь успешно добавлен в группу
+team.back=Назад в группы
+team.internal=Внутренняя группа
+team.internalTeamNotAccessible=Внутренняя группа - это системная группа, и доступ к ней невозможен
+team.cannotMoveInternalUsers=Пользователи из внутренней группы не могут быть переведены в другие группы
+team.hidden=Скрытая
+team.name=Имя группы
+team.totalMembers=Общее количество участников
+team.members=Участники
+team.username=Имя пользователя
+team.role=Роль
+team.status=Статус
+team.enabled=Включен
+team.disabled=Отключен
+team.noMembers=В этой команде пока нет участников.
@@ -565,16 +565,16 @@ split.tags=операции со страницами,разделение,мн
home.rotate.title=Повернуть
home.rotate.desc=Легко поворачивайте ваши PDF-файлы.
-rotate.tags=серверная часть
+rotate.tags=повернуть,наклонить
home.imageToPdf.title=Изображение в PDF
home.imageToPdf.desc=Преобразование изображения (PNG, JPEG, GIF) в PDF.
-imageToPdf.tags=конвертация,изображение,jpg,картинка,фото
+imageToPdf.tags=png,jpeg,gif,конвертация,изображение,картинка,фото
home.pdfToImage.title=PDF в изображение
home.pdfToImage.desc=Преобразование PDF в изображение (PNG, JPEG, GIF).
-pdfToImage.tags=конвертация,изображение,jpg,картинка,фото
+pdfToImage.tags=png,jpeg,gif,конвертация,изображение,картинка,фото
home.pdfOrganiser.title=Организация
home.pdfOrganiser.desc=Удаление/переупорядочивание страниц в любом порядке
@@ -587,7 +587,7 @@ addImage.tags=изображение,jpg,картинка,фото
home.attachments.title=Добавлять вложения
home.attachments.desc=Добавление или удаление встроенных файлов (вложений) в PDF-файл или из него
-attachments.tags=embed,attach,file,attachment,attachments
+attachments.tags=вставлять,прикреплять,файл,вложение,вложения
home.watermark.title=Добавить водяной знак
home.watermark.desc=Добавьте собственный водяной знак в ваш PDF-документ.
@@ -615,8 +615,8 @@ home.compressPdfs.desc=Сжимайте PDF-файлы для уменьшени
compressPdfs.tags=сжатие,маленький,крошечный
home.unlockPDFForms.title=Разблокировать PDF-формы
-home.unlockPDFForms.desc=Удалите свойство "только для чтения" для полей формы в PDF-документа.
-unlockPDFForms.tags=remove,delete,form,field,readonly
+home.unlockPDFForms.desc=Удалите свойство 'только для чтения' для полей формы в PDF-документа.
+unlockPDFForms.tags=удалить,форма,поле,только для чтения
home.changeMetadata.title=Изменить метаданные
home.changeMetadata.desc=Изменить/удалить/добавить метаданные из PDF-документа
@@ -644,15 +644,15 @@ PDFToWord.tags=doc,docx,odt,word,преобразование,формат,ко
home.PDFToPresentation.title=PDF в презентацию
home.PDFToPresentation.desc=Преобразование PDF в форматы презентаций (PPT, PPTX и ODP)
-PDFToPresentation.tags=слайды,показ,офис,microsoft
+PDFToPresentation.tags=слайды,презентация,офис,microsoft
home.PDFToText.title=PDF в RTF (текст)
home.PDFToText.desc=Преобразование PDF в текстовый или RTF формат
-PDFToText.tags=richformat,richtextformat,rich text format
+PDFToText.tags=rtf,richformat,richtextformat,rich text format
home.PDFToHTML.title=PDF в HTML
home.PDFToHTML.desc=Преобразование PDF в формат HTML
-PDFToHTML.tags=веб-контент,браузерный формат
+PDFToHTML.tags=html,веб-контент,браузерный формат
home.PDFToXML.title=PDF в XML
@@ -733,16 +733,16 @@ sanitizePdf.tags=очистка,безопасность,защита,удале
home.URLToPDF.title=URL/веб-сайт в PDF
home.URLToPDF.desc=Преобразует любой http(s)URL в PDF
-URLToPDF.tags=веб-захват,сохранение страницы,веб в док,архивация
+URLToPDF.tags=url,веб-захват,сохранение страницы,веб в док,архивация
home.HTMLToPDF.title=HTML в PDF
home.HTMLToPDF.desc=Преобразует любой HTML-файл или zip в PDF
-HTMLToPDF.tags=разметка,веб-контент,преобразование,конвертация
+HTMLToPDF.tags=html,разметка,веб-контент,преобразование,конвертация
#eml-to-pdf
home.EMLToPDF.title=Email в PDF
home.EMLToPDF.desc=Преобразует файлы электронной почты (EML) в формат PDF, включая заголовки, основную часть и встроенные изображения
-EMLToPDF.tags=email,conversion,eml,message,transformation,convert,mail
+EMLToPDF.tags=eml,email,сообщение,преобразование,конвертация,почта,письмо
EMLToPDF.title=Email в PDF
EMLToPDF.header=Email в PDF
@@ -752,17 +752,17 @@ EMLToPDF.downloadHtmlHelp=Это позволит вам просмотреть
EMLToPDF.includeAttachments=Включать вложения в формате PDF
EMLToPDF.maxAttachmentSize=Максимальный размер вложения (MB)
EMLToPDF.help=Преобразует файлы электронной почты (EML) в формат PDF, включая заголовки, основную часть и встроенные изображения
-EMLToPDF.troubleshootingTip1=Электронная почта в формате HTML является более надежным процессом, поэтому при пакетной обработке рекомендуется сохранять оба
+EMLToPDF.troubleshootingTip1=Электронная почта в формате HTML является более надежным процессом, поэтому при пакетной обработке рекомендуется сохранять оба формата
EMLToPDF.troubleshootingTip2=При небольшом количестве электронных писем, если формат PDF искажен, вы можете загрузить HTML и переопределить часть проблемного HTML/CSS-кода.
-EMLToPDF.troubleshootingTip3=Embeddings, however, do not work with HTMLs
+EMLToPDF.troubleshootingTip3=Однако, встраивания не работают с HTMLs
home.MarkdownToPDF.title=Markdown в PDF
home.MarkdownToPDF.desc=Преобразует любой файл Markdown в PDF
-MarkdownToPDF.tags=разметка,веб-контент,преобразование,конвертация
+MarkdownToPDF.tags=разметка,веб-контент,преобразование,конвертация,md
home.PDFToMarkdown.title=PDF to Markdown
home.PDFToMarkdown.desc=Преобразует любой PDF-файл в формат Markdown
-PDFToMarkdown.tags=markup,web-content,transformation,convert,md
+PDFToMarkdown.tags=разметка,веб-контент,преобразование,конвертацтя,md
home.getPdfInfo.title=Получить ВСЮ информацию о PDF
home.getPdfInfo.desc=Собирает всю возможную информацию о PDF
@@ -781,11 +781,11 @@ PdfToSinglePage.tags=одна страница
home.showJS.title=Показать Javascript
home.showJS.desc=Ищет и отображает любой JS, внедрённый в PDF
-showJS.tags=JS
+showJS.tags=JS,Javascript
home.autoRedact.title=Автоматическое редактирование
home.autoRedact.desc=Автоматически закрашивает (чернит) текст в PDF на основе входного текста
-autoRedact.tags=Редактирование,Скрытие,зачернение,чёрный,маркер,скрытый
+autoRedact.tags=Редактирование,Скрытие,зачернение,чёрный,маркер,скрытый,автоматический
home.redact.title=Ручное редактирование
home.redact.desc=Редактирует PDF на основе выбранного текста, нарисованных форм и/или выбранных страниц
@@ -798,7 +798,7 @@ tableExtraxt.tags=CSV,Извлечение таблиц,извлечение,к
home.autoSizeSplitPDF.title=Авторазделение по размеру/количеству
home.autoSizeSplitPDF.desc=Разделяет один PDF на несколько документов на основе размера, количества страниц или количества документов
-autoSizeSplitPDF.tags=pdf,разделение,документ,организация
+autoSizeSplitPDF.tags=разделение,документ,организация
home.overlay-pdfs.title=Наложение PDF
@@ -807,25 +807,25 @@ overlay-pdfs.tags=Наложение
home.split-by-sections.title=Разделить PDF по секциям
home.split-by-sections.desc=Разделяет каждую страницу PDF на меньшие горизонтальные и вертикальные секции
-split-by-sections.tags=Разделение по секциям,Разделить,Настроить
+split-by-sections.tags=Разделение по секциям,Разделить
home.AddStampRequest.title=Добавить штамп в PDF
home.AddStampRequest.desc=Добавляет текстовые или графические штампы в указанных местах
-AddStampRequest.tags=Штамп,Добавить изображение,центрировать изображение,Водяной знак,PDF,Встраивание,Настройка
+AddStampRequest.tags=Штамп,Добавить изображение,центрировать изображение,Водяной знак,Встраивание
home.removeImagePdf.title=Удалить изображение
home.removeImagePdf.desc=Удаляет изображения из PDF для уменьшения размера файла
-removeImagePdf.tags=Удаление изображения,операции со страницами,Серверная часть
+removeImagePdf.tags=Удаление изображения,операции со страницами
home.splitPdfByChapters.title=Разделить PDF по главам
home.splitPdfByChapters.desc=Разделяет PDF на несколько файлов на основе структуры его глав
-splitPdfByChapters.tags=разделение,главы,закладки,организация
+splitPdfByChapters.tags=разделение,главы,закладки,оглавление
home.validateSignature.title=Проверка подписи PDF
home.validateSignature.desc=Проверка цифровых подписей и сертификатов в PDF-документах
-validateSignature.tags=подпись,проверка,валидация,pdf,сертификат,цифровая подпись,Проверка подписи,Проверка сертификата
+validateSignature.tags=подпись,проверка,валидация,сертификат,цифровая подпись,проверка подписи,проверка сертификата
#replace-invert-color
replace-color.title=Замена-Инверсия цвета
@@ -941,7 +941,7 @@ getPdfInfo.title=Получить информацию о PDF
getPdfInfo.header=Получить информацию о PDF
getPdfInfo.submit=Получить информацию
getPdfInfo.downloadJson=Скачать JSON
-getPdfInfo.summary=PDF Summary
+getPdfInfo.summary=Краткое содержание PDF-файла
getPdfInfo.summary.encrypted=Этот PDF-файл зашифрован, поэтому с некоторыми приложениями могут возникнуть проблемы
getPdfInfo.summary.permissions=Этот PDF-файл имеет {0} ограниченные права доступа, которые могут ограничить то, что вы можете с ним делать
getPdfInfo.summary.compliance=Этот PDF-файл соответствует стандарту {0}
@@ -951,18 +951,18 @@ getPdfInfo.summary.encrypted.alert=Зашифрованный PDF-файл - э
getPdfInfo.summary.not.encrypted.alert=Незашифрованный PDF-файл - без защиты паролем
getPdfInfo.summary.permissions.alert=Права доступа ограничены - {0} действия запрещены
getPdfInfo.summary.all.permissions.alert=Полные права доступа
-getPdfInfo.summary.compliance.alert={0} Compliant
-getPdfInfo.summary.no.compliance.alert=No Compliance Standards
-getPdfInfo.summary.security.section=Security Status
-getPdfInfo.section.BasicInfo=Basic Information about the PDF document including file size, page count, and language
-getPdfInfo.section.Metadata=Document metadata including title, author, creation date and other document properties
-getPdfInfo.section.DocumentInfo=Technical details about the PDF document structure and version
-getPdfInfo.section.Compliancy=PDF standards compliance information (PDF/A, PDF/X, etc.)
-getPdfInfo.section.Encryption=Security and encryption details of the document
-getPdfInfo.section.Permissions=Document permission settings that control what actions can be performed
-getPdfInfo.section.Other=Additional document components like bookmarks, layers, and embedded files
-getPdfInfo.section.FormFields=Interactive form fields present in the document
-getPdfInfo.section.PerPageInfo=Detailed information about each page in the document
+getPdfInfo.summary.compliance.alert={0} Совместимый
+getPdfInfo.summary.no.compliance.alert=Не содержит стандартов соответствия
+getPdfInfo.summary.security.section=Уровень безопасности
+getPdfInfo.section.BasicInfo=Основная информация о документе PDF включает: размер файла, количество страниц и язык
+getPdfInfo.section.Metadata=Метаданные документа содержат: название, автора, дату создания и другие свойства документа
+getPdfInfo.section.DocumentInfo=Технические подробности о структуре и версии PDF-документа
+getPdfInfo.section.Compliancy=Информация о соответствии стандартам PDF (PDF/A, PDF/X, и т.д.)
+getPdfInfo.section.Encryption=Сведения о безопасности и шифровании документа
+getPdfInfo.section.Permissions=Настройки разрешений документа, контролирующие, какие действия можно выполнять
+getPdfInfo.section.Other=Дополнительные компоненты документа, такие как закладки, слои и встроенные файлы
+getPdfInfo.section.FormFields=Поля интерактивной формы, присутствующие в документе
+getPdfInfo.section.PerPageInfo=Подробная информация о каждой странице документа
#markdown-to-pdf
@@ -970,7 +970,7 @@ MarkdownToPDF.title=Markdown в PDF
MarkdownToPDF.header=Markdown в PDF
MarkdownToPDF.submit=Преобразовать
MarkdownToPDF.help=В разработке
-MarkdownToPDF.credit=Использует WeasyPrint
+MarkdownToPDF.credit=Этот сервис использует WeasyPrint для преобразования файлов
#pdf-to-markdown
@@ -983,7 +983,7 @@ PDFToMarkdown.submit=Преобразовать
URLToPDF.title=URL в PDF
URLToPDF.header=URL в PDF
URLToPDF.submit=Преобразовать
-URLToPDF.credit=Использует WeasyPrint
+URLToPDF.credit=Этот сервис использует WeasyPrint для преобразования файлов
#html-to-pdf
@@ -991,7 +991,7 @@ HTMLToPDF.title=HTML в PDF
HTMLToPDF.header=HTML в PDF
HTMLToPDF.help=Принимает HTML-файлы и ZIP-архивы, содержащие html/css/изображения и т.д.
HTMLToPDF.submit=Преобразовать
-HTMLToPDF.credit=Использует WeasyPrint
+HTMLToPDF.credit=Этот сервис использует WeasyPrint для преобразования файлов
HTMLToPDF.zoom=Уровень масштабирования для отображения веб-сайта.
HTMLToPDF.pageWidth=Ширина страницы в сантиметрах. (Пусто для значения по умолчанию)
HTMLToPDF.pageHeight=Высота страницы в сантиметрах. (Пусто для значения по умолчанию)
@@ -1047,7 +1047,7 @@ addPageNumbers.selectText.4=Начальный номер
addPageNumbers.selectText.5=Страницы для нумерации
addPageNumbers.selectText.6=Пользовательский текст
addPageNumbers.customTextDesc=Пользовательский текст
-addPageNumbers.numberPagesDesc=Какие страницы нумеровать, по умолчанию 'все', также принимает 1-5 или 2,5,9 и т.д.
+addPageNumbers.numberPagesDesc=Какие страницы нумеровать, по умолчанию 'все', также принимаются значения 1-5 или 2,5,9 и т.д.
addPageNumbers.customNumberDesc=По умолчанию {n}, также принимает 'Страница {n} из {total}', 'Текст-{n}', '{filename}-{n}'
addPageNumbers.submit=Добавить номера страниц
@@ -1083,7 +1083,7 @@ autoSplitPDF.selectText.3=Загрузите один большой отска
autoSplitPDF.selectText.4=Разделительные страницы автоматически обнаруживаются и удаляются, гарантируя аккуратный конечный документ.
autoSplitPDF.formPrompt=Отправить PDF, содержащий разделители страниц Stirling-PDF:
autoSplitPDF.duplexMode=Двусторонний режим (сканирование с двух сторон)
-autoSplitPDF.dividerDownload2=Скачать 'Автоматический разделитель (с инструкциями).pdf'
+autoSplitPDF.dividerDownload2=Скачать 'Auto Splitter Divider (with instructions).pdf'
autoSplitPDF.submit=Отправить
@@ -1253,7 +1253,7 @@ fileToPDF.submit=Преобразовать в PDF
compress.title=Сжать
compress.header=Сжать PDF
compress.credit=Этот сервис использует qpdf для сжатия/оптимизации PDF.
-compress.grayscale.label=Применить шкалу серого для сжатия
+compress.grayscale.label=Примените оттенки серого для сжатия
compress.selectText.1=Параметры сжатия
compress.selectText.1.1=1-3 сжатие PDF, 4-6 лёгкое сжатие изображений, 7-9 интенсивное сжатие изображений (значительно снижает качество изображений)
compress.selectText.2=Уровень оптимизации:
@@ -1265,7 +1265,7 @@ compress.submit=Сжать
#Add image
addImage.title=Добавить изображение
addImage.header=Добавить изображение в PDF
-addImage.everyPage=Каждая страница?
+addImage.everyPage=На каждую страницу?
addImage.upload=Добавить изображение
addImage.submit=Добавить изображение
@@ -1341,7 +1341,7 @@ decrypt.serverError=Ошибка сервера при расшифровке: {
decrypt.success=Файл успешно расшифрован.
#multiTool-advert
-multiTool-advert.message=Эта функция также доступна на нашей странице мультиинструмента. Попробуйте её для улучшенного постраничного интерфейса и дополнительных возможностей!
+multiTool-advert.message=Эта функция также доступна на нашей странице мультиинструментов. Ознакомьтесь с расширенным постраничным интерфейсом и дополнительными функциями!
#view pdf
viewPdf.title=Смотреть/Редактировать PDF
@@ -1486,7 +1486,7 @@ changeMetadata.keywords=Ключевые слова:
changeMetadata.modDate=Дата изменения (yyyy/MM/dd HH:mm:ss):
changeMetadata.producer=Производитель:
changeMetadata.subject=Тема:
-changeMetadata.trapped=Trapped:
+changeMetadata.trapped=Захвачен:
changeMetadata.selectText.4=Другие метаданные:
changeMetadata.selectText.5=Добавить пользовательскую запись метаданных
changeMetadata.submit=Изменить
@@ -1614,15 +1614,15 @@ survey.please=Пожалуйста, примите участие в нашем
survey.disabled=(Всплывающее окно опроса будет отключено в следующих обновлениях, но будет доступно в нижней части страницы)
survey.button=Пройти опрос
survey.dontShowAgain=Больше не показывать
-survey.meeting.1=If you're using Stirling PDF at work, we'd love to speak to you. We're offering technical support sessions in exchange for a 15 minute user discovery session.
-survey.meeting.2=This is a chance to:
-survey.meeting.3=Get help with deployment, integrations, or troubleshooting
-survey.meeting.4=Provide direct feedback on performance, edge cases, and feature gaps
-survey.meeting.5=Help us refine Stirling PDF for real-world enterprise use
-survey.meeting.6=If you're interested, you can book time with our team directly. (English speaking only)
-survey.meeting.7=Looking forward to digging into your use cases and making Stirling PDF even better!
-survey.meeting.notInterested=Not a business and/or interested in a meeting?
-survey.meeting.button=Book meeting
+survey.meeting.1=Если вы используете Stirling PDF в своей работе, мы будем рады с вами пообщаться. Мы предлагаем сеансы технической поддержки в обмен на 15-минутный сеанс знакомства с пользователями.
+survey.meeting.2=Это возможность:
+survey.meeting.3=Получить помощь в развертывании, интеграции или устранении неполадок
+survey.meeting.4=Предоставляйте прямые отзывы о производительности, передовых решениях и недостатках в функциях
+survey.meeting.5=Помогите нам усовершенствовать Stirling PDF для использования в реальных корпоративных условиях
+survey.meeting.6=Если вы заинтересованы, вы можете забронировать время у нашей команды напрямую. (Только для говорящих по-английски)
+survey.meeting.7=С нетерпением ждем возможности изучить ваши варианты использования и сделать Stirling PDF еще лучше!
+survey.meeting.notInterested=Не занимаетесь бизнесом и/или не заинтересованы во встрече?
+survey.meeting.button=Забронировать встречу
#error
error.sorry=Извините за неполадки!
@@ -1664,7 +1664,7 @@ fileChooser.dragAndDropPDF=Перетащите PDF-файл
fileChooser.dragAndDropImage=Перетащите файл изображения
fileChooser.hoveredDragAndDrop=Перетащите файл(ы) сюда
fileChooser.extractPDF=Извлечение...
-fileChooser.addAttachments=drag & drop attachments here
+fileChooser.addAttachments=Перетащите вложения сюда
#release notes
releases.footer=Релизы
@@ -1709,20 +1709,20 @@ validateSignature.cert.selfSigned=Самоподписанный
validateSignature.cert.bits=бит
# Audit Dashboard
-audit.dashboard.title=Audit Dashboard
-audit.dashboard.systemStatus=Audit System Status
-audit.dashboard.status=Status
-audit.dashboard.enabled=Enabled
-audit.dashboard.disabled=Disabled
-audit.dashboard.currentLevel=Current Level
-audit.dashboard.retentionPeriod=Retention Period
-audit.dashboard.days=days
-audit.dashboard.totalEvents=Total Events
+audit.dashboard.title=Панель аудита
+audit.dashboard.systemStatus=Состояние системы аудита
+audit.dashboard.status=Состояние
+audit.dashboard.enabled=Включено
+audit.dashboard.disabled=Выключено
+audit.dashboard.currentLevel=Текущий уровень
+audit.dashboard.retentionPeriod=Срок хранения
+audit.dashboard.days=дней
+audit.dashboard.totalEvents=Общее количество событий
# Audit Dashboard Tabs
-audit.dashboard.tab.dashboard=Dashboard
-audit.dashboard.tab.events=Audit Events
-audit.dashboard.tab.export=Export
+audit.dashboard.tab.dashboard=Панель инструментов
+audit.dashboard.tab.events=Аудит событий
+audit.dashboard.tab.export=Экспорт
# Dashboard Charts
audit.dashboard.eventsByType=События по типу
audit.dashboard.eventsByUser=События по пользователю
@@ -1732,88 +1732,88 @@ audit.dashboard.period.30days=30 дней
audit.dashboard.period.90days=90 дней
# Events Tab
-audit.dashboard.auditEvents=Audit Events
-audit.dashboard.filter.eventType=Event Type
-audit.dashboard.filter.allEventTypes=All event types
-audit.dashboard.filter.user=User
-audit.dashboard.filter.userPlaceholder=Filter by user
-audit.dashboard.filter.startDate=Start Date
-audit.dashboard.filter.endDate=End Date
-audit.dashboard.filter.apply=Apply Filters
-audit.dashboard.filter.reset=Reset Filters
+audit.dashboard.auditEvents=Аудит событий
+audit.dashboard.filter.eventType=Тип события
+audit.dashboard.filter.allEventTypes=Все типы событий
+audit.dashboard.filter.user=Пользователь
+audit.dashboard.filter.userPlaceholder=Фильтровать по пользователю
+audit.dashboard.filter.startDate=Дата начала
+audit.dashboard.filter.endDate=Дата окончания
+audit.dashboard.filter.apply=Применить фильтры
+audit.dashboard.filter.reset=Сбросить фильтры
# Table Headers
audit.dashboard.table.id=ID
-audit.dashboard.table.time=Time
-audit.dashboard.table.user=User
-audit.dashboard.table.type=Type
-audit.dashboard.table.details=Details
-audit.dashboard.table.viewDetails=View Details
+audit.dashboard.table.time=Время
+audit.dashboard.table.user=Пользователь
+audit.dashboard.table.type=Тип
+audit.dashboard.table.details=Подробности
+audit.dashboard.table.viewDetails=Просмотр подробной информации
# Pagination
-audit.dashboard.pagination.show=Show
-audit.dashboard.pagination.entries=entries
-audit.dashboard.pagination.pageInfo1=Page
-audit.dashboard.pagination.pageInfo2=of
-audit.dashboard.pagination.totalRecords=Total records:
+audit.dashboard.pagination.show=Показать
+audit.dashboard.pagination.entries=записи
+audit.dashboard.pagination.pageInfo1=Страница
+audit.dashboard.pagination.pageInfo2=из
+audit.dashboard.pagination.totalRecords=Всего записей:
# Modal
-audit.dashboard.modal.eventDetails=Event Details
+audit.dashboard.modal.eventDetails=Подробности события
audit.dashboard.modal.id=ID
-audit.dashboard.modal.user=User
-audit.dashboard.modal.type=Type
-audit.dashboard.modal.time=Time
-audit.dashboard.modal.data=Data
+audit.dashboard.modal.user=Пользователь
+audit.dashboard.modal.type=Тип
+audit.dashboard.modal.time=Время
+audit.dashboard.modal.data=Дата
# Export Tab
-audit.dashboard.export.title=Export Audit Data
-audit.dashboard.export.format=Export Format
+audit.dashboard.export.title=Экспорт данных аудита
+audit.dashboard.export.format=Формат экспорта
audit.dashboard.export.csv=CSV (Comma Separated Values)
audit.dashboard.export.json=JSON (JavaScript Object Notation)
-audit.dashboard.export.button=Export Data
-audit.dashboard.export.infoTitle=Export Information
-audit.dashboard.export.infoDesc1=The export will include all audit events matching the selected filters. For large datasets, the export may take a few moments to generate.
-audit.dashboard.export.infoDesc2=Exported data will include:
-audit.dashboard.export.infoItem1=Event ID
-audit.dashboard.export.infoItem2=User
-audit.dashboard.export.infoItem3=Event Type
-audit.dashboard.export.infoItem4=Timestamp
-audit.dashboard.export.infoItem5=Event Data
+audit.dashboard.export.button=Экспортировать данные
+audit.dashboard.export.infoTitle=Экспорт информации
+audit.dashboard.export.infoDesc1=Экспорт будет включать в себя все события аудита, соответствующие выбранным фильтрам. Для создания больших массивов данных экспорт может занять несколько минут.
+audit.dashboard.export.infoDesc2=Экспортируемые данные будут включать:
+audit.dashboard.export.infoItem1=Идентификатор события
+audit.dashboard.export.infoItem2=Пользователь
+audit.dashboard.export.infoItem3=Тип события
+audit.dashboard.export.infoItem4=Время события
+audit.dashboard.export.infoItem5=Данные события
# JavaScript i18n keys
-audit.dashboard.js.noEventsFound=No audit events found matching the current filters
-audit.dashboard.js.errorLoading=Error loading data:
-audit.dashboard.js.errorRendering=Error rendering table:
-audit.dashboard.js.loadingPage=Loading page
+audit.dashboard.js.noEventsFound=События аудита, соответствующие текущим фильтрам, не найдены.
+audit.dashboard.js.errorLoading=Ошибка загрузки данных:
+audit.dashboard.js.errorRendering=Ошибка рендеринга таблицы:
+audit.dashboard.js.loadingPage=Загрузка страницы
####################
# Cookie banner #
####################
-cookieBanner.popUp.title=How we use Cookies
-cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love.
-cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly.
-cookieBanner.popUp.acceptAllBtn=Okay
-cookieBanner.popUp.acceptNecessaryBtn=No Thanks
-cookieBanner.popUp.showPreferencesBtn=Manage preferences
-cookieBanner.preferencesModal.title=Consent Preferences Center
-cookieBanner.preferencesModal.acceptAllBtn=Accept all
-cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all
-cookieBanner.preferencesModal.savePreferencesBtn=Save preferences
-cookieBanner.preferencesModal.closeIconLabel=Close modal
-cookieBanner.preferencesModal.serviceCounterLabel=Service|Services
-cookieBanner.preferencesModal.subtitle=Cookie Usage
-cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users.
-cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use.
-cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do.
-cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies
-cookieBanner.preferencesModal.necessary.title.2=Always Enabled
-cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off.
-cookieBanner.preferencesModal.analytics.title=Analytics
-cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
+cookieBanner.popUp.title=Как мы используем файлы cookie
+cookieBanner.popUp.description.1=Мы используем файлы cookie и другие технологии, чтобы улучшить работу Stirling PDF для вас, это помогает нам совершенствовать наши инструменты и создавать функции, которые вам понравятся.
+cookieBanner.popUp.description.2=Если вы предпочитаете этого не делать, нажав 'Нет, спасибо', вы активируете только основные файлы cookie, необходимые для бесперебойной работы.
+cookieBanner.popUp.acceptAllBtn=Хорошо
+cookieBanner.popUp.acceptNecessaryBtn=Нет, спасибо
+cookieBanner.popUp.showPreferencesBtn=Управление предпочтениями
+cookieBanner.preferencesModal.title=Центр согласия предпочтений
+cookieBanner.preferencesModal.acceptAllBtn=Принять все
+cookieBanner.preferencesModal.acceptNecessaryBtn=Отклонить все
+cookieBanner.preferencesModal.savePreferencesBtn=Сохранить предпочтения
+cookieBanner.preferencesModal.closeIconLabel=Закрыть модальное окно
+cookieBanner.preferencesModal.serviceCounterLabel=Сервис|Услуги
+cookieBanner.preferencesModal.subtitle=Использование файлов cookie
+cookieBanner.preferencesModal.description.1=Stirling PDF использует файлы cookie и аналогичные технологии, чтобы улучшить ваш опыт и понять, как используются наши инструменты. Это помогает нам повышать производительность, разрабатывать функции, которые вам интересны, и обеспечивать постоянную поддержку наших пользователей.
+cookieBanner.preferencesModal.description.2=Stirling PDF не может — и никогда не будет — отслеживать или получать доступ к содержимому используемых вами документов.
+cookieBanner.preferencesModal.description.3=Ваша конфиденциальность и доверие лежат в основе того, что мы делаем.
+cookieBanner.preferencesModal.necessary.title.1=Строго необходимые файлы cookie
+cookieBanner.preferencesModal.necessary.title.2=Всегда включены
+cookieBanner.preferencesModal.necessary.description=Эти файлы cookie необходимы для корректной работы веб-сайта. Они позволяют выполнять основные функции, такие как настройка параметров конфиденциальности, вход в систему и заполнение форм — именно поэтому их нельзя отключить.
+cookieBanner.preferencesModal.analytics.title=Аналитика
+cookieBanner.preferencesModal.analytics.description=Эти файлы cookie помогают нам понять, как используются наши инструменты, чтобы мы могли сосредоточиться на создании функций, которые больше всего ценятся нашим сообществом. Будьте уверены — Stirling PDF не может и никогда не будет отслеживать содержание документов, с которыми вы работаете.
#scannerEffect
-scannerEffect.title=Поддельное сканирование
-scannerEffect.header=Поддельное сканирование
+scannerEffect.title=Эффект сканирования
+scannerEffect.header=Эффект сканирования
scannerEffect.description=Создайте PDF-файл, который выглядит так, как будто он был отсканирован
scannerEffect.selectPDF=Выбрать PDF:
scannerEffect.quality=Качество сканирования
@@ -1825,12 +1825,12 @@ scannerEffect.rotation.none=Нет
scannerEffect.rotation.slight=Незначительный
scannerEffect.rotation.moderate=Умеренный
scannerEffect.rotation.severe=Сильный
-scannerEffect.submit=Создать поддельное сканирование
+scannerEffect.submit=Создать эффект сканирования
#home.scannerEffect
-home.scannerEffect.title=Поддельное сканирование
+home.scannerEffect.title=Эффект сканирования
home.scannerEffect.desc=Создайте PDF-файл, который выглядит так, как будто он был отсканирован
-scannerEffect.tags=scan,simulate,realistic,convert
+scannerEffect.tags=scan,сканирование,симуляция,имитация,реалистично,преобразование
# ScannerEffect advanced settings (frontend)
scannerEffect.advancedSettings=Включите расширенные параметры сканирования
@@ -1849,17 +1849,17 @@ scannerEffect.resolution=Разрешение (DPI)
# Table of Contents Feature
-home.editTableOfContents.title=Редактировать оглавление
+home.editTableOfContents.title=Редактир оглавления
home.editTableOfContents.desc=Добавление или редактирование закладок и оглавления в PDF-документах
-editTableOfContents.tags=bookmarks,toc,navigation,index,table of contents,chapters,sections,outline
-editTableOfContents.title=Редактировать оглавление
+editTableOfContents.tags=закладки, указатель, индекс, оглавление, главы, разделы, схема, навигация, структура
+editTableOfContents.title=Редактор оглавления
editTableOfContents.header=Добавление или редактирование закладок и оглавления в PDF-документах
-editTableOfContents.replaceExisting=Replace existing bookmarks (uncheck to append to existing)
-editTableOfContents.editorTitle=Bookmark Editor
-editTableOfContents.editorDesc=Add and arrange bookmarks below. Click + to add child bookmarks.
-editTableOfContents.addBookmark=Add New Bookmark
-editTableOfContents.desc.1=This tool allows you to add or edit the table of contents (bookmarks) in a PDF document.
-editTableOfContents.desc.2=You can create a hierarchical structure by adding child bookmarks to parent bookmarks.
-editTableOfContents.desc.3=Each bookmark requires a title and target page number.
-editTableOfContents.submit=Apply Table of Contents
+editTableOfContents.replaceExisting=Заменить существующие закладки (снимите флажок, чтобы добавить к существующим)
+editTableOfContents.editorTitle=Редактор закладок
+editTableOfContents.editorDesc=Добавьте и упорядочьте закладки ниже. Нажмите «+», чтобы добавить дочерние закладки.
+editTableOfContents.addBookmark=Добавить новую закладку
+editTableOfContents.desc.1=Этот инструмент позволяет вам добавлять или редактировать оглавление (закладки) в PDF-документе.
+editTableOfContents.desc.2=Вы можете создать иерархическую структуру, добавив дочерние закладки к родительским.
+editTableOfContents.desc.3=Для каждой закладки требуется название и номер целевой страницы.
+editTableOfContents.submit=Применить оглавление
From 7b61bbaced69af98772d9c9c569ba6178007b03f Mon Sep 17 00:00:00 2001
From: "stirlingbot[bot]" <195170888+stirlingbot[bot]@users.noreply.github.com>
Date: Sun, 20 Jul 2025 22:00:51 +0100
Subject: [PATCH 16/25] :globe_with_meridians: Sync Translations + Update
README Progress Table (#3994)
### Description of Changes
This Pull Request was automatically generated to synchronize updates to
translation files and documentation. Below are the details of the
changes made:
#### **1. Synchronization of Translation Files**
- Updated translation files (`messages_*.properties`) to reflect changes
in the reference file `messages_en_GB.properties`.
- Ensured consistency and synchronization across all supported language
files.
- Highlighted any missing or incomplete translations.
#### **2. Update README.md**
- Generated the translation progress table in `README.md`.
- Added a summary of the current translation status for all supported
languages.
- Included up-to-date statistics on translation coverage.
#### **Why these changes are necessary**
- Keeps translation files aligned with the latest reference updates.
- Ensures the documentation reflects the current translation progress.
---
Auto-generated by [create-pull-request][1].
[1]: https://github.com/peter-evans/create-pull-request
---------
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
---
README.md | 2 +-
app/core/src/main/resources/messages_ru_RU.properties | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 8e592bd7a..836762158 100644
--- a/README.md
+++ b/README.md
@@ -143,7 +143,7 @@ Stirling-PDF currently supports 40 languages!
| Portuguese (Português) (pt_PT) |  |
| Portuguese Brazilian (Português) (pt_BR) |  |
| Romanian (Română) (ro_RO) |  |
-| Russian (Русский) (ru_RU) |  |
+| Russian (Русский) (ru_RU) |  |
| Serbian Latin alphabet (Srpski) (sr_LATN_RS) |  |
| Simplified Chinese (简体中文) (zh_CN) |  |
| Slovakian (Slovensky) (sk_SK) |  |
diff --git a/app/core/src/main/resources/messages_ru_RU.properties b/app/core/src/main/resources/messages_ru_RU.properties
index 8663ec404..e414408f1 100644
--- a/app/core/src/main/resources/messages_ru_RU.properties
+++ b/app/core/src/main/resources/messages_ru_RU.properties
@@ -616,7 +616,7 @@ compressPdfs.tags=сжатие,маленький,крошечный
home.unlockPDFForms.title=Разблокировать PDF-формы
home.unlockPDFForms.desc=Удалите свойство 'только для чтения' для полей формы в PDF-документа.
-unlockPDFForms.tags=удалить,форма,поле,только для чтения
+unlockPDFForms.tags=удалить,форма,поле,только для чтения
home.changeMetadata.title=Изменить метаданные
home.changeMetadata.desc=Изменить/удалить/добавить метаданные из PDF-документа
From 04ba3cebabe84cd4ae3a13945d136c196697cec9 Mon Sep 17 00:00:00 2001
From: Ludy
Date: Sun, 20 Jul 2025 23:21:12 +0200
Subject: [PATCH 17/25] fix: correct paths for python scripts and implement
classpath extraction (#3984)
# Description of Changes
- **What was changed**
- Relocated `png_to_webp.py` and `split_photos.py` from `scripts/` to
`app/core/src/main/resources/static/python/`.
- Updated `.github/labeler-config-srvaroa.yml` and
`.pre-commit-config.yaml` to include the new script directory in their
file-matching patterns.
- Added `GeneralUtils.extractScript(String scriptName)` to load Python
scripts from the classpath (`static/python/`), extract them into a
temporary directory at runtime, and return the filesystem path.
- **Why the change was made**
- To fix the Internal Server Error caused by missing script files at
their old locations.
- Ensure the Python helper scripts are packaged inside the JAR/WAR and
reliably accessible when the application runs.
- Only local installations were affected
---
## Checklist
### General
- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings
### Documentation
- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)
### UI Changes (if applicable)
- [ ] Screenshots or videos demonstrating the UI changes are attached
(e.g., as comments or direct attachments in the PR)
### Testing (if applicable)
- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing)
for more details.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
.github/config/.files.yaml | 5 ++-
.github/labeler-config-srvaroa.yml | 8 ++--
.pre-commit-config.yaml | 4 +-
.../configuration/InstallationPathConfig.java | 6 +++
.../software/common/util/GeneralUtils.java | 38 +++++++++++++++++++
app/core/.gitignore | 2 +
.../converters/ConvertImgPDFController.java | 13 +++++--
.../api/misc/ExtractImageScansController.java | 10 +++--
.../resources/static/python}/png_to_webp.py | 0
.../resources/static/python}/split_photos.py | 0
10 files changed, 70 insertions(+), 16 deletions(-)
rename {scripts => app/core/src/main/resources/static/python}/png_to_webp.py (100%)
rename {scripts => app/core/src/main/resources/static/python}/split_photos.py (100%)
diff --git a/.github/config/.files.yaml b/.github/config/.files.yaml
index 5ee241863..2f4f242cb 100644
--- a/.github/config/.files.yaml
+++ b/.github/config/.files.yaml
@@ -11,11 +11,12 @@ openapi: &openapi
- app/(common|core|proprietary)/src/main/java/**
project: &project
- - app/**
+ - app/(common|core|proprietary)/src/(main|test)/java/**
+ - app/(common|core|proprietary)/build.gradle
+ - 'app/(common|core|proprietary)/src/(main|test)/resources/**/!(messages_*.properties|*.md)*'
- exampleYmlFiles/**
- gradle/**
- libs/**
- - scripts/**
- testing/**
- build.gradle
- Dockerfile
diff --git a/.github/labeler-config-srvaroa.yml b/.github/labeler-config-srvaroa.yml
index bdc48da53..44a234e3b 100644
--- a/.github/labeler-config-srvaroa.yml
+++ b/.github/labeler-config-srvaroa.yml
@@ -76,8 +76,8 @@ labels:
- 'app/core/src/main/resources/settings.yml.template'
- 'app/core/src/main/resources/application.properties'
- 'app/core/src/main/resources/banner.txt'
- - 'scripts/png_to_webp.py'
- - 'split_photos.py'
+ - 'app/core/src/main/resources/static/python/png_to_webp.py'
+ - 'app/core/src/main/resources/static/python/split_photos.py'
- 'application.properties'
- label: 'Security'
@@ -95,8 +95,8 @@ labels:
- 'app/core/src/main/java/stirling/software/SPDF/model/api/.*'
- 'app/core/src/main/java/stirling/software/SPDF/service/ApiDocService.java'
- 'app/proprietary/src/main/java/stirling/software/proprietary/security/controller/api/.*'
- - 'scripts/png_to_webp.py'
- - 'split_photos.py'
+ - 'app/core/src/main/resources/static/python/png_to_webp.py'
+ - 'app/core/src/main/resources/static/python/split_photos.py'
- '.github/workflows/swagger.yml'
- label: 'Documentation'
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 094e9b2fa..ec2d837e2 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -6,10 +6,10 @@ repos:
args:
- --fix
- --line-length=127
- files: ^((\.github/scripts|scripts)/.+)?[^/]+\.py$
+ files: ^((\.github/scripts|scripts|app/core/src/main/resources/static/python)/.+)?[^/]+\.py$
exclude: (split_photos.py)
- id: ruff-format
- files: ^((\.github/scripts|scripts)/.+)?[^/]+\.py$
+ files: ^((\.github/scripts|scripts|app/core/src/main/resources/static/python)/.+)?[^/]+\.py$
exclude: (split_photos.py)
- repo: https://github.com/codespell-project/codespell
rev: v2.4.1
diff --git a/app/common/src/main/java/stirling/software/common/configuration/InstallationPathConfig.java b/app/common/src/main/java/stirling/software/common/configuration/InstallationPathConfig.java
index d087f2a7a..08618329d 100644
--- a/app/common/src/main/java/stirling/software/common/configuration/InstallationPathConfig.java
+++ b/app/common/src/main/java/stirling/software/common/configuration/InstallationPathConfig.java
@@ -14,6 +14,7 @@ public class InstallationPathConfig {
private static final String CONFIG_PATH;
private static final String CUSTOM_FILES_PATH;
private static final String CLIENT_WEBUI_PATH;
+ private static final String SCRIPTS_PATH;
// Config paths
private static final String SETTINGS_PATH;
@@ -36,6 +37,7 @@ public class InstallationPathConfig {
// Initialize config paths
SETTINGS_PATH = CONFIG_PATH + "settings.yml";
CUSTOM_SETTINGS_PATH = CONFIG_PATH + "custom_settings.yml";
+ SCRIPTS_PATH = CONFIG_PATH + "scripts" + File.separator;
// Initialize custom file paths
STATIC_PATH = CUSTOM_FILES_PATH + "static" + File.separator;
@@ -89,6 +91,10 @@ public class InstallationPathConfig {
return CLIENT_WEBUI_PATH;
}
+ public static String getScriptsPath() {
+ return SCRIPTS_PATH;
+ }
+
public static String getSettingsPath() {
return SETTINGS_PATH;
}
diff --git a/app/common/src/main/java/stirling/software/common/util/GeneralUtils.java b/app/common/src/main/java/stirling/software/common/util/GeneralUtils.java
index ddbec92e0..a164faec2 100644
--- a/app/common/src/main/java/stirling/software/common/util/GeneralUtils.java
+++ b/app/common/src/main/java/stirling/software/common/util/GeneralUtils.java
@@ -16,6 +16,7 @@ import java.util.List;
import java.util.Locale;
import java.util.UUID;
+import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.core.io.support.ResourcePatternUtils;
@@ -33,6 +34,9 @@ import stirling.software.common.configuration.InstallationPathConfig;
@Slf4j
public class GeneralUtils {
+ private static final List DEFAULT_VALID_SCRIPTS =
+ List.of("png_to_webp.py", "split_photos.py");
+
public static File convertMultipartFileToFile(MultipartFile multipartFile) throws IOException {
String customTempDir = System.getenv("STIRLING_TEMPFILES_DIRECTORY");
if (customTempDir == null || customTempDir.isEmpty()) {
@@ -442,6 +446,40 @@ public class GeneralUtils {
}
}
+ /**
+ * Extracts a file from classpath:/static/python to a temporary directory and returns the path.
+ */
+ public static Path extractScript(String scriptName) throws IOException {
+ // Validate input
+ if (scriptName == null || scriptName.trim().isEmpty()) {
+ throw new IllegalArgumentException("scriptName must not be null or empty");
+ }
+ if (scriptName.contains("..") || scriptName.contains("/")) {
+ throw new IllegalArgumentException(
+ "scriptName must not contain path traversal characters");
+ }
+
+ if (!DEFAULT_VALID_SCRIPTS.contains(scriptName)) {
+ throw new IllegalArgumentException(
+ "scriptName must be either 'png_to_webp.py' or 'split_photos.py'");
+ }
+
+ Path scriptsDir = Paths.get(InstallationPathConfig.getScriptsPath(), "python");
+ Files.createDirectories(scriptsDir);
+
+ Path scriptFile = scriptsDir.resolve(scriptName);
+ if (!Files.exists(scriptFile)) {
+ ClassPathResource resource = new ClassPathResource("static/python/" + scriptName);
+ try (InputStream in = resource.getInputStream()) {
+ Files.copy(in, scriptFile, StandardCopyOption.REPLACE_EXISTING);
+ } catch (IOException e) {
+ log.error("Failed to extract Python script", e);
+ throw e;
+ }
+ }
+ return scriptFile;
+ }
+
public static boolean isVersionHigher(String currentVersion, String compareVersion) {
if (currentVersion == null || compareVersion == null) {
return false;
diff --git a/app/core/.gitignore b/app/core/.gitignore
index f85be51d5..2b3880de6 100644
--- a/app/core/.gitignore
+++ b/app/core/.gitignore
@@ -194,3 +194,5 @@ id_ed25519.pub
# node_modules
node_modules/
+
+scripts/**/*
diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java
index 82dcc2bc5..8efd983b0 100644
--- a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java
+++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java
@@ -56,8 +56,8 @@ public class ConvertImgPDFController {
summary = "Convert PDF to image(s)",
description =
"This endpoint converts a PDF file to image(s) with the specified image format,"
- + " color type, and DPI. Users can choose to get a single image or multiple"
- + " images. Input:PDF Output:Image Type:SI-Conditional")
+ + " color type, and DPI. Users can choose to get a single image or multiple"
+ + " images. Input:PDF Output:Image Type:SI-Conditional")
public ResponseEntity convertToImage(@ModelAttribute ConvertToImageRequest request)
throws Exception {
MultipartFile file = request.getFileInput();
@@ -117,10 +117,14 @@ public class ConvertImgPDFController {
}
String pythonVersion = CheckProgramInstall.getAvailablePythonCommand();
+ Path pngToWebpScript = GeneralUtils.extractScript("png_to_webp.py");
List command = new ArrayList<>();
command.add(pythonVersion);
- command.add("./scripts/png_to_webp.py"); // Python script to handle the conversion
+ command.add(
+ pngToWebpScript
+ .toAbsolutePath()
+ .toString()); // Python script to handle the conversion
// Create a temporary directory for the output WebP files
tempOutputDir = Files.createTempDirectory("webp_output");
@@ -232,7 +236,8 @@ public class ConvertImgPDFController {
PdfUtils.imageToPdf(file, fitOption, autoRotate, colorType, pdfDocumentFactory);
return WebResponseUtils.bytesToWebResponse(
bytes,
- new File(file[0].getOriginalFilename()).getName().replaceFirst("[.][^.]+$", "") + "_converted.pdf");
+ new File(file[0].getOriginalFilename()).getName().replaceFirst("[.][^.]+$", "")
+ + "_converted.pdf");
}
private String getMediaType(String imageFormat) {
diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java
index 7ecc04e1a..1a0ae7516 100644
--- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java
+++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java
@@ -34,6 +34,7 @@ import stirling.software.SPDF.model.api.misc.ExtractImageScansRequest;
import stirling.software.common.service.CustomPDFDocumentFactory;
import stirling.software.common.util.CheckProgramInstall;
import stirling.software.common.util.ExceptionUtils;
+import stirling.software.common.util.GeneralUtils;
import stirling.software.common.util.ProcessExecutor;
import stirling.software.common.util.ProcessExecutor.ProcessExecutorResult;
import stirling.software.common.util.WebResponseUtils;
@@ -54,9 +55,9 @@ public class ExtractImageScansController {
summary = "Extract image scans from an input file",
description =
"This endpoint extracts image scans from a given file based on certain"
- + " parameters. Users can specify angle threshold, tolerance, minimum area,"
- + " minimum contour area, and border size. Input:PDF Output:IMAGE/ZIP"
- + " Type:SIMO")
+ + " parameters. Users can specify angle threshold, tolerance, minimum area,"
+ + " minimum contour area, and border size. Input:PDF Output:IMAGE/ZIP"
+ + " Type:SIMO")
public ResponseEntity extractImageScans(
@ModelAttribute ExtractImageScansRequest request)
throws IOException, InterruptedException {
@@ -78,6 +79,7 @@ public class ExtractImageScansController {
}
String pythonVersion = CheckProgramInstall.getAvailablePythonCommand();
+ Path splitPhotosScript = GeneralUtils.extractScript("split_photos.py");
try {
// Check if input file is a PDF
if ("pdf".equalsIgnoreCase(extension)) {
@@ -120,7 +122,7 @@ public class ExtractImageScansController {
new ArrayList<>(
Arrays.asList(
pythonVersion,
- "./scripts/split_photos.py",
+ splitPhotosScript.toAbsolutePath().toString(),
images.get(i),
tempDir.toString(),
"--angle_threshold",
diff --git a/scripts/png_to_webp.py b/app/core/src/main/resources/static/python/png_to_webp.py
similarity index 100%
rename from scripts/png_to_webp.py
rename to app/core/src/main/resources/static/python/png_to_webp.py
diff --git a/scripts/split_photos.py b/app/core/src/main/resources/static/python/split_photos.py
similarity index 100%
rename from scripts/split_photos.py
rename to app/core/src/main/resources/static/python/split_photos.py
From c553c613763de32657fa995043e4f71491f40fc4 Mon Sep 17 00:00:00 2001
From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
Date: Mon, 21 Jul 2025 10:25:32 +0100
Subject: [PATCH 18/25] Disable cookie banner when analytics disabled (#3989)
## Summary
- gate cookie consent resources behind the analytics flag
- hide the cookie preferences link in the footer when analytics are
disabled
Generated with AI.
## Testing
- `./gradlew build`
------
https://chatgpt.com/codex/tasks/task_b_687c9568b2a8832891ffebddb65a9480
---
app/core/src/main/resources/templates/fragments/common.html | 4 ++--
app/core/src/main/resources/templates/fragments/footer.html | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/app/core/src/main/resources/templates/fragments/common.html b/app/core/src/main/resources/templates/fragments/common.html
index 78f0d5662..f5fdbfa9d 100644
--- a/app/core/src/main/resources/templates/fragments/common.html
+++ b/app/core/src/main/resources/templates/fragments/common.html
@@ -200,8 +200,8 @@
-
-
+
+
diff --git a/app/core/src/main/resources/templates/fragments/footer.html b/app/core/src/main/resources/templates/fragments/footer.html
index 2d8465bf5..89c3c78b1 100644
--- a/app/core/src/main/resources/templates/fragments/footer.html
+++ b/app/core/src/main/resources/templates/fragments/footer.html
@@ -1,6 +1,6 @@