Compare commits
13
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c82ad8716 | ||
|
|
b1e730c455 | ||
|
|
975f67d473 | ||
|
|
247173a676 | ||
|
|
4a301f54c1 | ||
|
|
c6f107397e | ||
|
|
742ccc4806 | ||
|
|
540e628e60 | ||
|
|
371243de31 | ||
|
|
de017e0751 | ||
|
|
6faa0ed599 | ||
|
|
3c021c131a | ||
|
|
bea401cf19 |
@@ -259,27 +259,10 @@ def check_for_differences(reference_file, file_list, branch, actor):
|
||||
report.append(
|
||||
f" - **_Extra keys in `{locale_dir}/{basename_current_file}`_**: `{missing_keys_str}` that are not present in **_`{basename_reference_file}`_**."
|
||||
)
|
||||
report.append("")
|
||||
report.append(" Use the following command to remove them:")
|
||||
report.append(
|
||||
f" `python scripts/translations/translation_merger.py {locale_dir} remove-unused`"
|
||||
)
|
||||
report.append("")
|
||||
if extra_keys_list:
|
||||
report.append(
|
||||
f" - **_Missing keys in `{locale_dir}/{basename_current_file}`_**: `{extra_keys_str}` that are not present in **_`{basename_reference_file}`_**."
|
||||
)
|
||||
report.append("")
|
||||
report.append(" Use the following command to add them:")
|
||||
report.append(
|
||||
f" `python scripts/translations/translation_merger.py {locale_dir} add-missing`"
|
||||
)
|
||||
report.append("")
|
||||
|
||||
if missing_keys_list or extra_keys_list:
|
||||
report.append(
|
||||
" See: https://github.com/Stirling-Tools/Stirling-PDF/tree/main/scripts/translations#2-translation_mergerpy"
|
||||
)
|
||||
else:
|
||||
report.append("2. **Test Status:** ✅ **_Passed_**")
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout main repository
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
with:
|
||||
repository: ${{ github.repository }}
|
||||
ref: main
|
||||
@@ -172,7 +172,7 @@ jobs:
|
||||
return newComment.id;
|
||||
|
||||
- name: Checkout PR
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
with:
|
||||
repository: ${{ needs.check-pr.outputs.pr_repository }}
|
||||
ref: ${{ needs.check-pr.outputs.pr_ref }}
|
||||
@@ -189,7 +189,7 @@ jobs:
|
||||
echo "versionNumber=$VERSION" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_API }}
|
||||
@@ -362,7 +362,7 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Setup GitHub App Bot
|
||||
if: github.actor != 'dependabot[bot]'
|
||||
|
||||
@@ -45,7 +45,7 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout PR
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Setup GitHub App Bot
|
||||
if: github.actor != 'dependabot[bot]'
|
||||
@@ -133,7 +133,7 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout PR
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Setup GitHub App Bot
|
||||
if: github.actor != 'dependabot[bot]'
|
||||
@@ -145,19 +145,19 @@ jobs:
|
||||
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
||||
|
||||
- name: Checkout PR
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
with:
|
||||
ref: refs/pull/${{ needs.check-comment.outputs.pr_number }}/merge
|
||||
token: ${{ steps.setup-bot.outputs.token }}
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
|
||||
with:
|
||||
java-version: "21"
|
||||
distribution: "temurin"
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@f29f5a9d7b09a7c6b29859002d29d24e1674c884 # v5.0.1
|
||||
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
|
||||
with:
|
||||
gradle-version: 8.14
|
||||
|
||||
@@ -179,7 +179,7 @@ jobs:
|
||||
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_API }}
|
||||
@@ -375,7 +375,7 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Check out the repository
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Setup GitHub App Bot
|
||||
id: setup-bot
|
||||
|
||||
@@ -26,7 +26,7 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout PR
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Setup GitHub App Bot
|
||||
if: github.actor != 'dependabot[bot]'
|
||||
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
@@ -87,7 +87,7 @@ jobs:
|
||||
- name: AI PR Title Analysis
|
||||
if: steps.actor.outputs.is_repo_dev == 'true'
|
||||
id: ai-title-analysis
|
||||
uses: actions/ai-inference@a6101c89c6feaecc585efdd8d461f18bb7896f20 # v2.0.5
|
||||
uses: actions/ai-inference@334892bb203895caaed82ec52d23c1ed9385151e # v2.0.4
|
||||
with:
|
||||
model: openai/gpt-4o
|
||||
system-prompt-file: ".github/config/system-prompt.txt"
|
||||
|
||||
@@ -20,7 +20,7 @@ jobs:
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Setup GitHub App Bot
|
||||
id: setup-bot
|
||||
|
||||
+23
-23
@@ -36,7 +36,7 @@ jobs:
|
||||
with:
|
||||
egress-policy: audit
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Check for file changes
|
||||
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
@@ -60,16 +60,16 @@ jobs:
|
||||
with:
|
||||
egress-policy: audit
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Set up JDK ${{ matrix.jdk-version }}
|
||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
|
||||
with:
|
||||
java-version: ${{ matrix.jdk-version }}
|
||||
distribution: "temurin"
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@f29f5a9d7b09a7c6b29859002d29d24e1674c884 # v5.0.1
|
||||
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
|
||||
with:
|
||||
gradle-version: 8.14
|
||||
|
||||
@@ -101,7 +101,7 @@ jobs:
|
||||
|
||||
- name: Upload Test Reports
|
||||
if: always()
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
with:
|
||||
name: test-reports-jdk-${{ matrix.jdk-version }}-spring-security-${{ matrix.spring-security }}
|
||||
path: |
|
||||
@@ -135,16 +135,16 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
|
||||
with:
|
||||
java-version: "21"
|
||||
distribution: "temurin"
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@f29f5a9d7b09a7c6b29859002d29d24e1674c884 # v5.0.1
|
||||
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
|
||||
with:
|
||||
gradle-version: 8.14
|
||||
|
||||
@@ -157,7 +157,7 @@ jobs:
|
||||
DISABLE_ADDITIONAL_FEATURES: true
|
||||
|
||||
- name: Upload OpenAPI Documentation
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
with:
|
||||
name: openapi-docs
|
||||
path: ./SwaggerDoc.json
|
||||
@@ -172,9 +172,9 @@ jobs:
|
||||
with:
|
||||
egress-policy: audit
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
|
||||
with:
|
||||
node-version: "22"
|
||||
cache: "npm"
|
||||
@@ -190,7 +190,7 @@ jobs:
|
||||
- name: Run frontend tests
|
||||
run: cd frontend && npm run test -- --run
|
||||
- name: Upload frontend build artifacts
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
with:
|
||||
name: frontend-build
|
||||
path: frontend/dist/
|
||||
@@ -207,16 +207,16 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
|
||||
with:
|
||||
java-version: "21"
|
||||
distribution: "temurin"
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@f29f5a9d7b09a7c6b29859002d29d24e1674c884 # v5.0.1
|
||||
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
|
||||
with:
|
||||
gradle-version: 8.14
|
||||
|
||||
@@ -229,7 +229,7 @@ jobs:
|
||||
|
||||
- name: FAILED - check the licenses for compatibility
|
||||
if: failure()
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
with:
|
||||
name: dependencies-without-allowed-license.json
|
||||
path: build/reports/dependency-license/dependencies-without-allowed-license.json
|
||||
@@ -261,16 +261,16 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
|
||||
with:
|
||||
java-version: "21"
|
||||
distribution: "temurin"
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@f29f5a9d7b09a7c6b29859002d29d24e1674c884 # v5.0.1
|
||||
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
|
||||
with:
|
||||
gradle-version: 8.14
|
||||
|
||||
@@ -325,7 +325,7 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Free disk space on runner
|
||||
run: |
|
||||
@@ -335,13 +335,13 @@ jobs:
|
||||
echo "Disk space after cleanup:" && df -h
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
|
||||
with:
|
||||
java-version: "21"
|
||||
distribution: "temurin"
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@f29f5a9d7b09a7c6b29859002d29d24e1674c884 # v5.0.1
|
||||
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
|
||||
with:
|
||||
gradle-version: 8.14
|
||||
|
||||
@@ -376,7 +376,7 @@ jobs:
|
||||
|
||||
- name: Upload Reports
|
||||
if: always()
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
with:
|
||||
name: reports-docker-${{ matrix.artifact-suffix }}
|
||||
path: |
|
||||
|
||||
@@ -32,7 +32,7 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout main branch first
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Setup GitHub App Bot
|
||||
id: setup-bot
|
||||
|
||||
@@ -22,7 +22,7 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: "Checkout Repository"
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
- name: "Dependency Review"
|
||||
uses: actions/dependency-review-action@3c4e3dcb1aa7874d2c16be7d79418e9b7efd6261 # v4.8.2
|
||||
with:
|
||||
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
|
||||
@@ -85,7 +85,7 @@ jobs:
|
||||
fi
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_API }}
|
||||
|
||||
@@ -30,7 +30,7 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Check for file changes
|
||||
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
@@ -54,7 +54,7 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout PR head (default)
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
@@ -69,7 +69,7 @@ jobs:
|
||||
|
||||
- name: Checkout BASE branch (safe script)
|
||||
if: github.event_name == 'pull_request'
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.base.sha }}
|
||||
path: base
|
||||
@@ -77,7 +77,7 @@ jobs:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
|
||||
with:
|
||||
node-version: "22"
|
||||
cache: "npm"
|
||||
@@ -273,7 +273,7 @@ jobs:
|
||||
- name: Create Pull Request (Push only)
|
||||
id: cpr
|
||||
if: github.event_name == 'push' && env.CHANGES_DETECTED == 'true'
|
||||
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0
|
||||
uses: peter-evans/create-pull-request@98357b18bf14b5342f975ff684046ec3b2a07725 # v8.0.0
|
||||
with:
|
||||
token: ${{ steps.setup-bot.outputs.token }}
|
||||
commit-message: "Update Frontend 3rd Party Licenses"
|
||||
@@ -317,7 +317,7 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
@@ -331,13 +331,13 @@ jobs:
|
||||
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
|
||||
with:
|
||||
java-version: "21"
|
||||
distribution: "temurin"
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@f29f5a9d7b09a7c6b29859002d29d24e1674c884 # v5.0.1
|
||||
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
|
||||
with:
|
||||
gradle-version: 8.14
|
||||
|
||||
@@ -364,7 +364,7 @@ jobs:
|
||||
|
||||
- name: Upload artifact on license issues
|
||||
if: env.LICENSE_WARNINGS_EXIST == 'true'
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
|
||||
with:
|
||||
name: backend-dependencies-without-allowed-license.json
|
||||
path: build/reports/dependency-license/dependencies-without-allowed-license.json
|
||||
@@ -490,7 +490,7 @@ jobs:
|
||||
- name: Create Pull Request (push only)
|
||||
if: github.event_name == 'push' && env.CHANGES_DETECTED == 'true'
|
||||
id: cpr
|
||||
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0
|
||||
uses: peter-evans/create-pull-request@98357b18bf14b5342f975ff684046ec3b2a07725 # v8.0.0
|
||||
with:
|
||||
token: ${{ steps.setup-bot.outputs.token }}
|
||||
commit-message: "Update Backend 3rd Party Licenses"
|
||||
|
||||
@@ -20,7 +20,7 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Check out the repository
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Run Labeler
|
||||
uses: crazy-max/ghaction-github-labeler@24d110aa46a59976b8a7f35518cb7f14f434c916 # v5.3.0
|
||||
|
||||
@@ -42,16 +42,16 @@ jobs:
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
|
||||
with:
|
||||
java-version: "21"
|
||||
distribution: "temurin"
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@f29f5a9d7b09a7c6b29859002d29d24e1674c884 # v5.0.1
|
||||
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
|
||||
with:
|
||||
gradle-version: 8.14
|
||||
|
||||
@@ -115,16 +115,16 @@ jobs:
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
|
||||
with:
|
||||
java-version: "21"
|
||||
distribution: "temurin"
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@f29f5a9d7b09a7c6b29859002d29d24e1674c884 # v5.0.1
|
||||
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
|
||||
with:
|
||||
gradle-version: 8.14
|
||||
|
||||
@@ -154,7 +154,7 @@ jobs:
|
||||
cp app/core/build/libs/stirling-pdf-${{ needs.determine-matrix.outputs.version }}.jar ./jar-dist/Stirling-PDF${{ matrix.variant.file_suffix }}.jar
|
||||
|
||||
- name: Upload JAR artifacts
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
|
||||
with:
|
||||
name: jar${{ matrix.variant.file_suffix }}
|
||||
path: ./jar-dist/*.jar
|
||||
@@ -176,7 +176,7 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Install dependencies (ubuntu only)
|
||||
if: matrix.platform == 'ubuntu-22.04'
|
||||
@@ -198,13 +198,13 @@ jobs:
|
||||
targets: ${{ (matrix.platform == 'macos-15' || matrix.platform == 'macos-15-intel') && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
|
||||
with:
|
||||
java-version: "21"
|
||||
distribution: "temurin"
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@f29f5a9d7b09a7c6b29859002d29d24e1674c884 # v5.0.1
|
||||
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
|
||||
with:
|
||||
gradle-version: 8.14
|
||||
|
||||
@@ -291,7 +291,7 @@ jobs:
|
||||
- name: Setup DigiCert KeyLocker
|
||||
id: digicert-setup
|
||||
if: ${{ matrix.platform == 'windows-latest' && env.SM_API_KEY != '' && (github.event_name == 'release' || github.ref == 'refs/heads/V2-master') }}
|
||||
uses: digicert/ssm-code-signing@af7f4b07694120e514fe5b19f0598af3c20256e3 # v1.2.0
|
||||
uses: digicert/ssm-code-signing@9476ceec3ea1c63298d4403b983e1ccf2556ff4c # v1.1.0
|
||||
env:
|
||||
SM_API_KEY: ${{ secrets.SM_API_KEY }}
|
||||
SM_CLIENT_CERT_FILE_B64: ${{ secrets.SM_CLIENT_CERT_FILE_B64 }}
|
||||
@@ -533,7 +533,7 @@ jobs:
|
||||
fi
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
|
||||
with:
|
||||
name: Stirling-PDF-${{ matrix.name }}
|
||||
path: ./dist/*
|
||||
|
||||
@@ -26,10 +26,9 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup GitHub App Bot
|
||||
id: setup-bot
|
||||
@@ -49,24 +48,17 @@ jobs:
|
||||
run: |
|
||||
pip install --require-hashes --only-binary=:all: -r ./.github/scripts/requirements_pre_commit.txt
|
||||
|
||||
- name: Run Pre-Commit
|
||||
run: |
|
||||
pre-commit run ruff --all-files -c .pre-commit-config.yaml
|
||||
pre-commit run ruff-format --all-files -c .pre-commit-config.yaml
|
||||
pre-commit run codespell --all-files -c .pre-commit-config.yaml
|
||||
pre-commit run gitleaks --all-files -c .pre-commit-config.yaml
|
||||
pre-commit run end-of-file-fixer --all-files -c .pre-commit-config.yaml
|
||||
pre-commit run trailing-whitespace --all-files -c .pre-commit-config.yaml
|
||||
- run: pre-commit run --all-files -c .pre-commit-config.yaml
|
||||
continue-on-error: true
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
|
||||
with:
|
||||
java-version: 21
|
||||
distribution: "temurin"
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@f29f5a9d7b09a7c6b29859002d29d24e1674c884 # v5.0.1
|
||||
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
|
||||
with:
|
||||
gradle-version: 8.14
|
||||
|
||||
@@ -84,7 +76,7 @@ jobs:
|
||||
|
||||
- name: Create Pull Request
|
||||
if: env.CHANGES_DETECTED == 'true'
|
||||
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0
|
||||
uses: peter-evans/create-pull-request@98357b18bf14b5342f975ff684046ec3b2a07725 # v8.0.0
|
||||
with:
|
||||
token: ${{ steps.setup-bot.outputs.token }}
|
||||
commit-message: ":file_folder: pre-commit"
|
||||
|
||||
@@ -37,16 +37,16 @@ jobs:
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
|
||||
with:
|
||||
java-version: "21"
|
||||
distribution: "temurin"
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@f29f5a9d7b09a7c6b29859002d29d24e1674c884 # v5.0.1
|
||||
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
|
||||
with:
|
||||
gradle-version: 8.14
|
||||
|
||||
@@ -75,13 +75,13 @@ jobs:
|
||||
cosign-release: "v2.4.1"
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_API }}
|
||||
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
|
||||
@@ -40,7 +40,7 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: "Checkout code"
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
@@ -67,7 +67,7 @@ jobs:
|
||||
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
|
||||
# format to the repository Actions tab.
|
||||
- name: "Upload artifact"
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
|
||||
with:
|
||||
name: SARIF file
|
||||
path: results.sarif
|
||||
|
||||
@@ -31,16 +31,16 @@ jobs:
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
|
||||
with:
|
||||
java-version: "21"
|
||||
distribution: "temurin"
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@f29f5a9d7b09a7c6b29859002d29d24e1674c884 # v5.0.1
|
||||
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
|
||||
with:
|
||||
gradle-version: 8.14
|
||||
|
||||
|
||||
@@ -39,9 +39,7 @@ jobs:
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Setup GitHub App Bot
|
||||
id: setup-bot
|
||||
@@ -57,16 +55,12 @@ jobs:
|
||||
cache: "pip" # caching pip dependencies
|
||||
|
||||
- name: Install Python dependencies
|
||||
run: pip install --require-hashes -r ./.github/scripts/requirements_sync_readme.txt -r ./.github/scripts/requirements_pre_commit.txt
|
||||
run: pip install --require-hashes -r ./.github/scripts/requirements_sync_readme.txt
|
||||
|
||||
- name: Sync translation TOML files
|
||||
run: |
|
||||
python .github/scripts/check_language_toml.py --reference-file "frontend/public/locales/en-GB/translation.toml" --branch main
|
||||
|
||||
- name: pre-commit run
|
||||
run: |
|
||||
pre-commit run toml-sort-fix --all-files
|
||||
|
||||
- name: Commit translation files
|
||||
run: |
|
||||
git add frontend/public/locales/*/translation.toml
|
||||
@@ -83,7 +77,7 @@ jobs:
|
||||
|
||||
- name: Create Pull Request
|
||||
if: always()
|
||||
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0
|
||||
uses: peter-evans/create-pull-request@98357b18bf14b5342f975ff684046ec3b2a07725 # v8.0.0
|
||||
with:
|
||||
token: ${{ steps.setup-bot.outputs.token }}
|
||||
commit-message: Update files
|
||||
|
||||
@@ -25,7 +25,6 @@ on:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
determine-matrix:
|
||||
@@ -78,7 +77,7 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Install dependencies (ubuntu only)
|
||||
if: matrix.platform == 'ubuntu-22.04'
|
||||
@@ -100,13 +99,13 @@ jobs:
|
||||
targets: ${{ (matrix.platform == 'macos-15' || matrix.platform == 'macos-15-intel') && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
|
||||
with:
|
||||
java-version: "21"
|
||||
distribution: "temurin"
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@f29f5a9d7b09a7c6b29859002d29d24e1674c884 # v5.0.1
|
||||
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
|
||||
with:
|
||||
gradle-version: 8.14
|
||||
|
||||
@@ -194,7 +193,7 @@ jobs:
|
||||
- name: Setup DigiCert KeyLocker
|
||||
id: digicert-setup
|
||||
if: ${{ matrix.platform == 'windows-latest' && env.SM_API_KEY != '' && github.ref == 'refs/heads/main' }}
|
||||
uses: digicert/ssm-code-signing@af7f4b07694120e514fe5b19f0598af3c20256e3 # v1.2.0
|
||||
uses: digicert/ssm-code-signing@9476ceec3ea1c63298d4403b983e1ccf2556ff4c # v1.1.0
|
||||
env:
|
||||
SM_API_KEY: ${{ secrets.SM_API_KEY }}
|
||||
SM_CLIENT_CERT_FILE_B64: ${{ secrets.SM_CLIENT_CERT_FILE_B64 }}
|
||||
@@ -587,7 +586,7 @@ jobs:
|
||||
}
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
with:
|
||||
name: Stirling-PDF-${{ matrix.name }}
|
||||
path: ./dist/*
|
||||
@@ -640,100 +639,6 @@ jobs:
|
||||
fi
|
||||
done
|
||||
|
||||
pr-comment:
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event_name == 'pull_request' && needs.build.result == 'success'
|
||||
permissions:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- name: Harden the runner
|
||||
uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Post/Update PR Comment with Download Links
|
||||
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
||||
with:
|
||||
script: |
|
||||
const owner = context.repo.owner;
|
||||
const repo = context.repo.repo;
|
||||
const prNumber = context.issue.number;
|
||||
const runId = context.runId;
|
||||
|
||||
// Fetch artifacts for this workflow run
|
||||
const { data: artifactsList } = await github.rest.actions.listWorkflowRunArtifacts({
|
||||
owner,
|
||||
repo,
|
||||
run_id: runId
|
||||
});
|
||||
|
||||
// Map of expected artifact names to display info
|
||||
const artifactMap = {
|
||||
'Stirling-PDF-windows-x86_64': { icon: '🪟', platform: 'Windows x64', files: '.exe, .msi' },
|
||||
'Stirling-PDF-macos-aarch64': { icon: '🍎', platform: 'macOS ARM64', files: '.dmg' },
|
||||
'Stirling-PDF-macos-x86_64': { icon: '🍎', platform: 'macOS Intel', files: '.dmg' },
|
||||
'Stirling-PDF-linux-x86_64': { icon: '🐧', platform: 'Linux x64', files: '.deb, .AppImage' }
|
||||
};
|
||||
|
||||
let commentBody = `## 📦 Tauri Desktop Builds Ready!\n\n`;
|
||||
commentBody += `The desktop applications have been built and are ready for testing.\n\n`;
|
||||
commentBody += `### Download Artifacts:\n\n`;
|
||||
|
||||
// Add links for each found artifact
|
||||
let foundArtifacts = 0;
|
||||
for (const artifact of artifactsList.artifacts) {
|
||||
const info = artifactMap[artifact.name];
|
||||
if (info) {
|
||||
foundArtifacts++;
|
||||
// GitHub doesn't provide direct download URLs via API, but we can link to the artifact on the Actions page
|
||||
const artifactUrl = `https://github.com/${owner}/${repo}/actions/runs/${runId}/artifacts/${artifact.id}`;
|
||||
commentBody += `${info.icon} **${info.platform}**: [Download ${artifact.name}](${artifactUrl}) `;
|
||||
commentBody += `(${info.files}) - ${(artifact.size_in_bytes / 1024 / 1024).toFixed(1)} MB\n`;
|
||||
}
|
||||
}
|
||||
|
||||
if (foundArtifacts === 0) {
|
||||
commentBody += `⚠️ **Warning**: No artifacts found in workflow run.\n`;
|
||||
commentBody += `[View workflow run](https://github.com/${owner}/${repo}/actions/runs/${runId})\n`;
|
||||
}
|
||||
|
||||
commentBody += `\n---\n`;
|
||||
commentBody += `_Built from commit ${context.sha.substring(0, 7)}_\n`;
|
||||
commentBody += `_Artifacts expire in 7 days_`;
|
||||
|
||||
// Find existing comment
|
||||
const { data: comments } = await github.rest.issues.listComments({
|
||||
owner,
|
||||
repo,
|
||||
issue_number: prNumber
|
||||
});
|
||||
|
||||
const botComment = comments.find(comment =>
|
||||
comment.user.type === 'Bot' &&
|
||||
comment.body.includes('📦 Tauri Desktop Builds Ready!')
|
||||
);
|
||||
|
||||
if (botComment) {
|
||||
// Update existing comment
|
||||
await github.rest.issues.updateComment({
|
||||
owner,
|
||||
repo,
|
||||
comment_id: botComment.id,
|
||||
body: commentBody
|
||||
});
|
||||
console.log('Updated existing comment');
|
||||
} else {
|
||||
// Create new comment
|
||||
await github.rest.issues.createComment({
|
||||
owner,
|
||||
repo,
|
||||
issue_number: prNumber,
|
||||
body: commentBody
|
||||
});
|
||||
console.log('Created new comment');
|
||||
}
|
||||
|
||||
report:
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
@@ -30,16 +30,16 @@ jobs:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
|
||||
with:
|
||||
java-version: "21"
|
||||
distribution: "temurin"
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@f29f5a9d7b09a7c6b29859002d29d24e1674c884 # v5.0.1
|
||||
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
|
||||
with:
|
||||
gradle-version: 8.14
|
||||
|
||||
@@ -61,7 +61,7 @@ jobs:
|
||||
echo "versionNumber=$VERSION" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_API }}
|
||||
@@ -133,7 +133,7 @@ jobs:
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Check for file changes
|
||||
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
@@ -152,10 +152,10 @@ jobs:
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Set up Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
|
||||
with:
|
||||
cache: "npm"
|
||||
cache-dependency-path: frontend/package-lock.json
|
||||
|
||||
+1
-1
@@ -149,7 +149,6 @@ app/proprietary/build
|
||||
common/build
|
||||
proprietary/build
|
||||
stirling-pdf/build
|
||||
frontend/src-tauri/provisioner/target
|
||||
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
@@ -244,3 +243,4 @@ docs/type3/signatures/
|
||||
|
||||
# Type3 sample PDFs (development only)
|
||||
**/type3/samples/
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
repos:
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.14.14
|
||||
rev: v0.14.8
|
||||
hooks:
|
||||
- id: ruff
|
||||
args:
|
||||
@@ -16,11 +16,11 @@ repos:
|
||||
hooks:
|
||||
- id: codespell
|
||||
args:
|
||||
- --ignore-words-list=thirdParty,tabEl,tabEls,Sie,ist
|
||||
- --ignore-words-list=thirdParty,tabEl,tabEls
|
||||
- --skip="./.*,*.csv,*.json,*.ambr"
|
||||
- --quiet-level=2
|
||||
files: \.(html|css|js|py|md)$
|
||||
exclude: (.vscode|.devcontainer|app/core/src/main/resources|app/proprietary/src/main/resources|frontend/public/vendor|Dockerfile|.*/pdfjs.*|.*/thirdParty.*|bootstrap.*|.*\.min\..*|.*diff\.js)
|
||||
exclude: (.vscode|.devcontainer|app/core/src/main/resources|app/proprietary/src/main/resources|Dockerfile|.*/pdfjs.*|.*/thirdParty.*|bootstrap.*|.*\.min\..*|.*diff\.js)
|
||||
- repo: https://github.com/gitleaks/gitleaks
|
||||
rev: v8.30.0
|
||||
hooks:
|
||||
@@ -34,12 +34,6 @@ repos:
|
||||
- id: trailing-whitespace
|
||||
files: ^.*(\.js|\.java|\.py|\.yml)$
|
||||
exclude: ^(.*/pdfjs.*|.*/thirdParty.*|bootstrap.*|.*\.min\..*|.*diff\.js|\.github/workflows/.*$)
|
||||
- repo: https://github.com/pappasam/toml-sort
|
||||
rev: v0.24.3
|
||||
hooks:
|
||||
- id: toml-sort-fix
|
||||
files: frontend/public/locales/.*\.toml$
|
||||
args: ['--in-place', '--all', '--ignore-case']
|
||||
# - repo: https://github.com/thibaudcolas/pre-commit-stylelint
|
||||
# rev: v16.21.1
|
||||
# hooks:
|
||||
|
||||
Vendored
+1
-1
@@ -13,7 +13,7 @@
|
||||
"vscjava.vscode-spring-boot-dashboard", // Spring Boot dashboard for managing and visualizing Spring Boot applications
|
||||
"EditorConfig.EditorConfig", // EditorConfig support for maintaining consistent coding styles
|
||||
"ms-azuretools.vscode-docker", // Docker extension for Visual Studio Code
|
||||
"GitHub.copilot-chat", // GitHub Copilot AI pair programmer for Visual Studio Code
|
||||
"GitHub.copilot", // GitHub Copilot AI pair programmer for Visual Studio Code
|
||||
"GitHub.vscode-pull-request-github", // GitHub Pull Requests extension for Visual Studio Code
|
||||
"charliermarsh.ruff", // Ruff code formatter for Python to follow the Ruff Style Guide
|
||||
"yzhang.markdown-all-in-one", // Markdown All-in-One extension for enhanced Markdown editing
|
||||
|
||||
@@ -30,91 +30,6 @@ Set `DOCKER_ENABLE_SECURITY=true` environment variable to enable security featur
|
||||
- **Web Server**: `npm run build` then serve dist/ folder
|
||||
- **Development**: `npm run tauri-dev` for desktop dev mode
|
||||
|
||||
#### Import Paths - CRITICAL
|
||||
**ALWAYS use `@app/*` for imports.** Do not use `@core/*` or `@proprietary/*` unless explicitly wrapping/extending a lower layer implementation.
|
||||
|
||||
```typescript
|
||||
// ✅ CORRECT - Use @app/* for all imports
|
||||
import { AppLayout } from "@app/components/AppLayout";
|
||||
import { useFileContext } from "@app/contexts/FileContext";
|
||||
import { FileContext } from "@app/contexts/FileContext";
|
||||
|
||||
// ❌ WRONG - Do not use @core/* or @proprietary/* in normal code
|
||||
import { AppLayout } from "@core/components/AppLayout";
|
||||
import { useFileContext } from "@proprietary/contexts/FileContext";
|
||||
```
|
||||
|
||||
**Only use explicit aliases when:**
|
||||
- Building layer-specific override that wraps a lower layer's component
|
||||
- Example: `import { AppProviders as CoreAppProviders } from "@core/components/AppProviders"` when creating proprietary/AppProviders.tsx that extends the core version
|
||||
|
||||
The `@app/*` alias automatically resolves to the correct layer based on build target (core/proprietary/desktop) and handles the fallback cascade.
|
||||
|
||||
#### Component Override Pattern (Stub/Shadow)
|
||||
Use this pattern for desktop-specific or proprietary-specific features WITHOUT runtime checks or conditionals.
|
||||
|
||||
**How it works:**
|
||||
1. Core defines stub component (returns null or no-op)
|
||||
2. Desktop/proprietary overrides with same path/name
|
||||
3. Core imports via `@app/*` - higher layer "shadows" core in those builds
|
||||
4. No `@ts-ignore`, no `isTauri()` checks, no runtime conditionals!
|
||||
|
||||
**Example - Desktop-specific footer:**
|
||||
|
||||
```typescript
|
||||
// core/components/rightRail/RightRailFooterExtensions.tsx (stub)
|
||||
interface RightRailFooterExtensionsProps {
|
||||
className?: string;
|
||||
}
|
||||
|
||||
export function RightRailFooterExtensions(_props: RightRailFooterExtensionsProps) {
|
||||
return null; // Stub - does nothing in web builds
|
||||
}
|
||||
```
|
||||
|
||||
```typescript
|
||||
// desktop/components/rightRail/RightRailFooterExtensions.tsx (real implementation)
|
||||
import { Box } from '@mantine/core';
|
||||
import { BackendHealthIndicator } from '@app/components/BackendHealthIndicator';
|
||||
|
||||
interface RightRailFooterExtensionsProps {
|
||||
className?: string;
|
||||
}
|
||||
|
||||
export function RightRailFooterExtensions({ className }: RightRailFooterExtensionsProps) {
|
||||
return (
|
||||
<Box className={className}>
|
||||
<BackendHealthIndicator />
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
```typescript
|
||||
// core/components/shared/RightRail.tsx (usage - works in ALL builds)
|
||||
import { RightRailFooterExtensions } from '@app/components/rightRail/RightRailFooterExtensions';
|
||||
|
||||
export function RightRail() {
|
||||
return (
|
||||
<div>
|
||||
{/* In web builds: renders nothing (stub returns null) */}
|
||||
{/* In desktop builds: renders BackendHealthIndicator */}
|
||||
<RightRailFooterExtensions className="right-rail-footer" />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
**Build resolution:**
|
||||
- **Core build**: `@app/*` → `core/*` → Gets stub (returns null)
|
||||
- **Desktop build**: `@app/*` → `desktop/*` → Gets real implementation (shadows core)
|
||||
|
||||
**Benefits:**
|
||||
- No runtime checks or feature flags
|
||||
- Type-safe across all builds
|
||||
- Clean, readable code
|
||||
- Build-time optimization (dead code elimination)
|
||||
|
||||
#### Multi-Tool Workflow Architecture
|
||||
Frontend designed for **stateful document processing**:
|
||||
- Users upload PDFs once, then chain tools (split → merge → compress → view)
|
||||
@@ -122,7 +37,7 @@ Frontend designed for **stateful document processing**:
|
||||
- No file reloading between tools - performance critical for large PDFs (up to 100GB+)
|
||||
|
||||
#### FileContext - Central State Management
|
||||
**Location**: `frontend/src/core/contexts/FileContext.tsx`
|
||||
**Location**: `src/contexts/FileContext.tsx`
|
||||
- **Active files**: Currently loaded PDFs and their variants
|
||||
- **Tool navigation**: Current mode (viewer/pageEditor/fileEditor/toolName)
|
||||
- **Memory management**: PDF document cleanup, blob URL lifecycle, Web Worker management
|
||||
@@ -147,7 +62,7 @@ Without cleanup: browser crashes with memory leaks.
|
||||
|
||||
**Architecture**: Modular hook-based system with clear separation of concerns:
|
||||
|
||||
- **useToolOperation** (`frontend/src/core/hooks/tools/shared/useToolOperation.ts`): Main orchestrator hook
|
||||
- **useToolOperation** (`frontend/src/hooks/tools/shared/useToolOperation.ts`): Main orchestrator hook
|
||||
- Coordinates all tool operations with consistent interface
|
||||
- Integrates with FileContext for operation tracking
|
||||
- Handles validation, error handling, and UI state management
|
||||
@@ -232,34 +147,8 @@ return useToolOperation({
|
||||
- **Pipeline System**: Automated PDF processing workflows via `PipelineController`
|
||||
- **Security Layer**: Authentication, authorization, and user management (when enabled)
|
||||
|
||||
### Frontend Directory Structure
|
||||
The frontend is organized with a clear separation of concerns:
|
||||
|
||||
- **`frontend/src/core/`**: Main application code (shared, production-ready components)
|
||||
- **`core/components/`**: React components organized by feature
|
||||
- `core/components/tools/`: Individual PDF tool implementations
|
||||
- `core/components/viewer/`: PDF viewer components
|
||||
- `core/components/pageEditor/`: Page manipulation UI
|
||||
- `core/components/tooltips/`: Help tooltips for tools
|
||||
- `core/components/shared/`: Reusable UI components
|
||||
- **`core/contexts/`**: React Context providers
|
||||
- `FileContext.tsx`: Central file state management
|
||||
- `file/`: File reducer and selectors
|
||||
- `toolWorkflow/`: Tool workflow state
|
||||
- **`core/hooks/`**: Custom React hooks
|
||||
- `hooks/tools/`: Tool-specific operation hooks (one directory per tool)
|
||||
- `hooks/tools/shared/`: Shared hook utilities (useToolOperation, etc.)
|
||||
- **`core/constants/`**: Application constants and configuration
|
||||
- **`core/data/`**: Static data (tool taxonomy, etc.)
|
||||
- **`core/services/`**: Business logic services (PDF processing, storage, etc.)
|
||||
|
||||
- **`frontend/src/desktop/`**: Desktop-specific (Tauri) code
|
||||
- **`frontend/src/proprietary/`**: Proprietary/licensed features
|
||||
- **`frontend/src-tauri/`**: Tauri (Rust) native desktop application code
|
||||
- **`frontend/public/`**: Static assets served directly
|
||||
- `public/locales/`: Translation JSON files
|
||||
|
||||
### Component Architecture
|
||||
- **React Components**: Located in `frontend/src/components/` and `frontend/src/tools/`
|
||||
- **Static Assets**: CSS, JS, and resources in `src/main/resources/static/` (legacy) + `frontend/public/` (modern)
|
||||
- **Internationalization**:
|
||||
- Backend: `messages_*.properties` files
|
||||
@@ -314,7 +203,6 @@ The frontend is organized with a clear separation of concerns:
|
||||
- **Backend**: Designed to be stateless - files are processed in memory/temp locations only
|
||||
- **Frontend**: Uses IndexedDB for client-side file storage and caching (with thumbnails)
|
||||
- **Security**: When `DOCKER_ENABLE_SECURITY=false`, security-related classes are excluded from compilation
|
||||
- **Import Paths**: ALWAYS use `@app/*` for imports - never use `@core/*` or `@proprietary/*` unless explicitly wrapping/extending a lower layer
|
||||
- **FileContext**: All file operations MUST go through FileContext - never bypass with direct File handling
|
||||
- **Memory Management**: Manual cleanup required for PDF.js documents and blob URLs - don't remove cleanup code
|
||||
- **Tool Development**: New tools should follow `useToolOperation` hook pattern (see `useCompressOperation.ts`)
|
||||
|
||||
@@ -35,8 +35,6 @@ import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import jakarta.annotation.PostConstruct;
|
||||
|
||||
import stirling.software.common.configuration.InstallationPathConfig;
|
||||
import stirling.software.common.configuration.YamlPropertySourceFactory;
|
||||
import stirling.software.common.model.exception.UnsupportedProviderException;
|
||||
@@ -100,46 +98,6 @@ public class ApplicationProperties {
|
||||
return propertySource;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize fileUploadLimit from environment variables if not set in settings.yml.
|
||||
* Supports SYSTEMFILEUPLOADLIMIT (format: "100MB") and SYSTEM_MAXFILESIZE (format: "100" in MB).
|
||||
*/
|
||||
@PostConstruct
|
||||
public void initializeFileUploadLimitFromEnv() {
|
||||
// Only override if fileUploadLimit is not already set in settings.yml
|
||||
if (system.getFileUploadLimit() == null || system.getFileUploadLimit().isEmpty()) {
|
||||
String fileUploadLimit = null;
|
||||
|
||||
// Check SYSTEMFILEUPLOADLIMIT first (format: "100MB", "1GB", etc.)
|
||||
String systemFileUploadLimit = java.lang.System.getenv("SYSTEMFILEUPLOADLIMIT");
|
||||
if (systemFileUploadLimit != null && !systemFileUploadLimit.trim().isEmpty()) {
|
||||
fileUploadLimit = systemFileUploadLimit.trim();
|
||||
log.info("Setting fileUploadLimit from SYSTEMFILEUPLOADLIMIT: {}", fileUploadLimit);
|
||||
} else {
|
||||
// Check SYSTEM_MAXFILESIZE (format: number in MB, e.g., "100")
|
||||
String systemMaxFileSize = java.lang.System.getenv("SYSTEM_MAXFILESIZE");
|
||||
if (systemMaxFileSize != null && !systemMaxFileSize.trim().isEmpty()) {
|
||||
try {
|
||||
// Validate it's a number
|
||||
long sizeInMB = Long.parseLong(systemMaxFileSize.trim());
|
||||
if (sizeInMB > 0 && sizeInMB <= 999) {
|
||||
fileUploadLimit = sizeInMB + "MB";
|
||||
log.info("Setting fileUploadLimit from SYSTEM_MAXFILESIZE: {}MB", sizeInMB);
|
||||
} else {
|
||||
log.warn("SYSTEM_MAXFILESIZE value {} is out of valid range (1-999), ignoring", sizeInMB);
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
log.warn("SYSTEM_MAXFILESIZE value '{}' is not a valid number, ignoring", systemMaxFileSize);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (fileUploadLimit != null) {
|
||||
system.setFileUploadLimit(fileUploadLimit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class AutoPipeline {
|
||||
private String outputFolder;
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
package stirling.software.SPDF.config;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.web.servlet.MultipartConfigFactory;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.DependsOn;
|
||||
import org.springframework.util.unit.DataSize;
|
||||
|
||||
import jakarta.servlet.MultipartConfigElement;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import stirling.software.SPDF.controller.web.UploadLimitService;
|
||||
|
||||
/**
|
||||
* Configuration for Spring multipart file upload settings.
|
||||
* Synchronizes multipart limits with fileUploadLimit from settings.yml or environment variables
|
||||
* (SYSTEMFILEUPLOADLIMIT or SYSTEM_MAXFILESIZE).
|
||||
*/
|
||||
@Configuration
|
||||
@Slf4j
|
||||
public class MultipartConfiguration {
|
||||
|
||||
@Autowired private UploadLimitService uploadLimitService;
|
||||
|
||||
/**
|
||||
* Creates MultipartConfigElement that respects fileUploadLimit from settings.yml
|
||||
* or environment variables (SYSTEMFILEUPLOADLIMIT or SYSTEM_MAXFILESIZE).
|
||||
* Depends on ApplicationProperties being initialized so @PostConstruct has run.
|
||||
*/
|
||||
@Bean
|
||||
@DependsOn("applicationProperties")
|
||||
public MultipartConfigElement multipartConfigElement() {
|
||||
MultipartConfigFactory factory = new MultipartConfigFactory();
|
||||
|
||||
// First check if SPRING_SERVLET_MULTIPART_MAX_FILE_SIZE is explicitly set
|
||||
String springMaxFileSize = java.lang.System.getenv("SPRING_SERVLET_MULTIPART_MAX_FILE_SIZE");
|
||||
long uploadLimitBytes = 0;
|
||||
|
||||
if (springMaxFileSize != null && !springMaxFileSize.trim().isEmpty()) {
|
||||
// Parse the Spring property format (e.g., "2000MB")
|
||||
try {
|
||||
DataSize dataSize = DataSize.parse(springMaxFileSize.trim());
|
||||
uploadLimitBytes = dataSize.toBytes();
|
||||
log.info("Using SPRING_SERVLET_MULTIPART_MAX_FILE_SIZE: {}", springMaxFileSize);
|
||||
} catch (Exception e) {
|
||||
log.warn("Failed to parse SPRING_SERVLET_MULTIPART_MAX_FILE_SIZE: {}", springMaxFileSize, e);
|
||||
}
|
||||
}
|
||||
|
||||
// If not set via Spring property, use UploadLimitService which reads from
|
||||
// fileUploadLimit (set from SYSTEMFILEUPLOADLIMIT/SYSTEM_MAXFILESIZE or settings.yml)
|
||||
if (uploadLimitBytes == 0) {
|
||||
uploadLimitBytes = uploadLimitService.getUploadLimit();
|
||||
if (uploadLimitBytes > 0) {
|
||||
log.info(
|
||||
"Using fileUploadLimit setting: {}",
|
||||
uploadLimitService.getReadableUploadLimit());
|
||||
}
|
||||
}
|
||||
|
||||
// If still no limit, use default of 2000MB
|
||||
if (uploadLimitBytes == 0) {
|
||||
uploadLimitBytes = 2000L * 1024 * 1024; // 2000MB default
|
||||
log.info("Using default multipart file upload limit: 2000MB");
|
||||
}
|
||||
|
||||
// Set max file size and max request size to the same value
|
||||
factory.setMaxFileSize(DataSize.ofBytes(uploadLimitBytes));
|
||||
factory.setMaxRequestSize(DataSize.ofBytes(uploadLimitBytes));
|
||||
|
||||
return factory.createMultipartConfig();
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -46,8 +46,8 @@ public class EditTableOfContentsController {
|
||||
@Operation(
|
||||
summary = "Extract PDF Bookmarks",
|
||||
description = "Extracts bookmarks/table of contents from a PDF document as JSON.")
|
||||
public ResponseEntity<List<Map<String, Object>>> extractBookmarks(
|
||||
@RequestParam("file") MultipartFile file) throws Exception {
|
||||
public ResponseEntity<List<Map<String, Object>>> extractBookmarks(@RequestParam("file") MultipartFile file)
|
||||
throws Exception {
|
||||
try (PDDocument document = pdfDocumentFactory.load(file)) {
|
||||
PDDocumentOutline outline = document.getDocumentCatalog().getDocumentOutline();
|
||||
|
||||
|
||||
+3
-39
@@ -71,12 +71,10 @@ import org.apache.xmpbox.schema.PDFAIdentificationSchema;
|
||||
import org.apache.xmpbox.schema.XMPBasicSchema;
|
||||
import org.apache.xmpbox.xml.DomXmpParser;
|
||||
import org.apache.xmpbox.xml.XmpSerializer;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.server.ResponseStatusException;
|
||||
|
||||
import io.github.pixee.security.Filenames;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
@@ -101,7 +99,6 @@ public class ConvertPDFToPDFA {
|
||||
|
||||
private static final Pattern NON_PRINTABLE_ASCII = Pattern.compile("[^\\x20-\\x7E]");
|
||||
private final RuntimePathConfig runtimePathConfig;
|
||||
private final stirling.software.SPDF.service.VeraPDFService veraPDFService;
|
||||
|
||||
private static final String ICC_RESOURCE_PATH = "/icc/sRGB2014.icc";
|
||||
private static final int PDFA_COMPATIBILITY_POLICY = 1;
|
||||
@@ -590,8 +587,7 @@ public class ConvertPDFToPDFA {
|
||||
if (isPdfX) {
|
||||
return handlePdfXConversion(inputFile, outputFormat);
|
||||
} else {
|
||||
return handlePdfAConversion(
|
||||
inputFile, outputFormat, request.getStrict() != null && request.getStrict());
|
||||
return handlePdfAConversion(inputFile, outputFormat);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1797,7 +1793,7 @@ public class ConvertPDFToPDFA {
|
||||
}
|
||||
|
||||
private ResponseEntity<byte[]> handlePdfAConversion(
|
||||
MultipartFile inputFile, String outputFormat, boolean strict) throws Exception {
|
||||
MultipartFile inputFile, String outputFormat) throws Exception {
|
||||
PdfaProfile profile = PdfaProfile.fromRequest(outputFormat);
|
||||
|
||||
// Get the original filename without extension
|
||||
@@ -1826,10 +1822,6 @@ public class ConvertPDFToPDFA {
|
||||
|
||||
validateAndWarnPdfA(converted, profile, "Ghostscript");
|
||||
|
||||
if (strict) {
|
||||
verifyStrictCompliance(converted);
|
||||
}
|
||||
|
||||
return WebResponseUtils.bytesToWebResponse(
|
||||
converted, outputFilename, MediaType.APPLICATION_PDF);
|
||||
} catch (IOException | InterruptedException e) {
|
||||
@@ -1847,42 +1839,14 @@ public class ConvertPDFToPDFA {
|
||||
// Validate with PDFBox preflight and warn if issues found
|
||||
validateAndWarnPdfA(converted, profile, "PDFBox/LibreOffice");
|
||||
|
||||
if (strict) {
|
||||
verifyStrictCompliance(converted);
|
||||
}
|
||||
|
||||
return WebResponseUtils.bytesToWebResponse(
|
||||
converted, outputFilename, MediaType.APPLICATION_PDF);
|
||||
|
||||
} finally {
|
||||
deleteQuietly(workingDir);
|
||||
}
|
||||
}
|
||||
|
||||
private void verifyStrictCompliance(byte[] pdfBytes) throws IOException {
|
||||
try (InputStream is = new ByteArrayInputStream(pdfBytes)) {
|
||||
List<stirling.software.SPDF.model.api.security.PDFVerificationResult> results =
|
||||
veraPDFService.validatePDF(is);
|
||||
boolean isCompliant = results.stream().anyMatch(result -> result.isCompliant());
|
||||
if (!isCompliant) {
|
||||
String details =
|
||||
results.stream()
|
||||
.map(r -> r.getStandard() + ": " + r.getComplianceSummary())
|
||||
.collect(Collectors.joining("; "));
|
||||
throw new ResponseStatusException(
|
||||
HttpStatus.BAD_REQUEST,
|
||||
"Strict PDF/A mode enabled: Conversion is not perfectly compliant. Details: "
|
||||
+ details);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
if (e instanceof ResponseStatusException) {
|
||||
throw (ResponseStatusException) e;
|
||||
}
|
||||
log.error("Error during strict PDF/A verification", e);
|
||||
throw new ResponseStatusException(
|
||||
HttpStatus.INTERNAL_SERVER_ERROR, "Error during strict PDF/A verification");
|
||||
}
|
||||
}
|
||||
|
||||
private Path sanitizePdfWithPdfBox(Path inputPdf, boolean addWhiteBackground) {
|
||||
try {
|
||||
Path sanitizedPath =
|
||||
|
||||
-180
@@ -2,7 +2,6 @@ package stirling.software.SPDF.controller.api.converters;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.MediaType;
|
||||
@@ -57,7 +56,6 @@ public class ConvertPdfJsonController {
|
||||
}
|
||||
|
||||
byte[] jsonBytes = pdfJsonConversionService.convertPdfToJson(inputFile, lightweight);
|
||||
logJsonResponse("pdf/text-editor", jsonBytes);
|
||||
String originalName = inputFile.getOriginalFilename();
|
||||
String baseName =
|
||||
(originalName != null && !originalName.isBlank())
|
||||
@@ -114,7 +112,6 @@ public class ConvertPdfJsonController {
|
||||
|
||||
byte[] jsonBytes =
|
||||
pdfJsonConversionService.extractDocumentMetadata(inputFile, scopedJobKey);
|
||||
logJsonResponse("pdf/text-editor/metadata", jsonBytes);
|
||||
String originalName = inputFile.getOriginalFilename();
|
||||
String baseName =
|
||||
(originalName != null && !originalName.isBlank())
|
||||
@@ -178,7 +175,6 @@ public class ConvertPdfJsonController {
|
||||
validateJobAccess(jobId);
|
||||
|
||||
byte[] jsonBytes = pdfJsonConversionService.extractSinglePage(jobId, pageNumber);
|
||||
logJsonResponse("pdf/text-editor/page", jsonBytes);
|
||||
String docName = "page_" + pageNumber + ".json";
|
||||
return WebResponseUtils.bytesToWebResponse(jsonBytes, docName, MediaType.APPLICATION_JSON);
|
||||
}
|
||||
@@ -213,182 +209,6 @@ public class ConvertPdfJsonController {
|
||||
return baseJobId;
|
||||
}
|
||||
|
||||
private void logJsonResponse(String label, byte[] jsonBytes) {
|
||||
if (jsonBytes == null) {
|
||||
log.warn("Returning {} JSON response: null bytes", label);
|
||||
return;
|
||||
}
|
||||
int length = jsonBytes.length;
|
||||
boolean endsWithJson =
|
||||
length > 0 && (jsonBytes[length - 1] == '}' || jsonBytes[length - 1] == ']');
|
||||
String tail = "";
|
||||
if (length > 0) {
|
||||
int start = Math.max(0, length - 64);
|
||||
tail = new String(jsonBytes, start, length - start, StandardCharsets.UTF_8);
|
||||
tail = tail.replaceAll("[\\r\\n\\t]+", " ").replaceAll("[^\\x20-\\x7E]", "?");
|
||||
}
|
||||
log.info(
|
||||
"Returning {} JSON response ({} bytes, endsWithJson={}, tail='{}')",
|
||||
label,
|
||||
length,
|
||||
endsWithJson,
|
||||
tail);
|
||||
|
||||
if (isPdfJsonDebugDumpEnabled()) {
|
||||
try {
|
||||
String tmpDir = System.getProperty("java.io.tmpdir");
|
||||
String customDir = System.getenv("SPDF_PDFJSON_DUMP_DIR");
|
||||
java.nio.file.Path dumpDir =
|
||||
customDir != null && !customDir.isBlank()
|
||||
? java.nio.file.Path.of(customDir)
|
||||
: java.nio.file.Path.of(tmpDir);
|
||||
java.nio.file.Path dumpPath =
|
||||
java.nio.file.Files.createTempFile(dumpDir, "pdfjson_", ".json");
|
||||
java.nio.file.Files.write(dumpPath, jsonBytes);
|
||||
log.info("PDF JSON debug dump ({}): {}", label, dumpPath);
|
||||
} catch (Exception ex) {
|
||||
log.warn("Failed to write PDF JSON debug dump ({}): {}", label, ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
if (isPdfJsonRepeatScanEnabled()) {
|
||||
logRepeatedJsonStrings(label, jsonBytes);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isPdfJsonDebugDumpEnabled() {
|
||||
String env = System.getenv("SPDF_PDFJSON_DUMP");
|
||||
if (env != null && env.equalsIgnoreCase("true")) {
|
||||
return true;
|
||||
}
|
||||
return Boolean.getBoolean("spdf.pdfjson.dump");
|
||||
}
|
||||
|
||||
private boolean isPdfJsonRepeatScanEnabled() {
|
||||
String env = System.getenv("SPDF_PDFJSON_REPEAT_SCAN");
|
||||
if (env != null && env.equalsIgnoreCase("true")) {
|
||||
return true;
|
||||
}
|
||||
return Boolean.getBoolean("spdf.pdfjson.repeatScan");
|
||||
}
|
||||
|
||||
private void logRepeatedJsonStrings(String label, byte[] jsonBytes) {
|
||||
final int minLen = 12;
|
||||
final int maxLen = 200;
|
||||
final int maxUnique = 50000;
|
||||
java.util.Map<String, Integer> counts = new java.util.HashMap<>();
|
||||
boolean inString = false;
|
||||
boolean escape = false;
|
||||
boolean tooLong = false;
|
||||
StringBuilder current = new StringBuilder(64);
|
||||
boolean capped = false;
|
||||
|
||||
for (byte b : jsonBytes) {
|
||||
char ch = (char) (b & 0xFF);
|
||||
if (!inString) {
|
||||
if (ch == '"') {
|
||||
inString = true;
|
||||
escape = false;
|
||||
tooLong = false;
|
||||
current.setLength(0);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (escape) {
|
||||
escape = false;
|
||||
if (!tooLong && current.length() < maxLen) {
|
||||
current.append(ch);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (ch == '\\') {
|
||||
escape = true;
|
||||
continue;
|
||||
}
|
||||
if (ch == '"') {
|
||||
inString = false;
|
||||
if (!tooLong) {
|
||||
int len = current.length();
|
||||
if (len >= minLen && len <= maxLen) {
|
||||
String value = current.toString();
|
||||
if (!looksLikeBase64(value)) {
|
||||
if (!capped || counts.containsKey(value)) {
|
||||
counts.merge(value, 1, Integer::sum);
|
||||
if (!capped && counts.size() >= maxUnique) {
|
||||
capped = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (!tooLong) {
|
||||
if (current.length() < maxLen) {
|
||||
current.append(ch);
|
||||
} else {
|
||||
tooLong = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
java.util.List<java.util.Map.Entry<String, Integer>> top =
|
||||
counts.entrySet().stream()
|
||||
.filter(e -> e.getValue() > 1)
|
||||
.sorted((a, b) -> Integer.compare(b.getValue(), a.getValue()))
|
||||
.limit(20)
|
||||
.toList();
|
||||
|
||||
if (!top.isEmpty()) {
|
||||
String summary =
|
||||
top.stream()
|
||||
.map(
|
||||
e ->
|
||||
String.format(
|
||||
"\"%s\"(len=%d,count=%d)",
|
||||
truncateForLog(e.getKey()),
|
||||
e.getKey().length(),
|
||||
e.getValue()))
|
||||
.collect(java.util.stream.Collectors.joining("; "));
|
||||
log.info(
|
||||
"PDF JSON repeat scan ({}): top strings -> {}{}",
|
||||
label,
|
||||
summary,
|
||||
capped ? " (capped)" : "");
|
||||
} else {
|
||||
log.info(
|
||||
"PDF JSON repeat scan ({}): no repeated strings found{}", label, capped ? " (capped)" : "");
|
||||
}
|
||||
}
|
||||
|
||||
private boolean looksLikeBase64(String value) {
|
||||
if (value.length() < 32) {
|
||||
return false;
|
||||
}
|
||||
int base64Chars = 0;
|
||||
for (int i = 0; i < value.length(); i++) {
|
||||
char c = value.charAt(i);
|
||||
if ((c >= 'A' && c <= 'Z')
|
||||
|| (c >= 'a' && c <= 'z')
|
||||
|| (c >= '0' && c <= '9')
|
||||
|| c == '+'
|
||||
|| c == '/'
|
||||
|| c == '=') {
|
||||
base64Chars++;
|
||||
}
|
||||
}
|
||||
return base64Chars >= value.length() * 0.9;
|
||||
}
|
||||
|
||||
private String truncateForLog(String value) {
|
||||
int max = 64;
|
||||
if (value.length() <= max) {
|
||||
return value.replaceAll("[\\r\\n\\t]+", " ");
|
||||
}
|
||||
return value.substring(0, max).replaceAll("[\\r\\n\\t]+", " ") + "...";
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate that the current user has access to the given job.
|
||||
*
|
||||
|
||||
-5
@@ -16,9 +16,4 @@ public class PdfToPdfARequest extends PDFFile {
|
||||
requiredMode = Schema.RequiredMode.REQUIRED,
|
||||
allowableValues = {"pdfa", "pdfa-1", "pdfa-2", "pdfa-2b", "pdfa-3", "pdfa-3b", "pdfx"})
|
||||
private String outputFormat;
|
||||
|
||||
@Schema(
|
||||
description =
|
||||
"If true, the conversion will fail if the output is not perfectly compliant")
|
||||
private Boolean strict = false;
|
||||
}
|
||||
|
||||
+1
-2
@@ -40,8 +40,7 @@ public class AddPageNumbersRequest extends PDFWithPageNums {
|
||||
private String fontColor;
|
||||
|
||||
@Schema(
|
||||
description =
|
||||
"Zero-padding width for page numbers (Bates Stamping). Set to 0 to disable padding",
|
||||
description = "Zero-padding width for page numbers (Bates Stamping). Set to 0 to disable padding",
|
||||
minimum = "0",
|
||||
defaultValue = "0",
|
||||
requiredMode = RequiredMode.NOT_REQUIRED)
|
||||
|
||||
+34
-545
@@ -427,9 +427,8 @@ public class PdfJsonConversionService {
|
||||
progress.accept(
|
||||
PdfJsonConversionProgress.of(
|
||||
80, "annotations", "Collecting annotations and form fields"));
|
||||
boolean includeAnnotationRawData = !(lightweight && isRealJobId);
|
||||
Map<Integer, List<PdfJsonAnnotation>> annotationsByPage =
|
||||
collectAnnotations(document, totalPages, progress, includeAnnotationRawData);
|
||||
collectAnnotations(document, totalPages, progress);
|
||||
|
||||
progress.accept(
|
||||
PdfJsonConversionProgress.of(90, "metadata", "Extracting metadata"));
|
||||
@@ -442,15 +441,9 @@ public class PdfJsonConversionService {
|
||||
Comparator.comparing(
|
||||
PdfJsonFont::getUid,
|
||||
Comparator.nullsLast(Comparator.naturalOrder())));
|
||||
dedupeFontPayloads(serializedFonts);
|
||||
pdfJson.setFonts(serializedFonts);
|
||||
pdfJson.setPages(
|
||||
extractPages(
|
||||
document,
|
||||
textByPage,
|
||||
imagesByPage,
|
||||
annotationsByPage,
|
||||
lightweight && isRealJobId));
|
||||
extractPages(document, textByPage, imagesByPage, annotationsByPage));
|
||||
pdfJson.setFormFields(collectFormFields(document));
|
||||
|
||||
// Only cache for real async jobIds, not synthetic synchronous ones
|
||||
@@ -514,12 +507,6 @@ public class PdfJsonConversionService {
|
||||
if (lightweight) {
|
||||
applyLightweightTransformations(pdfJson);
|
||||
}
|
||||
if (lightweight && isRealJobId) {
|
||||
stripFontCosStreamData(serializedFonts);
|
||||
}
|
||||
|
||||
logFontPayloadStats(serializedFonts, "pdf/text-editor");
|
||||
analyzePdfJson(pdfJson, "pdf/text-editor");
|
||||
|
||||
progress.accept(
|
||||
PdfJsonConversionProgress.of(95, "serializing", "Generating JSON output"));
|
||||
@@ -530,9 +517,8 @@ public class PdfJsonConversionService {
|
||||
.filter(
|
||||
f ->
|
||||
Boolean.TRUE.equals(f.getEmbedded())
|
||||
&& !(hasPayload(f.getProgram())
|
||||
|| hasPayload(f.getPdfProgram())
|
||||
|| hasPayload(f.getWebProgram())))
|
||||
&& (f.getProgram() == null
|
||||
|| f.getProgram().isEmpty()))
|
||||
.map(
|
||||
f -> {
|
||||
String name =
|
||||
@@ -1053,376 +1039,6 @@ public class PdfJsonConversionService {
|
||||
return toPdfJsonFont(cacheEntry, fontId, pageNumber, jobId);
|
||||
}
|
||||
|
||||
private void logFontPayloadStats(List<PdfJsonFont> fonts, String label) {
|
||||
if (fonts == null || fonts.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
long programBytes = 0;
|
||||
long webProgramBytes = 0;
|
||||
long pdfProgramBytes = 0;
|
||||
long toUnicodeBytes = 0;
|
||||
long maxFontPayload = 0;
|
||||
String maxFontId = null;
|
||||
|
||||
for (PdfJsonFont font : fonts) {
|
||||
if (font == null) {
|
||||
continue;
|
||||
}
|
||||
long fontBytes = 0;
|
||||
if (font.getProgram() != null) {
|
||||
long len = font.getProgram().length();
|
||||
programBytes += len;
|
||||
fontBytes += len;
|
||||
}
|
||||
if (font.getWebProgram() != null) {
|
||||
long len = font.getWebProgram().length();
|
||||
webProgramBytes += len;
|
||||
fontBytes += len;
|
||||
}
|
||||
if (font.getPdfProgram() != null) {
|
||||
long len = font.getPdfProgram().length();
|
||||
pdfProgramBytes += len;
|
||||
fontBytes += len;
|
||||
}
|
||||
if (font.getToUnicode() != null) {
|
||||
long len = font.getToUnicode().length();
|
||||
toUnicodeBytes += len;
|
||||
fontBytes += len;
|
||||
}
|
||||
if (fontBytes > maxFontPayload) {
|
||||
maxFontPayload = fontBytes;
|
||||
maxFontId = font.getUid() != null ? font.getUid() : font.getId();
|
||||
}
|
||||
}
|
||||
|
||||
log.info(
|
||||
"Font payload stats ({}): fonts={}, programBytes={}, webProgramBytes={}, pdfProgramBytes={}, toUnicodeBytes={}, maxFontPayloadBytes={} (fontId={})",
|
||||
label,
|
||||
fonts.size(),
|
||||
programBytes,
|
||||
webProgramBytes,
|
||||
pdfProgramBytes,
|
||||
toUnicodeBytes,
|
||||
maxFontPayload,
|
||||
maxFontId);
|
||||
}
|
||||
|
||||
private void analyzePdfJson(PdfJsonDocument pdfJson, String label) {
|
||||
if (!isPdfJsonDebugAnalyzeEnabled() || pdfJson == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
Map<String, DuplicateStats> resourceStats = new HashMap<>();
|
||||
Map<String, DuplicateStats> fontDictStats = new HashMap<>();
|
||||
Map<String, DuplicateStats> annotationStats = new HashMap<>();
|
||||
long imageDataBytes = 0;
|
||||
long imageCount = 0;
|
||||
long textElementCount = 0;
|
||||
long textCharCount = 0;
|
||||
|
||||
List<PdfJsonPage> pages = pdfJson.getPages();
|
||||
if (pages != null) {
|
||||
for (PdfJsonPage page : pages) {
|
||||
if (page == null) {
|
||||
continue;
|
||||
}
|
||||
recordDuplicate(resourceStats, page.getResources());
|
||||
|
||||
List<PdfJsonAnnotation> annotations = page.getAnnotations();
|
||||
if (annotations != null) {
|
||||
for (PdfJsonAnnotation annotation : annotations) {
|
||||
recordDuplicate(annotationStats, annotation.getRawData());
|
||||
}
|
||||
}
|
||||
|
||||
List<PdfJsonImageElement> images = page.getImageElements();
|
||||
if (images != null) {
|
||||
for (PdfJsonImageElement image : images) {
|
||||
if (image == null) {
|
||||
continue;
|
||||
}
|
||||
String data = image.getImageData();
|
||||
if (data != null) {
|
||||
imageDataBytes += data.length();
|
||||
}
|
||||
imageCount++;
|
||||
}
|
||||
}
|
||||
|
||||
List<PdfJsonTextElement> textElements = page.getTextElements();
|
||||
if (textElements != null) {
|
||||
for (PdfJsonTextElement element : textElements) {
|
||||
if (element == null) {
|
||||
continue;
|
||||
}
|
||||
textElementCount++;
|
||||
String text = element.getText();
|
||||
if (text != null) {
|
||||
textCharCount += text.length();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<PdfJsonFont> fonts = pdfJson.getFonts();
|
||||
if (fonts != null) {
|
||||
for (PdfJsonFont font : fonts) {
|
||||
recordDuplicate(fontDictStats, font.getCosDictionary());
|
||||
}
|
||||
}
|
||||
|
||||
logDuplicateSummary("resources", label, resourceStats);
|
||||
logDuplicateSummary("fontCosDictionary", label, fontDictStats);
|
||||
logDuplicateSummary("annotationRawData", label, annotationStats);
|
||||
log.info(
|
||||
"PDF JSON analysis ({}): images={} imageDataBytes={} textElements={} textChars={}",
|
||||
label,
|
||||
imageCount,
|
||||
imageDataBytes,
|
||||
textElementCount,
|
||||
textCharCount);
|
||||
|
||||
long fontsBytes = sizeOfObject(pdfJson.getFonts());
|
||||
long pagesBytes = sizeOfObject(pdfJson.getPages());
|
||||
long metadataBytes = sizeOfObject(pdfJson.getMetadata());
|
||||
long xmpBytes = sizeOfObject(pdfJson.getXmpMetadata());
|
||||
long formFieldsBytes = sizeOfObject(pdfJson.getFormFields());
|
||||
log.info(
|
||||
"PDF JSON analysis ({}): sectionSizes fonts={} pages={} metadata={} xmp={} formFields={}",
|
||||
label,
|
||||
fontsBytes,
|
||||
pagesBytes,
|
||||
metadataBytes,
|
||||
xmpBytes,
|
||||
formFieldsBytes);
|
||||
|
||||
if (pages != null && !pages.isEmpty()) {
|
||||
List<PageSizeStat> topPages = new ArrayList<>();
|
||||
int pageIndex = 0;
|
||||
for (PdfJsonPage page : pages) {
|
||||
if (page == null) {
|
||||
pageIndex++;
|
||||
continue;
|
||||
}
|
||||
long size = sizeOfObject(page);
|
||||
int pageNumber =
|
||||
page.getPageNumber() != null ? page.getPageNumber() : pageIndex + 1;
|
||||
topPages.add(new PageSizeStat(pageNumber, size, page));
|
||||
pageIndex++;
|
||||
}
|
||||
topPages.sort((a, b) -> Long.compare(b.sizeBytes, a.sizeBytes));
|
||||
String top =
|
||||
topPages.stream()
|
||||
.limit(5)
|
||||
.map(
|
||||
s ->
|
||||
String.format(
|
||||
"page=%d size=%d", s.pageNumber, s.sizeBytes))
|
||||
.collect(java.util.stream.Collectors.joining("; "));
|
||||
log.info("PDF JSON analysis ({}): topPageSizes -> {}", label, top);
|
||||
|
||||
topPages.stream()
|
||||
.limit(3)
|
||||
.forEach(
|
||||
s -> {
|
||||
PdfJsonPage page = s.page;
|
||||
long resources = sizeOfObject(page.getResources());
|
||||
long contentStreams = sizeOfObject(page.getContentStreams());
|
||||
long annotations = sizeOfObject(page.getAnnotations());
|
||||
long textElements = sizeOfObject(page.getTextElements());
|
||||
long imageElements = sizeOfObject(page.getImageElements());
|
||||
log.info(
|
||||
"PDF JSON analysis ({}): pageBreakdown page={} total={} resources={} contentStreams={} annotations={} textElements={} imageElements={}",
|
||||
label,
|
||||
s.pageNumber,
|
||||
s.sizeBytes,
|
||||
resources,
|
||||
contentStreams,
|
||||
annotations,
|
||||
textElements,
|
||||
imageElements);
|
||||
});
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
log.warn("PDF JSON analysis failed ({}): {}", label, ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private void recordDuplicate(Map<String, DuplicateStats> stats, PdfJsonCosValue value)
|
||||
throws IOException, java.security.NoSuchAlgorithmException {
|
||||
if (value == null) {
|
||||
return;
|
||||
}
|
||||
byte[] bytes = objectMapper.writeValueAsBytes(value);
|
||||
if (bytes.length == 0) {
|
||||
return;
|
||||
}
|
||||
String hash = Base64.getEncoder().encodeToString(
|
||||
java.security.MessageDigest.getInstance("SHA-256").digest(bytes));
|
||||
DuplicateStats entry = stats.computeIfAbsent(hash, k -> new DuplicateStats());
|
||||
entry.count++;
|
||||
if (entry.sizeBytes == 0) {
|
||||
entry.sizeBytes = bytes.length;
|
||||
}
|
||||
}
|
||||
|
||||
private void logDuplicateSummary(
|
||||
String category, String label, Map<String, DuplicateStats> stats) {
|
||||
if (stats.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
List<DuplicateStats> duplicates =
|
||||
stats.values().stream()
|
||||
.filter(s -> s.count > 1)
|
||||
.sorted(
|
||||
(a, b) ->
|
||||
Long.compare(
|
||||
b.totalBytesSaved(), a.totalBytesSaved()))
|
||||
.limit(5)
|
||||
.toList();
|
||||
|
||||
if (duplicates.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
String summary =
|
||||
duplicates.stream()
|
||||
.map(
|
||||
s ->
|
||||
String.format(
|
||||
"count=%d size=%d potentialSavings=%d",
|
||||
s.count, s.sizeBytes, s.totalBytesSaved()))
|
||||
.collect(java.util.stream.Collectors.joining("; "));
|
||||
log.info(
|
||||
"PDF JSON analysis ({}): top duplicates for {} -> {}",
|
||||
label,
|
||||
category,
|
||||
summary);
|
||||
}
|
||||
|
||||
private boolean isPdfJsonDebugAnalyzeEnabled() {
|
||||
String env = System.getenv("SPDF_PDFJSON_ANALYZE");
|
||||
if (env != null && env.equalsIgnoreCase("true")) {
|
||||
return true;
|
||||
}
|
||||
return Boolean.getBoolean("spdf.pdfjson.analyze");
|
||||
}
|
||||
|
||||
private long sizeOfObject(Object value) {
|
||||
if (value == null) {
|
||||
return 0;
|
||||
}
|
||||
try {
|
||||
return objectMapper.writeValueAsBytes(value).length;
|
||||
} catch (Exception ex) {
|
||||
log.warn("Failed to serialize object for size analysis: {}", ex.getMessage());
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
private static final class DuplicateStats {
|
||||
private int count;
|
||||
private long sizeBytes;
|
||||
|
||||
private long totalBytesSaved() {
|
||||
return sizeBytes * (long) (count - 1);
|
||||
}
|
||||
}
|
||||
|
||||
private static final class PageSizeStat {
|
||||
private final int pageNumber;
|
||||
private final long sizeBytes;
|
||||
private final PdfJsonPage page;
|
||||
|
||||
private PageSizeStat(int pageNumber, long sizeBytes, PdfJsonPage page) {
|
||||
this.pageNumber = pageNumber;
|
||||
this.sizeBytes = sizeBytes;
|
||||
this.page = page;
|
||||
}
|
||||
}
|
||||
|
||||
private void dedupeFontPayloads(List<PdfJsonFont> fonts) {
|
||||
if (fonts == null || fonts.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
for (PdfJsonFont font : fonts) {
|
||||
if (font == null) {
|
||||
continue;
|
||||
}
|
||||
String program = font.getProgram();
|
||||
String pdfProgram = font.getPdfProgram();
|
||||
String webProgram = font.getWebProgram();
|
||||
|
||||
if (pdfProgram != null && !pdfProgram.isBlank()) {
|
||||
if (program != null && program.equals(pdfProgram)) {
|
||||
font.setProgram(null);
|
||||
font.setProgramFormat(null);
|
||||
}
|
||||
if (webProgram != null && webProgram.equals(pdfProgram)) {
|
||||
font.setWebProgram(null);
|
||||
font.setWebProgramFormat(null);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (program != null && webProgram != null && program.equals(webProgram)) {
|
||||
font.setWebProgram(null);
|
||||
font.setWebProgramFormat(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void stripFontCosStreamData(List<PdfJsonFont> fonts) {
|
||||
if (fonts == null || fonts.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
Set<PdfJsonCosValue> visited =
|
||||
Collections.newSetFromMap(new IdentityHashMap<>());
|
||||
for (PdfJsonFont font : fonts) {
|
||||
if (font == null) {
|
||||
continue;
|
||||
}
|
||||
PdfJsonCosValue cosDictionary = font.getCosDictionary();
|
||||
if (cosDictionary != null) {
|
||||
stripStreamRawData(cosDictionary, visited);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void stripStreamRawData(PdfJsonCosValue value, Set<PdfJsonCosValue> visited) {
|
||||
if (value == null || value.getType() == null) {
|
||||
return;
|
||||
}
|
||||
if (!visited.add(value)) {
|
||||
return;
|
||||
}
|
||||
switch (value.getType()) {
|
||||
case STREAM:
|
||||
if (value.getStream() != null) {
|
||||
value.getStream().setRawData(null);
|
||||
}
|
||||
break;
|
||||
case ARRAY:
|
||||
if (value.getItems() != null) {
|
||||
for (PdfJsonCosValue item : value.getItems()) {
|
||||
stripStreamRawData(item, visited);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DICTIONARY:
|
||||
if (value.getEntries() != null) {
|
||||
for (PdfJsonCosValue entry : value.getEntries().values()) {
|
||||
stripStreamRawData(entry, visited);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private FontModelCacheEntry createFontCacheEntry(
|
||||
PDDocument document, PDFont font, String fontId, int pageNumber, String jobId)
|
||||
throws IOException {
|
||||
@@ -2359,8 +1975,7 @@ public class PdfJsonConversionService {
|
||||
PDDocument document,
|
||||
Map<Integer, List<PdfJsonTextElement>> textByPage,
|
||||
Map<Integer, List<PdfJsonImageElement>> imagesByPage,
|
||||
Map<Integer, List<PdfJsonAnnotation>> annotationsByPage,
|
||||
boolean omitResourceStreamData)
|
||||
Map<Integer, List<PdfJsonAnnotation>> annotationsByPage)
|
||||
throws IOException {
|
||||
List<PdfJsonPage> pages = new ArrayList<>();
|
||||
int pageIndex = 0;
|
||||
@@ -2383,14 +1998,8 @@ public class PdfJsonConversionService {
|
||||
// imageElements
|
||||
COSBase resourcesBase = page.getCOSObject().getDictionaryObject(COSName.RESOURCES);
|
||||
COSBase filteredResources = filterImageXObjectsFromResources(resourcesBase);
|
||||
PdfJsonCosValue resourcesModel =
|
||||
omitResourceStreamData
|
||||
? cosMapper.serializeCosValue(
|
||||
filteredResources,
|
||||
PdfJsonCosMapper.SerializationContext.RESOURCES_LIGHTWEIGHT)
|
||||
: cosMapper.serializeCosValue(filteredResources);
|
||||
pageModel.setResources(resourcesModel);
|
||||
pageModel.setContentStreams(extractContentStreams(page, true));
|
||||
pageModel.setResources(cosMapper.serializeCosValue(filteredResources));
|
||||
pageModel.setContentStreams(extractContentStreams(page));
|
||||
pages.add(pageModel);
|
||||
pageIndex++;
|
||||
}
|
||||
@@ -2421,10 +2030,7 @@ public class PdfJsonConversionService {
|
||||
}
|
||||
|
||||
private Map<Integer, List<PdfJsonAnnotation>> collectAnnotations(
|
||||
PDDocument document,
|
||||
int totalPages,
|
||||
Consumer<PdfJsonConversionProgress> progress,
|
||||
boolean includeRawData)
|
||||
PDDocument document, int totalPages, Consumer<PdfJsonConversionProgress> progress)
|
||||
throws IOException {
|
||||
Map<Integer, List<PdfJsonAnnotation>> annotationsByPage = new LinkedHashMap<>();
|
||||
int pageNumber = 1;
|
||||
@@ -2496,13 +2102,8 @@ public class PdfJsonConversionService {
|
||||
}
|
||||
}
|
||||
|
||||
if (includeRawData) {
|
||||
// Store raw dictionary for lossless round-trip
|
||||
ann.setRawData(
|
||||
cosMapper.serializeCosValue(
|
||||
annotDict,
|
||||
PdfJsonCosMapper.SerializationContext.ANNOTATION_RAW_DATA));
|
||||
}
|
||||
// Store raw dictionary for lossless round-trip
|
||||
ann.setRawData(cosMapper.serializeCosValue(annotDict));
|
||||
|
||||
annotations.add(ann);
|
||||
} catch (Exception e) {
|
||||
@@ -2582,10 +2183,7 @@ public class PdfJsonConversionService {
|
||||
}
|
||||
|
||||
// Store raw dictionary for lossless round-trip
|
||||
formField.setRawData(
|
||||
cosMapper.serializeCosValue(
|
||||
field.getCOSObject(),
|
||||
PdfJsonCosMapper.SerializationContext.FORM_FIELD_RAW_DATA));
|
||||
formField.setRawData(cosMapper.serializeCosValue(field.getCOSObject()));
|
||||
|
||||
formFields.add(formField);
|
||||
} catch (Exception e) {
|
||||
@@ -2919,8 +2517,7 @@ public class PdfJsonConversionService {
|
||||
return streams;
|
||||
}
|
||||
|
||||
private List<PdfJsonStream> extractContentStreams(PDPage page, boolean omitRawData)
|
||||
throws IOException {
|
||||
private List<PdfJsonStream> extractContentStreams(PDPage page) throws IOException {
|
||||
List<PdfJsonStream> streams = new ArrayList<>();
|
||||
Iterator<PDStream> iterator = page.getContentStreams();
|
||||
if (iterator == null) {
|
||||
@@ -2928,13 +2525,7 @@ public class PdfJsonConversionService {
|
||||
}
|
||||
while (iterator.hasNext()) {
|
||||
PDStream stream = iterator.next();
|
||||
PdfJsonStream model =
|
||||
omitRawData
|
||||
? cosMapper.serializeStream(
|
||||
stream,
|
||||
PdfJsonCosMapper.SerializationContext
|
||||
.CONTENT_STREAMS_LIGHTWEIGHT)
|
||||
: cosMapper.serializeStream(stream);
|
||||
PdfJsonStream model = cosMapper.serializeStream(stream);
|
||||
if (model != null) {
|
||||
streams.add(model);
|
||||
}
|
||||
@@ -2942,10 +2533,6 @@ public class PdfJsonConversionService {
|
||||
return streams;
|
||||
}
|
||||
|
||||
private List<PdfJsonStream> extractContentStreams(PDPage page) throws IOException {
|
||||
return extractContentStreams(page, false);
|
||||
}
|
||||
|
||||
private PDStream extractVectorGraphics(
|
||||
PDDocument document,
|
||||
List<PDStream> preservedStreams,
|
||||
@@ -6064,8 +5651,6 @@ public class PdfJsonConversionService {
|
||||
serializedFonts.sort(
|
||||
Comparator.comparing(
|
||||
PdfJsonFont::getUid, Comparator.nullsLast(Comparator.naturalOrder())));
|
||||
dedupeFontPayloads(serializedFonts);
|
||||
stripFontCosStreamData(serializedFonts);
|
||||
docMetadata.setFonts(serializedFonts);
|
||||
|
||||
// Extract page dimensions
|
||||
@@ -6231,7 +5816,7 @@ public class PdfJsonConversionService {
|
||||
}
|
||||
}
|
||||
|
||||
// For cached page extraction, skip rawData to avoid huge payloads
|
||||
ann.setRawData(cosMapper.serializeCosValue(annotDict));
|
||||
annotations.add(ann);
|
||||
} catch (Exception e) {
|
||||
log.warn(
|
||||
@@ -6254,11 +5839,8 @@ public class PdfJsonConversionService {
|
||||
// Extract resources and content streams
|
||||
COSBase resourcesBase = page.getCOSObject().getDictionaryObject(COSName.RESOURCES);
|
||||
COSBase filteredResources = filterImageXObjectsFromResources(resourcesBase);
|
||||
pageModel.setResources(
|
||||
cosMapper.serializeCosValue(
|
||||
filteredResources,
|
||||
PdfJsonCosMapper.SerializationContext.RESOURCES_LIGHTWEIGHT));
|
||||
pageModel.setContentStreams(extractContentStreams(page, true));
|
||||
pageModel.setResources(cosMapper.serializeCosValue(filteredResources));
|
||||
pageModel.setContentStreams(extractContentStreams(page));
|
||||
|
||||
log.debug(
|
||||
"Extracted page {} (text: {}, images: {}, annotations: {}) for jobId: {}",
|
||||
@@ -6463,12 +6045,6 @@ public class PdfJsonConversionService {
|
||||
List<PdfJsonFont> fontModels,
|
||||
int pageNumberValue)
|
||||
throws IOException {
|
||||
boolean preserveExistingAnnotations =
|
||||
shouldPreserveExistingAnnotations(pageModel.getAnnotations());
|
||||
boolean preserveExistingContentStreams =
|
||||
shouldPreserveExistingContentStreams(pageModel.getContentStreams());
|
||||
boolean preserveExistingResources = shouldPreserveExistingResources(pageModel.getResources());
|
||||
|
||||
PDRectangle currentBox = page.getMediaBox();
|
||||
float fallbackWidth = currentBox != null ? currentBox.getWidth() : 612f;
|
||||
float fallbackHeight = currentBox != null ? currentBox.getHeight() : 792f;
|
||||
@@ -6483,20 +6059,14 @@ public class PdfJsonConversionService {
|
||||
page.setRotation(pageModel.getRotation());
|
||||
}
|
||||
|
||||
if (!preserveExistingResources) {
|
||||
applyPageResources(document, page, pageModel.getResources());
|
||||
}
|
||||
applyPageResources(document, page, pageModel.getResources());
|
||||
|
||||
List<PDStream> preservedStreams;
|
||||
if (preserveExistingContentStreams) {
|
||||
preservedStreams = snapshotExistingContentStreams(page);
|
||||
List<PDStream> preservedStreams =
|
||||
buildContentStreams(document, pageModel.getContentStreams());
|
||||
if (preservedStreams.isEmpty()) {
|
||||
page.setContents(new ArrayList<>());
|
||||
} else {
|
||||
preservedStreams = buildContentStreams(document, pageModel.getContentStreams());
|
||||
if (preservedStreams.isEmpty()) {
|
||||
page.setContents(new ArrayList<>());
|
||||
} else {
|
||||
page.setContents(preservedStreams);
|
||||
}
|
||||
page.setContents(preservedStreams);
|
||||
}
|
||||
|
||||
List<PdfJsonImageElement> imageElements =
|
||||
@@ -6536,14 +6106,12 @@ public class PdfJsonConversionService {
|
||||
pageNumberValue);
|
||||
|
||||
if (regenerateMode == RegenerateMode.REUSE_EXISTING) {
|
||||
if (!preserveExistingAnnotations) {
|
||||
page.getAnnotations().clear();
|
||||
List<PdfJsonAnnotation> annotations =
|
||||
pageModel.getAnnotations() != null
|
||||
? new ArrayList<>(pageModel.getAnnotations())
|
||||
: new ArrayList<>();
|
||||
restoreAnnotations(document, page, annotations);
|
||||
}
|
||||
page.getAnnotations().clear();
|
||||
List<PdfJsonAnnotation> annotations =
|
||||
pageModel.getAnnotations() != null
|
||||
? new ArrayList<>(pageModel.getAnnotations())
|
||||
: new ArrayList<>();
|
||||
restoreAnnotations(document, page, annotations);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -6572,14 +6140,12 @@ public class PdfJsonConversionService {
|
||||
pageNumberValue,
|
||||
appendMode);
|
||||
|
||||
if (!preserveExistingAnnotations) {
|
||||
page.getAnnotations().clear();
|
||||
List<PdfJsonAnnotation> annotations =
|
||||
pageModel.getAnnotations() != null
|
||||
? new ArrayList<>(pageModel.getAnnotations())
|
||||
: new ArrayList<>();
|
||||
restoreAnnotations(document, page, annotations);
|
||||
}
|
||||
page.getAnnotations().clear();
|
||||
List<PdfJsonAnnotation> annotations =
|
||||
pageModel.getAnnotations() != null
|
||||
? new ArrayList<>(pageModel.getAnnotations())
|
||||
: new ArrayList<>();
|
||||
restoreAnnotations(document, page, annotations);
|
||||
}
|
||||
|
||||
private RegenerateMode determineRegenerateMode(
|
||||
@@ -6626,83 +6192,6 @@ public class PdfJsonConversionService {
|
||||
REGENERATE_CLEAR
|
||||
}
|
||||
|
||||
private boolean shouldPreserveExistingAnnotations(List<PdfJsonAnnotation> annotations) {
|
||||
if (annotations == null || annotations.isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
for (PdfJsonAnnotation annotation : annotations) {
|
||||
if (annotation == null || annotation.getRawData() == null) {
|
||||
return true;
|
||||
}
|
||||
if (hasMissingStreamData(annotation.getRawData())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean shouldPreserveExistingContentStreams(List<PdfJsonStream> streams) {
|
||||
if (streams == null || streams.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
for (PdfJsonStream stream : streams) {
|
||||
if (stream == null || stream.getRawData() == null) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean shouldPreserveExistingResources(PdfJsonCosValue resources) {
|
||||
return hasMissingStreamData(resources);
|
||||
}
|
||||
|
||||
private List<PDStream> snapshotExistingContentStreams(PDPage page) throws IOException {
|
||||
List<PDStream> streams = new ArrayList<>();
|
||||
Iterator<PDStream> iterator = page.getContentStreams();
|
||||
if (iterator == null) {
|
||||
return streams;
|
||||
}
|
||||
while (iterator.hasNext()) {
|
||||
PDStream stream = iterator.next();
|
||||
if (stream != null) {
|
||||
streams.add(stream);
|
||||
}
|
||||
}
|
||||
return streams;
|
||||
}
|
||||
|
||||
private boolean hasMissingStreamData(PdfJsonCosValue value) {
|
||||
if (value == null || value.getType() == null) {
|
||||
return false;
|
||||
}
|
||||
switch (value.getType()) {
|
||||
case STREAM:
|
||||
PdfJsonStream stream = value.getStream();
|
||||
return stream == null || stream.getRawData() == null;
|
||||
case ARRAY:
|
||||
if (value.getItems() != null) {
|
||||
for (PdfJsonCosValue item : value.getItems()) {
|
||||
if (hasMissingStreamData(item)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
case DICTIONARY:
|
||||
if (value.getEntries() != null) {
|
||||
for (PdfJsonCosValue entry : value.getEntries().values()) {
|
||||
if (hasMissingStreamData(entry)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/** Schedules automatic cleanup of cached documents after 30 minutes. */
|
||||
private void scheduleDocumentCleanup(String jobId) {
|
||||
new Thread(
|
||||
|
||||
@@ -37,70 +37,23 @@ import stirling.software.SPDF.model.json.PdfJsonStream;
|
||||
@Component
|
||||
public class PdfJsonCosMapper {
|
||||
|
||||
public enum SerializationContext {
|
||||
DEFAULT,
|
||||
ANNOTATION_RAW_DATA,
|
||||
FORM_FIELD_RAW_DATA,
|
||||
CONTENT_STREAMS_LIGHTWEIGHT,
|
||||
RESOURCES_LIGHTWEIGHT;
|
||||
|
||||
public boolean omitStreamData() {
|
||||
return this != DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
public PdfJsonStream serializeStream(PDStream stream) throws IOException {
|
||||
if (stream == null) {
|
||||
return null;
|
||||
}
|
||||
return serializeStream(
|
||||
stream.getCOSObject(),
|
||||
Collections.newSetFromMap(new IdentityHashMap<>()),
|
||||
SerializationContext.DEFAULT);
|
||||
stream.getCOSObject(), Collections.newSetFromMap(new IdentityHashMap<>()));
|
||||
}
|
||||
|
||||
public PdfJsonStream serializeStream(COSStream cosStream) throws IOException {
|
||||
if (cosStream == null) {
|
||||
return null;
|
||||
}
|
||||
return serializeStream(
|
||||
cosStream,
|
||||
Collections.newSetFromMap(new IdentityHashMap<>()),
|
||||
SerializationContext.DEFAULT);
|
||||
}
|
||||
|
||||
public PdfJsonStream serializeStream(COSStream cosStream, SerializationContext context)
|
||||
throws IOException {
|
||||
if (cosStream == null) {
|
||||
return null;
|
||||
}
|
||||
SerializationContext effective =
|
||||
context != null ? context : SerializationContext.DEFAULT;
|
||||
return serializeStream(
|
||||
cosStream, Collections.newSetFromMap(new IdentityHashMap<>()), effective);
|
||||
}
|
||||
|
||||
public PdfJsonStream serializeStream(PDStream stream, SerializationContext context)
|
||||
throws IOException {
|
||||
if (stream == null) {
|
||||
return null;
|
||||
}
|
||||
return serializeStream(stream.getCOSObject(), context);
|
||||
return serializeStream(cosStream, Collections.newSetFromMap(new IdentityHashMap<>()));
|
||||
}
|
||||
|
||||
public PdfJsonCosValue serializeCosValue(COSBase base) throws IOException {
|
||||
return serializeCosValue(
|
||||
base,
|
||||
Collections.newSetFromMap(new IdentityHashMap<>()),
|
||||
SerializationContext.DEFAULT);
|
||||
}
|
||||
|
||||
public PdfJsonCosValue serializeCosValue(COSBase base, SerializationContext context)
|
||||
throws IOException {
|
||||
SerializationContext effective =
|
||||
context != null ? context : SerializationContext.DEFAULT;
|
||||
return serializeCosValue(
|
||||
base, Collections.newSetFromMap(new IdentityHashMap<>()), effective);
|
||||
return serializeCosValue(base, Collections.newSetFromMap(new IdentityHashMap<>()));
|
||||
}
|
||||
|
||||
public COSBase deserializeCosValue(PdfJsonCosValue value, PDDocument document)
|
||||
@@ -212,8 +165,8 @@ public class PdfJsonCosMapper {
|
||||
return cosStream;
|
||||
}
|
||||
|
||||
private PdfJsonCosValue serializeCosValue(
|
||||
COSBase base, Set<COSBase> visited, SerializationContext context) throws IOException {
|
||||
private PdfJsonCosValue serializeCosValue(COSBase base, Set<COSBase> visited)
|
||||
throws IOException {
|
||||
if (base == null) {
|
||||
return null;
|
||||
}
|
||||
@@ -267,22 +220,21 @@ public class PdfJsonCosMapper {
|
||||
if (base instanceof COSArray array) {
|
||||
List<PdfJsonCosValue> items = new ArrayList<>(array.size());
|
||||
for (COSBase item : array) {
|
||||
PdfJsonCosValue serialized = serializeCosValue(item, visited, context);
|
||||
PdfJsonCosValue serialized = serializeCosValue(item, visited);
|
||||
items.add(serialized);
|
||||
}
|
||||
builder.type(PdfJsonCosValue.Type.ARRAY).items(items);
|
||||
return builder.build();
|
||||
}
|
||||
if (base instanceof COSStream stream) {
|
||||
builder.type(PdfJsonCosValue.Type.STREAM)
|
||||
.stream(serializeStream(stream, visited, context));
|
||||
builder.type(PdfJsonCosValue.Type.STREAM).stream(serializeStream(stream, visited));
|
||||
return builder.build();
|
||||
}
|
||||
if (base instanceof COSDictionary dictionary) {
|
||||
Map<String, PdfJsonCosValue> entries = new LinkedHashMap<>();
|
||||
for (COSName key : dictionary.keySet()) {
|
||||
PdfJsonCosValue serialized =
|
||||
serializeCosValue(dictionary.getDictionaryObject(key), visited, context);
|
||||
serializeCosValue(dictionary.getDictionaryObject(key), visited);
|
||||
entries.put(key.getName(), serialized);
|
||||
}
|
||||
builder.type(PdfJsonCosValue.Type.DICTIONARY).entries(entries);
|
||||
@@ -296,23 +248,16 @@ public class PdfJsonCosMapper {
|
||||
}
|
||||
}
|
||||
|
||||
private PdfJsonStream serializeStream(
|
||||
COSStream cosStream, Set<COSBase> visited, SerializationContext context)
|
||||
private PdfJsonStream serializeStream(COSStream cosStream, Set<COSBase> visited)
|
||||
throws IOException {
|
||||
Map<String, PdfJsonCosValue> dictionary = new LinkedHashMap<>();
|
||||
for (COSName key : cosStream.keySet()) {
|
||||
COSBase value = cosStream.getDictionaryObject(key);
|
||||
PdfJsonCosValue serialized = serializeCosValue(value, visited, context);
|
||||
PdfJsonCosValue serialized = serializeCosValue(value, visited);
|
||||
if (serialized != null) {
|
||||
dictionary.put(key.getName(), serialized);
|
||||
}
|
||||
}
|
||||
|
||||
if (context != null && context.omitStreamData()) {
|
||||
log.debug("Omitting stream rawData during {} serialization", context);
|
||||
return PdfJsonStream.builder().dictionary(dictionary).rawData(null).build();
|
||||
}
|
||||
|
||||
String rawData = null;
|
||||
try (InputStream inputStream = cosStream.createRawInputStream();
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
|
||||
|
||||
@@ -26,11 +26,8 @@ spring.mvc.problemdetails.enabled=true
|
||||
#logging.level.org.springframework=DEBUG
|
||||
#logging.level.org.springframework.security=DEBUG
|
||||
|
||||
# Multipart file size limits
|
||||
# Can be set via environment variables: SPRING_SERVLET_MULTIPART_MAX_FILE_SIZE and SPRING_SERVLET_MULTIPART_MAX_REQUEST_SIZE
|
||||
# Or via SYSTEMFILEUPLOADLIMIT/SYSTEM_MAXFILESIZE which will also set fileUploadLimit in settings.yml
|
||||
spring.servlet.multipart.max-file-size=${SPRING_SERVLET_MULTIPART_MAX_FILE_SIZE:2000MB}
|
||||
spring.servlet.multipart.max-request-size=${SPRING_SERVLET_MULTIPART_MAX_REQUEST_SIZE:2000MB}
|
||||
spring.servlet.multipart.max-file-size=2000MB
|
||||
spring.servlet.multipart.max-request-size=2000MB
|
||||
server.servlet.session.tracking-modes=cookie
|
||||
server.servlet.context-path=${SYSTEM_ROOTURIPATH:/}
|
||||
spring.devtools.restart.enabled=true
|
||||
|
||||
@@ -1,12 +1,5 @@
|
||||
{
|
||||
"dependencies": [
|
||||
{
|
||||
"moduleName": "ch.qos.logback:logback-classic",
|
||||
"moduleUrl": "http://www.qos.ch",
|
||||
"moduleVersion": "1.5.22",
|
||||
"moduleLicense": "GNU Lesser General Public License",
|
||||
"moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"
|
||||
},
|
||||
{
|
||||
"moduleName": "ch.qos.logback:logback-classic",
|
||||
"moduleUrl": "http://www.qos.ch",
|
||||
@@ -14,13 +7,6 @@
|
||||
"moduleLicense": "GNU Lesser General Public License",
|
||||
"moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"
|
||||
},
|
||||
{
|
||||
"moduleName": "ch.qos.logback:logback-core",
|
||||
"moduleUrl": "http://www.qos.ch",
|
||||
"moduleVersion": "1.5.22",
|
||||
"moduleLicense": "GNU Lesser General Public License",
|
||||
"moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"
|
||||
},
|
||||
{
|
||||
"moduleName": "ch.qos.logback:logback-core",
|
||||
"moduleUrl": "http://www.qos.ch",
|
||||
@@ -372,13 +358,6 @@
|
||||
"moduleLicense": "CDDL+GPL License",
|
||||
"moduleLicenseUrl": "http://glassfish.java.net/public/CDDL+GPL_1_1.html"
|
||||
},
|
||||
{
|
||||
"moduleName": "com.sun.xml.bind:jaxb-core",
|
||||
"moduleUrl": "https://www.eclipse.org",
|
||||
"moduleVersion": "4.0.6",
|
||||
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
||||
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||
},
|
||||
{
|
||||
"moduleName": "com.sun.xml.bind:jaxb-impl",
|
||||
"moduleUrl": "https://www.eclipse.org",
|
||||
@@ -386,13 +365,6 @@
|
||||
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
||||
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||
},
|
||||
{
|
||||
"moduleName": "com.sun.xml.bind:jaxb-impl",
|
||||
"moduleUrl": "https://www.eclipse.org",
|
||||
"moduleVersion": "4.0.6",
|
||||
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
||||
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||
},
|
||||
{
|
||||
"moduleName": "com.twelvemonkeys.common:common-image",
|
||||
"moduleVersion": "3.13.0",
|
||||
@@ -786,13 +758,6 @@
|
||||
"moduleLicense": "Apache License, Version 2.0",
|
||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||
},
|
||||
{
|
||||
"moduleName": "io.swagger.core.v3:swagger-annotations-jakarta",
|
||||
"moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-annotations",
|
||||
"moduleVersion": "2.2.42",
|
||||
"moduleLicense": "Apache License, Version 2.0",
|
||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||
},
|
||||
{
|
||||
"moduleName": "io.swagger.core.v3:swagger-core-jakarta",
|
||||
"moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-core",
|
||||
@@ -800,13 +765,6 @@
|
||||
"moduleLicense": "Apache License, Version 2.0",
|
||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||
},
|
||||
{
|
||||
"moduleName": "io.swagger.core.v3:swagger-core-jakarta",
|
||||
"moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-core",
|
||||
"moduleVersion": "2.2.42",
|
||||
"moduleLicense": "Apache License, Version 2.0",
|
||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||
},
|
||||
{
|
||||
"moduleName": "io.swagger.core.v3:swagger-models-jakarta",
|
||||
"moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-models",
|
||||
@@ -814,13 +772,6 @@
|
||||
"moduleLicense": "Apache License, Version 2.0",
|
||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||
},
|
||||
{
|
||||
"moduleName": "io.swagger.core.v3:swagger-models-jakarta",
|
||||
"moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-models",
|
||||
"moduleVersion": "2.2.42",
|
||||
"moduleLicense": "Apache License, Version 2.0",
|
||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||
},
|
||||
{
|
||||
"moduleName": "jakarta.activation:jakarta.activation-api",
|
||||
"moduleUrl": "https://www.eclipse.org",
|
||||
@@ -947,13 +898,6 @@
|
||||
"moduleLicense": "GPL2 w/ CPE",
|
||||
"moduleLicenseUrl": "https://oss.oracle.com/licenses/CDDL+GPL-1.1"
|
||||
},
|
||||
{
|
||||
"moduleName": "javax.xml.bind:jaxb-api",
|
||||
"moduleUrl": "http://www.oracle.com/",
|
||||
"moduleVersion": "2.4.0-b180830.0359",
|
||||
"moduleLicense": "GPL2 w/ CPE",
|
||||
"moduleLicenseUrl": "https://oss.oracle.com/licenses/CDDL+GPL-1.1"
|
||||
},
|
||||
{
|
||||
"moduleName": "net.bytebuddy:byte-buddy",
|
||||
"moduleVersion": "1.17.8",
|
||||
@@ -1221,13 +1165,6 @@
|
||||
"moduleLicense": "The MIT License",
|
||||
"moduleLicenseUrl": "http://opensource.org/licenses/MIT"
|
||||
},
|
||||
{
|
||||
"moduleName": "org.checkerframework:checker-qual",
|
||||
"moduleUrl": "https://checkerframework.org/",
|
||||
"moduleVersion": "3.52.0",
|
||||
"moduleLicense": "The MIT License",
|
||||
"moduleLicenseUrl": "http://opensource.org/licenses/MIT"
|
||||
},
|
||||
{
|
||||
"moduleName": "org.commonmark:commonmark",
|
||||
"moduleVersion": "0.27.0",
|
||||
@@ -1759,13 +1696,6 @@
|
||||
"moduleLicense": "BSD-2-Clause",
|
||||
"moduleLicenseUrl": "https://jdbc.postgresql.org/about/license.html"
|
||||
},
|
||||
{
|
||||
"moduleName": "org.postgresql:postgresql",
|
||||
"moduleUrl": "https://jdbc.postgresql.org/",
|
||||
"moduleVersion": "42.7.9",
|
||||
"moduleLicense": "BSD-2-Clause",
|
||||
"moduleLicenseUrl": "https://jdbc.postgresql.org/about/license.html"
|
||||
},
|
||||
{
|
||||
"moduleName": "org.simplejavamail:core-module",
|
||||
"moduleVersion": "8.12.6",
|
||||
|
||||
+4
-8
@@ -85,8 +85,7 @@ class EditTableOfContentsControllerTest {
|
||||
when(mockOutlineItem.getNextSibling()).thenReturn(null);
|
||||
|
||||
// When
|
||||
ResponseEntity<List<Map<String, Object>>> response =
|
||||
editTableOfContentsController.extractBookmarks(mockFile);
|
||||
ResponseEntity<List<Map<String, Object>>> response = editTableOfContentsController.extractBookmarks(mockFile);
|
||||
|
||||
// Then
|
||||
assertNotNull(response);
|
||||
@@ -110,8 +109,7 @@ class EditTableOfContentsControllerTest {
|
||||
when(mockCatalog.getDocumentOutline()).thenReturn(null);
|
||||
|
||||
// When
|
||||
ResponseEntity<List<Map<String, Object>>> response =
|
||||
editTableOfContentsController.extractBookmarks(mockFile);
|
||||
ResponseEntity<List<Map<String, Object>>> response = editTableOfContentsController.extractBookmarks(mockFile);
|
||||
|
||||
// Then
|
||||
assertNotNull(response);
|
||||
@@ -147,8 +145,7 @@ class EditTableOfContentsControllerTest {
|
||||
when(childItem.getNextSibling()).thenReturn(null);
|
||||
|
||||
// When
|
||||
ResponseEntity<List<Map<String, Object>>> response =
|
||||
editTableOfContentsController.extractBookmarks(mockFile);
|
||||
ResponseEntity<List<Map<String, Object>>> response = editTableOfContentsController.extractBookmarks(mockFile);
|
||||
|
||||
// Then
|
||||
assertNotNull(response);
|
||||
@@ -186,8 +183,7 @@ class EditTableOfContentsControllerTest {
|
||||
when(mockOutlineItem.getNextSibling()).thenReturn(null);
|
||||
|
||||
// When
|
||||
ResponseEntity<List<Map<String, Object>>> response =
|
||||
editTableOfContentsController.extractBookmarks(mockFile);
|
||||
ResponseEntity<List<Map<String, Object>>> response = editTableOfContentsController.extractBookmarks(mockFile);
|
||||
|
||||
// Then
|
||||
assertNotNull(response);
|
||||
|
||||
@@ -49,7 +49,7 @@ dependencies {
|
||||
api 'org.springframework.boot:spring-boot-starter-mail'
|
||||
api 'org.springframework.boot:spring-boot-starter-cache'
|
||||
api 'com.github.ben-manes.caffeine:caffeine'
|
||||
api 'io.swagger.core.v3:swagger-core-jakarta:2.2.42'
|
||||
api 'io.swagger.core.v3:swagger-core-jakarta:2.2.41'
|
||||
implementation 'com.bucket4j:bucket4j_jdk17-core:8.15.0'
|
||||
|
||||
// https://mvnrepository.com/artifact/com.bucket4j/bucket4j_jdk17
|
||||
@@ -62,7 +62,7 @@ dependencies {
|
||||
runtimeOnly "io.jsonwebtoken:jjwt-impl:$jwtVersion"
|
||||
runtimeOnly "io.jsonwebtoken:jjwt-jackson:$jwtVersion"
|
||||
runtimeOnly 'com.h2database:h2:2.3.232' // Don't upgrade h2database
|
||||
runtimeOnly 'org.postgresql:postgresql:42.7.9'
|
||||
runtimeOnly 'org.postgresql:postgresql:42.7.8'
|
||||
constraints {
|
||||
implementation "org.opensaml:opensaml-core:$openSamlVersion"
|
||||
implementation "org.opensaml:opensaml-saml-api:$openSamlVersion"
|
||||
|
||||
+3
-3
@@ -139,7 +139,6 @@ public class ProprietaryUIDataController {
|
||||
|
||||
// Add enableLogin flag so frontend doesn't need to call /app-config
|
||||
data.setEnableLogin(securityProps.isEnableLogin());
|
||||
data.setSsoAutoLogin(applicationProperties.getPremium().getProFeatures().isSsoAutoLogin());
|
||||
|
||||
// Check if this is first-time setup with default credentials
|
||||
// The isFirstLogin flag captures: default username/password usage and unchanged state
|
||||
@@ -219,7 +218,9 @@ public class ProprietaryUIDataController {
|
||||
String backendUrl = getBackendBaseUrl();
|
||||
String fullSamlPath = backendUrl + saml2AuthenticationPath;
|
||||
|
||||
providerList.put(fullSamlPath, samlIdp + " (SAML 2)");
|
||||
if (!applicationProperties.getPremium().getProFeatures().isSsoAutoLogin()) {
|
||||
providerList.put(fullSamlPath, samlIdp + " (SAML 2)");
|
||||
}
|
||||
}
|
||||
|
||||
// Remove null entries
|
||||
@@ -532,7 +533,6 @@ public class ProprietaryUIDataController {
|
||||
@Data
|
||||
public static class LoginData {
|
||||
private Boolean enableLogin;
|
||||
private boolean ssoAutoLogin;
|
||||
private Map<String, String> providerList;
|
||||
private String loginMethod;
|
||||
private boolean altLogin;
|
||||
|
||||
+2
-14
@@ -309,16 +309,10 @@ public class AdminLicenseController {
|
||||
}
|
||||
|
||||
try {
|
||||
log.info(
|
||||
"License upload: original filename='{}', size={} bytes, contentType='{}'",
|
||||
file.getOriginalFilename(),
|
||||
file.getSize(),
|
||||
file.getContentType());
|
||||
// Validate certificate format by reading content
|
||||
byte[] fileBytes = file.getBytes();
|
||||
String content = new String(fileBytes, StandardCharsets.UTF_8);
|
||||
if (!content.trim().startsWith("-----BEGIN LICENSE FILE-----")) {
|
||||
log.warn("License upload rejected: invalid certificate header");
|
||||
return ResponseEntity.badRequest()
|
||||
.body(
|
||||
Map.of(
|
||||
@@ -330,15 +324,9 @@ public class AdminLicenseController {
|
||||
|
||||
// Get config directory and target path
|
||||
Path configPath = Paths.get(InstallationPathConfig.getConfigPath());
|
||||
Path configPathAbs = configPath.toAbsolutePath().normalize();
|
||||
Path targetPath = configPathAbs.resolve(filename).normalize();
|
||||
log.info(
|
||||
"License upload paths: configPath='{}', targetPath='{}'",
|
||||
configPathAbs,
|
||||
targetPath.toAbsolutePath());
|
||||
Path targetPath = configPath.resolve(filename).normalize();
|
||||
// Prevent directory traversal: ensure targetPath is inside configPath
|
||||
if (!targetPath.startsWith(configPathAbs)) {
|
||||
log.warn("License upload rejected: target path outside config path");
|
||||
if (!targetPath.startsWith(configPath.normalize().toAbsolutePath())) {
|
||||
return ResponseEntity.badRequest()
|
||||
.body(Map.of("success", false, "error", "Invalid file path"));
|
||||
}
|
||||
|
||||
+1
-19
@@ -67,7 +67,7 @@ springBoot {
|
||||
|
||||
allprojects {
|
||||
group = 'stirling.software'
|
||||
version = '2.4.5'
|
||||
version = '2.4.3'
|
||||
|
||||
configurations.configureEach {
|
||||
exclude group: 'commons-logging', module: 'commons-logging'
|
||||
@@ -461,24 +461,6 @@ swaggerhubUpload {
|
||||
oas = "3.0.0" // The version of the OpenAPI Specification you"re using
|
||||
}
|
||||
|
||||
repositories {
|
||||
if (!rootProject.ext.mavenUrl.isEmpty()) {
|
||||
maven {
|
||||
url = rootProject.ext.mavenUrl + '/releases'
|
||||
credentials(PasswordCredentials) {
|
||||
username = rootProject.ext.username
|
||||
password = rootProject.ext.password
|
||||
}
|
||||
authentication {
|
||||
basic(BasicAuthentication)
|
||||
}
|
||||
allowInsecureProtocol = true
|
||||
}
|
||||
}
|
||||
maven { url = "https://build.shibboleth.net/maven/releases" }
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(':stirling-pdf')
|
||||
implementation project(':common')
|
||||
|
||||
@@ -35,7 +35,7 @@ RUN DISABLE_ADDITIONAL_FEATURES=true \
|
||||
./gradlew clean build -PbuildWithFrontend=true -x spotlessApply -x spotlessCheck -x test -x sonarqube
|
||||
|
||||
# Stage 2: Runtime image
|
||||
FROM alpine:3.23.3@sha256:25109184c71bdad752c8312a8623239686a9a2071e8825f20acb8f2198c3f659
|
||||
FROM alpine:3.23.2@sha256:865b95f46d98cf867a156fe4a135ad3fe50d2056aa3f25ed31662dff6da4eb62
|
||||
|
||||
ENV LANG=C.UTF-8 \
|
||||
LC_ALL=C.UTF-8
|
||||
@@ -58,7 +58,6 @@ LABEL org.opencontainers.image.keywords="PDF, manipulation, ultra-lite, API, Spr
|
||||
# Copy scripts
|
||||
COPY scripts/init-without-ocr.sh /scripts/init-without-ocr.sh
|
||||
COPY scripts/installFonts.sh /scripts/installFonts.sh
|
||||
COPY scripts/stirling-diagnostics.sh /scripts/stirling-diagnostics.sh
|
||||
|
||||
# Copy built JAR from build stage
|
||||
COPY --from=build /app/app/core/build/libs/*.jar /app.jar
|
||||
|
||||
@@ -32,7 +32,4 @@ services:
|
||||
METRICS_ENABLED: "true"
|
||||
SYSTEM_GOOGLEVISIBILITY: "true"
|
||||
SHOW_SURVEY: "true"
|
||||
SPDF_PDFJSON_DUMP: "true"
|
||||
SPDF_PDFJSON_ANALYZE: "true"
|
||||
SPDF_PDFJSON_REPEAT_SCAN: "true"
|
||||
restart: on-failure:5
|
||||
|
||||
Generated
+154
-166
@@ -11,28 +11,28 @@
|
||||
"dependencies": {
|
||||
"@atlaskit/pragmatic-drag-and-drop": "^1.7.7",
|
||||
"@dnd-kit/core": "^6.3.1",
|
||||
"@embedpdf/core": "^2.5.0",
|
||||
"@embedpdf/engines": "^2.5.0",
|
||||
"@embedpdf/models": "^2.5.0",
|
||||
"@embedpdf/plugin-annotation": "^2.5.0",
|
||||
"@embedpdf/plugin-bookmark": "^2.5.0",
|
||||
"@embedpdf/plugin-document-manager": "^2.5.0",
|
||||
"@embedpdf/plugin-export": "^2.5.0",
|
||||
"@embedpdf/plugin-history": "^2.5.0",
|
||||
"@embedpdf/plugin-interaction-manager": "^2.5.0",
|
||||
"@embedpdf/plugin-pan": "^2.5.0",
|
||||
"@embedpdf/plugin-print": "^2.5.0",
|
||||
"@embedpdf/plugin-redaction": "^2.5.0",
|
||||
"@embedpdf/plugin-render": "^2.5.0",
|
||||
"@embedpdf/plugin-rotate": "^2.5.0",
|
||||
"@embedpdf/plugin-scroll": "^2.5.0",
|
||||
"@embedpdf/plugin-search": "^2.5.0",
|
||||
"@embedpdf/plugin-selection": "^2.5.0",
|
||||
"@embedpdf/plugin-spread": "^2.5.0",
|
||||
"@embedpdf/plugin-thumbnail": "^2.5.0",
|
||||
"@embedpdf/plugin-tiling": "^2.5.0",
|
||||
"@embedpdf/plugin-viewport": "^2.5.0",
|
||||
"@embedpdf/plugin-zoom": "^2.5.0",
|
||||
"@embedpdf/core": "^2.3.0",
|
||||
"@embedpdf/engines": "^2.3.0",
|
||||
"@embedpdf/models": "^2.3.0",
|
||||
"@embedpdf/plugin-annotation": "^2.3.0",
|
||||
"@embedpdf/plugin-bookmark": "^2.3.0",
|
||||
"@embedpdf/plugin-document-manager": "^2.3.0",
|
||||
"@embedpdf/plugin-export": "^2.3.0",
|
||||
"@embedpdf/plugin-history": "^2.3.0",
|
||||
"@embedpdf/plugin-interaction-manager": "^2.3.0",
|
||||
"@embedpdf/plugin-pan": "^2.3.0",
|
||||
"@embedpdf/plugin-print": "^2.3.0",
|
||||
"@embedpdf/plugin-redaction": "^2.3.0",
|
||||
"@embedpdf/plugin-render": "^2.3.0",
|
||||
"@embedpdf/plugin-rotate": "^2.3.0",
|
||||
"@embedpdf/plugin-scroll": "^2.3.0",
|
||||
"@embedpdf/plugin-search": "^2.3.0",
|
||||
"@embedpdf/plugin-selection": "^2.3.0",
|
||||
"@embedpdf/plugin-spread": "^2.3.0",
|
||||
"@embedpdf/plugin-thumbnail": "^2.3.0",
|
||||
"@embedpdf/plugin-tiling": "^2.3.0",
|
||||
"@embedpdf/plugin-viewport": "^2.3.0",
|
||||
"@embedpdf/plugin-zoom": "^2.3.0",
|
||||
"@emotion/react": "^11.14.0",
|
||||
"@emotion/styled": "^11.14.1",
|
||||
"@iconify/react": "^6.0.2",
|
||||
@@ -49,7 +49,6 @@
|
||||
"@tailwindcss/postcss": "^4.1.13",
|
||||
"@tanstack/react-virtual": "^3.13.12",
|
||||
"@tauri-apps/api": "^2.9.1",
|
||||
"@tauri-apps/plugin-dialog": "^2.6.0",
|
||||
"@tauri-apps/plugin-fs": "^2.4.5",
|
||||
"@tauri-apps/plugin-http": "^2.5.6",
|
||||
"@tauri-apps/plugin-shell": "^2.3.4",
|
||||
@@ -554,13 +553,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/core": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/core/-/core-2.5.0.tgz",
|
||||
"integrity": "sha512-nI7GnA5xCNtJHAdKBLPKJVvi4+yAKjy1sysaDf+qp+z3D81Hy8oAcl///QTaZ9ob0SL2jyqi3x//hKl0Rwmgrw==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/core/-/core-2.3.0.tgz",
|
||||
"integrity": "sha512-aPD7lNSCOLc5Nos9xGA3qAT5jFZdrTT7IVcpxtM1BOKa1FI0XmotJ8vgzcRxH/FLwUASC4xwR9QxzTKp2aLsZQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/engines": "2.5.0",
|
||||
"@embedpdf/models": "2.5.0"
|
||||
"@embedpdf/engines": "2.3.0",
|
||||
"@embedpdf/models": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"preact": "^10.26.4",
|
||||
@@ -571,9 +570,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/engines": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/engines/-/engines-2.5.0.tgz",
|
||||
"integrity": "sha512-SEknNmQrYvkAZgJllRKXuvXSrHSndDQsr7b3mrIVa9bzV6TeZua0a/YUlvI3/jf74Sdajru3XKPe22iHEOH4Zg==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/engines/-/engines-2.3.0.tgz",
|
||||
"integrity": "sha512-QxNY58E2HgNgnbsTt5TnDUNvKoyabkf5IniGsiN5+rx6f4SFDpCnz3h1VJxNReWDyn9e16QlkUfgXX0qQWd3iQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/fonts-arabic": "1.0.0",
|
||||
@@ -583,8 +582,8 @@
|
||||
"@embedpdf/fonts-latin": "1.0.0",
|
||||
"@embedpdf/fonts-sc": "1.0.0",
|
||||
"@embedpdf/fonts-tc": "1.0.0",
|
||||
"@embedpdf/models": "2.5.0",
|
||||
"@embedpdf/pdfium": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0",
|
||||
"@embedpdf/pdfium": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"preact": "^10.26.4",
|
||||
@@ -637,31 +636,31 @@
|
||||
"license": "OFL-1.1"
|
||||
},
|
||||
"node_modules/@embedpdf/models": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/models/-/models-2.5.0.tgz",
|
||||
"integrity": "sha512-wu7XgargYBQEh46hVnfsmkTF6TvuoP9nAkTASR60s5ourjlT12qL9RiFLpwGkOBfs8E58h8V5hkgKsra5t03Lw==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/models/-/models-2.3.0.tgz",
|
||||
"integrity": "sha512-YAH3YdXl/UOhVcvMPd6mtU+tJ3veh24Q5swRDfuWUsJ3L2CcAG2P+4pjj4EAwvWUQcmN/HlVOjVQL0PkbkytKw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@embedpdf/pdfium": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/pdfium/-/pdfium-2.5.0.tgz",
|
||||
"integrity": "sha512-2VEO4cNZsV8ig9upS+C+x3Tb58aqNxiAdaUMlD2ZZT8FgszhsV9xMyEuM2maFRdjeT7EO37FtzYBdXc/K67ivA==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/pdfium/-/pdfium-2.3.0.tgz",
|
||||
"integrity": "sha512-AIWHDDG24we1r8sWVO9Uae6V2ISXji2gIkZS3+CjtYowaBCpMTSu4QEQRnjQam2EWrEMVIJOXwBfx11TZKrxWA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-annotation": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-annotation/-/plugin-annotation-2.5.0.tgz",
|
||||
"integrity": "sha512-S5zCeWU3hM9jrnaGuW5RAXt+AzXXvQbFtAdCtxHW1hFADiZ97FKr8KS9MGCkkj6C9madtZP6iUJikvnhoLCABQ==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-annotation/-/plugin-annotation-2.3.0.tgz",
|
||||
"integrity": "sha512-TIN/OiDTg5tCNsebp1SWnS6aa7nnDvRrrZe3jx7Sg5IMEiZc6P3z+0aOjJtvoz0cp3Xi7Bb0PQsTLwo+bdfpVg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0",
|
||||
"@embedpdf/utils": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0",
|
||||
"@embedpdf/utils": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/plugin-history": "2.5.0",
|
||||
"@embedpdf/plugin-interaction-manager": "2.5.0",
|
||||
"@embedpdf/plugin-selection": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"@embedpdf/plugin-history": "2.3.0",
|
||||
"@embedpdf/plugin-interaction-manager": "2.3.0",
|
||||
"@embedpdf/plugin-selection": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0",
|
||||
@@ -670,15 +669,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-bookmark": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-bookmark/-/plugin-bookmark-2.5.0.tgz",
|
||||
"integrity": "sha512-2N5kGoamUrQqWZC5SMWIhdyBHqZN/CdcGf8GVH71FFw3AU6rmZ1AD/AkLzgqoYGIuZFE8ACckdrhtbpsZMmSDQ==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-bookmark/-/plugin-bookmark-2.3.0.tgz",
|
||||
"integrity": "sha512-7XO2NntgRb/Jk1XN/EOf7+yVaOPVVFvBuF0xlCqnz2BGAnMNrTn8QE73FtluJBgNhuK9LwDT2C4W+BTD2gd59Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0",
|
||||
@@ -687,15 +686,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-document-manager": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-document-manager/-/plugin-document-manager-2.5.0.tgz",
|
||||
"integrity": "sha512-I8Z/0B7R/YhtVaJFruwFO+QBLIDmQfHx9WVlrDXWZs68YiGwEbjSyizEIEqtulUJxcXfPs2Tf7oIBbdSuPG2NQ==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-document-manager/-/plugin-document-manager-2.3.0.tgz",
|
||||
"integrity": "sha512-hdKaWU1sjlLgXo2iWF4N734lklCfSO5Tj1xqk+0omxOpnVL1Ed5fzFO2N584pMkfFn1xo9Y2JPHSUtCdzF7/EQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0",
|
||||
@@ -704,15 +703,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-export": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-export/-/plugin-export-2.5.0.tgz",
|
||||
"integrity": "sha512-KC9jXqwcxe76QqfxLx0tnrSdFoApTFOpT+dwrvox186uxYKSmSt1JHFWe4THB/A63hCNr8uMwyswYdFO8fWNHw==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-export/-/plugin-export-2.3.0.tgz",
|
||||
"integrity": "sha512-Xa048lKnc1jehWbaWv5qER1RVIHhHqt+JhgzAlqFSURXmzowbUzVEDBZ7fYImXRkpqp+ZeyBhWfZ60DBNE55Cw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0",
|
||||
@@ -721,15 +720,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-history": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-history/-/plugin-history-2.5.0.tgz",
|
||||
"integrity": "sha512-Av9NBSE9Or1Y6cXcNWpx0bBZN3yI4vywa6kSNjhaqOrgpQDWMaTO57eApJpyHzBodqEztY+klE9YJ7MH88zm6w==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-history/-/plugin-history-2.3.0.tgz",
|
||||
"integrity": "sha512-+fr/kjK2Z9BiC53IMlUZvWjkD6iilcI3XCUKQPXRgS5MDAuwpVlgdAtc+3VAMlG3IddElxVFdvvxRO9R89k5Mg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0",
|
||||
@@ -738,15 +737,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-interaction-manager": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-interaction-manager/-/plugin-interaction-manager-2.5.0.tgz",
|
||||
"integrity": "sha512-QrmowLVvC5FNZdvVr2kczSDdnHHOuhf+So0VG5Ythts/OL1bIR/0OOpuyJsScTyo5boYnRkXv8yPf8htL57YKQ==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-interaction-manager/-/plugin-interaction-manager-2.3.0.tgz",
|
||||
"integrity": "sha512-1/tDLPoQm6skNe/WOd6QD7SA0XRKphbJHi/s9XY4fhGgBvlD5XHFrYxtmrsaheYjqIBFtAWWZ3m5lAXRaO/igA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0",
|
||||
@@ -755,17 +754,17 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-pan": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-pan/-/plugin-pan-2.5.0.tgz",
|
||||
"integrity": "sha512-DfdA+hBm9kGYYy7OuJym6azk2h2U/Geirud+tmVzFSL7+OZ3tZ3K9fqj07w66zx0msyUVlYrXzkYSU9NEmwpLA==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-pan/-/plugin-pan-2.3.0.tgz",
|
||||
"integrity": "sha512-5yGxLpn28PHKCYx3tjzeVir7D5vHZ0Fk9HJRJr4K+Uqbg8pYFavb9tseXzPE4FcqpejqZo2DZyfo54ErQFXEyQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/plugin-interaction-manager": "2.5.0",
|
||||
"@embedpdf/plugin-viewport": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"@embedpdf/plugin-interaction-manager": "2.3.0",
|
||||
"@embedpdf/plugin-viewport": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0",
|
||||
@@ -774,15 +773,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-print": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-print/-/plugin-print-2.5.0.tgz",
|
||||
"integrity": "sha512-qejq7/0K9hh3hzop+u+Qmn7ijTqGcDhxaiXoPkyl91CZVOyAD8qMBzWnhC7vRNOB7hcYgBP81uegE3se+EIlcA==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-print/-/plugin-print-2.3.0.tgz",
|
||||
"integrity": "sha512-LNxvXm3rZkRXXC41IArBDiwPLzSflmBmxxi+L+91xvw8n/FWUeXfWwQn7oQEAGq9Ha/3pEVHTls48QSFZN0mhg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=18.0.0",
|
||||
"react-dom": ">=18.0.0",
|
||||
@@ -791,20 +790,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-redaction": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-redaction/-/plugin-redaction-2.5.0.tgz",
|
||||
"integrity": "sha512-G0cm1hLWi09gU8WV+IShq2XHkmLtEbk+EvD3dIiyJV2kbOjgwGSC2Ezt8br3DzH6R/0bF6RAbDIpFyS2Q0oMfg==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-redaction/-/plugin-redaction-2.3.0.tgz",
|
||||
"integrity": "sha512-un6AQL5Pqcm9v1tCV9Mb3NeowsGUtlCT/198k4nd+SWOMWNsbuFqI+rWOGV3auqXRGSzKj0gnt29t8aaeLpLeA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0",
|
||||
"@embedpdf/utils": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0",
|
||||
"@embedpdf/utils": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/plugin-annotation": "2.5.0",
|
||||
"@embedpdf/plugin-history": "2.5.0",
|
||||
"@embedpdf/plugin-interaction-manager": "2.5.0",
|
||||
"@embedpdf/plugin-selection": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"@embedpdf/plugin-interaction-manager": "2.3.0",
|
||||
"@embedpdf/plugin-selection": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0",
|
||||
@@ -813,15 +810,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-render": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-render/-/plugin-render-2.5.0.tgz",
|
||||
"integrity": "sha512-nrTmg8cVMohcKYiQ/7erErsaWlyaq20OtXbVjmnPNnqz4amJLAjlPyudTJRlWWPyIiri9SF4A0ue5ICDY2sypg==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-render/-/plugin-render-2.3.0.tgz",
|
||||
"integrity": "sha512-UyQncK5NTokuEVISUcxPOXpZP4SItn4MjfeEaPsTXJkSRjHL4g3mU3iWy0nXJMCOT10OB+5m7qQ0/KkF4f+b5w==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0",
|
||||
@@ -830,15 +827,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-rotate": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-rotate/-/plugin-rotate-2.5.0.tgz",
|
||||
"integrity": "sha512-crFsXduaxNZJmVRfgklBpO4x4i9cRxPmfFBvdIoyJ1ea6AGOCL0rQKQcfqHTFdgtPzlVUiIg6Hi2v+033jdLUg==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-rotate/-/plugin-rotate-2.3.0.tgz",
|
||||
"integrity": "sha512-vibDXHA0L2LlMrmkSuanmdtUpc2JPBuQybiGwf9F4wlleKN3f7uSWxZsHdVAxWdzsaG+/26QTGl75otZLnVuig==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0",
|
||||
@@ -847,16 +844,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-scroll": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-scroll/-/plugin-scroll-2.5.0.tgz",
|
||||
"integrity": "sha512-AdLuSgvAaukLl1uQ0FbswcAIPFaR3Jk2ZbEJpWLd9E6iQ+66Cta0Sz8d5J6ndx7VBlRYAZwoqiXF85utJxpQ5g==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-scroll/-/plugin-scroll-2.3.0.tgz",
|
||||
"integrity": "sha512-8pdaSY9QuqdX22Ykw2jKn07Rx6FIsDdj/O0+mlbccY/ISofj9WEFNeQgnOY64OUTDyurJYqpYvq6QqvgbGLs+A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/plugin-viewport": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"@embedpdf/plugin-viewport": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0",
|
||||
@@ -865,15 +862,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-search": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-search/-/plugin-search-2.5.0.tgz",
|
||||
"integrity": "sha512-ycHJh05vBZ1PTSdEMgdx6K1py0oklwbwY2eXO4nD54EN9EVZgWlYC4Q+u8nyGOiNL6VmJYcqJ0HmjSWBdmGWBw==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-search/-/plugin-search-2.3.0.tgz",
|
||||
"integrity": "sha512-VNXmNf7fIIRWGVwf2kIUeUeLkUTJlq9AGjUO2TyuYJTWTsmfT4LEqPDDpwC6NDVFhzWE6xwbb3bxvY/9bqBMzw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0",
|
||||
@@ -882,17 +879,17 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-selection": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-selection/-/plugin-selection-2.5.0.tgz",
|
||||
"integrity": "sha512-M3WDjahig/6KE83SZGvTaJWhqEOIzH002k2fpJVuks926UBnfgYCH8uqV7SOUQTneQDmIa0PlyFiuEXDw1Ocrw==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-selection/-/plugin-selection-2.3.0.tgz",
|
||||
"integrity": "sha512-+emaY4vff3ynAf5C3PfCOlleQIqiImbBpb6zkG5SVUa9Vn5x0SfYGT4Jumtbzq8XBknC1QIRKVlplC9BcnjcmQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0",
|
||||
"@embedpdf/utils": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0",
|
||||
"@embedpdf/utils": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/plugin-interaction-manager": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"@embedpdf/plugin-interaction-manager": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0",
|
||||
@@ -901,15 +898,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-spread": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-spread/-/plugin-spread-2.5.0.tgz",
|
||||
"integrity": "sha512-kG8HZMZmbpUVDxCOEyQzIiMPW+VjjebOl93V+quAH+GAI5Tkg6exPyyQ2+/DOJPCtYX4Kh2z2aeoyK2b7NRgIQ==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-spread/-/plugin-spread-2.3.0.tgz",
|
||||
"integrity": "sha512-sFqYKwzKGPaCXn6hAyv6GHdVTlL2vg3poxRNd2W5kLQo07YtHlSjXr/XAhaGT/a4GtR9rtbSJ4hWNJjzIcwE0g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0",
|
||||
@@ -918,16 +915,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-thumbnail": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-thumbnail/-/plugin-thumbnail-2.5.0.tgz",
|
||||
"integrity": "sha512-iWofJSXKbWrgvS2fe8v3U1+e2wjBRXD2i1DUcJKnTrqyfjZ8YzUomc5EzdG2RT7uUjtqrcu7463TZ9JHXUkASQ==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-thumbnail/-/plugin-thumbnail-2.3.0.tgz",
|
||||
"integrity": "sha512-CAOnipeBtdKSHGBuIm5420GykUw7k2rB7Z9GwouTbbycS7Cw+kiaGpOfHfenoKPTlWMkHYAwFcZiWKV3XG/nRQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/plugin-render": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"@embedpdf/plugin-render": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0",
|
||||
@@ -936,18 +933,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-tiling": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-tiling/-/plugin-tiling-2.5.0.tgz",
|
||||
"integrity": "sha512-oih0GyGOJvfaXPLSEY+qfC05UUU1ZkADEbr6uCwRMmdHIXu/0ZTJnAToegfWXtfE+Sw0J5wscVkipXXIX5azlw==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-tiling/-/plugin-tiling-2.3.0.tgz",
|
||||
"integrity": "sha512-6VJ042WksIyZVWyvXq1nf0Ct+U4Pl6+QUDy1ThJefwk/HKDfWU2zEr/+1STJKVWgfUx5QRdipf6Jghd+HnOg3Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/plugin-render": "2.5.0",
|
||||
"@embedpdf/plugin-scroll": "2.5.0",
|
||||
"@embedpdf/plugin-viewport": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"@embedpdf/plugin-render": "2.3.0",
|
||||
"@embedpdf/plugin-scroll": "2.3.0",
|
||||
"@embedpdf/plugin-viewport": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0",
|
||||
@@ -956,15 +953,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-viewport": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-viewport/-/plugin-viewport-2.5.0.tgz",
|
||||
"integrity": "sha512-z0AXHA9Z3rZdCLje7P2NsQbxKLJ4b/l8lgzXOVn5Ow/pIPE0D2P3fn9WzImHTNI1RNrZMdkW9OH3lfkEXFTqHw==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-viewport/-/plugin-viewport-2.3.0.tgz",
|
||||
"integrity": "sha512-3NQp3hVfRF7DMUPNAVOfZsqQQrugEfY0voRUrQI90eyi16GFntN3CP9Mc5cOp2jnUICMYlirQ/om+KCseMHS2Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0",
|
||||
@@ -973,17 +970,17 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/plugin-zoom": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-zoom/-/plugin-zoom-2.5.0.tgz",
|
||||
"integrity": "sha512-HWJlqXOXdv/kttV+XWCCStUZAeLl66AuaO8BsnPlAPwEADLLCH4tR4XqJQoWr7/r5watKP7UeQ00FsWu0oGclw==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/plugin-zoom/-/plugin-zoom-2.3.0.tgz",
|
||||
"integrity": "sha512-wnBqK02ku0zCViqQfSD1Vohy+aBUogXrqUTwo1/1QFEphmgnCHnHbEUduh9M0ghcT4s26pBgbJqCrShpGYAdvQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@embedpdf/models": "2.5.0"
|
||||
"@embedpdf/models": "2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@embedpdf/core": "2.5.0",
|
||||
"@embedpdf/plugin-scroll": "2.5.0",
|
||||
"@embedpdf/plugin-viewport": "2.5.0",
|
||||
"@embedpdf/core": "2.3.0",
|
||||
"@embedpdf/plugin-scroll": "2.3.0",
|
||||
"@embedpdf/plugin-viewport": "2.3.0",
|
||||
"preact": "^10.26.4",
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0",
|
||||
@@ -992,9 +989,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@embedpdf/utils": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/utils/-/utils-2.5.0.tgz",
|
||||
"integrity": "sha512-JjYj6BRzu9oesA1JOqKPFMEWKinjvJIjziWu1j6lDXxLsE59bkShjUKbaEG+lkXRspuZRWNP++rzE2p2Ht4veg==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@embedpdf/utils/-/utils-2.3.0.tgz",
|
||||
"integrity": "sha512-9DV+tu+GsnijchNSG/NzslnxTGIUH6j2MxBR8QOoZLsWETEVaMLkHtbvzXPyMOx/5RlvBn8wR0jNKTNptOCnXQ==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"preact": "^10.26.4",
|
||||
@@ -4181,15 +4178,6 @@
|
||||
"node": ">= 10"
|
||||
}
|
||||
},
|
||||
"node_modules/@tauri-apps/plugin-dialog": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-dialog/-/plugin-dialog-2.6.0.tgz",
|
||||
"integrity": "sha512-q4Uq3eY87TdcYzXACiYSPhmpBA76shgmQswGkSVio4C82Sz2W4iehe9TnKYwbq7weHiL88Yw19XZm7v28+Micg==",
|
||||
"license": "MIT OR Apache-2.0",
|
||||
"dependencies": {
|
||||
"@tauri-apps/api": "^2.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@tauri-apps/plugin-fs": {
|
||||
"version": "2.4.5",
|
||||
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-fs/-/plugin-fs-2.4.5.tgz",
|
||||
|
||||
+22
-24
@@ -7,28 +7,28 @@
|
||||
"dependencies": {
|
||||
"@atlaskit/pragmatic-drag-and-drop": "^1.7.7",
|
||||
"@dnd-kit/core": "^6.3.1",
|
||||
"@embedpdf/core": "^2.5.0",
|
||||
"@embedpdf/engines": "^2.5.0",
|
||||
"@embedpdf/models": "^2.5.0",
|
||||
"@embedpdf/plugin-annotation": "^2.5.0",
|
||||
"@embedpdf/plugin-bookmark": "^2.5.0",
|
||||
"@embedpdf/plugin-export": "^2.5.0",
|
||||
"@embedpdf/plugin-history": "^2.5.0",
|
||||
"@embedpdf/plugin-document-manager": "^2.5.0",
|
||||
"@embedpdf/plugin-interaction-manager": "^2.5.0",
|
||||
"@embedpdf/plugin-pan": "^2.5.0",
|
||||
"@embedpdf/plugin-print": "^2.5.0",
|
||||
"@embedpdf/plugin-redaction": "^2.5.0",
|
||||
"@embedpdf/plugin-render": "^2.5.0",
|
||||
"@embedpdf/plugin-rotate": "^2.5.0",
|
||||
"@embedpdf/plugin-scroll": "^2.5.0",
|
||||
"@embedpdf/plugin-search": "^2.5.0",
|
||||
"@embedpdf/plugin-selection": "^2.5.0",
|
||||
"@embedpdf/plugin-spread": "^2.5.0",
|
||||
"@embedpdf/plugin-thumbnail": "^2.5.0",
|
||||
"@embedpdf/plugin-tiling": "^2.5.0",
|
||||
"@embedpdf/plugin-viewport": "^2.5.0",
|
||||
"@embedpdf/plugin-zoom": "^2.5.0",
|
||||
"@embedpdf/core": "^2.3.0",
|
||||
"@embedpdf/engines": "^2.3.0",
|
||||
"@embedpdf/models": "^2.3.0",
|
||||
"@embedpdf/plugin-annotation": "^2.3.0",
|
||||
"@embedpdf/plugin-bookmark": "^2.3.0",
|
||||
"@embedpdf/plugin-export": "^2.3.0",
|
||||
"@embedpdf/plugin-history": "^2.3.0",
|
||||
"@embedpdf/plugin-document-manager": "^2.3.0",
|
||||
"@embedpdf/plugin-interaction-manager": "^2.3.0",
|
||||
"@embedpdf/plugin-pan": "^2.3.0",
|
||||
"@embedpdf/plugin-print": "^2.3.0",
|
||||
"@embedpdf/plugin-redaction": "^2.3.0",
|
||||
"@embedpdf/plugin-render": "^2.3.0",
|
||||
"@embedpdf/plugin-rotate": "^2.3.0",
|
||||
"@embedpdf/plugin-scroll": "^2.3.0",
|
||||
"@embedpdf/plugin-search": "^2.3.0",
|
||||
"@embedpdf/plugin-selection": "^2.3.0",
|
||||
"@embedpdf/plugin-spread": "^2.3.0",
|
||||
"@embedpdf/plugin-thumbnail": "^2.3.0",
|
||||
"@embedpdf/plugin-tiling": "^2.3.0",
|
||||
"@embedpdf/plugin-viewport": "^2.3.0",
|
||||
"@embedpdf/plugin-zoom": "^2.3.0",
|
||||
"@emotion/react": "^11.14.0",
|
||||
"@emotion/styled": "^11.14.1",
|
||||
"@iconify/react": "^6.0.2",
|
||||
@@ -45,7 +45,6 @@
|
||||
"@tailwindcss/postcss": "^4.1.13",
|
||||
"@tanstack/react-virtual": "^3.13.12",
|
||||
"@tauri-apps/api": "^2.9.1",
|
||||
"@tauri-apps/plugin-dialog": "^2.6.0",
|
||||
"@tauri-apps/plugin-fs": "^2.4.5",
|
||||
"@tauri-apps/plugin-http": "^2.5.6",
|
||||
"@tauri-apps/plugin-shell": "^2.3.4",
|
||||
@@ -72,7 +71,6 @@
|
||||
"web-vitals": "^5.1.0"
|
||||
},
|
||||
"scripts": {
|
||||
"pretauri-build": "node scripts/build-provisioner.mjs",
|
||||
"predev": "npm run generate-icons",
|
||||
"dev": "vite",
|
||||
"prebuild": "npm run generate-icons",
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "الصفحات والرقم الابتدائي"
|
||||
positionAndPages = "الموضع والصفحات"
|
||||
preview = "اختيار الموضع"
|
||||
previewDisclaimer = "المعاينة تقديرية. قد يختلف الناتج النهائي بسبب مقاييس خطوط PDF."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "حدد ملف PDF:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "صيغة الناتج"
|
||||
pdfaNote = "PDF/A-1b أكثر توافقًا، وPDF/A-2b يدعم مزيدًا من الميزات."
|
||||
pdfaFormat = "تنسيق PDF/A"
|
||||
pdfaDigitalSignatureWarning = "يحتوي PDF على توقيع رقمي. سيتم إزالة هذا في الخطوة التالية."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "يحتوي ملف PDF على توقيع رقمي. سيتم إزالة ذلك في الخطوة التالية."
|
||||
pdfxDescription = "PDF/X هو مجموعة فرعية قياسية من PDF وفق ISO يوفّر طباعة موثوقة وتبادُل الرسومات."
|
||||
fileFormat = "صيغة الملف"
|
||||
@@ -2646,7 +2642,6 @@ label = "ملف PDF الأصلي"
|
||||
|
||||
[compare.edited]
|
||||
label = "ملف PDF المعدل"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "إعادة تشغيل المقارنة؟"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "حجم الصورة"
|
||||
margin = "الهامش"
|
||||
positionAndFormatting = "الموضع والتنسيق"
|
||||
quickPosition = "اختر موضعًا على الصفحة لوضع الختم."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "حدث خطأ أثناء إضافة الختم إلى ملف PDF."
|
||||
@@ -3612,6 +3594,14 @@ failed = "حدث خطأ أثناء إضافة الختم إلى ملف PDF."
|
||||
[AddStampRequest.results]
|
||||
title = "نتائج إضافة الختم"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "إزالة الصورة,عمليات الصفحة,الخلفية,جانب الخادم"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "تهيئة مسارات مخصصة لنظام الملفات لم
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "دلائل خط الأنابيب"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "دليل المجلدات المراقَبة"
|
||||
description = "الدليل الذي يراقب فيه خط الأنابيب ملفات PDF الواردة (اتركه فارغًا للإعداد الافتراضي: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "دليل المجلدات المنتهية"
|
||||
description = "الدليل الذي تُخرَج فيه ملفات PDF المعالجة (اتركه فارغًا للإعداد الافتراضي: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "أو الاتصال بحساب مُستضاف ذاتيًا"
|
||||
title = "الاتصال بالخادم"
|
||||
subtitle = "أدخل عنوان URL لخادمك المستضاف ذاتياً"
|
||||
testing = "جارٍ اختبار الاتصال..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Səhifələr və başlanğıc nömrəsi"
|
||||
positionAndPages = "Mövqe və səhifələr"
|
||||
preview = "Mövqe seçimi"
|
||||
previewDisclaimer = "Önizləmə təxmindir. Son çıxış PDF şrift metriklərinə görə dəyişə bilər."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "PDF faylını seçin:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Çıxış formatı"
|
||||
pdfaNote = "PDF/A-1b daha uyğundur, PDF/A-2b daha çox funksiyanı dəstəkləyir."
|
||||
pdfaFormat = "PDF/A formatı"
|
||||
pdfaDigitalSignatureWarning = "PDF Rəqəmsal İmza Ehtiva Edir.Bu, növbəti addımda silinəcək."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF rəqəmsal imza ehtiva edir. Bu imza növbəti addımda silinəcək."
|
||||
pdfxDescription = "PDF/X etibarlı çap və qrafika mübadiləsi üçün ISO standartlı PDF alt dəstidir."
|
||||
fileFormat = "Fayl formatı"
|
||||
@@ -2646,7 +2642,6 @@ label = "Orijinal PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Redaktə edilmiş PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Müqayisə yenidən işlənsin?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Şəkil ölçüsü"
|
||||
margin = "Kənar boşluğu"
|
||||
positionAndFormatting = "Mövqe və formatlama"
|
||||
quickPosition = "Möhürü yerləşdirmək üçün səhifədə bir mövqe seçin."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "PDF-ə möhür əlavə edilərkən xəta baş verdi."
|
||||
@@ -3612,6 +3594,14 @@ failed = "PDF-ə möhür əlavə edilərkən xəta baş verdi."
|
||||
[AddStampRequest.results]
|
||||
title = "Möhür nəticələri"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Şəkil Sil,Səhifə Əməliyyatları,Back end,server-tərəf"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Pipeline emalı və xarici alətlər üçün fərdi fayl sistemi
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Pipeline Qovluqları"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "İzlənən Qovluqlar Qovluğu"
|
||||
description = "Pipeline daxil olan PDF-ləri izlədiyi qovluq (defolt üçün boş saxlayın: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Tamamlanmış Qovluqlar Qovluğu"
|
||||
description = "Emal olunmuş PDF-lərin çıxarıldığı qovluq (defolt üçün boş saxlayın: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "və ya self-hosted hesaba qoşulun"
|
||||
title = "Serverə qoşulun"
|
||||
subtitle = "Öz serverinizin URL ünvanını daxil edin"
|
||||
testing = "Bağlantı yoxlanılır..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Страници и начално число"
|
||||
positionAndPages = "Позиция и страници"
|
||||
preview = "Избор на позиция"
|
||||
previewDisclaimer = "Прегледът е ориентировъчен. Крайният резултат може да се различава заради метриките на PDF шрифтовете."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Изберете PDF файл:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Изходен формат"
|
||||
pdfaNote = "PDF/A-1b е по-съвместим, PDF/A-2b поддържа повече функции."
|
||||
pdfaFormat = "Формат PDF/A"
|
||||
pdfaDigitalSignatureWarning = "PDF файлът съдържа цифров подпис. Това ще бъде премахнато в следващата стъпка."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF файлът съдържа цифров подпис. Той ще бъде премахнат на следващата стъпка."
|
||||
pdfxDescription = "PDF/X е подмножество на PDF по стандарта ISO за надежден печат и обмен на графики."
|
||||
fileFormat = "Файлов формат"
|
||||
@@ -2646,7 +2642,6 @@ label = "Оригинален PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Редактиран PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Да се изпълни сравнение отново?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Размер на изображението"
|
||||
margin = "Отстъп"
|
||||
positionAndFormatting = "Позиция и форматиране"
|
||||
quickPosition = "Изберете позиция на страницата, където да поставите печата."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Възникна грешка при добавяне на печат към PDF."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Възникна грешка при добавяне на печат
|
||||
[AddStampRequest.results]
|
||||
title = "Резултати от печата"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Премахване на изображение, операции на страници, админ страна, страна на сървъра"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Конфигурирайте персонализирани пъ
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Директории за Pipeline"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Директория за наблюдавани папки"
|
||||
description = "Директория, където pipeline наблюдава за входящи PDF (оставете празно за подразбиране: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Директория за завършени папки"
|
||||
description = "Директория, където се извеждат обработените PDF (оставете празно за подразбиране: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "или се свържете със самостоятелно хост
|
||||
title = "Свързване към сървър"
|
||||
subtitle = "Въведете URL на самостоятелно хоствания си сървър"
|
||||
testing = "Тестване на връзката..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "ཤོག་ངོས་དང་འགོ་འཛུགས
|
||||
positionAndPages = "གནས་བབ་དང་ཤོག་ངོས།"
|
||||
preview = "ལས་གནས་འདེམས་པ།"
|
||||
previewDisclaimer = "སྔོན་ལྟ་ནི་ཚོད་དཔག་ཡིན། མཐའ་མའི་ཐོན་འབྲས་དེ་PDFཡིག་གཟུགས་ཚད་གཞིའི་རྐྱེན་གྱིས་མི་འདྲ་བ་ཆགས་སྲིད།"
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "PDFཡིག་ཆ་འདེམས།"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "ཐོན་འབྲས་རྣམ་གྲངས།"
|
||||
pdfaNote = "PDF/A-1b མཐུན་སྒྲིལ་ཆེ་བ་དང་། PDF/A-2b ཡིས་ཁྱད་ཆོས་མང་བ་ལ་རྒྱབ་སྐྱོར་བྱེད་ཀྱི་ཡོད། PDF/A-3b ཡིས་བཙུགས་པའི་ཡིག་ཆ་ལ་རྒྱབ་སྐྱོར་བྱེད་ཀྱི་ཡོད།"
|
||||
pdfaFormat = "PDF/A རྣམ་གཞག"
|
||||
pdfaDigitalSignatureWarning = "PDF ནང་ཨང་གྲངས་ཀྱི་མཚན་རྟགས་ཡོད། འདི་གོམ་པ་རྗེས་མར་མེད་པར་བཟོ་རྒྱུ་རེད།"
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "དེབ PDF ནང་ གློག་སྒྲིག་མིང་རྟགས་ཡོད། རྗེས་སྟབས་ནས་འདི་བསུབ་བྱེད།"
|
||||
pdfxDescription = "PDF/X ནི ISO ཚད་ལྡན་PDF གྲངས་ཆ་ཞིག་ཡིན་པས་ ཡིད་ཆེན་པོར་པར་འདེབས་དང་ རི་མོ་བརྗེ་སོར་བྱེད་ཐུབ།"
|
||||
fileFormat = "ཡིག་ཆ།"
|
||||
@@ -2646,7 +2642,6 @@ label = "ཐོག་མའི་PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "རྩོམ་སྒྲིག་བྱས་པའི་PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "བསྐྱར་དུ་འགྲན་བསྡུར།"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "པར་རིས་ཚད་གཞི།"
|
||||
margin = "མཐའ་ཤོག"
|
||||
positionAndFormatting = "ལས་གནས་དང་རྩ་སྒྲིག།"
|
||||
quickPosition = "ཤོག་ངོས་སྟེང་དུ་གནས་ཡུལ་ཞིག་འདེམས་ནས་མཚོན་རྟགས་འཇོག་དགོས།"
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "PDF ལ་མཚོན་རྟགས་ཁ་སྣོན་བྱེད་སྐབས་ནོར་འཁྲུལ་བྱུང་ཡོད།"
|
||||
@@ -3612,6 +3594,14 @@ failed = "PDF ལ་མཚོན་རྟགས་ཁ་སྣོན་བྱེ
|
||||
[AddStampRequest.results]
|
||||
title = "མཚོན་རྟགས་གྲུབ་འབྲས།"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "པར་རིས་མེད་པར་བཟོས་པ། ཤོག་ངོས་བཀོལ་སྤྱོད། རྒྱབ་མཇུག་། ཞབས་ཞུ་པ།"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "མདོང་ལམ་ལས་སྣོན་དང་ཕྱ
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "མདོང་ལམ་ངོས་འཛིན།"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "བལྟ་བའི་སྣོད་ཆས་སྣོད་ཐོ།"
|
||||
description = "སྣོད་ཐོ་དེ་PDFནང་དུ་འོང་བའི་མདོང་ལམ་གྱི་ལྟ་རྟོག་བྱེད་ཆས་(སྔོན་སྒྲིག་ལ་སྟོང་པར་བཞག་པ་: /pipeline/whatedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "མཇུག་སྒྲིལ། སྣོད་ཐོ་ཐོ་གཞུང་།"
|
||||
description = "ལས་སྣོན་བྱས་པའི་PDFs ཐོན་ཚད་ཡོད་པའི་སྣོད་ཐོ། (སྔོན་སྒྲིག་ལ་སྟོང་པ་སྟོང་པ་: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "ཡང་ན་རང་གིས་བདག་གཉེར་བྱེ
|
||||
title = "སར་བར་མཐུད་པ།"
|
||||
subtitle = "ཁྱེད་རང་གི་རང་གིས་གཉེར་བའི་སར་བར་གྱི་URLནང་འཇུག་བྱེད།"
|
||||
testing = "ཚོད་ལྟ། འབྲེལ་བ། ..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "སིཊི་རི་ལིང་PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Pàgines i número inicial"
|
||||
positionAndPages = "Posició i pàgines"
|
||||
preview = "Selecció de posició"
|
||||
previewDisclaimer = "La previsualització és aproximada. El resultat final pot variar a causa de les mètriques del tipus de lletra del PDF."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Selecciona PDF:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Format de sortida"
|
||||
pdfaNote = "PDF/A-1b és més compatible; PDF/A-2b admet més funcions."
|
||||
pdfaFormat = "Format PDF/A"
|
||||
pdfaDigitalSignatureWarning = "El PDF conté una signatura digital. Aquesta serà eliminada en el següent pas."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "El PDF conté una signatura digital. Aquesta se suprimirà en el pas següent."
|
||||
pdfxDescription = "PDF/X és un subconjunt de PDF estàndard ISO per a una impressió fiable i un intercanvi de gràfics fiable."
|
||||
fileFormat = "Format de fitxer"
|
||||
@@ -2646,7 +2642,6 @@ label = "PDF original"
|
||||
|
||||
[compare.edited]
|
||||
label = "PDF editat"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Tornar a executar la comparació?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Mida de la imatge"
|
||||
margin = "Marge"
|
||||
positionAndFormatting = "Posició i format"
|
||||
quickPosition = "Seleccioneu una posició a la pàgina per col·locar el segell."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "S'ha produït un error en afegir el segell al PDF."
|
||||
@@ -3612,6 +3594,14 @@ failed = "S'ha produït un error en afegir el segell al PDF."
|
||||
[AddStampRequest.results]
|
||||
title = "Resultats del segell"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Elimina imatge,Operacions de pàgina,Back-end,Servidor"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Configureu camins personalitzats del sistema de fitxers per al pr
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Directoris de pipeline"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Directori de carpetes monitoritzades"
|
||||
description = "Directori on la pipeline monitoritza l'arribada de PDFs (deixeu-ho buit per al valor per defecte: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Directori de carpetes finalitzades"
|
||||
description = "Directori on es generen els PDFs processats (deixeu-ho buit per al valor per defecte: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "o connecteu-vos a un compte autoallotjat"
|
||||
title = "Connecta't al servidor"
|
||||
subtitle = "Introdueix la URL del servidor autoallotjat"
|
||||
testing = "Provant la connexió..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Strany a počáteční číslo"
|
||||
positionAndPages = "Pozice a stránky"
|
||||
preview = "Výběr pozice"
|
||||
previewDisclaimer = "Náhled je orientační. Konečný výstup se může lišit kvůli metrikám písem PDF."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Vyberte PDF soubor:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Výstupní formát"
|
||||
pdfaNote = "PDF/A-1b je kompatibilnější, PDF/A-2b podporuje více funkcí."
|
||||
pdfaFormat = "Formát PDF/A"
|
||||
pdfaDigitalSignatureWarning = "PDF obsahuje digitální podpis, který bude v dalším kroku odstraněn."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF obsahuje digitální podpis. Ten bude v dalším kroku odstraněn."
|
||||
pdfxDescription = "PDF/X je podmnožina PDF dle standardu ISO pro spolehlivý tisk a výměnu grafiky."
|
||||
fileFormat = "Formát souboru"
|
||||
@@ -2646,7 +2642,6 @@ label = "Původní PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Upravené PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Spustit porovnání znovu?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Velikost obrázku"
|
||||
margin = "Okraj"
|
||||
positionAndFormatting = "Umístění a formátování"
|
||||
quickPosition = "Vyberte na stránce pozici pro umístění razítka."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Při přidávání razítka do PDF došlo k chybě."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Při přidávání razítka do PDF došlo k chybě."
|
||||
[AddStampRequest.results]
|
||||
title = "Výsledky razítka"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Odstranit obrázek,Operace stránek,zadní strana,serverová strana"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Nakonfigurujte vlastní cesty systému souborů pro zpracovatelsk
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Adresáře pipeline"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Adresář sledovaných složek"
|
||||
description = "Adresář, kde pipeline sleduje příchozí PDF (ponechte prázdné pro výchozí: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Adresář dokončených složek"
|
||||
description = "Adresář, do kterého se ukládají zpracovaná PDF (ponechte prázdné pro výchozí: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "nebo se připojte k účtu s vlastním hostováním"
|
||||
title = "Připojit k serveru"
|
||||
subtitle = "Zadejte URL vašeho samohostovaného serveru"
|
||||
testing = "Testuji připojení..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Sider og startnummer"
|
||||
positionAndPages = "Position og sider"
|
||||
preview = "Positionsvalg"
|
||||
previewDisclaimer = "Forhåndsvisning er vejledende. Det endelige output kan variere pga. PDF-skrifttypemetrik."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Vælg PDF-fil:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Outputformat"
|
||||
pdfaNote = "PDF/A-1b er mere kompatibel, PDF/A-2b understøtter flere funktioner."
|
||||
pdfaFormat = "PDF/A-format"
|
||||
pdfaDigitalSignatureWarning = "PDF'en indeholder en digital signatur. Dette vil blive fjernet i næste trin."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF'en indeholder en digital signatur. Denne fjernes i næste trin."
|
||||
pdfxDescription = "PDF/X er en ISO-standard PDF-undersæt til pålidelig udskrivning og grafikudveksling."
|
||||
fileFormat = "Filformat"
|
||||
@@ -2646,7 +2642,6 @@ label = "Original-PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Redigeret PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Kør sammenligningen igen?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Billedstørrelse"
|
||||
margin = "Margen"
|
||||
positionAndFormatting = "Placering og formatering"
|
||||
quickPosition = "Vælg en placering på siden til stemplet."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Der opstod en fejl under tilføjelse af stempel til PDF'en."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Der opstod en fejl under tilføjelse af stempel til PDF'en."
|
||||
[AddStampRequest.results]
|
||||
title = "Stempelresultater"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Fjern Billede,Sideoperationer,Back end,server side"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Konfigurer brugerdefinerede filsystemstier til pipeline-behandlin
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Pipelinemapper"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Mappe for overvågede mapper"
|
||||
description = "Mappe hvor pipelinen overvåger indkommende PDF'er (lad tom for standard: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Mappe for færdige mapper"
|
||||
description = "Mappe hvor behandlede PDF'er gemmes (lad tom for standard: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "eller opret forbindelse til en selvhostet konto"
|
||||
title = "Forbind til server"
|
||||
subtitle = "Indtast URL til din selvhostede server"
|
||||
testing = "Tester forbindelse..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Seiten & Startnummer"
|
||||
positionAndPages = "Position & Seiten"
|
||||
preview = "Positionsauswahl"
|
||||
previewDisclaimer = "Vorschau ist ungefähr. Das Endergebnis kann aufgrund der PDF-Schriftmetriken variieren."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "PDF-Datei auswählen:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Ausgabeformat"
|
||||
pdfaNote = "PDF/A-1b ist kompatibler, PDF/A-2b unterstützt mehr Funktionen."
|
||||
pdfaFormat = "PDF/A-Format"
|
||||
pdfaDigitalSignatureWarning = "Das PDF enthält eine digitale Signatur. Sie wird im nächsten Schritt entfernt."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "Das PDF enthält eine digitale Signatur. Diese wird im nächsten Schritt entfernt."
|
||||
pdfxDescription = "PDF/X ist eine ISO-Standard-PDF-Teilmenge für zuverlässigen Druck und Grafikaustausch."
|
||||
fileFormat = "Dateiformat"
|
||||
@@ -2646,7 +2642,6 @@ label = "Original-PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Bearbeitetes PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Vergleich erneut ausführen?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Bildgröße"
|
||||
margin = "Rand"
|
||||
positionAndFormatting = "Position & Formatierung"
|
||||
quickPosition = "Wählen Sie eine Position auf der Seite, um den Stempel zu platzieren."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Beim Hinzufügen des Stempels zum PDF ist ein Fehler aufgetreten."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Beim Hinzufügen des Stempels zum PDF ist ein Fehler aufgetreten."
|
||||
[AddStampRequest.results]
|
||||
title = "Stempel-Ergebnisse"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "bild entfernen,seitenoperationen,back end,server side"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Benutzerdefinierte Dateisystempfade für Pipeline-Verarbeitung un
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Pipeline-Verzeichnisse"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Verzeichnis für überwachte Ordner"
|
||||
description = "Verzeichnis, in dem die Pipeline nach eingehenden PDFs überwacht (leer lassen für Standard: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Verzeichnis für fertiggestellte Ordner"
|
||||
description = "Verzeichnis, in das verarbeitete PDFs ausgegeben werden (leer lassen für Standard: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "oder mit einem selbstgehosteten Konto verbinden"
|
||||
title = "Mit Server verbinden"
|
||||
subtitle = "Geben Sie die URL Ihres Self-Hosted-Servers ein"
|
||||
testing = "Verbindung wird getestet..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Σελίδες & Αρχικός αριθμός"
|
||||
positionAndPages = "Θέση & Σελίδες"
|
||||
preview = "Επιλογή θέσης"
|
||||
previewDisclaimer = "Η προεπισκόπηση είναι κατά προσέγγιση. Το τελικό αποτέλεσμα μπορεί να διαφέρει λόγω των μετρικών γραμματοσειράς του PDF."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Επιλέξτε αρχείο PDF:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Μορφή εξόδου"
|
||||
pdfaNote = "Το PDF/A-1b είναι πιο συμβατό, το PDF/A-2b υποστηρίζει περισσότερες δυνατότητες."
|
||||
pdfaFormat = "Μορφή PDF/A"
|
||||
pdfaDigitalSignatureWarning = "Το PDF περιέχει ψηφιακή υπογραφή. Αυτή θα αφαιρεθεί στο επόμενο βήμα."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "Το PDF περιέχει ψηφιακή υπογραφή. Αυτή θα αφαιρεθεί στο επόμενο βήμα."
|
||||
pdfxDescription = "Το PDF/X είναι ένα υποσύνολο PDF προτύπου ISO για αξιόπιστη εκτύπωση και ανταλλαγή γραφικών."
|
||||
fileFormat = "Μορφή αρχείου"
|
||||
@@ -2646,7 +2642,6 @@ label = "Αρχικό PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Τροποποιημένο PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Επανεκτέλεση σύγκρισης;"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Μέγεθος εικόνας"
|
||||
margin = "Περιθώριο"
|
||||
positionAndFormatting = "Θέση & μορφοποίηση"
|
||||
quickPosition = "Επιλέξτε μια θέση στη σελίδα για τοποθέτηση της σφραγίδας."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Παρουσιάστηκε σφάλμα κατά την προσθήκη σφραγίδας στο PDF."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Παρουσιάστηκε σφάλμα κατά την προσθήκ
|
||||
[AddStampRequest.results]
|
||||
title = "Αποτελέσματα σφράγισης"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "αφαίρεση εικόνας,λειτουργίες σελίδας,backend,server side"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Ρυθμίστε προσαρμοσμένες διαδρομές
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Κατάλογοι pipeline"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Κατάλογος παρακολουθούμενων φακέλων"
|
||||
description = "Κατάλογος όπου το pipeline παρακολουθεί για εισερχόμενα PDF (αφήστε κενό για προεπιλογή: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Κατάλογος ολοκληρωμένων φακέλων"
|
||||
description = "Κατάλογος όπου εξάγονται τα επεξεργασμένα PDF (αφήστε κενό για προεπιλογή: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "ή συνδεθείτε σε έναν self-hosted λογαριασμό"
|
||||
title = "Σύνδεση σε διακομιστή"
|
||||
subtitle = "Εισαγάγετε το URL του self-hosted διακομιστή σας"
|
||||
testing = "Έλεγχος σύνδεσης..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -1303,8 +1303,6 @@ outputFormat = "Output Format"
|
||||
pdfaNote = "PDF/A-1b is more compatible, PDF/A-2b supports more features, PDF/A-3b supports embedded files."
|
||||
pdfaFormat = "PDF/A Format"
|
||||
pdfaDigitalSignatureWarning = "The PDF contains a digital signature. This will be removed in the next step."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "The PDF contains a digital signature. This will be removed in the next step."
|
||||
pdfxDescription = "PDF/X is an ISO standard PDF subset for reliable printing and graphics exchange."
|
||||
fileFormat = "File Format"
|
||||
@@ -2647,7 +2645,6 @@ label = "Original PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Edited PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Re-run comparison?"
|
||||
@@ -3411,7 +3408,6 @@ instructions = "Select text or draw areas on the PDF to mark content for redacti
|
||||
markText = "Mark Text"
|
||||
markArea = "Mark Area"
|
||||
pendingLabel = "Pending:"
|
||||
applyRedactions = "Apply Redactions"
|
||||
applyWarning = "⚠️ Permanent application, cannot be undone and the data underneath will be deleted"
|
||||
apply = "Apply"
|
||||
noMarks = "No redaction marks. Use the tools above to mark content for redaction."
|
||||
@@ -3602,11 +3598,6 @@ europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "An error occurred while adding stamp to the PDF."
|
||||
@@ -6565,7 +6556,6 @@ link = "or connect to a self-hosted account"
|
||||
title = "Connect to Server"
|
||||
subtitle = "Enter your self-hosted server URL"
|
||||
testing = "Testing connection..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Páginas y número inicial"
|
||||
positionAndPages = "Posición y páginas"
|
||||
preview = "Selección de posición"
|
||||
previewDisclaimer = "La vista previa es aproximada. El resultado final puede variar debido a las métricas de fuentes del PDF."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Seleccionar archivo PDF:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Formato de Salida"
|
||||
pdfaNote = "PDF/A-1b es más compatible, PDF/A-2b soporta más funciones."
|
||||
pdfaFormat = "Formato PDF/A"
|
||||
pdfaDigitalSignatureWarning = "El PDF contiene una firma digital. Ésta se eliminará en el siguiente paso."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "El PDF contiene una firma digital. Se eliminará en el siguiente paso."
|
||||
pdfxDescription = "PDF/X es un subconjunto estándar ISO de PDF para impresión fiable e intercambio de gráficos."
|
||||
fileFormat = "Formato de Archivo"
|
||||
@@ -2646,7 +2642,6 @@ label = "PDF original"
|
||||
|
||||
[compare.edited]
|
||||
label = "PDF editado"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "¿Volver a ejecutar la comparación?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Tamaño de la imagen"
|
||||
margin = "Margen"
|
||||
positionAndFormatting = "Posición y formato"
|
||||
quickPosition = "Selecciona una posición en la página para colocar el sello."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Se produjo un error al añadir el sello al PDF."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Se produjo un error al añadir el sello al PDF."
|
||||
[AddStampRequest.results]
|
||||
title = "Resultados del sello"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Eliminar imagen,Operaciones de página,Back end,Backend"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Configura rutas de sistema de archivos personalizadas para el pro
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Directorios del pipeline"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Directorio de carpetas vigiladas"
|
||||
description = "Directorio donde el pipeline supervisa la llegada de PDFs (dejar vacío para el valor predeterminado: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Directorio de carpetas finalizadas"
|
||||
description = "Directorio donde se generan los PDFs procesados (dejar vacío para el valor predeterminado: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "o conectarse a una cuenta autoalojada"
|
||||
title = "Conectar con el servidor"
|
||||
subtitle = "Introduzca la URL de su servidor autoalojado"
|
||||
testing = "Probando la conexión..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Orrialdeak eta hasierako zenbakia"
|
||||
positionAndPages = "Kokalekua eta orrialdeak"
|
||||
preview = "Kokalekuaren hautaketa"
|
||||
previewDisclaimer = "Aurrebista orientagarria da. Azken emaitza aldatu daiteke PDFaren letra-metriken arabera."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Aukeratu PDF fitxategia:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Irteerako formatua"
|
||||
pdfaNote = "PDF/A-1b bateragarriagoa da; PDF/A-2b-k ezaugarri gehiago onartzen ditu."
|
||||
pdfaFormat = "PDF/A formatua"
|
||||
pdfaDigitalSignatureWarning = "PDFak sinadura digitala dauka. Hurrengo urratsean kenduko da."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDFak sinadura digital bat dauka. Hurrengo urratsean kenduko da."
|
||||
pdfxDescription = "PDF/X inprimaketa eta grafikoen truke fidagarrirako ISO estandarreko PDF azpimultzoa da."
|
||||
fileFormat = "Fitxategi formatua"
|
||||
@@ -2646,7 +2642,6 @@ label = "Jatorrizko PDFa"
|
||||
|
||||
[compare.edited]
|
||||
label = "Editatutako PDFa"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Berriro exekutatu konparazioa?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Irudiaren tamaina"
|
||||
margin = "Marjina"
|
||||
positionAndFormatting = "Kokapena eta formatua"
|
||||
quickPosition = "Hautatu orrian zigiloa kokatzeko posizio bat."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Errore bat gertatu da zigilua PDFari gehitzean."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Errore bat gertatu da zigilua PDFari gehitzean."
|
||||
[AddStampRequest.results]
|
||||
title = "Zigiluaren emaitzak"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Irudia kendu,Orrialde eragiketak,Back end,server side"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Konfiguratu fitxategi-sistemako bide pertsonalizatuak pipeline pr
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Pipeline direktorioak"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Gainbegiratutako karpeten direktorioa"
|
||||
description = "Pipelineak sarrerako PDFak gainbegiratzen dituen direktorioa (utzi hutsik lehenetsia erabiltzeko: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Amaitutako karpeten direktorioa"
|
||||
description = "Prozesatutako PDFak ateratzen diren direktorioa (utzi hutsik lehenetsia erabiltzeko: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "edo konektatu autoostatutako kontu batera"
|
||||
title = "Konektatu zerbitzarira"
|
||||
subtitle = "Sartu zure auto-ostatuko zerbitzariaren URLa"
|
||||
testing = "Konexioa probatzen..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "صفحات و شماره آغازین"
|
||||
positionAndPages = "موقعیت و صفحات"
|
||||
preview = "انتخاب موقعیت"
|
||||
previewDisclaimer = "پیشنمایش تقریبی است. خروجی نهایی ممکن است به دلیل معیارهای فونت PDF متفاوت باشد."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "انتخاب فایل PDF:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "قالب خروجی"
|
||||
pdfaNote = "PDF/A-1b سازگارتر است، PDF/A-2b از قابلیتهای بیشتری پشتیبانی میکند."
|
||||
pdfaFormat = "فرمت PDF/A"
|
||||
pdfaDigitalSignatureWarning = "PDF حاوی یک امضای دیجیتال است. این در مرحله بعد حذف خواهد شد."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "این PDF شامل امضای دیجیتال است. این مورد در مرحله بعد حذف خواهد شد."
|
||||
pdfxDescription = "PDF/X زیرمجموعه استاندارد ISO از PDF برای چاپ قابلاعتماد و تبادل گرافیک است."
|
||||
fileFormat = "قالب فایل"
|
||||
@@ -2646,7 +2642,6 @@ label = "PDF اصلی"
|
||||
|
||||
[compare.edited]
|
||||
label = "PDF ویرایششده"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "مقایسه دوباره انجام شود؟"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "اندازه تصویر"
|
||||
margin = "حاشیه"
|
||||
positionAndFormatting = "موقعیت و قالببندی"
|
||||
quickPosition = "یک موقعیت روی صفحه برای قرار دادن مهر انتخاب کنید."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "هنگام افزودن مهر به PDF خطایی رخ داد."
|
||||
@@ -3612,6 +3594,14 @@ failed = "هنگام افزودن مهر به PDF خطایی رخ داد."
|
||||
[AddStampRequest.results]
|
||||
title = "نتایج مهر"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "حذف تصویر، عملیات صفحه، سرور"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "پیکربندی مسیرهای فایل سیستم سفارشی
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "دایرکتوریهای پایپلاین"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "دایرکتوری پوشههای پایششده"
|
||||
description = "مسیر پوشهای که پایپلاین برای PDFهای ورودی پایش میکند (خالی بگذارید برای پیشفرض: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "دایرکتوری پوشههای پایانیافته"
|
||||
description = "مسیر پوشهای که PDFهای پردازششده در آن خروجی داده میشوند (خالی بگذارید برای پیشفرض: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "یا به یک حساب خودمیزبان متصل شوید"
|
||||
title = "اتصال به سرور"
|
||||
subtitle = "URL سرور خودمیزبان خود را وارد کنید"
|
||||
testing = "در حال آزمون اتصال..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Pages et numéro de départ"
|
||||
positionAndPages = "Position et pages"
|
||||
preview = "Sélection de la position"
|
||||
previewDisclaimer = "L’aperçu est approximatif. Le résultat final peut varier en raison des métriques de police du PDF."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Sélectionnez le fichier PDF"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Format de sortie"
|
||||
pdfaNote = "PDF/A-1b est plus compatible, PDF/A-2b prend en charge davantage de fonctionnalités."
|
||||
pdfaFormat = "Format PDF/A"
|
||||
pdfaDigitalSignatureWarning = "Le PDF contient une signature numérique. Elle sera supprimée dans l'étape suivante."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "Le PDF contient une signature numérique. Elle sera supprimée à l'étape suivante."
|
||||
pdfxDescription = "PDF/X est un sous-ensemble PDF conforme à l'ISO pour une impression fiable et un échange graphique."
|
||||
fileFormat = "Format de fichier"
|
||||
@@ -2646,7 +2642,6 @@ label = "PDF original"
|
||||
|
||||
[compare.edited]
|
||||
label = "PDF modifié"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Relancer la comparaison ?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Taille de l’image"
|
||||
margin = "Marge"
|
||||
positionAndFormatting = "Position et mise en forme"
|
||||
quickPosition = "Sélectionnez une position sur la page pour placer le tampon."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Une erreur s’est produite lors de l’ajout du tampon au PDF."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Une erreur s’est produite lors de l’ajout du tampon au PDF."
|
||||
[AddStampRequest.results]
|
||||
title = "Résultats du tampon"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Images,Remove Image,Page operations,Back end,server side"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Configurer des chemins de système de fichiers personnalisés pou
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Répertoires du pipeline"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Répertoire des dossiers surveillés"
|
||||
description = "Répertoire où le pipeline surveille les PDF entrants (laisser vide pour la valeur par défaut : /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Répertoire des dossiers terminés"
|
||||
description = "Répertoire où les PDF traités sont produits (laisser vide pour la valeur par défaut : /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "ou connectez-vous à un compte auto-hébergé"
|
||||
title = "Connexion au serveur"
|
||||
subtitle = "Saisissez l’URL de votre serveur auto‑hébergé"
|
||||
testing = "Test de connexion…"
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Leathanaigh & Uimhir Tosaigh"
|
||||
positionAndPages = "Suíomh & Leathanaigh"
|
||||
preview = "Roghnú Suímh"
|
||||
previewDisclaimer = "Is garbh an réamhamharc. D'fhéadfadh an toradh deiridh a bheith éagsúil de bharr méadrachtaí cló PDF."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Roghnaigh comhad PDF:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Formáid Aschuir"
|
||||
pdfaNote = "Tá PDF/A-1b níos comhoiriúnaí, tacaíonn PDF/A-2b le níos mó gnéithe."
|
||||
pdfaFormat = "Formáid PDF/A"
|
||||
pdfaDigitalSignatureWarning = "Tá síniú digiteach ar an PDF. Bainfear é seo sa chéad chéim eile."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "Tá síniú digiteach sa PDF. Bainfear é sa chéad chéim eile."
|
||||
pdfxDescription = "Is fo-thacar PDF de chaighdeán ISO é PDF/X le haghaidh priontála agus malartaithe grafaice iontaofa."
|
||||
fileFormat = "Formáid Comhaid"
|
||||
@@ -2646,7 +2642,6 @@ label = "PDF Bunaidh"
|
||||
|
||||
[compare.edited]
|
||||
label = "PDF Eagarthaithe"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Rith an chomparáid arís?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Méid Íomhá"
|
||||
margin = "Imeall"
|
||||
positionAndFormatting = "Suíomh & Formáidiú"
|
||||
quickPosition = "Roghnaigh suíomh ar an leathanach le stampa a chur."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Tharla earráid agus stampa á chur leis an PDF."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Tharla earráid agus stampa á chur leis an PDF."
|
||||
[AddStampRequest.results]
|
||||
title = "Torthaí Stampa"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Bain Íomhá, Oibríochtaí Leathanaigh, Cúl, taobh an fhreastalaí"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Cumraigh conairí comhadchórais saincheaptha le haghaidh próise
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Eolairí Píblíne"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Comhadlann na bhFillteán Faire"
|
||||
description = "Comhadlann ina ndéanann an píblíne monatóireacht ar PDFs isteach (fág folamh don réamhshocrú: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Comhadlann na bhFillteán Críochnaithe"
|
||||
description = "Comhadlann ina n‑aschuirtear PDFs próiseáilte (fág folamh don réamhshocrú: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "nó ceangail le cuntas féinóstáilte"
|
||||
title = "Ceangail leis an bhFreastalaí"
|
||||
subtitle = "Cuir isteach URL do fhreastalaí féin-óstáilte"
|
||||
testing = "Ceangal á thástáil..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "पृष्ठ और आरंभिक संख्या
|
||||
positionAndPages = "स्थिति और पृष्ठ"
|
||||
preview = "स्थिति चयन"
|
||||
previewDisclaimer = "पूर्वावलोकन अनुमानित है। अंतिम आउटपुट PDF फ़ॉन्ट मेट्रिक्स के कारण भिन्न हो सकता है।"
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "PDF फ़ाइल चुनें:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "आउटपुट फ़ॉर्मेट"
|
||||
pdfaNote = "PDF/A-1b अधिक संगत है, PDF/A-2b अधिक सुविधाएँ समर्थित करता है।"
|
||||
pdfaFormat = "PDF/A फ़ॉर्मेट"
|
||||
pdfaDigitalSignatureWarning = "PDF में एक डिजिटल हस्ताक्षर है। यह अगले चरण में हटा दिया जाएगा।"
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF में एक डिजिटल हस्ताक्षर है। यह अगले चरण में हटा दिया जाएगा।"
|
||||
pdfxDescription = "PDF/X विश्वसनीय प्रिंटिंग और ग्राफ़िक्स विनिमय के लिए एक ISO मानक PDF उपसमुच्चय है।"
|
||||
fileFormat = "फ़ाइल फ़ॉर्मेट"
|
||||
@@ -2646,7 +2642,6 @@ label = "मूल PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "संपादित PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "तुलना पुनः चलाएं?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "छवि आकार"
|
||||
margin = "हाशिया"
|
||||
positionAndFormatting = "स्थिति और फ़ॉर्मैटिंग"
|
||||
quickPosition = "मुहर रखने के लिए पृष्ठ पर एक स्थान चुनें।"
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "PDF में मुहर जोड़ते समय त्रुटि हुई।"
|
||||
@@ -3612,6 +3594,14 @@ failed = "PDF में मुहर जोड़ते समय त्रु
|
||||
[AddStampRequest.results]
|
||||
title = "मुहर के परिणाम"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "छवि हटाएं,पृष्ठ कार्य,बैक एंड,सर्वर साइड"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "पाइपलाइन प्रोसेसिंग और
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "पाइपलाइन डायरेक्टरीज़"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "वॉच्ड फ़ोल्डर्स डायरेक्टरी"
|
||||
description = "वह डायरेक्टरी जहाँ पाइपलाइन आने वाले PDF मॉनिटर करती है (डिफ़ॉल्ट हेतु खाली छोड़ें: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "फिनिश्ड फ़ोल्डर्स डायरेक्टरी"
|
||||
description = "वह डायरेक्टरी जहाँ प्रोसेस किए गए PDF आउटपुट होते हैं (डिफ़ॉल्ट हेतु खाली छोड़ें: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "या किसी स्व-होस्टेड खाते से
|
||||
title = "सर्वर से कनेक्ट करें"
|
||||
subtitle = "अपना सेल्फ-होस्टेड सर्वर URL दर्ज करें"
|
||||
testing = "कनेक्शन परीक्षण हो रहा है..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Stranice i početni broj"
|
||||
positionAndPages = "Položaj i stranice"
|
||||
preview = "Odabir položaja"
|
||||
previewDisclaimer = "Pregled je približan. Konačni izlaz može varirati zbog metrika fonta u PDF-u."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Odaberi PDF datoteku:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Izlazni format"
|
||||
pdfaNote = "PDF/A-1b je kompatibilniji, PDF/A-2b podržava više značajki."
|
||||
pdfaFormat = "PDF/A format"
|
||||
pdfaDigitalSignatureWarning = "PDF sadrži digitalni potpis. U sledećem koraku će biti uklonjen."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF sadrži digitalni potpis. Bit će uklonjen u sljedećem koraku."
|
||||
pdfxDescription = "PDF/X je ISO standardni podskup PDF-a za pouzdani tisak i razmjenu grafike."
|
||||
fileFormat = "Format datoteke"
|
||||
@@ -2646,7 +2642,6 @@ label = "Izvorni PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Uređeni PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Ponovno pokrenuti usporedbu?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Veličina slike"
|
||||
margin = "Margina"
|
||||
positionAndFormatting = "Položaj i oblikovanje"
|
||||
quickPosition = "Odaberite položaj na stranici za postavljanje pečata."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Došlo je do pogreške pri dodavanju pečata u PDF."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Došlo je do pogreške pri dodavanju pečata u PDF."
|
||||
[AddStampRequest.results]
|
||||
title = "Rezultati pečata"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Ukloni sliku, Rad sa stranicama, Back end, server strana"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Konfigurirajte prilagođene putanje datotečnog sustava za obradu
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Direktoriji cjevovoda"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Direktorij nadziranih mapa"
|
||||
description = "Direktorij u kojem cjevovod nadzire dolazne PDF-ove (ostavite prazno za zadano: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Direktorij dovršenih mapa"
|
||||
description = "Direktorij u koji se ispisuju obrađeni PDF-ovi (ostavite prazno za zadano: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "ili se povežite sa samohostiranim računom"
|
||||
title = "Povežite se s poslužiteljem"
|
||||
subtitle = "Unesite URL svog self-hosted Stirling PDF poslužitelja"
|
||||
testing = "Testiranje veze..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Oldalak és kezdő sorszám"
|
||||
positionAndPages = "Pozíció és oldalak"
|
||||
preview = "Pozíció kiválasztása"
|
||||
previewDisclaimer = "Az előnézet hozzávetőleges. A végső kimenet eltérhet a PDF betűkészlet-metrikái miatt."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "PDF fájl kiválasztása:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Kimeneti formátum"
|
||||
pdfaNote = "A PDF/A-1b kompatibilisebb, a PDF/A-2b több funkciót támogat."
|
||||
pdfaFormat = "PDF/A formátum"
|
||||
pdfaDigitalSignatureWarning = "A PDF digitális aláírást tartalmaz. Ez a következő lépésben eltávolításra kerül."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "A PDF digitális aláírást tartalmaz. Ez a következő lépésben eltávolításra kerül."
|
||||
pdfxDescription = "A PDF/X egy ISO szabványos PDF-részhalmaz megbízható nyomtatáshoz és grafikai cseréhez."
|
||||
fileFormat = "Fájlformátum"
|
||||
@@ -2646,7 +2642,6 @@ label = "Eredeti PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Szerkesztett PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Újrafuttatja az összehasonlítást?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Képméret"
|
||||
margin = "Margó"
|
||||
positionAndFormatting = "Pozíció és formázás"
|
||||
quickPosition = "Válasszon pozíciót az oldalon a bélyeg elhelyezéséhez."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Hiba történt a bélyeg hozzáadása közben a PDF-hez."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Hiba történt a bélyeg hozzáadása közben a PDF-hez."
|
||||
[AddStampRequest.results]
|
||||
title = "Bélyegzés eredményei"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Képek eltávolítása,Oldalműveletek,Backend,szerver oldali"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Egyéni fájlrendszer-útvonalak konfigurálása a pipeline feldo
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Pipeline könyvtárak"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Megfigyelt mappák könyvtára"
|
||||
description = "Könyvtár, ahol a pipeline a beérkező PDF-eket figyeli (hagyja üresen az alapértelmezett útvonalhoz: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Befejezett mappák könyvtára"
|
||||
description = "Könyvtár, ahova a feldolgozott PDF-ek kimenete kerül (hagyja üresen az alapértelmezett útvonalhoz: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "vagy csatlakozzon egy saját üzemeltetésű fiókhoz"
|
||||
title = "Csatlakozás a szerverhez"
|
||||
subtitle = "Adja meg az önhostolt szerver URL-jét"
|
||||
testing = "Kapcsolat tesztelése..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Halaman & Nomor Awal"
|
||||
positionAndPages = "Posisi & Halaman"
|
||||
preview = "Pemilihan Posisi"
|
||||
previewDisclaimer = "Pratinjau bersifat perkiraan. Hasil akhir dapat berbeda karena metrik font PDF."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Pilih berkas PDF:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Format Keluaran"
|
||||
pdfaNote = "PDF/A-1b lebih kompatibel, PDF/A-2b mendukung lebih banyak fitur."
|
||||
pdfaFormat = "Format PDF/A"
|
||||
pdfaDigitalSignatureWarning = "PDF ini mengandung tanda tangan digital. Ini akan dihapus pada langkah berikutnya."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF berisi tanda tangan digital. Ini akan dihapus pada langkah berikutnya."
|
||||
pdfxDescription = "PDF/X adalah subset standar ISO dari PDF untuk pencetakan yang andal dan pertukaran grafis."
|
||||
fileFormat = "Format File"
|
||||
@@ -2646,7 +2642,6 @@ label = "PDF Asli"
|
||||
|
||||
[compare.edited]
|
||||
label = "PDF yang Diedit"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Jalankan ulang perbandingan?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Ukuran Gambar"
|
||||
margin = "Margin"
|
||||
positionAndFormatting = "Posisi & Pemformatan"
|
||||
quickPosition = "Pilih posisi pada halaman untuk menempatkan stempel."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Terjadi kesalahan saat menambahkan stempel ke PDF."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Terjadi kesalahan saat menambahkan stempel ke PDF."
|
||||
[AddStampRequest.results]
|
||||
title = "Hasil Stempel"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Hapus Gambar,Operasi Halaman,Backend,server side"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Konfigurasikan jalur sistem file kustom untuk pemrosesan pipeline
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Direktori Pipeline"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Direktori Folder yang Dipantau"
|
||||
description = "Direktori tempat pipeline memantau PDF yang masuk (biarkan kosong untuk default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Direktori Folder Selesai"
|
||||
description = "Direktori tempat PDF yang diproses dikeluarkan (biarkan kosong untuk default: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "atau hubungkan ke akun self-hosted"
|
||||
title = "Sambungkan ke Server"
|
||||
subtitle = "Masukkan URL server self-hosted Anda"
|
||||
testing = "Menguji koneksi..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Pagine e numero iniziale"
|
||||
positionAndPages = "Posizione e pagine"
|
||||
preview = "Selezione posizione"
|
||||
previewDisclaimer = "L'anteprima è approssimativa. Il risultato finale può variare a causa delle metriche dei font PDF."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Seleziona il file PDF:"
|
||||
@@ -441,9 +439,9 @@ fullscreen = "Schermo intero"
|
||||
[settings.general.updates]
|
||||
title = "Aggiornamenti software"
|
||||
description = "Controlla aggiornamenti e visualizza informazioni sulla versione"
|
||||
currentBackendVersion = "Versione attuale del Backend"
|
||||
currentFrontendVersion = "Versione attuale del Frontend"
|
||||
versionMismatch = "Attenzione: è stata rilevata una discrepanza tra la versione del client e la versione di AppConfig. L'utilizzo di versioni diverse può causare problemi di compatibilità, errori e rischi per la sicurezza. Assicurarsi che server e client utilizzino la stessa versione."
|
||||
currentBackendVersion = "Current Backend Version"
|
||||
currentFrontendVersion = "Current Frontend Version"
|
||||
versionMismatch = "Warning: A mismatch has been detected between the client version and the AppConfig version. Using different versions can lead to compatibility issues, errors, and security risks. Please ensure that server and client are using the same version."
|
||||
latestVersion = "Ultima versione"
|
||||
checkForUpdates = "Controlla aggiornamenti"
|
||||
viewDetails = "Vedi dettagli"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Formato di output"
|
||||
pdfaNote = "PDF/A-1b è più compatibile, PDF/A-2b supporta più funzionalità."
|
||||
pdfaFormat = "Formato PDF/A"
|
||||
pdfaDigitalSignatureWarning = "Il PDF contiene una firma digitale. Questo verrà rimosso nel passaggio successivo."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "Il PDF contiene una firma digitale. Questa verrà rimossa nel passaggio successivo."
|
||||
pdfxDescription = "PDF/X è un sottoinsieme PDF standard ISO per una stampa affidabile e lo scambio di grafica."
|
||||
fileFormat = "Formato file"
|
||||
@@ -2646,7 +2642,6 @@ label = "PDF originale"
|
||||
|
||||
[compare.edited]
|
||||
label = "PDF modificato"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Eseguire di nuovo il confronto?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Dimensione immagine"
|
||||
margin = "Margine"
|
||||
positionAndFormatting = "Posizione e formattazione"
|
||||
quickPosition = "Seleziona una posizione sulla pagina in cui posizionare il timbro."
|
||||
preview = "Anteprima:"
|
||||
useTemplate = "Usa modello"
|
||||
selectTemplate = "Seleziona un modello..."
|
||||
stampTextDescription = "Utilizzare le variabili dinamiche di seguito. Utilizzare @@ per il carattere letterale @. Utilizzare \\n per le nuove righe."
|
||||
dynamicVariables = "Variabili dinamiche"
|
||||
clickToExpand = "Clicca per espandere"
|
||||
variablesHelp = "Fai clic su una variabile qualsiasi per inserirla nel testo del timbro. Utilizzare @@ per letterale @."
|
||||
dateTimeVars = "Data & Ora"
|
||||
dateDesc = "Data corrente"
|
||||
timeDesc = "Ora corrente"
|
||||
datetimeDesc = "Data e ora combinate"
|
||||
customDateDesc = "Formato personalizzato"
|
||||
yearMonthDayDesc = "Parti di data individuali"
|
||||
pageVars = "Informazioni sulla pagina"
|
||||
pageNumberDesc = "Numero di pagina corrente"
|
||||
totalPagesDesc = "Numero totale di pagine"
|
||||
fileVars = "Informazioni sul file"
|
||||
filenameDesc = "Nome file senza estensione"
|
||||
filenameFullDesc = "Nome file con estensione"
|
||||
metadataVars = "Metadati del documento"
|
||||
metadataDesc = "Dalle proprietà del documento PDF"
|
||||
otherVars = "Altro"
|
||||
uuidDesc = "Identificatore univoco breve (8 caratteri)"
|
||||
examples = "Esempi"
|
||||
multiLine = "multilinea"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Piè di pagina con numero di pagina"
|
||||
dateHeader = "Data intestazione"
|
||||
europeanDate = "Data europea"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Bozza Filigrana"
|
||||
custom = "Personalizzato"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
clickToExpand = "Click to expand"
|
||||
customDateDesc = "Custom format"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataDesc = "From PDF document properties"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Si è verificato un errore durante l'aggiunta del timbro al PDF."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Si è verificato un errore durante l'aggiunta del timbro al PDF."
|
||||
[AddStampRequest.results]
|
||||
title = "Risultati timbro"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Rimuovi immagine,operazioni sulla pagina,back-end,lato server"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Configura percorsi personalizzati del file system per l'elaborazi
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Directory pipeline"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Directory cartelle monitorate"
|
||||
description = "Directory in cui la pipeline monitora i PDF in arrivo (lascia vuoto per predefinito: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Directory cartelle completate"
|
||||
description = "Directory di output dei PDF elaborati (lascia vuoto per default: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "oppure connettiti a un account self-hosted"
|
||||
title = "Connetti al server"
|
||||
subtitle = "Inserisci l'URL del tuo server self-hosted"
|
||||
testing = "Verifica connessione..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "ページと開始番号"
|
||||
positionAndPages = "位置とページ"
|
||||
preview = "位置の選択"
|
||||
previewDisclaimer = "プレビューは概算です。最終出力は PDF のフォントメトリクスにより異なる場合があります。"
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "PDFファイルを選択:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "出力形式"
|
||||
pdfaNote = "PDF/A-1b は互換性が高く、PDF/A-2b はより多くの機能をサポートします。"
|
||||
pdfaFormat = "PDF/A 形式"
|
||||
pdfaDigitalSignatureWarning = "PDFにはデジタル署名が含まれています。これは次の手順で削除されます。"
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF にはデジタル署名が含まれています。これは次のステップで削除されます。"
|
||||
pdfxDescription = "PDF/X は、信頼性の高い印刷とグラフィック交換のための ISO 規格の PDF サブセットです。"
|
||||
fileFormat = "ファイル形式"
|
||||
@@ -2646,7 +2642,6 @@ label = "元の PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "編集済み PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "比較を再実行しますか?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "画像サイズ"
|
||||
margin = "余白"
|
||||
positionAndFormatting = "位置と書式"
|
||||
quickPosition = "ページ上の配置位置を選択してください。"
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "PDF にスタンプを追加中にエラーが発生しました。"
|
||||
@@ -3612,6 +3594,14 @@ failed = "PDF にスタンプを追加中にエラーが発生しました。"
|
||||
[AddStampRequest.results]
|
||||
title = "スタンプ結果"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "画像削除,ページ操作,バックエンド,サーバー側"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "パイプライン処理や外部ツール用のカスタムフ
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "パイプラインディレクトリ"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "監視フォルダーのディレクトリ"
|
||||
description = "パイプラインが受信 PDF を監視するディレクトリ(空欄で既定: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "完了フォルダーのディレクトリ"
|
||||
description = "処理済み PDF の出力先ディレクトリ(空欄で既定: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "またはセルフホスト型アカウントに接続"
|
||||
title = "サーバーに接続"
|
||||
subtitle = "セルフホスト サーバーの URL を入力"
|
||||
testing = "接続をテスト中..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "페이지 및 시작 번호"
|
||||
positionAndPages = "위치 및 페이지"
|
||||
preview = "위치 선택"
|
||||
previewDisclaimer = "미리보기는 대략적인 표시입니다. 최종 출력은 PDF 글꼴 메트릭에 따라 달라질 수 있습니다."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "PDF 파일 선택:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "출력 형식"
|
||||
pdfaNote = "PDF/A-1b는 호환성이 더 높고, PDF/A-2b는 더 많은 기능을 지원합니다."
|
||||
pdfaFormat = "PDF/A 형식"
|
||||
pdfaDigitalSignatureWarning = "PDF에 디지털 서명이 포함되어 있습니다. 다음 단계에서 제거됩니다."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "해당 PDF에는 디지털 서명이 포함되어 있습니다. 다음 단계에서 제거됩니다."
|
||||
pdfxDescription = "PDF/X는 신뢰할 수 있는 인쇄와 그래픽 교환을 위한 ISO 표준 PDF 하위 집합입니다."
|
||||
fileFormat = "파일 형식"
|
||||
@@ -2646,7 +2642,6 @@ label = "원본 PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "수정된 PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "비교를 다시 실행할까요?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "이미지 크기"
|
||||
margin = "여백"
|
||||
positionAndFormatting = "위치 및 서식"
|
||||
quickPosition = "페이지에서 스탬프 위치를 선택하세요."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "PDF에 스탬프를 추가하는 중 오류가 발생했습니다."
|
||||
@@ -3612,6 +3594,14 @@ failed = "PDF에 스탬프를 추가하는 중 오류가 발생했습니다."
|
||||
[AddStampRequest.results]
|
||||
title = "스탬프 결과"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "이미지 제거,페이지 작업,백엔드,서버 사이드"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "파이프라인 처리 및 외부 도구용 사용자 지정 파
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "파이프라인 디렉터리"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "감시 폴더 디렉터리"
|
||||
description = "파이프라인이 들어오는 PDF를 감시하는 디렉터리(기본값 사용 시 비워두세요: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "처리 완료 폴더 디렉터리"
|
||||
description = "처리된 PDF가 출력되는 디렉터리(기본값 사용 시 비워두세요: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "또는 셀프 호스팅 계정에 연결"
|
||||
title = "서버에 연결"
|
||||
subtitle = "자가 호스팅 서버 URL을 입력하세요"
|
||||
testing = "연결 테스트 중..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "പേജുകളും ആരംഭ നമ്പറും"
|
||||
positionAndPages = "സ്ഥാനം & പേജുകൾ"
|
||||
preview = "സ്ഥാനം തിരഞ്ഞെടുപ്പ്"
|
||||
previewDisclaimer = "പ്രിവ്യൂ ഏകദേശമാണ്. PDF ഫോണ്ട് മീട്രിക്സിന്റെ കാരണമായി അന്തിമ ഔട്ട്പുട്ട് വ്യത്യാസപ്പെട്ടേക്കാം."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "PDF ഫയൽ തിരഞ്ഞെടുക്കുക:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "ഔട്ട്പുട്ട് ഫോർമാറ്റ്"
|
||||
pdfaNote = "PDF/A-1b കൂടുതൽ അനുയോജ്യതയുള്ളത്, PDF/A-2b കൂടുതൽ ഫീച്ചറുകൾ പിന്തുണയ്ക്കുന്നു."
|
||||
pdfaFormat = "PDF/A ഫോർമാറ്റ്"
|
||||
pdfaDigitalSignatureWarning = "ഈ PDF-ൽ ഡിജിറ്റൽ ഒപ്പ് ഉണ്ട്. ഇത് അടുത്ത ഘട്ടത്തിൽ നീക്കം ചെയ്യപ്പെടും."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF-യിൽ ഡിജിറ്റൽ ഒപ്പ് ഉണ്ട്. ഇത് അടുത്ത ഘട്ടത്തിൽ നീക്കം ചെയ്യും."
|
||||
pdfxDescription = "വിശ്വാസ്യതയുള്ള പ്രിന്റിംഗിനും ഗ്രാഫിക്സ് കൈമാറ്റത്തിനുമായി PDF/X ഒരു ISO സ്റ്റാൻഡേർഡ് PDF ഉപസമുച്ചയമാണ്."
|
||||
fileFormat = "ഫയൽ ഫോർമാറ്റ്"
|
||||
@@ -2646,7 +2642,6 @@ label = "ഓറിജിനൽ PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "എഡിറ്റുചെയ്ത PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "താരതമ്യം വീണ്ടും നടത്തണോ?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "ഇമേജ് വലിപ്പം"
|
||||
margin = "മാർജിൻ"
|
||||
positionAndFormatting = "സ്ഥാനം & ഫോർമാറ്റിംഗ്"
|
||||
quickPosition = "സ്റ്റാമ്പ് വയ്ക്കാൻ പേജിലെ ഒരു സ്ഥാനം തിരഞ്ഞെടുക്കുക."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "PDF-ലേക്ക് സ്റ്റാമ്പ് ചേർക്കുന്നതിനിടെ പിശക് സംഭവിച്ചു."
|
||||
@@ -3612,6 +3594,14 @@ failed = "PDF-ലേക്ക് സ്റ്റാമ്പ് ചേർക്
|
||||
[AddStampRequest.results]
|
||||
title = "സ്റ്റാമ്പ് ഫലങ്ങൾ"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "ചിത്രം നീക്കം ചെയ്യുക,പേജ് പ്രവർത്തനങ്ങൾ,ബാക്ക് എൻഡ്,സെർവർ സൈഡ്"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "പൈപ്പ്ലൈൻ പ്രോസസിംഗിന
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "പൈപ്പ്ലൈൻ ഡയറക്ടറികൾ"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "വാച്ച് ചെയ്യുന്ന ഫോൾഡറുകളുടെ ഡയറക്ടറി"
|
||||
description = "പൈപ്പ്ലൈൻ ഇൻകമിംഗ് PDFകൾക്കായി നിരീക്ഷിക്കുന്ന ഡയറക്ടറി (ഡീഫാൾട്ട് ഉപയോഗിക്കാൻ ശൂന്യം വിടുക: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "ഫിനിഷ്ഡ് ഫോൾഡറുകളുടെ ഡയറക്ടറി"
|
||||
description = "പ്രോസസ്സ് ചെയ്ത PDFകൾ ഔട്ട്പുട്ട് ചെയ്യുന്ന ഡയറക്ടറി (ഡീഫാൾട്ട് ഉപയോഗിക്കാൻ ശൂന്യം വിടുക: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "അല്ലെങ്കിൽ സ്വയം-ഹോസ്റ്റു
|
||||
title = "സെർവറിലേക്ക് കണക്റ്റുചെയ്യുക"
|
||||
subtitle = "നിങ്ങളുടെ സെൽഫ്-ഹോസ്റ്റഡ് സെർവർ URL നൽകുക"
|
||||
testing = "കണക്ഷൻ പരിശോധിക്കുന്നു..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Pagina's en startnummer"
|
||||
positionAndPages = "Positie en pagina's"
|
||||
preview = "Positie selecteren"
|
||||
previewDisclaimer = "Voorbeeld is indicatief. Het uiteindelijke resultaat kan afwijken door PDF-lettertypemetriek."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Selecteer PDF-bestand:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Uitvoerformaat"
|
||||
pdfaNote = "PDF/A-1b is compatibeler, PDF/A-2b ondersteunt meer functies."
|
||||
pdfaFormat = "PDF/A-formaat"
|
||||
pdfaDigitalSignatureWarning = "Dit PDF bestand bevat een digitale handtekening. Deze wordt in de volgende stap verwijderd."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "Het PDF-bestand bevat een digitale handtekening. Deze wordt in de volgende stap verwijderd."
|
||||
pdfxDescription = "PDF/X is een ISO-standaard PDF-subset voor betrouwbaar afdrukken en grafische uitwisseling."
|
||||
fileFormat = "Bestandsformaat"
|
||||
@@ -2646,7 +2642,6 @@ label = "Originele PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Bewerkte PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Vergelijking opnieuw uitvoeren?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Afbeeldingsgrootte"
|
||||
margin = "Marge"
|
||||
positionAndFormatting = "Positie & opmaak"
|
||||
quickPosition = "Selecteer een positie op de pagina om de stempel te plaatsen."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Er is een fout opgetreden bij het toevoegen van een stempel aan de PDF."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Er is een fout opgetreden bij het toevoegen van een stempel aan de PDF
|
||||
[AddStampRequest.results]
|
||||
title = "Stempelresultaten"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Afbeelding verwijderen, Paginabewerkingen, Achterkant, Serverkant"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Configureer aangepaste bestandssysteempaden voor pijplijnverwerki
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Pipelinemappen"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Map met bewaakte mappen"
|
||||
description = "Map waarin de pipeline inkomende PDF's bewaakt (laat leeg voor standaard: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Map met voltooide mappen"
|
||||
description = "Map waar verwerkte PDF's worden weggeschreven (laat leeg voor standaard: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "of maak verbinding met een zelfgehost account"
|
||||
title = "Verbinden met server"
|
||||
subtitle = "Vul de URL van uw self-hosted server in"
|
||||
testing = "Verbinding testen..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Sider og startnummer"
|
||||
positionAndPages = "Plassering og sider"
|
||||
preview = "Valg av plassering"
|
||||
previewDisclaimer = "Forhåndsvisningen er omtrentlig. Endelig resultat kan variere på grunn av PDF-skriftmetrikker."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Velg PDF-fil:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Utdataformat"
|
||||
pdfaNote = "PDF/A-1b er mer kompatibel, PDF/A-2b støtter flere funksjoner."
|
||||
pdfaFormat = "PDF/A-format"
|
||||
pdfaDigitalSignatureWarning = "PDFen inneholder en digital signatur. Denne vil bli fjernet i neste steg."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF-en inneholder en digital signatur. Denne vil bli fjernet i neste trinn."
|
||||
pdfxDescription = "PDF/X er en ISO-standardisert PDF-undermengde for pålitelig utskrift og grafikkutveksling."
|
||||
fileFormat = "Filformat"
|
||||
@@ -2646,7 +2642,6 @@ label = "Original-PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Redigert PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Kjøre sammenligning på nytt?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Bildestørrelse"
|
||||
margin = "Marg"
|
||||
positionAndFormatting = "Plassering og formatering"
|
||||
quickPosition = "Velg en posisjon på siden for å plassere stempelet."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Det oppstod en feil under tillegg av stempel til PDF-en."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Det oppstod en feil under tillegg av stempel til PDF-en."
|
||||
[AddStampRequest.results]
|
||||
title = "Stempelresultater"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Fjern Bilde,Sideoperasjoner,Backend,serverside"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Konfigurer egendefinerte filsystemstier for pipeline-prosessering
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Pipeline-kataloger"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Katalog for overvåkede mapper"
|
||||
description = "Katalog der pipeline overvåker innkommende PDF-er (la stå tomt for standard: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Katalog for ferdige mapper"
|
||||
description = "Katalog der behandlede PDF-er plasseres (la stå tomt for standard: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "eller koble til en selvhostet konto"
|
||||
title = "Koble til server"
|
||||
subtitle = "Skriv inn URL-en til din selvhostede server"
|
||||
testing = "Tester tilkobling..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Strony i numer początkowy"
|
||||
positionAndPages = "Pozycja i strony"
|
||||
preview = "Wybór położenia"
|
||||
previewDisclaimer = "Podgląd jest przybliżony. Finalny wynik może się różnić z powodu metryk czcionek PDF."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Wskaż plik PDF:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Format wyjściowy"
|
||||
pdfaNote = "PDF/A-1b jest bardziej kompatybilny, PDF/A-2b obsługuje więcej funkcji."
|
||||
pdfaFormat = "Format PDF/A"
|
||||
pdfaDigitalSignatureWarning = "Dokument zawiera podpis cyfrowy, nie zostanie on wczytany."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF zawiera podpis cyfrowy. Zostanie on usunięty w następnym kroku."
|
||||
pdfxDescription = "PDF/X to podzbiór PDF zgodny z normą ISO, przeznaczony do niezawodnego druku i wymiany grafiki."
|
||||
fileFormat = "Format pliku"
|
||||
@@ -2646,7 +2642,6 @@ label = "Oryginalny PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Edytowany PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Uruchomić porównanie ponownie?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Rozmiar obrazu"
|
||||
margin = "Margines"
|
||||
positionAndFormatting = "Pozycja i formatowanie"
|
||||
quickPosition = "Wybierz pozycję na stronie, aby umieścić stempel."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Wystąpił błąd podczas dodawania stempla do PDF."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Wystąpił błąd podczas dodawania stempla do PDF."
|
||||
[AddStampRequest.results]
|
||||
title = "Wyniki dodawania stempla"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Usuń obraz, operacje na stronie, back-end, strona serwera"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Skonfiguruj niestandardowe ścieżki systemu plików dla przetwar
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Katalogi potoku"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Katalog obserwowanych folderów"
|
||||
description = "Katalog, w którym potok monitoruje przychodzące pliki PDF (pozostaw puste, aby użyć domyślnego: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Katalog ukończonych folderów"
|
||||
description = "Katalog, do którego trafiają przetworzone pliki PDF (pozostaw puste, aby użyć domyślnego: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "lub połącz się z kontem hostowanym samodzielnie"
|
||||
title = "Połącz z serwerem"
|
||||
subtitle = "Wpisz URL własnego serwera"
|
||||
testing = "Testowanie połączenia..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Páginas e número inicial"
|
||||
positionAndPages = "Posição e páginas"
|
||||
preview = "Seleção de posição"
|
||||
previewDisclaimer = "A prévia é aproximada. A saída final pode variar devido às métricas de fonte do PDF."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Selecionar arquivo PDF:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Formato de saída"
|
||||
pdfaNote = "PDF/A-1b é mais compatível; PDF/A-2b oferece mais recursos."
|
||||
pdfaFormat = "Formato PDF/A"
|
||||
pdfaDigitalSignatureWarning = "O PDF contém uma assinatura digital. Isso será removido na próxima etapa."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "O PDF contém uma assinatura digital. Ela será removida na próxima etapa."
|
||||
pdfxDescription = "PDF/X é um subconjunto de PDF padrão ISO para impressão confiável e troca de gráficos."
|
||||
fileFormat = "Formato de arquivo"
|
||||
@@ -2646,7 +2642,6 @@ label = "PDF original"
|
||||
|
||||
[compare.edited]
|
||||
label = "PDF editado"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Executar a comparação novamente?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Tamanho da imagem"
|
||||
margin = "Margem"
|
||||
positionAndFormatting = "Posição e formatação"
|
||||
quickPosition = "Selecione uma posição na página para colocar o carimbo."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Ocorreu um erro ao adicionar o carimbo ao PDF."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Ocorreu um erro ao adicionar o carimbo ao PDF."
|
||||
[AddStampRequest.results]
|
||||
title = "Resultados do carimbo"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Remover imagem,operações de página,back-end,lado do servidor"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Configurar caminhos personalizados do sistema de arquivos para pr
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Diretórios do pipeline"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Diretório de pastas monitoradas"
|
||||
description = "Diretório onde o pipeline monitora PDFs recebidos (deixe em branco para padrão: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Diretório de pastas finalizadas"
|
||||
description = "Diretório onde os PDFs processados são gerados (deixe em branco para padrão: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "ou conecte-se a uma conta auto-hospedada"
|
||||
title = "Conectar ao servidor"
|
||||
subtitle = "Informe a URL do seu servidor self-hosted"
|
||||
testing = "Testando conexão..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Páginas e número inicial"
|
||||
positionAndPages = "Posição e páginas"
|
||||
preview = "Seleção de posição"
|
||||
previewDisclaimer = "A pré-visualização é aproximada. O resultado final pode variar devido às métricas de fontes do PDF."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Selecionar ficheiro PDF:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Formato de saída"
|
||||
pdfaNote = "PDF/A-1b é mais compatível, PDF/A-2b suporta mais funcionalidades."
|
||||
pdfaFormat = "Formato PDF/A"
|
||||
pdfaDigitalSignatureWarning = "O PDF contém uma assinatura digital. Esta será removida no próximo passo."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "O PDF contém uma assinatura digital. Esta será removida no passo seguinte."
|
||||
pdfxDescription = "PDF/X é um subconjunto de PDF normalizado pela ISO para impressão fiável e troca de gráficos."
|
||||
fileFormat = "Formato de ficheiro"
|
||||
@@ -2646,7 +2642,6 @@ label = "PDF Original"
|
||||
|
||||
[compare.edited]
|
||||
label = "PDF Editado"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Executar comparação novamente?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Tamanho da imagem"
|
||||
margin = "Margem"
|
||||
positionAndFormatting = "Posição e formatação"
|
||||
quickPosition = "Selecione uma posição na página para colocar o carimbo."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Ocorreu um erro ao adicionar o carimbo ao PDF."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Ocorreu um erro ao adicionar o carimbo ao PDF."
|
||||
[AddStampRequest.results]
|
||||
title = "Resultados do carimbo"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Remover Imagem,operações de página,lado servidor"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Configurar caminhos de sistema de ficheiros personalizados para o
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Diretórios do pipeline"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Diretório de pastas monitorizadas"
|
||||
description = "Diretório onde o pipeline monitoriza PDFs de entrada (deixe vazio para predefinição: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Diretório de pastas concluídas"
|
||||
description = "Diretório onde são gravados os PDFs processados (deixe vazio para predefinição: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "ou ligue-se a uma conta autoalojada"
|
||||
title = "Ligar ao servidor"
|
||||
subtitle = "Introduza o URL do seu servidor autoalojado"
|
||||
testing = "A testar ligação..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Pagini și număr de start"
|
||||
positionAndPages = "Poziție și pagini"
|
||||
preview = "Selecție poziție"
|
||||
previewDisclaimer = "Previzualizarea este aproximativă. Rezultatul final poate varia din cauza metricilor de font ale PDF-ului."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Selectează fișierul PDF:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Format de ieșire"
|
||||
pdfaNote = "PDF/A-1b este mai compatibil, PDF/A-2b acceptă mai multe funcții."
|
||||
pdfaFormat = "Format PDF/A"
|
||||
pdfaDigitalSignatureWarning = "PDF-ul conține o semnătură digitală. Aceasta va fi eliminată în pasul următor."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF-ul conține o semnătură digitală. Aceasta va fi eliminată în pasul următor."
|
||||
pdfxDescription = "PDF/X este un subset PDF standardizat ISO pentru tipărire fiabilă și schimb de grafică."
|
||||
fileFormat = "Format fișier"
|
||||
@@ -2646,7 +2642,6 @@ label = "PDF original"
|
||||
|
||||
[compare.edited]
|
||||
label = "PDF editat"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Rulați din nou comparația?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Dimensiunea imaginii"
|
||||
margin = "Margine"
|
||||
positionAndFormatting = "Poziție și formatare"
|
||||
quickPosition = "Selectați o poziție pe pagină pentru a plasa ștampila."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "A apărut o eroare la adăugarea ștampilei în PDF."
|
||||
@@ -3612,6 +3594,14 @@ failed = "A apărut o eroare la adăugarea ștampilei în PDF."
|
||||
[AddStampRequest.results]
|
||||
title = "Rezultatele ștampilării"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Elimină Imagine,Operații pagină,Back end,server side"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Configurați căi personalizate ale sistemului de fișiere pentru
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Directoare pipeline"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Directorul dosarelor monitorizate"
|
||||
description = "Directorul în care pipeline-ul monitorizează PDF-urile primite (lăsați gol pentru implicit: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Directorul dosarelor finalizate"
|
||||
description = "Directorul în care sunt scrise PDF-urile procesate (lăsați gol pentru implicit: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "sau conectați-vă la un cont self-hosted"
|
||||
title = "Conectează-te la server"
|
||||
subtitle = "Introdu URL-ul serverului tău self-hosted"
|
||||
testing = "Se testează conexiunea..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Страницы и начальный номер"
|
||||
positionAndPages = "Положение и страницы"
|
||||
preview = "Выбор положения"
|
||||
previewDisclaimer = "Предпросмотр приблизительный. Итог может отличаться из‑за метрик шрифтов PDF."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Выберите PDF-файл:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Выходной формат"
|
||||
pdfaNote = "PDF/A-1b более совместим, PDF/A-2b поддерживает больше функций."
|
||||
pdfaFormat = "Формат PDF/A"
|
||||
pdfaDigitalSignatureWarning = "PDF содержит цифровую подпись. Она будет удалена на следующем шаге."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF содержит цифровую подпись. Она будет удалена на следующем шаге."
|
||||
pdfxDescription = "PDF/X — это стандарт ISO, подмножество PDF для надежной печати и обмена графикой."
|
||||
fileFormat = "Формат файла"
|
||||
@@ -2646,7 +2642,6 @@ label = "Исходный PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Измененный PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Выполнить сравнение заново?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Размер изображения"
|
||||
margin = "Отступ"
|
||||
positionAndFormatting = "Положение и форматирование"
|
||||
quickPosition = "Выберите положение на странице для размещения штампа."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Произошла ошибка при добавлении штампа в PDF."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Произошла ошибка при добавлении штамп
|
||||
[AddStampRequest.results]
|
||||
title = "Результаты штампа"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Удаление изображения,операции со страницами,Серверная часть"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Настройте пользовательские пути фа
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Каталоги конвейера"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Каталог отслеживаемых папок"
|
||||
description = "Каталог, где конвейер отслеживает входящие PDF (оставьте пустым по умолчанию: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Каталог завершенных папок"
|
||||
description = "Каталог, куда выводятся обработанные PDF (оставьте пустым по умолчанию: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "или подключитесь к самохостируемой учё
|
||||
title = "Подключение к серверу"
|
||||
subtitle = "Введите URL своего self-hosted сервера"
|
||||
testing = "Проверка подключения..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Strany a počiatočné číslo"
|
||||
positionAndPages = "Pozícia a strany"
|
||||
preview = "Výber pozície"
|
||||
previewDisclaimer = "Náhľad je približný. Konečný výstup sa môže líšiť kvôli metrikám písma PDF."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Vybrať PDF súbor:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Výstupný formát"
|
||||
pdfaNote = "PDF/A-1b je kompatibilnejší, PDF/A-2b podporuje viac funkcií."
|
||||
pdfaFormat = "Formát PDF/A"
|
||||
pdfaDigitalSignatureWarning = "PDF obsahuje digitálny podpis. V ďalšom kroku bude odstránený."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF obsahuje digitálny podpis. Ten sa v nasledujúcom kroku odstráni."
|
||||
pdfxDescription = "PDF/X je podmnožina PDF podľa štandardu ISO pre spoľahlivú tlač a výmenu grafiky."
|
||||
fileFormat = "Formát súboru"
|
||||
@@ -2646,7 +2642,6 @@ label = "Pôvodné PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Upravené PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Spustiť porovnanie znova?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Veľkosť obrázka"
|
||||
margin = "Okraj"
|
||||
positionAndFormatting = "Poloha a formátovanie"
|
||||
quickPosition = "Vyberte polohu na stránke pre umiestnenie pečiatky."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Počas pridávania pečiatky do PDF došlo k chybe."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Počas pridávania pečiatky do PDF došlo k chybe."
|
||||
[AddStampRequest.results]
|
||||
title = "Výsledky pečiatky"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Odstrániť obrázok,Operácie so stranami,Back end,server side"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Nakonfigurujte vlastné cesty systému súborov pre spracovanie v
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Adresáre pipeline"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Adresár sledovaných priečinkov"
|
||||
description = "Adresár, kde pipeline sleduje prichádzajúce PDF (ponechajte prázdne pre predvolené: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Adresár dokončených priečinkov"
|
||||
description = "Adresár, kam sa ukladajú spracované PDF (ponechajte prázdne pre predvolené: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "alebo sa pripojte k self-hosted účtu"
|
||||
title = "Pripojiť sa na server"
|
||||
subtitle = "Zadajte URL svojho self-hostovaného servera"
|
||||
testing = "Testuje sa pripojenie..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Strani in začetna številka"
|
||||
positionAndPages = "Položaj in strani"
|
||||
preview = "Izbira položaja"
|
||||
previewDisclaimer = "Predogled je približen. Končni rezultat se lahko razlikuje zaradi metrik pisav PDF."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Izberite datoteko PDF:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Izhodni format"
|
||||
pdfaNote = "PDF/A-1b je bolj združljiv, PDF/A-2b podpira več funkcij."
|
||||
pdfaFormat = "Format PDF/A"
|
||||
pdfaDigitalSignatureWarning = "PDF vsebuje digitalni podpis. To bo odstranjeno v naslednjem koraku."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF vsebuje digitalni podpis. Ta bo odstranjen v naslednjem koraku."
|
||||
pdfxDescription = "PDF/X je podmnožica PDF po standardu ISO za zanesljivo tiskanje in izmenjavo grafike."
|
||||
fileFormat = "Format datoteke"
|
||||
@@ -2646,7 +2642,6 @@ label = "Izvirni PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Urejeni PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Ponovno zagnati primerjavo?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Velikost slike"
|
||||
margin = "Rob"
|
||||
positionAndFormatting = "Položaj in oblikovanje"
|
||||
quickPosition = "Izberite položaj na strani za postavitev žiga."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Pri dodajanju žiga v PDF je prišlo do napake."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Pri dodajanju žiga v PDF je prišlo do napake."
|
||||
[AddStampRequest.results]
|
||||
title = "Rezultati žiga"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Odstrani sliko,operacije strani,zadnja stran,strežniška stran"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Konfigurirajte poti datotečnega sistema po meri za obdelavo pipe
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Imeniki pipeline"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Imenik nadzorovanih map"
|
||||
description = "Imenik, kjer pipeline spremlja dohodne PDF-je (pustite prazno za privzeto: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Imenik zaključenih map"
|
||||
description = "Imenik, kamor se izpišejo obdelani PDF-ji (pustite prazno za privzeto: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "ali se povežite z računom na lastnem strežniku"
|
||||
title = "Poveži se s strežnikom"
|
||||
subtitle = "Vnesite URL svojega samogostovanega strežnika"
|
||||
testing = "Preverjanje povezave..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Strane i početni broj"
|
||||
positionAndPages = "Pozicija i strane"
|
||||
preview = "Izbor pozicije"
|
||||
previewDisclaimer = "Pregled je približan. Konačni rezultat može varirati zbog PDF metrika fontova."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Izaberi PDF fajl:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Izlazni format"
|
||||
pdfaNote = "PDF/A-1b je kompatibilniji, PDF/A-2b podržava više funkcija."
|
||||
pdfaFormat = "PDF/A format"
|
||||
pdfaDigitalSignatureWarning = "PDF sadrži digitalni potpis. Biće uklonjen u sledećem koraku."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF sadrži digitalni potpis. Ovo će biti uklonjeno u sledećem koraku."
|
||||
pdfxDescription = "PDF/X je ISO standardizovani podskup PDF-a za pouzdano štampanje i razmenu grafike."
|
||||
fileFormat = "Format datoteke"
|
||||
@@ -2646,7 +2642,6 @@ label = "Originalni PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Izmenjeni PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Ponovo pokrenuti poređenje?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Veličina slike"
|
||||
margin = "Margina"
|
||||
positionAndFormatting = "Pozicija i formatiranje"
|
||||
quickPosition = "Izaberite poziciju na stranici za postavljanje pečata."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Došlo je do greške prilikom dodavanja pečata u PDF."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Došlo je do greške prilikom dodavanja pečata u PDF."
|
||||
[AddStampRequest.results]
|
||||
title = "Rezultati pečata"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Ukloni sliku, Zahvati na stranici, Bekend,serverska strana"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Podesite prilagođene putanje u sistemu datoteka za pipeline obra
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Direktorijumi za pipeline"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Direktorijum nadziranih fascikli"
|
||||
description = "Direktorijum u kome pipeline nadzire dolazne PDF-ove (ostavite prazno za podrazumevano: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Direktorijum završnih fascikli"
|
||||
description = "Direktorijum u koji se smeštaju obrađeni PDF-ovi (ostavite prazno za podrazumevano: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "ili se povežite na samohostovani nalog"
|
||||
title = "Poveži se na server"
|
||||
subtitle = "Unesite URL svog samohostovanog servera"
|
||||
testing = "Testiranje veze..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Sidor och startnummer"
|
||||
positionAndPages = "Position och sidor"
|
||||
preview = "Val av position"
|
||||
previewDisclaimer = "Förhandsvisningen är ungefärlig. Slutresultatet kan variera beroende på PDF‑typsnittsmetrik."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Välj PDF-fil:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Utdataformat"
|
||||
pdfaNote = "PDF/A-1b är mer kompatibel, PDF/A-2b stöder fler funktioner."
|
||||
pdfaFormat = "PDF/A-format"
|
||||
pdfaDigitalSignatureWarning = "PDF:en innehåller en digital signatur. Denna kommer att tas bort i nästa steg."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF-filen innehåller en digital signatur. Detta kommer att tas bort i nästa steg."
|
||||
pdfxDescription = "PDF/X är en ISO-standardiserad PDF-delmängd för tillförlitlig tryckning och grafikutbyte."
|
||||
fileFormat = "Filformat"
|
||||
@@ -2646,7 +2642,6 @@ label = "Original-PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Redigerad PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Kör jämförelse igen?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Bildstorlek"
|
||||
margin = "Marginal"
|
||||
positionAndFormatting = "Position och formatering"
|
||||
quickPosition = "Välj en position på sidan för att placera stämpeln."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Ett fel inträffade när stämpeln skulle läggas till i PDF:en."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Ett fel inträffade när stämpeln skulle läggas till i PDF:en."
|
||||
[AddStampRequest.results]
|
||||
title = "Resultat av stämpling"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Ta bort bild,Sidoperationer,Backend,serversida"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Konfigurera anpassade filsystemvägar för pipelinebearbetning oc
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Pipeline-kataloger"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Katalog för övervakade mappar"
|
||||
description = "Katalog där pipeline övervakar inkommande PDF-filer (lämna tomt för standard: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Katalog för färdiga mappar"
|
||||
description = "Katalog där bearbetade PDF-filer skrivs ut (lämna tomt för standard: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "eller anslut till ett självhostat konto"
|
||||
title = "Anslut till server"
|
||||
subtitle = "Ange URL till din självhostade server"
|
||||
testing = "Testar anslutning..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "หน้าและเลขเริ่มต้น"
|
||||
positionAndPages = "ตำแหน่งและหน้า"
|
||||
preview = "การเลือกตำแหน่ง"
|
||||
previewDisclaimer = "ภาพตัวอย่างเป็นการประมาณ ผลลัพธ์สุดท้ายอาจแตกต่างเนื่องจากเมตริกฟอนต์ของ PDF"
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "เลือกไฟล์ PDF:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "รูปแบบผลลัพธ์"
|
||||
pdfaNote = "PDF/A-1b เข้ากันได้มากกว่า ส่วน PDF/A-2b รองรับฟีเจอร์มากกว่า"
|
||||
pdfaFormat = "รูปแบบ PDF/A"
|
||||
pdfaDigitalSignatureWarning = "PDF มีลายเซ็นดิจิทัล ซึ่งจะถูกลบในขั้นตอนถัดไป"
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "ไฟล์ PDF มีลายเซ็นดิจิทัล ซึ่งจะถูกลบในขั้นตอนถัดไป"
|
||||
pdfxDescription = "PDF/X เป็นชุดย่อยของ PDF ตามมาตรฐาน ISO สำหรับการพิมพ์และแลกเปลี่ยนกราฟิกที่เชื่อถือได้"
|
||||
fileFormat = "รูปแบบไฟล์"
|
||||
@@ -2646,7 +2642,6 @@ label = "PDF ต้นฉบับ"
|
||||
|
||||
[compare.edited]
|
||||
label = "PDF ที่แก้ไข"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "เรียกใช้การเปรียบเทียบอีกครั้งหรือไม่?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "ขนาดรูปภาพ"
|
||||
margin = "ระยะขอบ"
|
||||
positionAndFormatting = "ตำแหน่งและการจัดรูปแบบ"
|
||||
quickPosition = "เลือกตำแหน่งบนหน้าสำหรับวางตราประทับ"
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "เกิดข้อผิดพลาดขณะเพิ่มตราประทับลงใน PDF"
|
||||
@@ -3612,6 +3594,14 @@ failed = "เกิดข้อผิดพลาดขณะเพิ่มต
|
||||
[AddStampRequest.results]
|
||||
title = "ผลการประทับตรา"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "ลบรูปภาพ,การจัดการหน้า,แบ็กเอนด์,ฝั่งเซิร์ฟเวอร์"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "กำหนดค่าพาธระบบไฟล์แบ
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "ไดเรกทอรี Pipeline"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "ไดเรกทอรีโฟลเดอร์ที่เฝ้าดู"
|
||||
description = "ไดเรกทอรีที่ Pipeline จะเฝ้าดูไฟล์ PDF ที่เข้ามา (ปล่อยว่างเพื่อค่าเริ่มต้น: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "ไดเรกทอรีโฟลเดอร์ที่เสร็จสิ้น"
|
||||
description = "ไดเรกทอรีสำหรับผลลัพธ์ PDF ที่ประมวลผลแล้ว (ปล่อยว่างเพื่อค่าเริ่มต้น: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "หรือเชื่อมต่อกับบัญชีแบบ
|
||||
title = "เชื่อมต่อกับเซิร์ฟเวอร์"
|
||||
subtitle = "ป้อน URL เซิร์ฟเวอร์ที่โฮสต์เองของคุณ"
|
||||
testing = "กำลังทดสอบการเชื่อมต่อ..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Sayfalar ve Başlangıç Numarası"
|
||||
positionAndPages = "Konum ve Sayfalar"
|
||||
preview = "Konum Seçimi"
|
||||
previewDisclaimer = "Önizleme yaklaşıktır. Nihai çıktı PDF yazı tipi metrikleri nedeniyle değişebilir."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "PDF dosyasını seçin:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Çıktı Biçimi"
|
||||
pdfaNote = "PDF/A-1b daha uyumludur, PDF/A-2b daha fazla özelliği destekler."
|
||||
pdfaFormat = "PDF/A biçimi"
|
||||
pdfaDigitalSignatureWarning = "PDF dijital imza içeriyor. Bu bir sonraki adımda kaldırılacak."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF dijital imza içeriyor. Bir sonraki adımda kaldırılacaktır."
|
||||
pdfxDescription = "PDF/X, güvenilir baskı ve grafik alışverişi için ISO standartlı bir PDF alt kümesidir."
|
||||
fileFormat = "Dosya Biçimi"
|
||||
@@ -2646,7 +2642,6 @@ label = "Orijinal PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Düzenlenmiş PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Karşılaştırma tekrar çalıştırılsın mı?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Görüntü Boyutu"
|
||||
margin = "Kenar Boşluğu"
|
||||
positionAndFormatting = "Konum ve Biçimlendirme"
|
||||
quickPosition = "Damgayı yerleştirmek için sayfada bir konum seçin."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "PDF'ye damga eklenirken bir hata oluştu."
|
||||
@@ -3612,6 +3594,14 @@ failed = "PDF'ye damga eklenirken bir hata oluştu."
|
||||
[AddStampRequest.results]
|
||||
title = "Damga Sonuçları"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Resmi Kaldır,Sayfa İşlemleri,Arka uç,sunucu tarafı"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Ardışık düzen işlemesi ve harici araçlar için özel dosya
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Ardışık Düzen Dizinleri"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "İzlenen Klasörler Dizini"
|
||||
description = "Ardışık düzenin gelen PDF’leri izlediği dizin (varsayılan için boş bırakın: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Tamamlanan Klasörler Dizini"
|
||||
description = "İşlenen PDF’lerin çıktısının alındığı dizin (varsayılan için boş bırakın: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "veya kendi barındırdığınız bir hesaba bağlanın"
|
||||
title = "Sunucuya Bağlan"
|
||||
subtitle = "Öz barındırılan sunucu URL'nizi girin"
|
||||
testing = "Bağlantı test ediliyor..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Сторінки та початковий номер"
|
||||
positionAndPages = "Позиція та сторінки"
|
||||
preview = "Вибір позиції"
|
||||
previewDisclaimer = "Попередній перегляд орієнтовний. Підсумковий результат може відрізнятися через метрики шрифтів PDF."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Виберіть PDF-файл:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Вихідний формат"
|
||||
pdfaNote = "PDF/A-1b більш сумісний, PDF/A-2b підтримує більше функцій."
|
||||
pdfaFormat = "Формат PDF/A"
|
||||
pdfaDigitalSignatureWarning = "Цей PDF документ має цифровий підпис. Цей підпис буде видалений у наступному кроці."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF містить цифровий підпис. Його буде видалено на наступному кроці."
|
||||
pdfxDescription = "PDF/X — це підмножина PDF за стандартом ISO для надійного друку та обміну графікою."
|
||||
fileFormat = "Формат файлу"
|
||||
@@ -2646,7 +2642,6 @@ label = "Оригінальний PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "Відредагований PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Повторити порівняння?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Розмір зображення"
|
||||
margin = "Поле"
|
||||
positionAndFormatting = "Позиція та форматування"
|
||||
quickPosition = "Виберіть позицію на сторінці для розміщення штампа."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Під час додавання штампа до PDF сталася помилка."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Під час додавання штампа до PDF сталася
|
||||
[AddStampRequest.results]
|
||||
title = "Результати додавання штампа"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "видалення зображення,операції зі сторінками,серверна частина"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Налаштуйте користувацькі шляхи фай
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Каталоги конвеєра"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Каталог відстежуваних папок"
|
||||
description = "Каталог, де конвеєр відстежує вхідні PDF (залиште порожнім для типового: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Каталог завершених папок"
|
||||
description = "Каталог, куди виводяться оброблені PDF (залиште порожнім для типового: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "або підключіться до самохостингового о
|
||||
title = "Під’єднатися до сервера"
|
||||
subtitle = "Введіть URL свого самохостингового сервера"
|
||||
testing = "Перевірка підключення..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "Trang & số bắt đầu"
|
||||
positionAndPages = "Vị trí & trang"
|
||||
preview = "Chọn vị trí"
|
||||
previewDisclaimer = "Bản xem trước chỉ mang tính ước lượng. Kết quả cuối có thể khác do thông số phông chữ của PDF."
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "Chọn tệp PDF:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "Định dạng đầu ra"
|
||||
pdfaNote = "PDF/A-1b tương thích hơn, PDF/A-2b hỗ trợ nhiều tính năng hơn."
|
||||
pdfaFormat = "Định dạng PDF/A"
|
||||
pdfaDigitalSignatureWarning = "PDF chứa chữ ký số. Điều này sẽ bị xóa trong bước tiếp theo."
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "PDF chứa chữ ký số. Chữ ký này sẽ bị xóa ở bước tiếp theo."
|
||||
pdfxDescription = "PDF/X là một tập hợp con tiêu chuẩn ISO của PDF dành cho in ấn và trao đổi đồ họa đáng tin cậy."
|
||||
fileFormat = "Định dạng tệp"
|
||||
@@ -2646,7 +2642,6 @@ label = "PDF gốc"
|
||||
|
||||
[compare.edited]
|
||||
label = "PDF đã chỉnh sửa"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "Chạy lại so sánh?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "Kích thước ảnh"
|
||||
margin = "Lề"
|
||||
positionAndFormatting = "Vị trí & định dạng"
|
||||
quickPosition = "Chọn một vị trí trên trang để đặt con dấu."
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "Đã xảy ra lỗi khi thêm con dấu vào PDF."
|
||||
@@ -3612,6 +3594,14 @@ failed = "Đã xảy ra lỗi khi thêm con dấu vào PDF."
|
||||
[AddStampRequest.results]
|
||||
title = "Kết quả đóng dấu"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "Xóa ảnh,Thao tác trang,Back end,phía máy chủ"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "Cấu hình đường dẫn hệ thống tệp tùy chỉnh cho x
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "Thư mục Pipeline"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "Thư mục được giám sát"
|
||||
description = "Thư mục nơi pipeline theo dõi PDF đến (để trống dùng mặc định: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "Thư mục đã hoàn tất"
|
||||
description = "Thư mục xuất PDF đã xử lý (để trống dùng mặc định: /pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "hoặc kết nối tới tài khoản tự lưu trữ"
|
||||
title = "Kết nối đến server"
|
||||
subtitle = "Nhập URL server tự lưu trữ"
|
||||
testing = "Đang kiểm tra kết nối..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "页面与起始编号"
|
||||
positionAndPages = "位置与页面"
|
||||
preview = "位置选择"
|
||||
previewDisclaimer = "预览为近似效果。由于 PDF 字体度量,最终输出可能有所不同。"
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "PDF ཡིག་ཆ་འདེམས་པ།"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "输出格式"
|
||||
pdfaNote = "PDF/A-1b 兼容性更好,PDF/A-2b 支持更多功能。"
|
||||
pdfaFormat = "PDF/A 格式"
|
||||
pdfaDigitalSignatureWarning = "该 PDF 包含数字签名。下一步将移除它。"
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "该 PDF 包含数字签名。这将在下一步被移除。"
|
||||
pdfxDescription = "PDF/X 是用于可靠打印和图形交换的 ISO 标准 PDF 子集。"
|
||||
fileFormat = "文件格式"
|
||||
@@ -2646,7 +2642,6 @@ label = "原始 PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "已编辑 PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "重新运行比较?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "图像大小"
|
||||
margin = "边距"
|
||||
positionAndFormatting = "位置与格式"
|
||||
quickPosition = "选择页面上的位置以放置印章。"
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "将印章添加到 PDF 时发生错误。"
|
||||
@@ -3612,6 +3594,14 @@ failed = "将印章添加到 PDF 时发生错误。"
|
||||
[AddStampRequest.results]
|
||||
title = "印章结果"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "པར་རིས་སུབ་པ།,ཤོག་ངོས་བཀོལ་སྤྱོད།,རྒྱབ་ངོས།,ཞབས་ཞུ་ཕྱོགས།"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "为流水线处理和外部工具配置自定义文件系统路
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "流水线目录"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "监控文件夹目录"
|
||||
description = "流水线监控输入 PDF 的目录(留空使用默认:/pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "完成文件夹目录"
|
||||
description = "输出已处理 PDF 的目录(留空使用默认:/pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "或连接到自托管账户"
|
||||
title = "连接到服务器"
|
||||
subtitle = "输入自托管服务器的 URL"
|
||||
testing = "正在测试连接..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "页面与起始编号"
|
||||
positionAndPages = "位置与页面"
|
||||
preview = "位置选择"
|
||||
previewDisclaimer = "预览为近似效果。最终输出可能因 PDF 字体度量而有所不同。"
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "选择PDF文件:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "输出格式"
|
||||
pdfaNote = "PDF/A-1b 兼容性更好,PDF/A-2b 支持的功能更多。"
|
||||
pdfaFormat = "PDF/A 格式"
|
||||
pdfaDigitalSignatureWarning = "该PDF包含数字签名,下一步将移除该签名。"
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "该 PDF 包含数字签名。此签名将在下一步移除。"
|
||||
pdfxDescription = "PDF/X 是用于可靠打印和图形交换的 ISO 标准 PDF 子集。"
|
||||
fileFormat = "文件格式"
|
||||
@@ -2646,7 +2642,6 @@ label = "原始 PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "已编辑 PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "重新运行比较?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "图像大小"
|
||||
margin = "边距"
|
||||
positionAndFormatting = "位置与格式"
|
||||
quickPosition = "选择页面上的一个位置以放置图章。"
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "向 PDF 添加图章时发生错误。"
|
||||
@@ -3612,6 +3594,14 @@ failed = "向 PDF 添加图章时发生错误。"
|
||||
[AddStampRequest.results]
|
||||
title = "图章结果"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "删除图像, 页面操作, 后端, 服务端"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "配置用于流水线处理和外部工具的自定义文件系
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "流水线目录"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "监视文件夹目录"
|
||||
description = "监视流水线接收PDF的目录(留空为默认:/pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "已完成文件夹目录"
|
||||
description = "输出处理后PDF的目录(留空为默认:/pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "或连接到自托管账户"
|
||||
title = "连接到服务器"
|
||||
subtitle = "输入您的自托管服务器 URL"
|
||||
testing = "正在测试连接..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -219,8 +219,6 @@ pagesAndStarting = "頁面與起始編號"
|
||||
positionAndPages = "位置與頁面"
|
||||
preview = "位置選擇"
|
||||
previewDisclaimer = "預覽為近似值。最終輸出可能因 PDF 字型度量而異。"
|
||||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||||
|
||||
[addPageNumbers.selectText]
|
||||
1 = "選擇 PDF 檔案:"
|
||||
@@ -1302,8 +1300,6 @@ outputFormat = "輸出格式"
|
||||
pdfaNote = "PDF/A-1b 相容性較佳,PDF/A-2b 支援更多功能。"
|
||||
pdfaFormat = "PDF/A 格式"
|
||||
pdfaDigitalSignatureWarning = "該 PDF 的憑證簽章將會在下一步被移除"
|
||||
strictMode = "Strict Mode"
|
||||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||||
pdfxDigitalSignatureWarning = "該 PDF 含有數位簽章。此簽章將在下一步移除。"
|
||||
pdfxDescription = "PDF/X 是 ISO 標準的 PDF 子集,用於可靠的列印與圖形交換。"
|
||||
fileFormat = "檔案格式"
|
||||
@@ -2646,7 +2642,6 @@ label = "原始 PDF"
|
||||
|
||||
[compare.edited]
|
||||
label = "已編輯的 PDF"
|
||||
placeholder = "Select the edited PDF"
|
||||
|
||||
[compare.swap]
|
||||
confirmTitle = "要重新執行比較嗎?"
|
||||
@@ -3567,44 +3562,31 @@ imageSize = "影像大小"
|
||||
margin = "邊距"
|
||||
positionAndFormatting = "位置與格式"
|
||||
quickPosition = "選擇頁面上的位置以放置印章。"
|
||||
preview = "Preview:"
|
||||
useTemplate = "Use Template"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
clickToExpand = "Click to expand"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
dateTimeVars = "Date & Time"
|
||||
dateDesc = "Current date"
|
||||
timeDesc = "Current time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
customDateDesc = "Custom format"
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
pageVars = "Page Information"
|
||||
pageNumberDesc = "Current page number"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
dateDesc = "Current date"
|
||||
dateTimeVars = "Date & Time"
|
||||
datetimeDesc = "Date and time combined"
|
||||
dynamicVariables = "Dynamic Variables"
|
||||
examples = "Examples"
|
||||
fileVars = "File Information"
|
||||
filenameDesc = "Filename without extension"
|
||||
filenameFullDesc = "Filename with extension"
|
||||
metadataVars = "Document Metadata"
|
||||
metadataDesc = "From PDF document properties"
|
||||
otherVars = "Other"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
examples = "Examples"
|
||||
metadataVars = "Document Metadata"
|
||||
multiLine = "multi-line"
|
||||
|
||||
[AddStampRequest.template]
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
dateHeader = "Date Header"
|
||||
europeanDate = "European Date"
|
||||
timestamp = "Timestamp"
|
||||
draftWatermark = "Draft Watermark"
|
||||
custom = "Custom"
|
||||
page-numbers = "Page Numbers"
|
||||
draft = "Draft Watermark"
|
||||
doc-info = "Document Info"
|
||||
legal-footer = "Legal Footer"
|
||||
european-date = "European Date (DD/MM/YYYY)"
|
||||
otherVars = "Other"
|
||||
pageNumberDesc = "Current page number"
|
||||
pageVars = "Page Information"
|
||||
preview = "Preview:"
|
||||
selectTemplate = "Select a template..."
|
||||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||||
timeDesc = "Current time"
|
||||
totalPagesDesc = "Total number of pages"
|
||||
useTemplate = "Use Template"
|
||||
uuidDesc = "Short unique identifier (8 chars)"
|
||||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||||
yearMonthDayDesc = "Individual date parts"
|
||||
|
||||
[AddStampRequest.error]
|
||||
failed = "將印章加入 PDF 時發生錯誤。"
|
||||
@@ -3612,6 +3594,14 @@ failed = "將印章加入 PDF 時發生錯誤。"
|
||||
[AddStampRequest.results]
|
||||
title = "蓋章結果"
|
||||
|
||||
[AddStampRequest.template]
|
||||
custom = "Custom"
|
||||
dateHeader = "Date Header"
|
||||
draftWatermark = "Draft Watermark"
|
||||
europeanDate = "European Date"
|
||||
pageNumberFooter = "Page Number Footer"
|
||||
timestamp = "Timestamp"
|
||||
|
||||
[removeImagePdf]
|
||||
tags = "移除圖片,頁面操作,後端,伺服器端"
|
||||
|
||||
@@ -4523,18 +4513,10 @@ description = "設定管線處理與外部工具的自訂檔案系統路徑"
|
||||
[admin.settings.general.customPaths.pipeline]
|
||||
label = "管線目錄"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||||
label = "Pipeline Directory"
|
||||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||||
label = "監看資料夾目錄"
|
||||
description = "管線監看輸入 PDF 的目錄(留空使用預設:/pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||||
label = "Watched Folders Directories"
|
||||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||||
|
||||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||||
label = "完成資料夾目錄"
|
||||
description = "輸出已處理 PDF 的目錄(留空使用預設:/pipeline/finishedFolders)"
|
||||
@@ -6573,7 +6555,6 @@ link = "或連線到自行託管的帳戶"
|
||||
title = "連線至伺服器"
|
||||
subtitle = "輸入你的自託管伺服器 URL"
|
||||
testing = "正在測試連線..."
|
||||
useLast = "Last used server: {{serverUrl}}"
|
||||
|
||||
[setup.server.type]
|
||||
saas = "Stirling PDF SaaS"
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
import { execFileSync } from 'node:child_process';
|
||||
import { existsSync, mkdirSync, copyFileSync } from 'node:fs';
|
||||
import { join, resolve } from 'node:path';
|
||||
|
||||
if (process.platform !== 'win32') {
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
const frontendDir = process.cwd();
|
||||
const tauriDir = resolve(frontendDir, 'src-tauri');
|
||||
const provisionerManifest = join(tauriDir, 'provisioner', 'Cargo.toml');
|
||||
|
||||
execFileSync(
|
||||
'cargo',
|
||||
['build', '--release', '--manifest-path', provisionerManifest],
|
||||
{ stdio: 'inherit' }
|
||||
);
|
||||
|
||||
const provisionerExe = join(tauriDir, 'provisioner', 'target', 'release', 'stirling-provisioner.exe');
|
||||
if (!existsSync(provisionerExe)) {
|
||||
throw new Error(`Provisioner binary not found at ${provisionerExe}`);
|
||||
}
|
||||
|
||||
const wixDir = join(tauriDir, 'windows', 'wix');
|
||||
mkdirSync(wixDir, { recursive: true });
|
||||
|
||||
const destExe = join(wixDir, 'stirling-provision.exe');
|
||||
copyFileSync(provisionerExe, destExe);
|
||||
Generated
-45
@@ -907,8 +907,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec"
|
||||
dependencies = [
|
||||
"bitflags 2.10.0",
|
||||
"block2",
|
||||
"libc",
|
||||
"objc2",
|
||||
]
|
||||
|
||||
@@ -3533,30 +3531,6 @@ dependencies = [
|
||||
"webpki-roots 1.0.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rfd"
|
||||
version = "0.16.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a15ad77d9e70a92437d8f74c35d99b4e4691128df018833e99f90bcd36152672"
|
||||
dependencies = [
|
||||
"block2",
|
||||
"dispatch2",
|
||||
"glib-sys",
|
||||
"gobject-sys",
|
||||
"gtk-sys",
|
||||
"js-sys",
|
||||
"log",
|
||||
"objc2",
|
||||
"objc2-app-kit",
|
||||
"objc2-core-foundation",
|
||||
"objc2-foundation",
|
||||
"raw-window-handle",
|
||||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
"web-sys",
|
||||
"windows-sys 0.60.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ring"
|
||||
version = "0.17.14"
|
||||
@@ -4255,7 +4229,6 @@ dependencies = [
|
||||
"tauri",
|
||||
"tauri-build",
|
||||
"tauri-plugin-deep-link",
|
||||
"tauri-plugin-dialog",
|
||||
"tauri-plugin-fs",
|
||||
"tauri-plugin-http",
|
||||
"tauri-plugin-log",
|
||||
@@ -4636,24 +4609,6 @@ dependencies = [
|
||||
"windows-result 0.3.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-dialog"
|
||||
version = "2.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9204b425d9be8d12aa60c2a83a289cf7d1caae40f57f336ed1155b3a5c0e359b"
|
||||
dependencies = [
|
||||
"log",
|
||||
"raw-window-handle",
|
||||
"rfd",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tauri",
|
||||
"tauri-plugin",
|
||||
"tauri-plugin-fs",
|
||||
"thiserror 2.0.18",
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-fs"
|
||||
version = "2.4.5"
|
||||
|
||||
@@ -28,7 +28,6 @@ tauri = { version = "2.9.0", features = [ "devtools"] }
|
||||
tauri-plugin-log = "2.8.0"
|
||||
tauri-plugin-shell = "2.3.4"
|
||||
tauri-plugin-fs = "2.4.5"
|
||||
tauri-plugin-dialog = "2.4.2"
|
||||
tauri-plugin-http = { version = "2.5.6", features = ["dangerous-settings"] }
|
||||
tauri-plugin-single-instance = { version = "2.3.7", features = ["deep-link"] }
|
||||
tauri-plugin-store = "2.4.2"
|
||||
|
||||
@@ -40,17 +40,6 @@
|
||||
"identifier": "fs:allow-read-file",
|
||||
"allow": [{ "path": "**" }]
|
||||
},
|
||||
{
|
||||
"identifier": "fs:allow-write-file",
|
||||
"allow": [{ "path": "**" }]
|
||||
},
|
||||
{
|
||||
"identifier": "fs:allow-remove",
|
||||
"allow": [{ "path": "**" }]
|
||||
},
|
||||
"dialog:default",
|
||||
"dialog:allow-open",
|
||||
"dialog:allow-save",
|
||||
"opener:default",
|
||||
"shell:allow-open"
|
||||
]
|
||||
|
||||
-107
@@ -1,107 +0,0 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "itoa"
|
||||
version = "1.0.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.7.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.106"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.44"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.228"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
|
||||
dependencies = [
|
||||
"serde_core",
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_core"
|
||||
version = "1.0.228"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.228"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.149"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"memchr",
|
||||
"serde",
|
||||
"serde_core",
|
||||
"zmij",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "stirling-provisioner"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"serde_json",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.114"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
version = "1.0.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
|
||||
|
||||
[[package]]
|
||||
name = "zmij"
|
||||
version = "1.0.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3ff05f8caa9038894637571ae6b9e29466c1f4f829d26c9b28f869a29cbe3445"
|
||||
@@ -1,8 +0,0 @@
|
||||
[package]
|
||||
name = "stirling-provisioner"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde_json = "1.0"
|
||||
@@ -1,76 +0,0 @@
|
||||
use serde::Serialize;
|
||||
use std::env;
|
||||
use std::fs;
|
||||
use std::path::PathBuf;
|
||||
|
||||
#[derive(Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
struct ProvisioningConfig<'a> {
|
||||
server_url: &'a str,
|
||||
lock_connection_mode: bool,
|
||||
}
|
||||
|
||||
fn parse_bool(value: &str) -> bool {
|
||||
match value.trim().to_lowercase().as_str() {
|
||||
"1" | "true" | "yes" | "y" => true,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
fn main() -> Result<(), String> {
|
||||
let mut output: Option<PathBuf> = None;
|
||||
let mut url: Option<String> = None;
|
||||
let mut lock_value: Option<String> = None;
|
||||
|
||||
let mut args = env::args().skip(1);
|
||||
while let Some(arg) = args.next() {
|
||||
match arg.as_str() {
|
||||
"--output" => {
|
||||
let value = args
|
||||
.next()
|
||||
.ok_or_else(|| "--output requires a value".to_string())?;
|
||||
output = Some(PathBuf::from(value));
|
||||
}
|
||||
"--url" => {
|
||||
let value = args
|
||||
.next()
|
||||
.ok_or_else(|| "--url requires a value".to_string())?;
|
||||
url = Some(value);
|
||||
}
|
||||
"--lock" => {
|
||||
let value = args
|
||||
.next()
|
||||
.ok_or_else(|| "--lock requires a value".to_string())?;
|
||||
lock_value = Some(value);
|
||||
}
|
||||
_ => {
|
||||
return Err(format!("Unknown argument: {}", arg));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let output = output.ok_or_else(|| "Missing --output".to_string())?;
|
||||
let url = url
|
||||
.map(|value| value.trim().to_string())
|
||||
.filter(|value| !value.is_empty())
|
||||
.ok_or_else(|| "Missing --url".to_string())?;
|
||||
let lock = lock_value.as_deref().map(parse_bool).unwrap_or(false);
|
||||
|
||||
if let Some(parent) = output.parent() {
|
||||
fs::create_dir_all(parent)
|
||||
.map_err(|e| format!("Failed to create directory {}: {}", parent.display(), e))?;
|
||||
}
|
||||
|
||||
let config = ProvisioningConfig {
|
||||
server_url: url.as_str(),
|
||||
lock_connection_mode: lock,
|
||||
};
|
||||
|
||||
let json = serde_json::to_string_pretty(&config)
|
||||
.map_err(|e| format!("Failed to serialize provisioning data: {}", e))?;
|
||||
|
||||
fs::write(&output, json)
|
||||
.map_err(|e| format!("Failed to write provisioning file {}: {}", output.display(), e))?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -2,7 +2,7 @@ use tauri_plugin_shell::ShellExt;
|
||||
use tauri::Manager;
|
||||
use std::sync::Mutex;
|
||||
use std::path::{Path, PathBuf};
|
||||
use crate::utils::{add_log, app_data_dir};
|
||||
use crate::utils::add_log;
|
||||
use crate::state::connection_state::{AppConnectionState, ConnectionMode};
|
||||
|
||||
// Store backend process handle and port globally
|
||||
@@ -168,7 +168,16 @@ fn copy_dir_recursive(src: &Path, dest: &Path) -> std::io::Result<()> {
|
||||
// Create, configure and run the Java command to run Stirling-PDF JAR
|
||||
fn run_stirling_pdf_jar(app: &tauri::AppHandle, java_path: &PathBuf, jar_path: &PathBuf) -> Result<(), String> {
|
||||
// Get platform-specific application data directory for Tauri mode
|
||||
let app_data_dir = app_data_dir();
|
||||
let app_data_dir = if cfg!(target_os = "macos") {
|
||||
let home = std::env::var("HOME").unwrap_or_else(|_| "/tmp".to_string());
|
||||
PathBuf::from(home).join("Library").join("Application Support").join("Stirling-PDF")
|
||||
} else if cfg!(target_os = "windows") {
|
||||
let appdata = std::env::var("APPDATA").unwrap_or_else(|_| std::env::temp_dir().to_string_lossy().to_string());
|
||||
PathBuf::from(appdata).join("Stirling-PDF")
|
||||
} else {
|
||||
let home = std::env::var("HOME").unwrap_or_else(|_| "/tmp".to_string());
|
||||
PathBuf::from(home).join(".config").join("Stirling-PDF")
|
||||
};
|
||||
|
||||
// Create subdirectories for different purposes
|
||||
let config_dir = app_data_dir.join("configs");
|
||||
|
||||
@@ -3,25 +3,19 @@ use crate::state::connection_state::{
|
||||
ConnectionMode,
|
||||
ServerConfig,
|
||||
};
|
||||
use crate::utils::{add_log, app_data_dir, system_provisioning_dir};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::fs;
|
||||
use std::path::PathBuf;
|
||||
use tauri::{AppHandle, Manager, State};
|
||||
use tauri::{AppHandle, State};
|
||||
use tauri_plugin_store::StoreExt;
|
||||
|
||||
const STORE_FILE: &str = "connection.json";
|
||||
const FIRST_LAUNCH_KEY: &str = "setup_completed";
|
||||
const CONNECTION_MODE_KEY: &str = "connection_mode";
|
||||
const SERVER_CONFIG_KEY: &str = "server_config";
|
||||
const LOCK_CONNECTION_KEY: &str = "lock_connection_mode";
|
||||
const PROVISIONING_FILE_NAME: &str = "stirling-provisioning.json";
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct ConnectionConfig {
|
||||
pub mode: ConnectionMode,
|
||||
pub server_config: Option<ServerConfig>,
|
||||
pub lock_connection_mode: bool,
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
@@ -43,22 +37,15 @@ pub async fn get_connection_config(
|
||||
.get(SERVER_CONFIG_KEY)
|
||||
.and_then(|v| serde_json::from_value(v.clone()).ok());
|
||||
|
||||
let lock_connection_mode = store
|
||||
.get(LOCK_CONNECTION_KEY)
|
||||
.and_then(|v| v.as_bool())
|
||||
.unwrap_or(false);
|
||||
|
||||
// Update in-memory state
|
||||
if let Ok(mut conn_state) = state.0.lock() {
|
||||
conn_state.mode = mode.clone();
|
||||
conn_state.server_config = server_config.clone();
|
||||
conn_state.lock_connection_mode = lock_connection_mode;
|
||||
}
|
||||
|
||||
Ok(ConnectionConfig {
|
||||
mode,
|
||||
server_config,
|
||||
lock_connection_mode,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -68,7 +55,6 @@ pub async fn set_connection_mode(
|
||||
state: State<'_, AppConnectionState>,
|
||||
mode: ConnectionMode,
|
||||
server_config: Option<ServerConfig>,
|
||||
lock_connection_mode: Option<bool>,
|
||||
) -> Result<(), String> {
|
||||
log::info!("Setting connection mode: {:?}", mode);
|
||||
|
||||
@@ -76,9 +62,6 @@ pub async fn set_connection_mode(
|
||||
if let Ok(mut conn_state) = state.0.lock() {
|
||||
conn_state.mode = mode.clone();
|
||||
conn_state.server_config = server_config.clone();
|
||||
if let Some(lock) = lock_connection_mode {
|
||||
conn_state.lock_connection_mode = lock;
|
||||
}
|
||||
}
|
||||
|
||||
// Save to store
|
||||
@@ -101,14 +84,6 @@ pub async fn set_connection_mode(
|
||||
store.delete(SERVER_CONFIG_KEY);
|
||||
}
|
||||
|
||||
if let Some(lock) = lock_connection_mode {
|
||||
store.set(
|
||||
LOCK_CONNECTION_KEY,
|
||||
serde_json::to_value(lock)
|
||||
.map_err(|e| format!("Failed to serialize lock flag: {}", e))?,
|
||||
);
|
||||
}
|
||||
|
||||
// Mark setup as completed
|
||||
store.set(FIRST_LAUNCH_KEY, serde_json::json!(true));
|
||||
|
||||
@@ -120,109 +95,6 @@ pub async fn set_connection_mode(
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
struct ProvisioningConfig {
|
||||
server_url: Option<String>,
|
||||
lock_connection_mode: Option<bool>,
|
||||
}
|
||||
|
||||
fn provisioning_file_paths() -> Vec<PathBuf> {
|
||||
let mut paths = Vec::new();
|
||||
paths.push(app_data_dir().join(PROVISIONING_FILE_NAME));
|
||||
|
||||
if let Some(system_dir) = system_provisioning_dir() {
|
||||
paths.push(system_dir.join(PROVISIONING_FILE_NAME));
|
||||
}
|
||||
|
||||
paths
|
||||
}
|
||||
|
||||
pub fn apply_provisioning_if_present(app_handle: &AppHandle) -> Result<(), String> {
|
||||
let provisioning_paths = provisioning_file_paths();
|
||||
let provisioning_path = provisioning_paths
|
||||
.into_iter()
|
||||
.find(|path| path.exists());
|
||||
|
||||
let provisioning_path = match provisioning_path {
|
||||
Some(path) => path,
|
||||
None => return Ok(()),
|
||||
};
|
||||
|
||||
add_log(format!(
|
||||
"🧩 Provisioning file detected: {}",
|
||||
provisioning_path.display()
|
||||
));
|
||||
|
||||
let raw = fs::read_to_string(&provisioning_path)
|
||||
.map_err(|e| format!("Failed to read provisioning file: {}", e))?;
|
||||
let parsed: ProvisioningConfig = serde_json::from_str(&raw)
|
||||
.map_err(|e| format!("Failed to parse provisioning file: {}", e))?;
|
||||
|
||||
let server_url = parsed
|
||||
.server_url
|
||||
.map(|value| value.trim().to_string())
|
||||
.filter(|value| !value.is_empty());
|
||||
|
||||
if server_url.is_none() {
|
||||
add_log("⚠️ Provisioning file missing serverUrl; skipping apply".to_string());
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
let lock_flag = parsed.lock_connection_mode.unwrap_or(false);
|
||||
|
||||
let store = app_handle
|
||||
.store(STORE_FILE)
|
||||
.map_err(|e| format!("Failed to access store: {}", e))?;
|
||||
|
||||
store.set(
|
||||
CONNECTION_MODE_KEY,
|
||||
serde_json::to_value(&ConnectionMode::SelfHosted)
|
||||
.map_err(|e| format!("Failed to serialize mode: {}", e))?,
|
||||
);
|
||||
|
||||
let server_config = ServerConfig {
|
||||
url: server_url.clone().unwrap(),
|
||||
};
|
||||
store.set(
|
||||
SERVER_CONFIG_KEY,
|
||||
serde_json::to_value(&server_config)
|
||||
.map_err(|e| format!("Failed to serialize config: {}", e))?,
|
||||
);
|
||||
|
||||
store.set(
|
||||
LOCK_CONNECTION_KEY,
|
||||
serde_json::to_value(lock_flag)
|
||||
.map_err(|e| format!("Failed to serialize lock flag: {}", e))?,
|
||||
);
|
||||
|
||||
store.set(FIRST_LAUNCH_KEY, serde_json::json!(true));
|
||||
|
||||
store
|
||||
.save()
|
||||
.map_err(|e| format!("Failed to save store: {}", e))?;
|
||||
|
||||
if let Ok(mut conn_state) = app_handle.state::<AppConnectionState>().0.lock() {
|
||||
conn_state.mode = ConnectionMode::SelfHosted;
|
||||
conn_state.server_config = Some(server_config);
|
||||
conn_state.lock_connection_mode = lock_flag;
|
||||
}
|
||||
|
||||
let user_app_data = app_data_dir();
|
||||
if provisioning_path.starts_with(&user_app_data) {
|
||||
match fs::remove_file(&provisioning_path) {
|
||||
Ok(_) => add_log("✅ Provisioning file applied and removed".to_string()),
|
||||
Err(err) => add_log(format!(
|
||||
"⚠️ Provisioning applied but failed to remove file: {}",
|
||||
err
|
||||
)),
|
||||
}
|
||||
} else {
|
||||
add_log("ℹ️ Provisioning applied from system location; leaving file in place".to_string());
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub async fn is_first_launch(app_handle: AppHandle) -> Result<bool, String> {
|
||||
|
||||
@@ -29,7 +29,6 @@ use commands::{
|
||||
start_backend,
|
||||
start_oauth_login,
|
||||
};
|
||||
use commands::connection::apply_provisioning_if_present;
|
||||
use state::connection_state::AppConnectionState;
|
||||
use utils::{add_log, get_tauri_logs};
|
||||
use tauri_plugin_deep_link::DeepLinkExt;
|
||||
@@ -55,7 +54,6 @@ pub fn run() {
|
||||
.plugin(tauri_plugin_opener::init())
|
||||
.plugin(tauri_plugin_shell::init())
|
||||
.plugin(tauri_plugin_fs::init())
|
||||
.plugin(tauri_plugin_dialog::init())
|
||||
.plugin(tauri_plugin_http::init())
|
||||
.plugin(tauri_plugin_store::Builder::new().build())
|
||||
.plugin(tauri_plugin_deep_link::init())
|
||||
@@ -118,10 +116,6 @@ pub fn run() {
|
||||
});
|
||||
}
|
||||
|
||||
if let Err(err) = apply_provisioning_if_present(&app.handle()) {
|
||||
add_log(format!("⚠️ Failed to apply provisioning file: {}", err));
|
||||
}
|
||||
|
||||
// Start backend immediately, non-blocking
|
||||
let app_handle = app.handle().clone();
|
||||
|
||||
|
||||
@@ -17,7 +17,6 @@ pub struct ServerConfig {
|
||||
pub struct ConnectionState {
|
||||
pub mode: ConnectionMode,
|
||||
pub server_config: Option<ServerConfig>,
|
||||
pub lock_connection_mode: bool,
|
||||
}
|
||||
|
||||
impl Default for ConnectionState {
|
||||
@@ -25,7 +24,6 @@ impl Default for ConnectionState {
|
||||
Self {
|
||||
mode: ConnectionMode::SaaS,
|
||||
server_config: None,
|
||||
lock_connection_mode: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
pub mod logging;
|
||||
pub mod paths;
|
||||
|
||||
pub use logging::{add_log, get_tauri_logs};
|
||||
pub use paths::{app_data_dir, system_provisioning_dir};
|
||||
pub use logging::{add_log, get_tauri_logs};
|
||||
@@ -1,31 +0,0 @@
|
||||
use std::path::PathBuf;
|
||||
|
||||
pub fn app_data_dir() -> PathBuf {
|
||||
if cfg!(target_os = "macos") {
|
||||
let home = std::env::var("HOME").unwrap_or_else(|_| "/tmp".to_string());
|
||||
PathBuf::from(home)
|
||||
.join("Library")
|
||||
.join("Application Support")
|
||||
.join("Stirling-PDF")
|
||||
} else if cfg!(target_os = "windows") {
|
||||
let appdata = std::env::var("APPDATA")
|
||||
.unwrap_or_else(|_| std::env::temp_dir().to_string_lossy().to_string());
|
||||
PathBuf::from(appdata).join("Stirling-PDF")
|
||||
} else {
|
||||
let home = std::env::var("HOME").unwrap_or_else(|_| "/tmp".to_string());
|
||||
PathBuf::from(home).join(".config").join("Stirling-PDF")
|
||||
}
|
||||
}
|
||||
|
||||
pub fn system_provisioning_dir() -> Option<PathBuf> {
|
||||
if cfg!(target_os = "windows") {
|
||||
let program_data = std::env::var("PROGRAMDATA").ok()?;
|
||||
Some(PathBuf::from(program_data).join("Stirling-PDF"))
|
||||
} else if cfg!(target_os = "macos") {
|
||||
Some(PathBuf::from("/Library").join("Application Support").join("Stirling-PDF"))
|
||||
} else if cfg!(target_os = "linux") {
|
||||
Some(PathBuf::from("/etc").join("stirling-pdf"))
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"$schema": "../node_modules/@tauri-apps/cli/config.schema.json",
|
||||
"productName": "Stirling-PDF",
|
||||
"version": "2.4.5",
|
||||
"version": "2.4.3",
|
||||
"identifier": "stirling.pdf.dev",
|
||||
"build": {
|
||||
"frontendDist": "../dist",
|
||||
"devUrl": "http://localhost:5173",
|
||||
"beforeDevCommand": "npm run dev -- --mode desktop",
|
||||
"beforeBuildCommand": "node scripts/build-provisioner.mjs && npm run build -- --mode desktop"
|
||||
"beforeBuildCommand": "npm run build -- --mode desktop"
|
||||
},
|
||||
"app": {
|
||||
"windows": [
|
||||
@@ -62,15 +62,7 @@
|
||||
"windows": {
|
||||
"certificateThumbprint": null,
|
||||
"digestAlgorithm": "sha256",
|
||||
"timestampUrl": "http://timestamp.digicert.com",
|
||||
"wix": {
|
||||
"fragmentPaths": [
|
||||
"windows/wix/provisioning.wxs"
|
||||
],
|
||||
"componentGroupRefs": [
|
||||
"ProvisioningComponentGroup"
|
||||
]
|
||||
}
|
||||
"timestampUrl": "http://timestamp.digicert.com"
|
||||
},
|
||||
"macOS": {
|
||||
"minimumSystemVersion": "10.15",
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<Fragment>
|
||||
<Property Id="STIRLING_SERVER_URL" Secure="yes" />
|
||||
<Property Id="STIRLING_LOCK_CONNECTION" Secure="yes" />
|
||||
|
||||
<DirectoryRef Id="TARGETDIR">
|
||||
<Directory Id="AppDataFolder" />
|
||||
<Directory Id="CommonAppDataFolder" />
|
||||
</DirectoryRef>
|
||||
|
||||
<DirectoryRef Id="INSTALLDIR">
|
||||
<Component Id="ProvisionerBinaryComponent" Guid="*">
|
||||
<File Id="ProvisionerExe" Source="$(sys.SOURCEFILEDIR)stirling-provision.exe" KeyPath="yes" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
|
||||
<ComponentGroup Id="ProvisioningComponentGroup">
|
||||
<ComponentRef Id="ProvisionerBinaryComponent" />
|
||||
</ComponentGroup>
|
||||
|
||||
<CustomAction
|
||||
Id="WriteProvisioningFilePerUser"
|
||||
FileKey="ProvisionerExe"
|
||||
Execute="deferred"
|
||||
Impersonate="yes"
|
||||
Return="check"
|
||||
ExeCommand="[WriteProvisioningFilePerUser]"
|
||||
/>
|
||||
|
||||
<CustomAction
|
||||
Id="WriteProvisioningFileAllUsers"
|
||||
FileKey="ProvisionerExe"
|
||||
Execute="deferred"
|
||||
Impersonate="no"
|
||||
Return="check"
|
||||
ExeCommand="[WriteProvisioningFileAllUsers]"
|
||||
/>
|
||||
|
||||
<CustomAction
|
||||
Id="SetWriteProvisioningFilePerUser"
|
||||
Property="WriteProvisioningFilePerUser"
|
||||
Value="--output "[AppDataFolder]Stirling-PDF\stirling-provisioning.json" --url "[STIRLING_SERVER_URL]" --lock "[STIRLING_LOCK_CONNECTION]""
|
||||
/>
|
||||
|
||||
<CustomAction
|
||||
Id="SetWriteProvisioningFileAllUsers"
|
||||
Property="WriteProvisioningFileAllUsers"
|
||||
Value="--output "[CommonAppDataFolder]Stirling-PDF\stirling-provisioning.json" --url "[STIRLING_SERVER_URL]" --lock "[STIRLING_LOCK_CONNECTION]""
|
||||
/>
|
||||
|
||||
<InstallExecuteSequence>
|
||||
<Custom Action="SetWriteProvisioningFilePerUser" After="InstallFiles">STIRLING_SERVER_URL <> "" AND (NOT ALLUSERS OR ALLUSERS=0)</Custom>
|
||||
<Custom Action="WriteProvisioningFilePerUser" After="SetWriteProvisioningFilePerUser">STIRLING_SERVER_URL <> "" AND (NOT ALLUSERS OR ALLUSERS=0)</Custom>
|
||||
<Custom Action="SetWriteProvisioningFileAllUsers" After="InstallFiles">STIRLING_SERVER_URL <> "" AND (ALLUSERS=1 OR ALLUSERS=2)</Custom>
|
||||
<Custom Action="WriteProvisioningFileAllUsers" After="SetWriteProvisioningFileAllUsers">STIRLING_SERVER_URL <> "" AND (ALLUSERS=1 OR ALLUSERS=2)</Custom>
|
||||
</InstallExecuteSequence>
|
||||
</Fragment>
|
||||
</Wix>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user