Compare commits
59 Commits
v0.40.0
...
2934-bug-d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1ad348b9a7 | ||
|
|
84e0b4caa7 | ||
|
|
27ec4d5a8f | ||
|
|
779191c02b | ||
|
|
2742e0b051 | ||
|
|
ea46204c6e | ||
|
|
41b41996c5 | ||
|
|
2abf48a57b | ||
|
|
5f81ff88e8 | ||
|
|
bc3340f3ba | ||
|
|
f9963a2316 | ||
|
|
0aeb22e7c8 | ||
|
|
dbb9009cf6 | ||
|
|
21839d07e8 | ||
|
|
8004251460 | ||
|
|
1ced941bee | ||
|
|
cb4a5778ec | ||
|
|
46c6a2b599 | ||
|
|
e5627af63d | ||
|
|
6a3064f7f2 | ||
|
|
158708b696 | ||
|
|
0233086487 | ||
|
|
242aa5eae1 | ||
|
|
bf65c456d1 | ||
|
|
26720c5018 | ||
|
|
2ed07e3fcb | ||
|
|
e382d254ee | ||
|
|
507d21772d | ||
|
|
5bf050d77f | ||
|
|
976caeb79d | ||
|
|
2d3611fd00 | ||
|
|
118de1789a | ||
|
|
b56d54a35a | ||
|
|
b9bfcd59cd | ||
|
|
f8adc0f101 | ||
|
|
69d4b52b06 | ||
|
|
5e3612a9b0 | ||
|
|
b3a4597ad1 | ||
|
|
dc46172deb | ||
|
|
04696dc2aa | ||
|
|
b37457b41d | ||
|
|
46c53a9c88 | ||
|
|
5f610da671 | ||
|
|
bacc502f07 | ||
|
|
883281e4df | ||
|
|
9e8c16f313 | ||
|
|
4a7df3fd3f | ||
|
|
f725f92e1a | ||
|
|
9d2c23f612 | ||
|
|
637446fab8 | ||
|
|
196c0f4a39 | ||
|
|
f9b92eec71 | ||
|
|
3be6b0659e | ||
|
|
00e1f74f48 | ||
|
|
6ae2fddd48 | ||
|
|
c5cffdcacb | ||
|
|
d9eda14521 | ||
|
|
b865f4379f | ||
|
|
4294dc54b1 |
2
.github/CODEOWNERS
vendored
@@ -1,2 +1,2 @@
|
|||||||
# All PRs to V1 must be approved by Frooodle
|
# All PRs to V1 must be approved by Frooodle
|
||||||
* @Frooodle @reecebrowne @Ludy87 @DarioGii
|
* @Frooodle @reecebrowne @Ludy87 @DarioGii @ConnorYoh
|
||||||
|
|||||||
7
.github/workflows/PR-Demo-Comment.yml
vendored
@@ -27,7 +27,8 @@ jobs:
|
|||||||
github.event.comment.user.login == 'LaserKaspar' ||
|
github.event.comment.user.login == 'LaserKaspar' ||
|
||||||
github.event.comment.user.login == 'sbplat' ||
|
github.event.comment.user.login == 'sbplat' ||
|
||||||
github.event.comment.user.login == 'reecebrowne' ||
|
github.event.comment.user.login == 'reecebrowne' ||
|
||||||
github.event.comment.user.login == 'DarioGii'
|
github.event.comment.user.login == 'DarioGii' ||
|
||||||
|
github.event.comment.user.login == 'ConnorYoh'
|
||||||
)
|
)
|
||||||
outputs:
|
outputs:
|
||||||
pr_number: ${{ steps.get-pr.outputs.pr_number }}
|
pr_number: ${{ steps.get-pr.outputs.pr_number }}
|
||||||
@@ -93,7 +94,7 @@ jobs:
|
|||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Set up JDK
|
- name: Set up JDK
|
||||||
uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
|
uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
|
||||||
with:
|
with:
|
||||||
java-version: "17"
|
java-version: "17"
|
||||||
distribution: "temurin"
|
distribution: "temurin"
|
||||||
@@ -104,7 +105,7 @@ jobs:
|
|||||||
DOCKER_ENABLE_SECURITY: false
|
DOCKER_ENABLE_SECURITY: false
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0
|
uses: docker/setup-buildx-action@f7ce87c1d6bead3e36075b2ce75da1f6cc28aaca # v3.9.0
|
||||||
|
|
||||||
- name: Get version number
|
- name: Get version number
|
||||||
id: versionNumber
|
id: versionNumber
|
||||||
|
|||||||
45
.github/workflows/build.yml
vendored
@@ -32,17 +32,11 @@ jobs:
|
|||||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
- name: Set up JDK ${{ matrix.jdk-version }}
|
- name: Set up JDK ${{ matrix.jdk-version }}
|
||||||
uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
|
uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
|
||||||
with:
|
with:
|
||||||
java-version: ${{ matrix.jdk-version }}
|
java-version: ${{ matrix.jdk-version }}
|
||||||
distribution: "temurin"
|
distribution: "temurin"
|
||||||
|
|
||||||
- name: PR | Generate verification metadata with signatures and checksums for dependabot[bot]
|
|
||||||
if: github.event.pull_request.user.login == 'dependabot[bot]'
|
|
||||||
run: |
|
|
||||||
./gradlew clean dependencies buildEnvironment spotlessApply --write-verification-metadata sha256 --refresh-dependencies help
|
|
||||||
./gradlew clean dependencies buildEnvironment spotlessApply --write-verification-metadata sha256,pgp --refresh-keys --export-keys --refresh-dependencies help
|
|
||||||
|
|
||||||
- name: Build with Gradle and no spring security
|
- name: Build with Gradle and no spring security
|
||||||
run: ./gradlew clean build
|
run: ./gradlew clean build
|
||||||
env:
|
env:
|
||||||
@@ -64,6 +58,35 @@ jobs:
|
|||||||
build/reports/problems/
|
build/reports/problems/
|
||||||
retention-days: 3
|
retention-days: 3
|
||||||
|
|
||||||
|
check-licence:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Harden Runner
|
||||||
|
uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
|
||||||
|
with:
|
||||||
|
egress-policy: audit
|
||||||
|
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
|
- name: Set up JDK 17
|
||||||
|
uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
|
||||||
|
with:
|
||||||
|
java-version: "17"
|
||||||
|
distribution: "adopt"
|
||||||
|
|
||||||
|
- name: check the licenses for compatibility
|
||||||
|
run: ./gradlew clean checkLicense
|
||||||
|
|
||||||
|
- name: FAILED - check the licenses for compatibility
|
||||||
|
if: failure()
|
||||||
|
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
||||||
|
with:
|
||||||
|
name: dependencies-without-allowed-license.json
|
||||||
|
path: |
|
||||||
|
build/reports/dependency-license/dependencies-without-allowed-license.json
|
||||||
|
retention-days: 3
|
||||||
|
|
||||||
docker-compose-tests:
|
docker-compose-tests:
|
||||||
# if: github.event_name == 'push' && github.ref == 'refs/heads/main' ||
|
# if: github.event_name == 'push' && github.ref == 'refs/heads/main' ||
|
||||||
# (github.event_name == 'pull_request' &&
|
# (github.event_name == 'pull_request' &&
|
||||||
@@ -91,13 +114,13 @@ jobs:
|
|||||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
- name: Set up Java 17
|
- name: Set up Java 17
|
||||||
uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
|
uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
|
||||||
with:
|
with:
|
||||||
java-version: "17"
|
java-version: "17"
|
||||||
distribution: "adopt"
|
distribution: "adopt"
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0
|
uses: docker/setup-buildx-action@f7ce87c1d6bead3e36075b2ce75da1f6cc28aaca # v3.9.0
|
||||||
|
|
||||||
- name: Install Docker Compose
|
- name: Install Docker Compose
|
||||||
run: |
|
run: |
|
||||||
@@ -105,7 +128,7 @@ jobs:
|
|||||||
sudo chmod +x /usr/local/bin/docker-compose
|
sudo chmod +x /usr/local/bin/docker-compose
|
||||||
|
|
||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
|
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
python-version: "3.12"
|
||||||
cache: 'pip' # caching pip dependencies
|
cache: 'pip' # caching pip dependencies
|
||||||
@@ -118,4 +141,4 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
chmod +x ./testing/test_webpages.sh
|
chmod +x ./testing/test_webpages.sh
|
||||||
chmod +x ./testing/test.sh
|
chmod +x ./testing/test.sh
|
||||||
./testing/test.sh "${{ github.event.pull_request.user.login == 'dependabot[bot]' }}"
|
./testing/test.sh
|
||||||
|
|||||||
2
.github/workflows/check_properties.yml
vendored
@@ -26,7 +26,7 @@ jobs:
|
|||||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
|
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
python-version: "3.12"
|
||||||
|
|
||||||
|
|||||||
19
.github/workflows/licenses-update.yml
vendored
@@ -24,7 +24,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate GitHub App Token
|
- name: Generate GitHub App Token
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@c1a285145b9d317df6ced56c09f525b5c2b6f755 # v1.11.1
|
uses: actions/create-github-app-token@136412a57a7081aa63c935a2cc2918f76c34f514 # v1.11.2
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.GH_APP_ID }}
|
app-id: ${{ secrets.GH_APP_ID }}
|
||||||
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
||||||
@@ -33,15 +33,24 @@ jobs:
|
|||||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
- name: Set up JDK 17
|
- name: Set up JDK 17
|
||||||
uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
|
uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
|
||||||
with:
|
with:
|
||||||
java-version: "17"
|
java-version: "17"
|
||||||
distribution: "adopt"
|
distribution: "adopt"
|
||||||
|
|
||||||
- uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4.2.2
|
- uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0
|
||||||
|
|
||||||
- name: Run Gradle Command
|
- name: check the licenses for compatibility
|
||||||
run: ./gradlew clean generateLicenseReport
|
run: ./gradlew clean checkLicense
|
||||||
|
|
||||||
|
- name: FAILED - check the licenses for compatibility
|
||||||
|
if: failure()
|
||||||
|
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
||||||
|
with:
|
||||||
|
name: dependencies-without-allowed-license.json
|
||||||
|
path: |
|
||||||
|
build/reports/dependency-license/dependencies-without-allowed-license.json
|
||||||
|
retention-days: 3
|
||||||
|
|
||||||
- name: Move and Rename License File
|
- name: Move and Rename License File
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
2
.github/workflows/manage-label.yml
vendored
@@ -23,7 +23,7 @@ jobs:
|
|||||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
- name: Run Labeler
|
- name: Run Labeler
|
||||||
uses: crazy-max/ghaction-github-labeler@b54af0c25861143e7c8813d7cbbf46d2c341680c # v5.1.0
|
uses: crazy-max/ghaction-github-labeler@31674a3852a9074f2086abcf1c53839d466a47e7 # v5.2.0
|
||||||
with:
|
with:
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
yaml-file: .github/labels.yml
|
yaml-file: .github/labels.yml
|
||||||
|
|||||||
8
.github/workflows/multiOSReleases.yml
vendored
@@ -58,12 +58,12 @@ jobs:
|
|||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
- name: Set up JDK 21
|
- name: Set up JDK 21
|
||||||
uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
|
uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
|
||||||
with:
|
with:
|
||||||
java-version: "21"
|
java-version: "21"
|
||||||
distribution: "temurin"
|
distribution: "temurin"
|
||||||
|
|
||||||
- uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4.2.2
|
- uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0
|
||||||
with:
|
with:
|
||||||
gradle-version: 8.12
|
gradle-version: 8.12
|
||||||
|
|
||||||
@@ -146,12 +146,12 @@ jobs:
|
|||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
- name: Set up JDK 21
|
- name: Set up JDK 21
|
||||||
uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
|
uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
|
||||||
with:
|
with:
|
||||||
java-version: "21"
|
java-version: "21"
|
||||||
distribution: "temurin"
|
distribution: "temurin"
|
||||||
|
|
||||||
- uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4.2.2
|
- uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0
|
||||||
with:
|
with:
|
||||||
gradle-version: 8.12
|
gradle-version: 8.12
|
||||||
|
|
||||||
|
|||||||
4
.github/workflows/pre_commit.yml
vendored
@@ -22,7 +22,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate GitHub App Token
|
- name: Generate GitHub App Token
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@c1a285145b9d317df6ced56c09f525b5c2b6f755 # v1.11.1
|
uses: actions/create-github-app-token@136412a57a7081aa63c935a2cc2918f76c34f514 # v1.11.2
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.GH_APP_ID }}
|
app-id: ${{ secrets.GH_APP_ID }}
|
||||||
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
||||||
@@ -42,7 +42,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
|
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
|
||||||
with:
|
with:
|
||||||
python-version: 3.12
|
python-version: 3.12
|
||||||
cache: 'pip' # caching pip dependencies
|
cache: 'pip' # caching pip dependencies
|
||||||
|
|||||||
8
.github/workflows/push-docker.yml
vendored
@@ -25,12 +25,12 @@ jobs:
|
|||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
- name: Set up JDK 17
|
- name: Set up JDK 17
|
||||||
uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
|
uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
|
||||||
with:
|
with:
|
||||||
java-version: "17"
|
java-version: "17"
|
||||||
distribution: "temurin"
|
distribution: "temurin"
|
||||||
|
|
||||||
- uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4.2.2
|
- uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0
|
||||||
with:
|
with:
|
||||||
gradle-version: 8.12
|
gradle-version: 8.12
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
id: buildx
|
id: buildx
|
||||||
uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0
|
uses: docker/setup-buildx-action@f7ce87c1d6bead3e36075b2ce75da1f6cc28aaca # v3.9.0
|
||||||
|
|
||||||
- name: Get version number
|
- name: Get version number
|
||||||
id: versionNumber
|
id: versionNumber
|
||||||
@@ -67,7 +67,7 @@ jobs:
|
|||||||
password: ${{ github.token }}
|
password: ${{ github.token }}
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@53851d14592bedcffcf25ea515637cff71ef929a # v3.3.0
|
uses: docker/setup-qemu-action@4574d27a4764455b42196d70a065bc6853246a25 # v3.4.0
|
||||||
|
|
||||||
- name: Convert repository owner to lowercase
|
- name: Convert repository owner to lowercase
|
||||||
id: repoowner
|
id: repoowner
|
||||||
|
|||||||
4
.github/workflows/releaseArtifacts.yml
vendored
@@ -30,12 +30,12 @@ jobs:
|
|||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
- name: Set up JDK 17
|
- name: Set up JDK 17
|
||||||
uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
|
uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
|
||||||
with:
|
with:
|
||||||
java-version: "17"
|
java-version: "17"
|
||||||
distribution: "temurin"
|
distribution: "temurin"
|
||||||
|
|
||||||
- uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4.2.2
|
- uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0
|
||||||
with:
|
with:
|
||||||
gradle-version: 8.12
|
gradle-version: 8.12
|
||||||
|
|
||||||
|
|||||||
2
.github/workflows/scorecards.yml
vendored
@@ -74,6 +74,6 @@ jobs:
|
|||||||
|
|
||||||
# Upload the results to GitHub's code scanning dashboard.
|
# Upload the results to GitHub's code scanning dashboard.
|
||||||
- name: "Upload to code-scanning"
|
- name: "Upload to code-scanning"
|
||||||
uses: github/codeql-action/upload-sarif@17a820bf2e43b47be2c72b39cc905417bc1ab6d0 # v3.28.6
|
uses: github/codeql-action/upload-sarif@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 # v3.28.9
|
||||||
with:
|
with:
|
||||||
sarif_file: results.sarif
|
sarif_file: results.sarif
|
||||||
|
|||||||
62
.github/workflows/sonarqube.yml
vendored
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
pull_request:
|
||||||
|
branches: [ "main" ]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pull-requests: read
|
||||||
|
actions: read
|
||||||
|
name: Run Sonarqube
|
||||||
|
jobs:
|
||||||
|
sonarqube:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
|
||||||
|
|
||||||
|
- name: Harden Runner
|
||||||
|
uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
|
||||||
|
with:
|
||||||
|
egress-policy: audit
|
||||||
|
|
||||||
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0
|
||||||
|
|
||||||
|
- name: Build and analyze with Gradle
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
||||||
|
DOCKER_ENABLE_SECURITY: true
|
||||||
|
STIRLING_PDF_DESKTOP_UI: true
|
||||||
|
run: |
|
||||||
|
./gradlew clean build sonar \
|
||||||
|
-Dsonar.projectKey=Stirling-Tools_Stirling-PDF \
|
||||||
|
-Dsonar.organization=stirling-tools \
|
||||||
|
-Dsonar.host.url=https://sonarcloud.io \
|
||||||
|
-Dsonar.login=${SONAR_TOKEN} \
|
||||||
|
-Dsonar.log.level=DEBUG \
|
||||||
|
--info
|
||||||
|
|
||||||
|
- name: Upload Problems Report on Failure
|
||||||
|
if: failure()
|
||||||
|
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
||||||
|
with:
|
||||||
|
name: gradle-problems-report
|
||||||
|
path: build/reports/problems/problems-report.html
|
||||||
|
retention-days: 7
|
||||||
|
|
||||||
|
- name: Upload Sonar Logs on Failure
|
||||||
|
if: failure()
|
||||||
|
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
||||||
|
with:
|
||||||
|
name: sonar-logs
|
||||||
|
path: |
|
||||||
|
.scannerwork/report-task.txt
|
||||||
|
build/sonar/
|
||||||
|
retention-days: 7
|
||||||
4
.github/workflows/swagger.yml
vendored
@@ -21,12 +21,12 @@ jobs:
|
|||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
- name: Set up JDK 17
|
- name: Set up JDK 17
|
||||||
uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
|
uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
|
||||||
with:
|
with:
|
||||||
java-version: "17"
|
java-version: "17"
|
||||||
distribution: "temurin"
|
distribution: "temurin"
|
||||||
|
|
||||||
- uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4.2.2
|
- uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0
|
||||||
|
|
||||||
- name: Generate Swagger documentation
|
- name: Generate Swagger documentation
|
||||||
run: ./gradlew generateOpenApiDocs
|
run: ./gradlew generateOpenApiDocs
|
||||||
|
|||||||
35
.github/workflows/sync_files.yml
vendored
@@ -8,8 +8,6 @@ on:
|
|||||||
paths:
|
paths:
|
||||||
- "build.gradle"
|
- "build.gradle"
|
||||||
- "README.md"
|
- "README.md"
|
||||||
- "gradle/verification-keyring.keys"
|
|
||||||
- "gradle/verification-metadata.xml"
|
|
||||||
- "src/main/resources/messages_*.properties"
|
- "src/main/resources/messages_*.properties"
|
||||||
- "src/main/resources/static/3rdPartyLicenses.json"
|
- "src/main/resources/static/3rdPartyLicenses.json"
|
||||||
- "scripts/ignore_translation.toml"
|
- "scripts/ignore_translation.toml"
|
||||||
@@ -32,7 +30,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate GitHub App Token
|
- name: Generate GitHub App Token
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@c1a285145b9d317df6ced56c09f525b5c2b6f755 # v1.11.1
|
uses: actions/create-github-app-token@136412a57a7081aa63c935a2cc2918f76c34f514 # v1.11.2
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.GH_APP_ID }}
|
app-id: ${{ secrets.GH_APP_ID }}
|
||||||
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
||||||
@@ -65,7 +63,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate GitHub App Token
|
- name: Generate GitHub App Token
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@c1a285145b9d317df6ced56c09f525b5c2b6f755 # v1.11.1
|
uses: actions/create-github-app-token@136412a57a7081aa63c935a2cc2918f76c34f514 # v1.11.2
|
||||||
with:
|
with:
|
||||||
app-id: ${{ vars.GH_APP_ID }}
|
app-id: ${{ vars.GH_APP_ID }}
|
||||||
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
||||||
@@ -73,7 +71,7 @@ jobs:
|
|||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
|
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
python-version: "3.12"
|
||||||
cache: 'pip' # caching pip dependencies
|
cache: 'pip' # caching pip dependencies
|
||||||
@@ -104,22 +102,6 @@ jobs:
|
|||||||
git add README.md
|
git add README.md
|
||||||
git diff --staged --quiet || git commit -m ":memo: Sync README.md" || echo "no changes"
|
git diff --staged --quiet || git commit -m ":memo: Sync README.md" || echo "no changes"
|
||||||
|
|
||||||
- name: Generate verification metadata with signatures and checksums
|
|
||||||
run: |
|
|
||||||
set -e
|
|
||||||
if [ -f ./gradle/verification-metadata.xml ]; then
|
|
||||||
rm ./gradle/verification-metadata.xml
|
|
||||||
fi
|
|
||||||
./gradlew clean dependencies buildEnvironment spotlessApply --write-verification-metadata sha256 help
|
|
||||||
./gradlew clean dependencies buildEnvironment spotlessApply --write-verification-metadata sha256,pgp --refresh-keys --export-keys --refresh-dependencies help
|
|
||||||
./gradlew clean build
|
|
||||||
|
|
||||||
- name: Run git add
|
|
||||||
run: |
|
|
||||||
git add gradle/verification-keyring.keys
|
|
||||||
git add gradle/verification-metadata.xml
|
|
||||||
git diff --staged --quiet || git commit -m ":memo: Generate verification metadata with signatures and checksums" || echo "no changes"
|
|
||||||
|
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@67ccf781d68cd99b580ae25a5c18a1cc84ffff1f # v7.0.6
|
uses: peter-evans/create-pull-request@67ccf781d68cd99b580ae25a5c18a1cc84ffff1f # v7.0.6
|
||||||
with:
|
with:
|
||||||
@@ -129,11 +111,11 @@ jobs:
|
|||||||
author: ${{ needs.read_bot_entries.outputs.committer }}
|
author: ${{ needs.read_bot_entries.outputs.committer }}
|
||||||
signoff: true
|
signoff: true
|
||||||
branch: sync_readme
|
branch: sync_readme
|
||||||
title: ":globe_with_meridians: Sync Translations + Update README Progress Table + Update Verification Metadata"
|
title: ":globe_with_meridians: Sync Translations + Update README Progress Table"
|
||||||
body: |
|
body: |
|
||||||
### Description of Changes
|
### Description of Changes
|
||||||
|
|
||||||
This Pull Request was automatically generated to synchronize updates to translation files, verification metadata, and documentation. Below are the details of the changes made:
|
This Pull Request was automatically generated to synchronize updates to translation files and documentation. Below are the details of the changes made:
|
||||||
|
|
||||||
#### **1. Synchronization of Translation Files**
|
#### **1. Synchronization of Translation Files**
|
||||||
- Updated translation files (`messages_*.properties`) to reflect changes in the reference file `messages_en_GB.properties`.
|
- Updated translation files (`messages_*.properties`) to reflect changes in the reference file `messages_en_GB.properties`.
|
||||||
@@ -145,14 +127,9 @@ jobs:
|
|||||||
- Added a summary of the current translation status for all supported languages.
|
- Added a summary of the current translation status for all supported languages.
|
||||||
- Included up-to-date statistics on translation coverage.
|
- Included up-to-date statistics on translation coverage.
|
||||||
|
|
||||||
#### **3. Verification Metadata Updates**
|
|
||||||
- Generated or refreshed the `verification-keyring.keys` and `verification-metadata.xml` files.
|
|
||||||
- Included the latest dependency signatures and checksums to enhance the build's integrity.
|
|
||||||
|
|
||||||
#### **Why these changes are necessary**
|
#### **Why these changes are necessary**
|
||||||
- Keeps translation files aligned with the latest reference updates.
|
- Keeps translation files aligned with the latest reference updates.
|
||||||
- Ensures the documentation reflects the current translation progress.
|
- Ensures the documentation reflects the current translation progress.
|
||||||
- Strengthens dependency verification for a more secure build process.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -166,5 +143,3 @@ jobs:
|
|||||||
add-paths: |
|
add-paths: |
|
||||||
README.md
|
README.md
|
||||||
src/main/resources/messages_*.properties
|
src/main/resources/messages_*.properties
|
||||||
gradle/verification-keyring.keys
|
|
||||||
gradle/verification-metadata.xml
|
|
||||||
|
|||||||
4
.github/workflows/testdriver.yml
vendored
@@ -20,7 +20,7 @@ jobs:
|
|||||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
- name: Set up JDK
|
- name: Set up JDK
|
||||||
uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
|
uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
|
||||||
with:
|
with:
|
||||||
java-version: '17'
|
java-version: '17'
|
||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
@@ -31,7 +31,7 @@ jobs:
|
|||||||
DOCKER_ENABLE_SECURITY: false
|
DOCKER_ENABLE_SECURITY: false
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0
|
uses: docker/setup-buildx-action@f7ce87c1d6bead3e36075b2ce75da1f6cc28aaca # v3.9.0
|
||||||
|
|
||||||
- name: Get version number
|
- name: Get version number
|
||||||
id: versionNumber
|
id: versionNumber
|
||||||
|
|||||||
1
.gitignore
vendored
@@ -140,6 +140,7 @@ venv.bak/
|
|||||||
# VS Code
|
# VS Code
|
||||||
/.vscode/**/*
|
/.vscode/**/*
|
||||||
!/.vscode/settings.json
|
!/.vscode/settings.json
|
||||||
|
!/.vscode/extensions.json
|
||||||
|
|
||||||
# IntelliJ IDEA
|
# IntelliJ IDEA
|
||||||
.idea/
|
.idea/
|
||||||
|
|||||||
24
.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"elagil.pre-commit-helper", // Support for pre-commit hooks to enforce code quality
|
||||||
|
"josevseb.google-java-format-for-vs-code", // Google Java code formatter to follow the Google Java Style Guide
|
||||||
|
"ms-python.black-formatter", // Python code formatter using Black
|
||||||
|
"ms-python.flake8", // Flake8 linter for Python to enforce code quality
|
||||||
|
"ms-python.python", // Official Microsoft Python extension with IntelliSense, debugging, and Jupyter support
|
||||||
|
// "ms-vscode-remote.remote-containers", // Support for remote development with containers (Docker, Dev Containers)
|
||||||
|
// "ms-vscode-remote.vscode-remote-extensionpack", // Remote Development Pack for SSH, WSL, and Containers
|
||||||
|
"Oracle.oracle-java", // Oracle Java extension with additional features for Java development
|
||||||
|
"redhat.java", // Java support by Red Hat with IntelliSense, debugging, and code navigation
|
||||||
|
"shengchen.vscode-checkstyle", // Checkstyle integration for Java code quality checks
|
||||||
|
"streetsidesoftware.code-spell-checker", // Spell checker for code to avoid typos
|
||||||
|
"vmware.vscode-boot-dev-pack", // Developer tools for Spring Boot by VMware
|
||||||
|
"vmware.vscode-spring-boot", // Spring Boot tools by VMware for enhanced Spring development
|
||||||
|
"vscjava.vscode-gradle", // Gradle extension for build and automation support
|
||||||
|
"vscjava.vscode-java-debug", // Debugging support for Java projects
|
||||||
|
"vscjava.vscode-java-dependency", // Java dependency management within VS Code
|
||||||
|
"vscjava.vscode-java-pack", // Java Extension Pack with essential Java tools for VS Code
|
||||||
|
"vscjava.vscode-java-test", // Java test framework for running and debugging tests in VS Code
|
||||||
|
"vscjava.vscode-spring-boot-dashboard", // Spring Boot dashboard for managing and visualizing Spring Boot applications
|
||||||
|
"vscjava.vscode-spring-initializr" // Support for Spring Initializr to create new Spring projects
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -39,6 +39,16 @@ Stirling-PDF is built using:
|
|||||||
2. Install Docker and JDK17 if not already installed.
|
2. Install Docker and JDK17 if not already installed.
|
||||||
|
|
||||||
3. Install a recommended Java IDE such as Eclipse, IntelliJ, or VSCode
|
3. Install a recommended Java IDE such as Eclipse, IntelliJ, or VSCode
|
||||||
|
1. Only VSCode
|
||||||
|
1. Open VS Code.
|
||||||
|
2. When prompted, install the recommended extensions.
|
||||||
|
3. Alternatively, open the command palette (`Ctrl + Shift + P` or `Cmd + Shift + P` on macOS) and run:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
Extensions: Show Recommended Extensions
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Install the required extensions from the list.
|
||||||
|
|
||||||
4. Lombok Setup
|
4. Lombok Setup
|
||||||
Stirling-PDF uses Lombok to reduce boilerplate code. Some IDEs, like Eclipse, don't support Lombok out of the box. To set up Lombok in your development environment:
|
Stirling-PDF uses Lombok to reduce boilerplate code. Some IDEs, like Eclipse, don't support Lombok out of the box. To set up Lombok in your development environment:
|
||||||
@@ -575,42 +585,3 @@ In your Thymeleaf templates, use the `#{key}` syntax to reference the new transl
|
|||||||
```
|
```
|
||||||
|
|
||||||
Remember, never hard-code text in your templates or Java code. Always use translation keys to ensure proper localization.
|
Remember, never hard-code text in your templates or Java code. Always use translation keys to ensure proper localization.
|
||||||
|
|
||||||
|
|
||||||
## Managing Dependencies
|
|
||||||
|
|
||||||
When adding new dependencies or updating existing ones in Stirling-PDF, follow these steps to ensure proper verification and security:
|
|
||||||
|
|
||||||
1. Update the dependency in `build.gradle`:
|
|
||||||
```groovy
|
|
||||||
dependencies {
|
|
||||||
// Add or update your dependency
|
|
||||||
implementation "com.example:new-library:1.2.3"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Generate new verification metadata and keys:
|
|
||||||
```bash
|
|
||||||
# Generate verification metadata with signatures and checksums
|
|
||||||
./gradlew clean dependencies buildEnvironment spotlessApply --write-verification-metadata sha256,pgp
|
|
||||||
|
|
||||||
# Export the .keys file
|
|
||||||
./gradlew --export-keys
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Files to commit:
|
|
||||||
- `build.gradle` - Your dependency changes
|
|
||||||
- `gradle/verification-metadata.xml` - Contains verification rules and checksums
|
|
||||||
- `gradle/verification-keyring.keys` - Contains PGP keys in text format
|
|
||||||
|
|
||||||
4. Verify the build works with the new verification:
|
|
||||||
```bash
|
|
||||||
./gradlew build
|
|
||||||
```
|
|
||||||
|
|
||||||
5. Before committing, check:
|
|
||||||
- Verify any new BOM files are properly handled in verification metadata
|
|
||||||
- Review the changes in `verification-metadata.xml` to ensure they match your dependency updates
|
|
||||||
|
|
||||||
This ensures dependencies are properly verified and secure while maintaining transparency in the repository.
|
|
||||||
|
|
||||||
|
|||||||
56
Dockerfile
@@ -39,41 +39,43 @@ ENV DOCKER_ENABLE_SECURITY=false \
|
|||||||
|
|
||||||
|
|
||||||
# JDK for app
|
# JDK for app
|
||||||
RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /etc/apk/repositories && \
|
RUN echo "@main https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /etc/apk/repositories && \
|
||||||
echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/community" | tee -a /etc/apk/repositories && \
|
echo "@community https://dl-cdn.alpinelinux.org/alpine/edge/community" | tee -a /etc/apk/repositories && \
|
||||||
echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/testing" | tee -a /etc/apk/repositories && \
|
echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/testing" | tee -a /etc/apk/repositories && \
|
||||||
apk upgrade --no-cache -a && \
|
apk upgrade --no-cache -a && \
|
||||||
apk add --no-cache \
|
apk add --no-cache \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
tzdata \
|
tzdata \
|
||||||
tini \
|
tini \
|
||||||
bash \
|
bash \
|
||||||
curl \
|
curl \
|
||||||
qpdf \
|
qpdf \
|
||||||
shadow \
|
shadow \
|
||||||
su-exec \
|
su-exec \
|
||||||
openssl \
|
openssl \
|
||||||
openssl-dev \
|
openssl-dev \
|
||||||
openjdk21-jre \
|
openjdk21-jre \
|
||||||
# Doc conversion
|
# Doc conversion
|
||||||
libreoffice \
|
gcompat \
|
||||||
# pdftohtml
|
libc6-compat \
|
||||||
poppler-utils \
|
libreoffice \
|
||||||
# OCR MY PDF (unpaper for descew and other advanced features)
|
# pdftohtml
|
||||||
tesseract-ocr-data-eng \
|
poppler-utils \
|
||||||
# CV
|
# OCR MY PDF (unpaper for descew and other advanced features)
|
||||||
py3-opencv \
|
tesseract-ocr-data-eng \
|
||||||
# python3/pip
|
# CV
|
||||||
python3 \
|
py3-opencv \
|
||||||
py3-pip && \
|
python3 \
|
||||||
# uno unoconv and HTML
|
py3-unoconv@testing \
|
||||||
pip install --break-system-packages --no-cache-dir --upgrade unoconv WeasyPrint pdf2image pillow && \
|
py3-pillow@testing \
|
||||||
|
py3-pdf2image@testing \
|
||||||
|
weasyprint@community && \
|
||||||
mv /usr/share/tessdata /usr/share/tessdata-original && \
|
mv /usr/share/tessdata /usr/share/tessdata-original && \
|
||||||
mkdir -p $HOME /configs /logs /customFiles /pipeline/watchedFolders /pipeline/finishedFolders && \
|
mkdir -p $HOME /configs /logs /customFiles /pipeline/watchedFolders /pipeline/finishedFolders && \
|
||||||
fc-cache -f -v && \
|
fc-cache -f -v && \
|
||||||
chmod +x /scripts/* && \
|
chmod +x /scripts/* && \
|
||||||
chmod +x /scripts/init.sh && \
|
chmod +x /scripts/init.sh && \
|
||||||
# User permissions
|
# User permissions
|
||||||
addgroup -S stirlingpdfgroup && adduser -S stirlingpdfuser -G stirlingpdfgroup && \
|
addgroup -S stirlingpdfgroup && adduser -S stirlingpdfuser -G stirlingpdfgroup && \
|
||||||
chown -R stirlingpdfuser:stirlingpdfgroup $HOME /scripts /usr/share/fonts/opentype/noto /configs /customFiles /pipeline && \
|
chown -R stirlingpdfuser:stirlingpdfgroup $HOME /scripts /usr/share/fonts/opentype/noto /configs /customFiles /pipeline && \
|
||||||
chown stirlingpdfuser:stirlingpdfgroup /app.jar
|
chown stirlingpdfuser:stirlingpdfgroup /app.jar
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ COPY . .
|
|||||||
|
|
||||||
# Build the application with DOCKER_ENABLE_SECURITY=false
|
# Build the application with DOCKER_ENABLE_SECURITY=false
|
||||||
RUN DOCKER_ENABLE_SECURITY=true \
|
RUN DOCKER_ENABLE_SECURITY=true \
|
||||||
./gradlew clean build
|
./gradlew clean build
|
||||||
|
|
||||||
# Main stage
|
# Main stage
|
||||||
FROM alpine:3.21.2@sha256:56fa17d2a7e7f168a043a2712e63aed1f8543aeafdcee47c58dcffe38ed51099
|
FROM alpine:3.21.2@sha256:56fa17d2a7e7f168a043a2712e63aed1f8543aeafdcee47c58dcffe38ed51099
|
||||||
@@ -41,42 +41,46 @@ ENV DOCKER_ENABLE_SECURITY=false \
|
|||||||
|
|
||||||
|
|
||||||
# JDK for app
|
# JDK for app
|
||||||
RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /etc/apk/repositories && \
|
RUN echo "@main https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /etc/apk/repositories && \
|
||||||
echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/community" | tee -a /etc/apk/repositories && \
|
echo "@community https://dl-cdn.alpinelinux.org/alpine/edge/community" | tee -a /etc/apk/repositories && \
|
||||||
echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/testing" | tee -a /etc/apk/repositories && \
|
echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/testing" | tee -a /etc/apk/repositories && \
|
||||||
apk upgrade --no-cache -a && \
|
apk upgrade --no-cache -a && \
|
||||||
apk add --no-cache \
|
apk add --no-cache \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
tzdata \
|
tzdata \
|
||||||
tini \
|
tini \
|
||||||
bash \
|
bash \
|
||||||
curl \
|
curl \
|
||||||
shadow \
|
shadow \
|
||||||
su-exec \
|
su-exec \
|
||||||
openssl \
|
openssl \
|
||||||
openssl-dev \
|
openssl-dev \
|
||||||
openjdk21-jre \
|
openjdk21-jre \
|
||||||
# Doc conversion
|
# Doc conversion
|
||||||
libreoffice \
|
gcompat \
|
||||||
# pdftohtml
|
libc6-compat \
|
||||||
poppler-utils \
|
libreoffice \
|
||||||
# OCR MY PDF (unpaper for descew and other advanced featues)
|
# pdftohtml
|
||||||
qpdf \
|
poppler-utils \
|
||||||
tesseract-ocr-data-eng \
|
# OCR MY PDF (unpaper for descew and other advanced featues)
|
||||||
font-terminus font-dejavu font-noto font-noto-cjk font-awesome font-noto-extra \
|
qpdf \
|
||||||
# CV
|
tesseract-ocr-data-eng \
|
||||||
py3-opencv \
|
font-terminus font-dejavu font-noto font-noto-cjk font-awesome font-noto-extra \
|
||||||
# python3/pip
|
# CV
|
||||||
python3 \
|
py3-opencv \
|
||||||
py3-pip && \
|
# python3/pip
|
||||||
# uno unoconv and HTML
|
python3 \
|
||||||
pip install --break-system-packages --no-cache-dir --upgrade unoconv WeasyPrint pdf2image pillow && \
|
py3-unoconv@testing \
|
||||||
|
py3-pillow@testing \
|
||||||
|
py3-pdf2image@testing \
|
||||||
|
weasyprint@community && \
|
||||||
|
# uno unoconv and HTML
|
||||||
mv /usr/share/tessdata /usr/share/tessdata-original && \
|
mv /usr/share/tessdata /usr/share/tessdata-original && \
|
||||||
mkdir -p $HOME /configs /logs /customFiles /pipeline/watchedFolders /pipeline/finishedFolders && \
|
mkdir -p $HOME /configs /logs /customFiles /pipeline/watchedFolders /pipeline/finishedFolders && \
|
||||||
fc-cache -f -v && \
|
fc-cache -f -v && \
|
||||||
chmod +x /scripts/* && \
|
chmod +x /scripts/* && \
|
||||||
chmod +x /scripts/init.sh && \
|
chmod +x /scripts/init.sh && \
|
||||||
# User permissions
|
# User permissions
|
||||||
addgroup -S stirlingpdfgroup && adduser -S stirlingpdfuser -G stirlingpdfgroup && \
|
addgroup -S stirlingpdfgroup && adduser -S stirlingpdfuser -G stirlingpdfgroup && \
|
||||||
chown -R stirlingpdfuser:stirlingpdfgroup $HOME /scripts /usr/share/fonts/opentype/noto /configs /customFiles /pipeline && \
|
chown -R stirlingpdfuser:stirlingpdfgroup $HOME /scripts /usr/share/fonts/opentype/noto /configs /customFiles /pipeline && \
|
||||||
chown stirlingpdfuser:stirlingpdfgroup /app.jar
|
chown stirlingpdfuser:stirlingpdfgroup /app.jar
|
||||||
|
|||||||
@@ -18,9 +18,7 @@ Any SVG flags are fine; most of the current ones were sourced from [here](https:
|
|||||||
For example, to add Polish, you would add:
|
For example, to add Polish, you would add:
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="pl_PL">
|
<a th:if="${#lists.isEmpty(@languages) or #lists.contains(@languages, 'pl_PL')}" class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="pl_PL"> <img th:src="@{'/images/flags/pl.svg'}" alt="icon" width="20" height="15"> Polski</a>
|
||||||
<img src="images/flags/pl.svg" alt="icon" width="20" height="15"> Polski
|
|
||||||
</a>
|
|
||||||
```
|
```
|
||||||
|
|
||||||
The `data-bs-language-code` is the code used to reference the file in the next step.
|
The `data-bs-language-code` is the code used to reference the file in the next step.
|
||||||
|
|||||||
22
README.md
@@ -117,45 +117,45 @@ Stirling-PDF currently supports 39 languages!
|
|||||||
|
|
||||||
| Language | Progress |
|
| Language | Progress |
|
||||||
| -------------------------------------------- | -------------------------------------- |
|
| -------------------------------------------- | -------------------------------------- |
|
||||||
| Arabic (العربية) (ar_AR) |  |
|
| Arabic (العربية) (ar_AR) |  |
|
||||||
| Azerbaijani (Azərbaycan Dili) (az_AZ) |  |
|
| Azerbaijani (Azərbaycan Dili) (az_AZ) |  |
|
||||||
| Basque (Euskara) (eu_ES) |  |
|
| Basque (Euskara) (eu_ES) |  |
|
||||||
| Bulgarian (Български) (bg_BG) |  |
|
| Bulgarian (Български) (bg_BG) |  |
|
||||||
| Catalan (Català) (ca_CA) |  |
|
| Catalan (Català) (ca_CA) |  |
|
||||||
| Croatian (Hrvatski) (hr_HR) |  |
|
| Croatian (Hrvatski) (hr_HR) |  |
|
||||||
| Czech (Česky) (cs_CZ) |  |
|
| Czech (Česky) (cs_CZ) |  |
|
||||||
| Danish (Dansk) (da_DK) |  |
|
| Danish (Dansk) (da_DK) |  |
|
||||||
| Dutch (Nederlands) (nl_NL) |  |
|
| Dutch (Nederlands) (nl_NL) |  |
|
||||||
| English (English) (en_GB) |  |
|
| English (English) (en_GB) |  |
|
||||||
| English (US) (en_US) |  |
|
| English (US) (en_US) |  |
|
||||||
| French (Français) (fr_FR) |  |
|
| French (Français) (fr_FR) |  |
|
||||||
| German (Deutsch) (de_DE) |  |
|
| German (Deutsch) (de_DE) |  |
|
||||||
| Greek (Ελληνικά) (el_GR) |  |
|
| Greek (Ελληνικά) (el_GR) |  |
|
||||||
| Hindi (हिंदी) (hi_IN) |  |
|
| Hindi (हिंदी) (hi_IN) |  |
|
||||||
| Hungarian (Magyar) (hu_HU) |  |
|
| Hungarian (Magyar) (hu_HU) |  |
|
||||||
| Indonesian (Bahasa Indonesia) (id_ID) |  |
|
| Indonesian (Bahasa Indonesia) (id_ID) |  |
|
||||||
| Irish (Gaeilge) (ga_IE) |  |
|
| Irish (Gaeilge) (ga_IE) |  |
|
||||||
| Italian (Italiano) (it_IT) |  |
|
| Italian (Italiano) (it_IT) |  |
|
||||||
| Japanese (日本語) (ja_JP) |  |
|
| Japanese (日本語) (ja_JP) |  |
|
||||||
| Korean (한국어) (ko_KR) |  |
|
| Korean (한국어) (ko_KR) |  |
|
||||||
| Norwegian (Norsk) (no_NB) |  |
|
| Norwegian (Norsk) (no_NB) |  |
|
||||||
| Persian (فارسی) (fa_IR) |  |
|
| Persian (فارسی) (fa_IR) |  |
|
||||||
| Polish (Polski) (pl_PL) |  |
|
| Polish (Polski) (pl_PL) |  |
|
||||||
| Portuguese (Português) (pt_PT) |  |
|
| Portuguese (Português) (pt_PT) |  |
|
||||||
| Portuguese Brazilian (Português) (pt_BR) |  |
|
| Portuguese Brazilian (Português) (pt_BR) |  |
|
||||||
| Romanian (Română) (ro_RO) |  |
|
| Romanian (Română) (ro_RO) |  |
|
||||||
| Russian (Русский) (ru_RU) |  |
|
| Russian (Русский) (ru_RU) |  |
|
||||||
| Serbian Latin alphabet (Srpski) (sr_LATN_RS) |  |
|
| Serbian Latin alphabet (Srpski) (sr_LATN_RS) |  |
|
||||||
| Simplified Chinese (简体中文) (zh_CN) |  |
|
| Simplified Chinese (简体中文) (zh_CN) |  |
|
||||||
| Slovakian (Slovensky) (sk_SK) |  |
|
| Slovakian (Slovensky) (sk_SK) |  |
|
||||||
| Slovenian (Slovenščina) (sl_SI) |  |
|
| Slovenian (Slovenščina) (sl_SI) |  |
|
||||||
| Spanish (Español) (es_ES) |  |
|
| Spanish (Español) (es_ES) |  |
|
||||||
| Swedish (Svenska) (sv_SE) |  |
|
| Swedish (Svenska) (sv_SE) |  |
|
||||||
| Thai (ไทย) (th_TH) |  |
|
| Thai (ไทย) (th_TH) |  |
|
||||||
| Tibetan (བོད་ཡིག་) (zh_BO) |  |
|
| Tibetan (བོད་ཡིག་) (zh_BO) |  |
|
||||||
| Traditional Chinese (繁體中文) (zh_TW) |  |
|
| Traditional Chinese (繁體中文) (zh_TW) |  |
|
||||||
| Turkish (Türkçe) (tr_TR) |  |
|
| Turkish (Türkçe) (tr_TR) |  |
|
||||||
| Ukrainian (Українська) (uk_UA) |  |
|
| Ukrainian (Українська) (uk_UA) |  |
|
||||||
| Vietnamese (Tiếng Việt) (vi_VN) |  |
|
| Vietnamese (Tiếng Việt) (vi_VN) |  |
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
164
allowed-licenses.json
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
{
|
||||||
|
"allowedLicenses": [
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "BSD License"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "The BSD License"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "BSD 2-Clause License"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "The 2-Clause BSD License"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "BSD-3-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "The BSD 3-Clause License (BSD3)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "BSD-4 License"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "MIT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "MIT License"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "The MIT License"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.github.jai-imageio:jai-imageio-core",
|
||||||
|
"moduleLicense": "LICENSE.txt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.github.jai-imageio:jai-imageio-jpeg2000",
|
||||||
|
"moduleLicense": "LICENSE-JJ2000.txt, LICENSE-Sun.txt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "Apache 2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "Apache 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "Apache-2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "Apache-2.0 License"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "Apache License 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "Apache License Version 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "Apache License, Version 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "The Apache License, Version 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "The Apache Software License, Version 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.nimbusds:oauth2-oidc-sdk",
|
||||||
|
"moduleLicense": "\"Apache License, version 2.0\";link=\"https://www.apache.org/licenses/LICENSE-2.0.html\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "MPL 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "UnboundID SCIM2 SDK Free Use License"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "GPL2 w/ CPE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "GPLv2+CE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "GNU GENERAL PUBLIC LICENSE, Version 2 + Classpath Exception"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.martiansoftware:jsap",
|
||||||
|
"moduleLicense": "LGPL"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.hibernate.orm:hibernate-core",
|
||||||
|
"moduleLicense": "GNU Library General Public License v2.1 or later"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "Eclipse Public License - v 1.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "Eclipse Public License v. 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "Eclipse Public License - v 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "Eclipse Public License, Version 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "Ubuntu Font Licence 1.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "Bouncy Castle Licence"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "Public Domain, per Creative Commons CC0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": ".*",
|
||||||
|
"moduleLicense": "The W3C License"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
18
build.gradle
@@ -8,7 +8,8 @@ plugins {
|
|||||||
id "com.diffplug.spotless" version "7.0.2"
|
id "com.diffplug.spotless" version "7.0.2"
|
||||||
id "com.github.jk1.dependency-license-report" version "2.9"
|
id "com.github.jk1.dependency-license-report" version "2.9"
|
||||||
//id "nebula.lint" version "19.0.3"
|
//id "nebula.lint" version "19.0.3"
|
||||||
id("org.panteleyev.jpackageplugin") version "1.6.0"
|
id("org.panteleyev.jpackageplugin") version "1.6.1"
|
||||||
|
id "org.sonarqube" version "6.0.1.5171"
|
||||||
}
|
}
|
||||||
|
|
||||||
import com.github.jk1.license.render.*
|
import com.github.jk1.license.render.*
|
||||||
@@ -25,7 +26,7 @@ ext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "stirling.software"
|
group = "stirling.software"
|
||||||
version = "0.40.0"
|
version = "0.41.0"
|
||||||
|
|
||||||
java {
|
java {
|
||||||
// 17 is lowest but we support and recommend 21
|
// 17 is lowest but we support and recommend 21
|
||||||
@@ -34,13 +35,13 @@ java {
|
|||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
maven { url = "https://jitpack.io" }
|
|
||||||
maven { url = "https://build.shibboleth.net/maven/releases" }
|
maven { url = "https://build.shibboleth.net/maven/releases" }
|
||||||
maven { url = "https://maven.pkg.github.com/jcefmaven/jcefmaven" }
|
maven { url = "https://maven.pkg.github.com/jcefmaven/jcefmaven" }
|
||||||
}
|
}
|
||||||
|
|
||||||
licenseReport {
|
licenseReport {
|
||||||
renderers = [new JsonReportRenderer()]
|
renderers = [new JsonReportRenderer()]
|
||||||
|
allowedLicensesFile = new File("$projectDir/allowed-licenses.json")
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
@@ -268,6 +269,17 @@ spotless {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sonar {
|
||||||
|
properties {
|
||||||
|
property "sonar.projectKey", "Stirling-Tools_Stirling-PDF"
|
||||||
|
property "sonar.organization", "stirling-tools"
|
||||||
|
|
||||||
|
property "sonar.exclusions", "**/build-wrapper-dump.json, src/main/java/org/apache/**, src/main/resources/static/pdfjs/**, src/main/resources/static/pdfjs-legacy/**, src/main/resources/static/js/thirdParty/**"
|
||||||
|
property "sonar.coverage.exclusions", "src/main/java/org/apache/**, src/main/resources/static/pdfjs/**, src/main/resources/static/pdfjs-legacy/**, src/main/resources/static/js/thirdParty/**"
|
||||||
|
property "sonar.cpd.exclusions", "src/main/java/org/apache/**, src/main/resources/static/pdfjs/**, src/main/resources/static/pdfjs-legacy/**, src/main/resources/static/js/thirdParty/**"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//gradleLint {
|
//gradleLint {
|
||||||
// rules=['unused-dependency']
|
// rules=['unused-dependency']
|
||||||
// }
|
// }
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 242 KiB After Width: | Height: | Size: 169 KiB |
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 118 KiB |
@@ -4,6 +4,7 @@ import java.io.IOException;
|
|||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
@@ -74,6 +75,11 @@ public class AppConfig {
|
|||||||
: "null";
|
: "null";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean(name = "languages")
|
||||||
|
public List<String> languages() {
|
||||||
|
return applicationProperties.getUi().getLanguages();
|
||||||
|
}
|
||||||
|
|
||||||
@Bean(name = "navBarText")
|
@Bean(name = "navBarText")
|
||||||
public String navBarText() {
|
public String navBarText() {
|
||||||
String defaultNavBar =
|
String defaultNavBar =
|
||||||
|
|||||||
@@ -265,9 +265,6 @@ public class EndpointConfiguration {
|
|||||||
// Pdftohtml dependent endpoints
|
// Pdftohtml dependent endpoints
|
||||||
addEndpointToGroup("Pdftohtml", "pdf-to-html");
|
addEndpointToGroup("Pdftohtml", "pdf-to-html");
|
||||||
addEndpointToGroup("Pdftohtml", "pdf-to-markdown");
|
addEndpointToGroup("Pdftohtml", "pdf-to-markdown");
|
||||||
|
|
||||||
// disabled for now while we resolve issues
|
|
||||||
disableEndpoint("pdf-to-pdfa");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processEnvironmentConfigs() {
|
private void processEnvironmentConfigs() {
|
||||||
|
|||||||
@@ -2,7 +2,9 @@ package stirling.software.SPDF.controller.api;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
@@ -26,11 +28,14 @@ public class AdditionalLanguageJsController {
|
|||||||
@Hidden
|
@Hidden
|
||||||
@GetMapping(value = "/additionalLanguageCode.js", produces = "application/javascript")
|
@GetMapping(value = "/additionalLanguageCode.js", produces = "application/javascript")
|
||||||
public void generateAdditionalLanguageJs(HttpServletResponse response) throws IOException {
|
public void generateAdditionalLanguageJs(HttpServletResponse response) throws IOException {
|
||||||
List<String> supportedLanguages = languageService.getSupportedLanguages();
|
Set<String> supportedLanguages = languageService.getSupportedLanguages();
|
||||||
response.setContentType("application/javascript");
|
response.setContentType("application/javascript");
|
||||||
PrintWriter writer = response.getWriter();
|
PrintWriter writer = response.getWriter();
|
||||||
// Erstelle das JavaScript dynamisch
|
// Erstelle das JavaScript dynamisch
|
||||||
writer.println("const supportedLanguages = " + toJsonArray(supportedLanguages) + ";");
|
writer.println(
|
||||||
|
"const supportedLanguages = "
|
||||||
|
+ toJsonArray(new ArrayList<>(supportedLanguages))
|
||||||
|
+ ";");
|
||||||
// Generiere die `getDetailedLanguageCode`-Funktion
|
// Generiere die `getDetailedLanguageCode`-Funktion
|
||||||
writer.println(
|
writer.println(
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -100,6 +100,8 @@ public class SplitPdfBySectionsController {
|
|||||||
|
|
||||||
if (sectionNum == horiz * verti) pageNum++;
|
if (sectionNum == horiz * verti) pageNum++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
zipOut.finish();
|
||||||
data = Files.readAllBytes(zipFile);
|
data = Files.readAllBytes(zipFile);
|
||||||
return WebResponseUtils.bytesToWebResponse(
|
return WebResponseUtils.bytesToWebResponse(
|
||||||
data, filename + "_split.zip", MediaType.APPLICATION_OCTET_STREAM);
|
data, filename + "_split.zip", MediaType.APPLICATION_OCTET_STREAM);
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import io.github.pixee.security.Filenames;
|
|||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
|
||||||
|
import stirling.software.SPDF.model.ApplicationProperties;
|
||||||
import stirling.software.SPDF.model.api.converters.HTMLToPdfRequest;
|
import stirling.software.SPDF.model.api.converters.HTMLToPdfRequest;
|
||||||
import stirling.software.SPDF.service.CustomPDDocumentFactory;
|
import stirling.software.SPDF.service.CustomPDDocumentFactory;
|
||||||
import stirling.software.SPDF.utils.FileToPdf;
|
import stirling.software.SPDF.utils.FileToPdf;
|
||||||
@@ -27,19 +28,23 @@ public class ConvertHtmlToPDF {
|
|||||||
|
|
||||||
private final CustomPDDocumentFactory pdfDocumentFactory;
|
private final CustomPDDocumentFactory pdfDocumentFactory;
|
||||||
|
|
||||||
|
private final ApplicationProperties applicationProperties;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public ConvertHtmlToPDF(
|
public ConvertHtmlToPDF(
|
||||||
CustomPDDocumentFactory pdfDocumentFactory,
|
CustomPDDocumentFactory pdfDocumentFactory,
|
||||||
@Qualifier("bookAndHtmlFormatsInstalled") boolean bookAndHtmlFormatsInstalled) {
|
@Qualifier("bookAndHtmlFormatsInstalled") boolean bookAndHtmlFormatsInstalled,
|
||||||
|
ApplicationProperties applicationProperties) {
|
||||||
this.pdfDocumentFactory = pdfDocumentFactory;
|
this.pdfDocumentFactory = pdfDocumentFactory;
|
||||||
this.bookAndHtmlFormatsInstalled = bookAndHtmlFormatsInstalled;
|
this.bookAndHtmlFormatsInstalled = bookAndHtmlFormatsInstalled;
|
||||||
|
this.applicationProperties = applicationProperties;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping(consumes = "multipart/form-data", value = "/html/pdf")
|
@PostMapping(consumes = "multipart/form-data", value = "/html/pdf")
|
||||||
@Operation(
|
@Operation(
|
||||||
summary = "Convert an HTML or ZIP (containing HTML and CSS) to PDF",
|
summary = "Convert an HTML or ZIP (containing HTML and CSS) to PDF",
|
||||||
description =
|
description =
|
||||||
"This endpoint takes an HTML or ZIP file input and converts it to a PDF format.")
|
"This endpoint takes an HTML or ZIP file input and converts it to a PDF format. Input:HTML Output:PDF Type:SISO")
|
||||||
public ResponseEntity<byte[]> HtmlToPdf(@ModelAttribute HTMLToPdfRequest request)
|
public ResponseEntity<byte[]> HtmlToPdf(@ModelAttribute HTMLToPdfRequest request)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
MultipartFile fileInput = request.getFileInput();
|
MultipartFile fileInput = request.getFileInput();
|
||||||
@@ -54,12 +59,17 @@ public class ConvertHtmlToPDF {
|
|||||||
|| (!originalFilename.endsWith(".html") && !originalFilename.endsWith(".zip"))) {
|
|| (!originalFilename.endsWith(".html") && !originalFilename.endsWith(".zip"))) {
|
||||||
throw new IllegalArgumentException("File must be either .html or .zip format.");
|
throw new IllegalArgumentException("File must be either .html or .zip format.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean disableSanitize =
|
||||||
|
Boolean.TRUE.equals(applicationProperties.getSystem().getDisableSanitize());
|
||||||
|
|
||||||
byte[] pdfBytes =
|
byte[] pdfBytes =
|
||||||
FileToPdf.convertHtmlToPdf(
|
FileToPdf.convertHtmlToPdf(
|
||||||
request,
|
request,
|
||||||
fileInput.getBytes(),
|
fileInput.getBytes(),
|
||||||
originalFilename,
|
originalFilename,
|
||||||
bookAndHtmlFormatsInstalled);
|
bookAndHtmlFormatsInstalled,
|
||||||
|
disableSanitize);
|
||||||
|
|
||||||
pdfBytes = pdfDocumentFactory.createNewBytesBasedOnOldDocument(pdfBytes);
|
pdfBytes = pdfDocumentFactory.createNewBytesBasedOnOldDocument(pdfBytes);
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import io.github.pixee.security.Filenames;
|
|||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
|
||||||
|
import stirling.software.SPDF.model.ApplicationProperties;
|
||||||
import stirling.software.SPDF.model.api.GeneralFile;
|
import stirling.software.SPDF.model.api.GeneralFile;
|
||||||
import stirling.software.SPDF.service.CustomPDDocumentFactory;
|
import stirling.software.SPDF.service.CustomPDDocumentFactory;
|
||||||
import stirling.software.SPDF.utils.FileToPdf;
|
import stirling.software.SPDF.utils.FileToPdf;
|
||||||
@@ -37,12 +38,16 @@ public class ConvertMarkdownToPdf {
|
|||||||
|
|
||||||
private final CustomPDDocumentFactory pdfDocumentFactory;
|
private final CustomPDDocumentFactory pdfDocumentFactory;
|
||||||
|
|
||||||
|
private final ApplicationProperties applicationProperties;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public ConvertMarkdownToPdf(
|
public ConvertMarkdownToPdf(
|
||||||
CustomPDDocumentFactory pdfDocumentFactory,
|
CustomPDDocumentFactory pdfDocumentFactory,
|
||||||
@Qualifier("bookAndHtmlFormatsInstalled") boolean bookAndHtmlFormatsInstalled) {
|
@Qualifier("bookAndHtmlFormatsInstalled") boolean bookAndHtmlFormatsInstalled,
|
||||||
|
ApplicationProperties applicationProperties) {
|
||||||
this.pdfDocumentFactory = pdfDocumentFactory;
|
this.pdfDocumentFactory = pdfDocumentFactory;
|
||||||
this.bookAndHtmlFormatsInstalled = bookAndHtmlFormatsInstalled;
|
this.bookAndHtmlFormatsInstalled = bookAndHtmlFormatsInstalled;
|
||||||
|
this.applicationProperties = applicationProperties;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping(consumes = "multipart/form-data", value = "/markdown/pdf")
|
@PostMapping(consumes = "multipart/form-data", value = "/markdown/pdf")
|
||||||
@@ -76,12 +81,16 @@ public class ConvertMarkdownToPdf {
|
|||||||
|
|
||||||
String htmlContent = renderer.render(document);
|
String htmlContent = renderer.render(document);
|
||||||
|
|
||||||
|
boolean disableSanitize =
|
||||||
|
Boolean.TRUE.equals(applicationProperties.getSystem().getDisableSanitize());
|
||||||
|
|
||||||
byte[] pdfBytes =
|
byte[] pdfBytes =
|
||||||
FileToPdf.convertHtmlToPdf(
|
FileToPdf.convertHtmlToPdf(
|
||||||
null,
|
null,
|
||||||
htmlContent.getBytes(),
|
htmlContent.getBytes(),
|
||||||
"converted.html",
|
"converted.html",
|
||||||
bookAndHtmlFormatsInstalled);
|
bookAndHtmlFormatsInstalled,
|
||||||
|
disableSanitize);
|
||||||
pdfBytes = pdfDocumentFactory.createNewBytesBasedOnOldDocument(pdfBytes);
|
pdfBytes = pdfDocumentFactory.createNewBytesBasedOnOldDocument(pdfBytes);
|
||||||
String outputFilename =
|
String outputFilename =
|
||||||
originalFilename.replaceFirst("[.][^.]+$", "")
|
originalFilename.replaceFirst("[.][^.]+$", "")
|
||||||
|
|||||||
@@ -73,8 +73,8 @@ public class ConvertPDFToPDFA {
|
|||||||
// Determine PDF/A filter based on requested format
|
// Determine PDF/A filter based on requested format
|
||||||
String pdfFilter =
|
String pdfFilter =
|
||||||
"pdfa".equals(outputFormat)
|
"pdfa".equals(outputFormat)
|
||||||
? "writer_pdf_Export:{'SelectPdfVersion':{'Value':'2'}}:writer_pdf_Export"
|
? "pdf:writer_pdf_Export:{\"SelectPdfVersion\":{\"type\":\"long\",\"value\":\"2\"}}"
|
||||||
: "writer_pdf_Export:{'SelectPdfVersion':{'Value':'1'}}:writer_pdf_Export";
|
: "pdf:writer_pdf_Export:{\"SelectPdfVersion\":{\"type\":\"long\",\"value\":\"1\"}}";
|
||||||
|
|
||||||
// Prepare LibreOffice command
|
// Prepare LibreOffice command
|
||||||
List<String> command =
|
List<String> command =
|
||||||
@@ -84,7 +84,7 @@ public class ConvertPDFToPDFA {
|
|||||||
"--headless",
|
"--headless",
|
||||||
"--nologo",
|
"--nologo",
|
||||||
"--convert-to",
|
"--convert-to",
|
||||||
"pdf:" + pdfFilter,
|
pdfFilter,
|
||||||
"--outdir",
|
"--outdir",
|
||||||
tempOutputDir.toString(),
|
tempOutputDir.toString(),
|
||||||
tempInputFile.toString()));
|
tempInputFile.toString()));
|
||||||
|
|||||||
@@ -8,7 +8,9 @@ import java.io.IOException;
|
|||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipOutputStream;
|
import java.util.zip.ZipOutputStream;
|
||||||
|
|
||||||
@@ -41,8 +43,12 @@ import stirling.software.SPDF.utils.WebResponseUtils;
|
|||||||
@Tag(name = "Misc", description = "Miscellaneous APIs")
|
@Tag(name = "Misc", description = "Miscellaneous APIs")
|
||||||
public class AutoSplitPdfController {
|
public class AutoSplitPdfController {
|
||||||
|
|
||||||
private static final String QR_CONTENT = "https://github.com/Stirling-Tools/Stirling-PDF";
|
private static final Set<String> VALID_QR_CONTENTS =
|
||||||
private static final String QR_CONTENT_OLD = "https://github.com/Frooodle/Stirling-PDF";
|
new HashSet<>(
|
||||||
|
Set.of(
|
||||||
|
"https://github.com/Stirling-Tools/Stirling-PDF",
|
||||||
|
"https://github.com/Frooodle/Stirling-PDF",
|
||||||
|
"https://stirlingpdf.com"));
|
||||||
|
|
||||||
private final CustomPDDocumentFactory pdfDocumentFactory;
|
private final CustomPDDocumentFactory pdfDocumentFactory;
|
||||||
|
|
||||||
@@ -120,13 +126,14 @@ public class AutoSplitPdfController {
|
|||||||
for (int page = 0; page < document.getNumberOfPages(); ++page) {
|
for (int page = 0; page < document.getNumberOfPages(); ++page) {
|
||||||
BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 150);
|
BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 150);
|
||||||
String result = decodeQRCode(bim);
|
String result = decodeQRCode(bim);
|
||||||
if ((QR_CONTENT.equals(result) || QR_CONTENT_OLD.equals(result)) && page != 0) {
|
|
||||||
|
boolean isValidQrCode = VALID_QR_CONTENTS.contains(result);
|
||||||
|
log.debug("detected qr code {}, code is vale={}", result, isValidQrCode);
|
||||||
|
if (isValidQrCode && page != 0) {
|
||||||
splitDocuments.add(new PDDocument());
|
splitDocuments.add(new PDDocument());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!splitDocuments.isEmpty()
|
if (!splitDocuments.isEmpty() && !isValidQrCode) {
|
||||||
&& !QR_CONTENT.equals(result)
|
|
||||||
&& !QR_CONTENT_OLD.equals(result)) {
|
|
||||||
splitDocuments.get(splitDocuments.size() - 1).addPage(document.getPage(page));
|
splitDocuments.get(splitDocuments.size() - 1).addPage(document.getPage(page));
|
||||||
} else if (page == 0) {
|
} else if (page == 0) {
|
||||||
PDDocument firstDocument = new PDDocument();
|
PDDocument firstDocument = new PDDocument();
|
||||||
@@ -135,7 +142,7 @@ public class AutoSplitPdfController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If duplexMode is true and current page is a divider, then skip next page
|
// If duplexMode is true and current page is a divider, then skip next page
|
||||||
if (duplexMode && (QR_CONTENT.equals(result) || QR_CONTENT_OLD.equals(result))) {
|
if (duplexMode && isValidQrCode) {
|
||||||
page++;
|
page++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -168,6 +175,9 @@ public class AutoSplitPdfController {
|
|||||||
|
|
||||||
return WebResponseUtils.bytesToWebResponse(
|
return WebResponseUtils.bytesToWebResponse(
|
||||||
data, filename + ".zip", MediaType.APPLICATION_OCTET_STREAM);
|
data, filename + ".zip", MediaType.APPLICATION_OCTET_STREAM);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Error in auto split", e);
|
||||||
|
throw e;
|
||||||
} finally {
|
} finally {
|
||||||
// Clean up resources
|
// Clean up resources
|
||||||
if (document != null) {
|
if (document != null) {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import java.awt.image.BufferedImage;
|
|||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.StandardCopyOption;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -94,7 +95,9 @@ public class CompressController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
doc.save(pdfFile.toString());
|
Path tempOutput = Files.createTempFile("output_", ".pdf");
|
||||||
|
doc.save(tempOutput.toString());
|
||||||
|
Files.move(tempOutput, pdfFile, StandardCopyOption.REPLACE_EXISTING);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -188,7 +191,7 @@ public class CompressController {
|
|||||||
optimizeLevel =
|
optimizeLevel =
|
||||||
incrementOptimizeLevel(
|
incrementOptimizeLevel(
|
||||||
optimizeLevel, outputFileSize, expectedOutputSize);
|
optimizeLevel, outputFileSize, expectedOutputSize);
|
||||||
if (autoMode && optimizeLevel > 9) {
|
if (autoMode && optimizeLevel >= 9) {
|
||||||
log.info("Maximum compression level reached in auto mode");
|
log.info("Maximum compression level reached in auto mode");
|
||||||
sizeMet = true;
|
sizeMet = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public class ExtractImagesController {
|
|||||||
@Operation(
|
@Operation(
|
||||||
summary = "Extract images from a PDF file",
|
summary = "Extract images from a PDF file",
|
||||||
description =
|
description =
|
||||||
"This endpoint extracts images from a given PDF file and returns them in a zip file. Users can specify the output image format. Input: PDF Output: IMAGE/ZIP Type: SIMO")
|
"This endpoint extracts images from a given PDF file and returns them in a zip file. Users can specify the output image format. Input:PDF Output:IMAGE/ZIP Type:SIMO")
|
||||||
public ResponseEntity<byte[]> extractImages(@ModelAttribute PDFExtractImagesRequest request)
|
public ResponseEntity<byte[]> extractImages(@ModelAttribute PDFExtractImagesRequest request)
|
||||||
throws IOException, InterruptedException, ExecutionException {
|
throws IOException, InterruptedException, ExecutionException {
|
||||||
MultipartFile file = request.getFileInput();
|
MultipartFile file = request.getFileInput();
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public class FlattenController {
|
|||||||
@Operation(
|
@Operation(
|
||||||
summary = "Flatten PDF form fields or full page",
|
summary = "Flatten PDF form fields or full page",
|
||||||
description =
|
description =
|
||||||
"Flattening just PDF form fields or converting each page to images to make text unselectable. Input: PDF, Output: PDF. Type: SISO")
|
"Flattening just PDF form fields or converting each page to images to make text unselectable. Input:PDF, Output:PDF. Type:SISO")
|
||||||
public ResponseEntity<byte[]> flatten(@ModelAttribute FlattenRequest request) throws Exception {
|
public ResponseEntity<byte[]> flatten(@ModelAttribute FlattenRequest request) throws Exception {
|
||||||
MultipartFile file = request.getFileInput();
|
MultipartFile file = request.getFileInput();
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
|
|
||||||
import io.github.pixee.security.BoundedLineReader;
|
import io.github.pixee.security.BoundedLineReader;
|
||||||
import io.github.pixee.security.Filenames;
|
import io.github.pixee.security.Filenames;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -65,6 +66,10 @@ public class OCRController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping(consumes = "multipart/form-data", value = "/ocr-pdf")
|
@PostMapping(consumes = "multipart/form-data", value = "/ocr-pdf")
|
||||||
|
@Operation(
|
||||||
|
summary = "Process PDF files with OCR using Tesseract",
|
||||||
|
description =
|
||||||
|
"Takes a PDF file as input, performs OCR using specified languages and OCR type (skip-text/force-ocr), and returns the processed PDF. Input:PDF Output:PDF Type:SISO")
|
||||||
public ResponseEntity<byte[]> processPdfWithOCR(
|
public ResponseEntity<byte[]> processPdfWithOCR(
|
||||||
@ModelAttribute ProcessPdfWithOcrRequest request)
|
@ModelAttribute ProcessPdfWithOcrRequest request)
|
||||||
throws IOException, InterruptedException {
|
throws IOException, InterruptedException {
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import stirling.software.SPDF.model.PipelineConfig;
|
import stirling.software.SPDF.model.PipelineConfig;
|
||||||
|
import stirling.software.SPDF.model.PipelineResult;
|
||||||
import stirling.software.SPDF.model.api.HandleDataRequest;
|
import stirling.software.SPDF.model.api.HandleDataRequest;
|
||||||
import stirling.software.SPDF.utils.WebResponseUtils;
|
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||||
|
|
||||||
@@ -58,7 +59,8 @@ public class PipelineController {
|
|||||||
if (inputFiles == null || inputFiles.size() == 0) {
|
if (inputFiles == null || inputFiles.size() == 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
List<Resource> outputFiles = processor.runPipelineAgainstFiles(inputFiles, config);
|
PipelineResult result = processor.runPipelineAgainstFiles(inputFiles, config);
|
||||||
|
List<Resource> outputFiles = result.getOutputFiles();
|
||||||
if (outputFiles != null && outputFiles.size() == 1) {
|
if (outputFiles != null && outputFiles.size() == 1) {
|
||||||
// If there is only one file, return it directly
|
// If there is only one file, return it directly
|
||||||
Resource singleFile = outputFiles.get(0);
|
Resource singleFile = outputFiles.get(0);
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import stirling.software.SPDF.config.InstallationPathConfig;
|
import stirling.software.SPDF.config.InstallationPathConfig;
|
||||||
import stirling.software.SPDF.model.PipelineConfig;
|
import stirling.software.SPDF.model.PipelineConfig;
|
||||||
import stirling.software.SPDF.model.PipelineOperation;
|
import stirling.software.SPDF.model.PipelineOperation;
|
||||||
|
import stirling.software.SPDF.model.PipelineResult;
|
||||||
import stirling.software.SPDF.utils.FileMonitor;
|
import stirling.software.SPDF.utils.FileMonitor;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@@ -143,19 +144,64 @@ public class PipelineDirectoryProcessor {
|
|||||||
|
|
||||||
private File[] collectFilesForProcessing(Path dir, Path jsonFile, PipelineOperation operation)
|
private File[] collectFilesForProcessing(Path dir, Path jsonFile, PipelineOperation operation)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
|
|
||||||
|
List<String> inputExtensions =
|
||||||
|
apiDocService.getExtensionTypes(false, operation.getOperation());
|
||||||
|
log.info(
|
||||||
|
"Allowed extensions for operation {}: {}",
|
||||||
|
operation.getOperation(),
|
||||||
|
inputExtensions);
|
||||||
|
|
||||||
|
boolean allowAllFiles = inputExtensions.contains("ALL");
|
||||||
|
|
||||||
try (Stream<Path> paths = Files.list(dir)) {
|
try (Stream<Path> paths = Files.list(dir)) {
|
||||||
if ("automated".equals(operation.getParameters().get("fileInput"))) {
|
File[] files =
|
||||||
return paths.filter(
|
paths.filter(
|
||||||
path ->
|
path -> {
|
||||||
!Files.isDirectory(path)
|
if (Files.isDirectory(path)) {
|
||||||
&& !path.equals(jsonFile)
|
return false;
|
||||||
&& fileMonitor.isFileReadyForProcessing(path))
|
}
|
||||||
.map(Path::toFile)
|
if (path.equals(jsonFile)) {
|
||||||
.toArray(File[]::new);
|
return false;
|
||||||
} else {
|
}
|
||||||
String fileInput = (String) operation.getParameters().get("fileInput");
|
|
||||||
return new File[] {new File(fileInput)};
|
// Get file extension
|
||||||
}
|
String filename = path.getFileName().toString();
|
||||||
|
String extension =
|
||||||
|
filename.contains(".")
|
||||||
|
? filename.substring(
|
||||||
|
filename.lastIndexOf(".")
|
||||||
|
+ 1)
|
||||||
|
.toLowerCase()
|
||||||
|
: "";
|
||||||
|
|
||||||
|
// Check against allowed extensions
|
||||||
|
boolean isAllowed =
|
||||||
|
allowAllFiles
|
||||||
|
|| inputExtensions.contains(extension);
|
||||||
|
if (!isAllowed) {
|
||||||
|
log.info(
|
||||||
|
"Skipping file with unsupported extension: {} ({})",
|
||||||
|
filename,
|
||||||
|
extension);
|
||||||
|
}
|
||||||
|
return isAllowed;
|
||||||
|
})
|
||||||
|
.filter(
|
||||||
|
path -> {
|
||||||
|
boolean isReady =
|
||||||
|
fileMonitor.isFileReadyForProcessing(path);
|
||||||
|
if (!isReady) {
|
||||||
|
log.info(
|
||||||
|
"File not ready for processing (locked/created last 5s): {}",
|
||||||
|
path);
|
||||||
|
}
|
||||||
|
return isReady;
|
||||||
|
})
|
||||||
|
.map(Path::toFile)
|
||||||
|
.toArray(File[]::new);
|
||||||
|
log.info("Collected {} files for processing", files.length);
|
||||||
|
return files;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -198,19 +244,37 @@ public class PipelineDirectoryProcessor {
|
|||||||
try {
|
try {
|
||||||
List<Resource> inputFiles =
|
List<Resource> inputFiles =
|
||||||
processor.generateInputFiles(filesToProcess.toArray(new File[0]));
|
processor.generateInputFiles(filesToProcess.toArray(new File[0]));
|
||||||
if (inputFiles == null || inputFiles.size() == 0) {
|
if (inputFiles == null || inputFiles.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
List<Resource> outputFiles = processor.runPipelineAgainstFiles(inputFiles, config);
|
PipelineResult result = processor.runPipelineAgainstFiles(inputFiles, config);
|
||||||
if (outputFiles == null) return;
|
|
||||||
moveAndRenameFiles(outputFiles, config, dir);
|
if (result.isHasErrors()) {
|
||||||
deleteOriginalFiles(filesToProcess, processingDir);
|
log.error("Errors occurred during processing, retaining original files");
|
||||||
|
moveToErrorDirectory(filesToProcess, dir);
|
||||||
|
} else {
|
||||||
|
moveAndRenameFiles(result.getOutputFiles(), config, dir);
|
||||||
|
deleteOriginalFiles(filesToProcess, processingDir);
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("error during processing", e);
|
log.error("Error during processing", e);
|
||||||
moveFilesBack(filesToProcess, processingDir);
|
moveFilesBack(filesToProcess, processingDir);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void moveToErrorDirectory(List<File> files, Path originalDir) throws IOException {
|
||||||
|
Path errorDir = originalDir.resolve("error");
|
||||||
|
if (!Files.exists(errorDir)) {
|
||||||
|
Files.createDirectories(errorDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (File file : files) {
|
||||||
|
Path target = errorDir.resolve(file.getName());
|
||||||
|
Files.move(file.toPath(), target);
|
||||||
|
log.info("Moved failed file to error directory for investigation: {}", target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void moveAndRenameFiles(List<Resource> resources, PipelineConfig config, Path dir)
|
private void moveAndRenameFiles(List<Resource> resources, PipelineConfig config, Path dir)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
for (Resource resource : resources) {
|
for (Resource resource : resources) {
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import stirling.software.SPDF.SPDFApplication;
|
import stirling.software.SPDF.SPDFApplication;
|
||||||
import stirling.software.SPDF.model.PipelineConfig;
|
import stirling.software.SPDF.model.PipelineConfig;
|
||||||
import stirling.software.SPDF.model.PipelineOperation;
|
import stirling.software.SPDF.model.PipelineOperation;
|
||||||
|
import stirling.software.SPDF.model.PipelineResult;
|
||||||
import stirling.software.SPDF.model.Role;
|
import stirling.software.SPDF.model.Role;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@@ -84,8 +85,10 @@ public class PipelineProcessor {
|
|||||||
return "http://localhost:" + port + contextPath + "/";
|
return "http://localhost:" + port + contextPath + "/";
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Resource> runPipelineAgainstFiles(List<Resource> outputFiles, PipelineConfig config)
|
PipelineResult runPipelineAgainstFiles(List<Resource> outputFiles, PipelineConfig config)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
|
PipelineResult result = new PipelineResult();
|
||||||
|
|
||||||
ByteArrayOutputStream logStream = new ByteArrayOutputStream();
|
ByteArrayOutputStream logStream = new ByteArrayOutputStream();
|
||||||
PrintStream logPrintStream = new PrintStream(logStream);
|
PrintStream logPrintStream = new PrintStream(logStream);
|
||||||
boolean hasErrors = false;
|
boolean hasErrors = false;
|
||||||
@@ -130,7 +133,8 @@ public class PipelineProcessor {
|
|||||||
if (operation.startsWith("filter-")
|
if (operation.startsWith("filter-")
|
||||||
&& (response.getBody() == null
|
&& (response.getBody() == null
|
||||||
|| response.getBody().length == 0)) {
|
|| response.getBody().length == 0)) {
|
||||||
log.info("Skipping file due to failing {}", operation);
|
result.setFiltersApplied(true);
|
||||||
|
log.info("Skipping file due to filtering {}", operation);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!response.getStatusCode().equals(HttpStatus.OK)) {
|
if (!response.getStatusCode().equals(HttpStatus.OK)) {
|
||||||
@@ -208,7 +212,10 @@ public class PipelineProcessor {
|
|||||||
if (hasErrors) {
|
if (hasErrors) {
|
||||||
log.error("Errors occurred during processing. Log: {}", logStream.toString());
|
log.error("Errors occurred during processing. Log: {}", logStream.toString());
|
||||||
}
|
}
|
||||||
return outputFiles;
|
result.setHasErrors(hasErrors);
|
||||||
|
result.setFiltersApplied(hasErrors);
|
||||||
|
result.setOutputFiles(outputFiles);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ResponseEntity<byte[]> sendWebRequest(String url, MultiValueMap<String, Object> body) {
|
private ResponseEntity<byte[]> sendWebRequest(String url, MultiValueMap<String, Object> body) {
|
||||||
|
|||||||
@@ -40,8 +40,7 @@ public class RemoveCertSignController {
|
|||||||
@Operation(
|
@Operation(
|
||||||
summary = "Remove digital signature from PDF",
|
summary = "Remove digital signature from PDF",
|
||||||
description =
|
description =
|
||||||
"This endpoint accepts a PDF file and returns the PDF file without the digital signature."
|
"This endpoint accepts a PDF file and returns the PDF file without the digital signature. Input:PDF, Output:PDF Type:SISO")
|
||||||
+ " Input: PDF, Output: PDF")
|
|
||||||
public ResponseEntity<byte[]> removeCertSignPDF(@ModelAttribute PDFFile request)
|
public ResponseEntity<byte[]> removeCertSignPDF(@ModelAttribute PDFFile request)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
MultipartFile pdf = request.getFileInput();
|
MultipartFile pdf = request.getFileInput();
|
||||||
|
|||||||
@@ -36,8 +36,9 @@ public class DatabaseWebController {
|
|||||||
}
|
}
|
||||||
List<FileInfo> backupList = databaseService.getBackupList();
|
List<FileInfo> backupList = databaseService.getBackupList();
|
||||||
model.addAttribute("backupFiles", backupList);
|
model.addAttribute("backupFiles", backupList);
|
||||||
model.addAttribute("databaseVersion", databaseService.getH2Version());
|
String dbVersion = databaseService.getH2Version();
|
||||||
if ("Unknown".equalsIgnoreCase(databaseService.getH2Version())) {
|
model.addAttribute("databaseVersion", dbVersion);
|
||||||
|
if ("Unknown".equalsIgnoreCase(dbVersion)) {
|
||||||
model.addAttribute("infoMessage", "notSupported");
|
model.addAttribute("infoMessage", "notSupported");
|
||||||
}
|
}
|
||||||
return "database";
|
return "database";
|
||||||
|
|||||||
@@ -265,7 +265,8 @@ public class ApplicationProperties {
|
|||||||
return getKeycloak();
|
return getKeycloak();
|
||||||
default:
|
default:
|
||||||
throw new UnsupportedProviderException(
|
throw new UnsupportedProviderException(
|
||||||
"Logout from the provider is not supported? Report it at https://github.com/Stirling-Tools/Stirling-PDF/issues");
|
"Logout from the provider is not supported? Report it at"
|
||||||
|
+ " https://github.com/Stirling-Tools/Stirling-PDF/issues");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -283,6 +284,7 @@ public class ApplicationProperties {
|
|||||||
private Boolean enableAlphaFunctionality;
|
private Boolean enableAlphaFunctionality;
|
||||||
private String enableAnalytics;
|
private String enableAnalytics;
|
||||||
private Datasource datasource;
|
private Datasource datasource;
|
||||||
|
private Boolean disableSanitize;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@@ -312,10 +314,10 @@ public class ApplicationProperties {
|
|||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return """
|
return """
|
||||||
Driver {
|
Driver {
|
||||||
driverName='%s'
|
driverName='%s'
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.formatted(driverName);
|
.formatted(driverName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -325,6 +327,7 @@ public class ApplicationProperties {
|
|||||||
private String appName;
|
private String appName;
|
||||||
private String homeDescription;
|
private String homeDescription;
|
||||||
private String appNameNavbar;
|
private String appNameNavbar;
|
||||||
|
private List<String> languages;
|
||||||
|
|
||||||
public String getAppName() {
|
public String getAppName() {
|
||||||
return appName != null && appName.trim().length() > 0 ? appName : null;
|
return appName != null && appName.trim().length() > 0 ? appName : null;
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package stirling.software.SPDF.model;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.springframework.core.io.Resource;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class PipelineResult {
|
||||||
|
private List<Resource> outputFiles;
|
||||||
|
private boolean hasErrors;
|
||||||
|
private boolean filtersApplied;
|
||||||
|
}
|
||||||
@@ -1,41 +1,56 @@
|
|||||||
package stirling.software.SPDF.service;
|
package stirling.software.SPDF.service;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import stirling.software.SPDF.model.ApplicationProperties;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@Slf4j
|
||||||
public class LanguageService {
|
public class LanguageService {
|
||||||
|
|
||||||
|
private final ApplicationProperties applicationProperties;
|
||||||
private final PathMatchingResourcePatternResolver resourcePatternResolver =
|
private final PathMatchingResourcePatternResolver resourcePatternResolver =
|
||||||
new PathMatchingResourcePatternResolver();
|
new PathMatchingResourcePatternResolver();
|
||||||
|
|
||||||
public List<String> getSupportedLanguages() {
|
public LanguageService(ApplicationProperties applicationProperties) {
|
||||||
List<String> supportedLanguages = new ArrayList<>();
|
this.applicationProperties = applicationProperties;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<String> getSupportedLanguages() {
|
||||||
try {
|
try {
|
||||||
Resource[] resources =
|
Resource[] resources =
|
||||||
resourcePatternResolver.getResources("classpath*:messages_*.properties");
|
resourcePatternResolver.getResources("classpath*:messages_*.properties");
|
||||||
for (Resource resource : resources) {
|
|
||||||
if (resource.exists() && resource.isReadable()) {
|
|
||||||
String filename = resource.getFilename();
|
|
||||||
if (filename != null
|
|
||||||
&& filename.startsWith("messages_")
|
|
||||||
&& filename.endsWith(".properties")) {
|
|
||||||
String languageCode =
|
|
||||||
filename.replace("messages_", "").replace(".properties", "");
|
|
||||||
supportedLanguages.add(languageCode);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
return supportedLanguages;
|
return Arrays.stream(resources)
|
||||||
|
.map(Resource::getFilename)
|
||||||
|
.filter(
|
||||||
|
filename ->
|
||||||
|
filename != null
|
||||||
|
&& filename.startsWith("messages_")
|
||||||
|
&& filename.endsWith(".properties"))
|
||||||
|
.map(filename -> filename.replace("messages_", "").replace(".properties", ""))
|
||||||
|
.filter(
|
||||||
|
languageCode -> {
|
||||||
|
Set<String> allowedLanguages =
|
||||||
|
new HashSet<>(applicationProperties.getUi().getLanguages());
|
||||||
|
return allowedLanguages.isEmpty()
|
||||||
|
|| allowedLanguages.contains(languageCode)
|
||||||
|
|| "en_GB".equals(languageCode);
|
||||||
|
})
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error("Error retrieving supported languages", e);
|
||||||
|
return new HashSet<>();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,8 @@ public class FileToPdf {
|
|||||||
HTMLToPdfRequest request,
|
HTMLToPdfRequest request,
|
||||||
byte[] fileBytes,
|
byte[] fileBytes,
|
||||||
String fileName,
|
String fileName,
|
||||||
boolean htmlFormatsInstalled)
|
boolean htmlFormatsInstalled,
|
||||||
|
boolean disableSanitize)
|
||||||
throws IOException, InterruptedException {
|
throws IOException, InterruptedException {
|
||||||
|
|
||||||
Path tempOutputFile = Files.createTempFile("output_", ".pdf");
|
Path tempOutputFile = Files.createTempFile("output_", ".pdf");
|
||||||
@@ -36,12 +37,13 @@ public class FileToPdf {
|
|||||||
if (fileName.endsWith(".html")) {
|
if (fileName.endsWith(".html")) {
|
||||||
tempInputFile = Files.createTempFile("input_", ".html");
|
tempInputFile = Files.createTempFile("input_", ".html");
|
||||||
String sanitizedHtml =
|
String sanitizedHtml =
|
||||||
sanitizeHtmlContent(new String(fileBytes, StandardCharsets.UTF_8));
|
sanitizeHtmlContent(
|
||||||
|
new String(fileBytes, StandardCharsets.UTF_8), disableSanitize);
|
||||||
Files.write(tempInputFile, sanitizedHtml.getBytes(StandardCharsets.UTF_8));
|
Files.write(tempInputFile, sanitizedHtml.getBytes(StandardCharsets.UTF_8));
|
||||||
} else if (fileName.endsWith(".zip")) {
|
} else if (fileName.endsWith(".zip")) {
|
||||||
tempInputFile = Files.createTempFile("input_", ".zip");
|
tempInputFile = Files.createTempFile("input_", ".zip");
|
||||||
Files.write(tempInputFile, fileBytes);
|
Files.write(tempInputFile, fileBytes);
|
||||||
sanitizeHtmlFilesInZip(tempInputFile);
|
sanitizeHtmlFilesInZip(tempInputFile, disableSanitize);
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalArgumentException("Unsupported file format: " + fileName);
|
throw new IllegalArgumentException("Unsupported file format: " + fileName);
|
||||||
}
|
}
|
||||||
@@ -89,11 +91,12 @@ public class FileToPdf {
|
|||||||
return pdfBytes;
|
return pdfBytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String sanitizeHtmlContent(String htmlContent) {
|
private static String sanitizeHtmlContent(String htmlContent, boolean disableSanitize) {
|
||||||
return CustomHtmlSanitizer.sanitize(htmlContent);
|
return (!disableSanitize) ? CustomHtmlSanitizer.sanitize(htmlContent) : htmlContent;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void sanitizeHtmlFilesInZip(Path zipFilePath) throws IOException {
|
private static void sanitizeHtmlFilesInZip(Path zipFilePath, boolean disableSanitize)
|
||||||
|
throws IOException {
|
||||||
Path tempUnzippedDir = Files.createTempDirectory("unzipped_");
|
Path tempUnzippedDir = Files.createTempDirectory("unzipped_");
|
||||||
try (ZipInputStream zipIn =
|
try (ZipInputStream zipIn =
|
||||||
ZipSecurity.createHardenedInputStream(
|
ZipSecurity.createHardenedInputStream(
|
||||||
@@ -106,7 +109,7 @@ public class FileToPdf {
|
|||||||
if (entry.getName().toLowerCase().endsWith(".html")
|
if (entry.getName().toLowerCase().endsWith(".html")
|
||||||
|| entry.getName().toLowerCase().endsWith(".htm")) {
|
|| entry.getName().toLowerCase().endsWith(".htm")) {
|
||||||
String content = new String(zipIn.readAllBytes(), StandardCharsets.UTF_8);
|
String content = new String(zipIn.readAllBytes(), StandardCharsets.UTF_8);
|
||||||
String sanitizedContent = sanitizeHtmlContent(content);
|
String sanitizedContent = sanitizeHtmlContent(content, disableSanitize);
|
||||||
Files.write(filePath, sanitizedContent.getBytes(StandardCharsets.UTF_8));
|
Files.write(filePath, sanitizedContent.getBytes(StandardCharsets.UTF_8));
|
||||||
} else {
|
} else {
|
||||||
Files.copy(zipIn, filePath);
|
Files.copy(zipIn, filePath);
|
||||||
|
|||||||
@@ -587,9 +587,7 @@ public class GeneralUtils {
|
|||||||
for (byte b : hash) {
|
for (byte b : hash) {
|
||||||
fingerprint.append(String.format("%02x", b));
|
fingerprint.append(String.format("%02x", b));
|
||||||
}
|
}
|
||||||
|
|
||||||
return fingerprint.toString();
|
return fingerprint.toString();
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return "GenericID";
|
return "GenericID";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -218,6 +218,9 @@ public class ProcessExecutor {
|
|||||||
errorReaderThread.join();
|
errorReaderThread.join();
|
||||||
outputReaderThread.join();
|
outputReaderThread.join();
|
||||||
|
|
||||||
|
boolean isQpdf =
|
||||||
|
command != null && !command.isEmpty() && command.get(0).contains("qpdf");
|
||||||
|
|
||||||
if (outputLines.size() > 0) {
|
if (outputLines.size() > 0) {
|
||||||
String outputMessage = String.join("\n", outputLines);
|
String outputMessage = String.join("\n", outputLines);
|
||||||
messages += outputMessage;
|
messages += outputMessage;
|
||||||
@@ -233,20 +236,28 @@ public class ProcessExecutor {
|
|||||||
log.warn("Command error output:\n" + errorMessage);
|
log.warn("Command error output:\n" + errorMessage);
|
||||||
}
|
}
|
||||||
if (exitCode != 0) {
|
if (exitCode != 0) {
|
||||||
throw new IOException(
|
if (isQpdf && exitCode == 3) {
|
||||||
"Command process failed with exit code "
|
log.warn("qpdf succeeded with warnings: {}", messages);
|
||||||
+ exitCode
|
} else {
|
||||||
+ ". Error message: "
|
throw new IOException(
|
||||||
+ errorMessage);
|
"Command process failed with exit code "
|
||||||
|
+ exitCode
|
||||||
|
+ ". Error message: "
|
||||||
|
+ errorMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (exitCode != 0) {
|
if (exitCode != 0) {
|
||||||
throw new IOException(
|
if (isQpdf && exitCode == 3) {
|
||||||
"Command process failed with exit code "
|
log.warn("qpdf succeeded with warnings: {}", messages);
|
||||||
+ exitCode
|
} else {
|
||||||
+ "\nLogs: "
|
throw new IOException(
|
||||||
+ messages);
|
"Command process failed with exit code "
|
||||||
|
+ exitCode
|
||||||
|
+ "\nLogs: "
|
||||||
|
+ messages);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
semaphore.release();
|
semaphore.release();
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=أداة متعددة PDF
|
home.multiTool.title=أداة متعددة PDF
|
||||||
home.multiTool.desc=دمج الصفحات وتدويرها وإعادة ترتيبها وإزالتها
|
home.multiTool.desc=دمج الصفحات وتدويرها وإعادة ترتيبها وإزالتها
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=إظهار جافا سكريبت
|
showJS.title=إظهار جافا سكريبت
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=ارفع ملف PDF الممسوح ضوئيًا الك
|
|||||||
autoSplitPDF.selectText.4=يتم اكتشاف صفحات الفاصل تلقائيًا وإزالتها، مما يضمن مستندًا نهائيًا نظيفًا.
|
autoSplitPDF.selectText.4=يتم اكتشاف صفحات الفاصل تلقائيًا وإزالتها، مما يضمن مستندًا نهائيًا نظيفًا.
|
||||||
autoSplitPDF.formPrompt=أرسل ملف PDF يحتوي على فواصل صفحات Stirling-PDF:
|
autoSplitPDF.formPrompt=أرسل ملف PDF يحتوي على فواصل صفحات Stirling-PDF:
|
||||||
autoSplitPDF.duplexMode=وضع الطباعة على الوجهين (المسح الضوئي للوجه الأمامي والخلفي)
|
autoSplitPDF.duplexMode=وضع الطباعة على الوجهين (المسح الضوئي للوجه الأمامي والخلفي)
|
||||||
autoSplitPDF.dividerDownload1=تنزيل 'فاصل التقسيم التلقائي (الحد الأدنى).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=تنزيل 'فاصل التقسيم التلقائي (مع التعليمات).pdf'
|
autoSplitPDF.dividerDownload2=تنزيل 'فاصل التقسيم التلقائي (مع التعليمات).pdf'
|
||||||
autoSplitPDF.submit=إرسال
|
autoSplitPDF.submit=إرسال
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=تغيير
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF إلى PDF/A
|
pdfToPDFA.title=PDF إلى PDF/A
|
||||||
pdfToPDFA.header=PDF إلى PDF/A
|
pdfToPDFA.header=PDF إلى PDF/A
|
||||||
pdfToPDFA.credit=تستخدم هذه الخدمة qpdf لتحويل PDF/A.
|
pdfToPDFA.credit=تستخدم هذه الخدمة libreoffice لتحويل PDF/A.
|
||||||
pdfToPDFA.submit=تحويل
|
pdfToPDFA.submit=تحويل
|
||||||
pdfToPDFA.tip=لا يعمل حاليًا لمدخلات متعددة في وقت واحد
|
pdfToPDFA.tip=لا يعمل حاليًا لمدخلات متعددة في وقت واحد
|
||||||
pdfToPDFA.outputFormat=تنسيق الإخراج
|
pdfToPDFA.outputFormat=تنسيق الإخراج
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF Multi-alət
|
home.multiTool.title=PDF Multi-alət
|
||||||
home.multiTool.desc=Səhifələri Birləşdir, Çevir, Yenidən Sırala, Böl və Sil
|
home.multiTool.desc=Səhifələri Birləşdir, Çevir, Yenidən Sırala, Böl və Sil
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Javascripti Göstər
|
showJS.title=Javascripti Göstər
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Tək böyük skan edilmiş PDF faylını yükləyin v
|
|||||||
autoSplitPDF.selectText.4=Ayırıcı səhifələr avtomatik aşkarlanır və silinir, səliqəli yekun sənədə zəmanət verir.
|
autoSplitPDF.selectText.4=Ayırıcı səhifələr avtomatik aşkarlanır və silinir, səliqəli yekun sənədə zəmanət verir.
|
||||||
autoSplitPDF.formPrompt=Stirling-PDF ə Səhifə bölücüləri olan PDF-i təqdim edin:
|
autoSplitPDF.formPrompt=Stirling-PDF ə Səhifə bölücüləri olan PDF-i təqdim edin:
|
||||||
autoSplitPDF.duplexMode=Dupleks rejimi (Ön və arxa skanlama)
|
autoSplitPDF.duplexMode=Dupleks rejimi (Ön və arxa skanlama)
|
||||||
autoSplitPDF.dividerDownload1='Auto Splitter Divider (minimal).pdf'-ı yükləyin
|
|
||||||
autoSplitPDF.dividerDownload2='Auto Splitter Divider (with instructions).pdf'-ı yükləyin
|
autoSplitPDF.dividerDownload2='Auto Splitter Divider (with instructions).pdf'-ı yükləyin
|
||||||
autoSplitPDF.submit=Təsdiq edin
|
autoSplitPDF.submit=Təsdiq edin
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Dəyiş
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF-i PDF/A-ya
|
pdfToPDFA.title=PDF-i PDF/A-ya
|
||||||
pdfToPDFA.header=PDF-i PDF/A-ya
|
pdfToPDFA.header=PDF-i PDF/A-ya
|
||||||
pdfToPDFA.credit=Bu Servis PDF/A Çevirmək Üçün ghostscript İşlədir
|
pdfToPDFA.credit=Bu Servis PDF/A Çevirmək Üçün libreoffice İşlədir
|
||||||
pdfToPDFA.submit=Çevir
|
pdfToPDFA.submit=Çevir
|
||||||
pdfToPDFA.tip=Hazırda Birdən Çox Giriş Üçün İşləmir
|
pdfToPDFA.tip=Hazırda Birdən Çox Giriş Üçün İşləmir
|
||||||
pdfToPDFA.outputFormat=Çıxış Formatı
|
pdfToPDFA.outputFormat=Çıxış Formatı
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF Мулти инструмент
|
home.multiTool.title=PDF Мулти инструмент
|
||||||
home.multiTool.desc=Обединяване, завъртане, пренареждане и премахване на страници
|
home.multiTool.desc=Обединяване, завъртане, пренареждане и премахване на страници
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Покажи Javascript
|
showJS.title=Покажи Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Качете единствения голям ска
|
|||||||
autoSplitPDF.selectText.4=Разделителните страници се откриват и премахват автоматично, което гарантира чист краен документ.
|
autoSplitPDF.selectText.4=Разделителните страници се откриват и премахват автоматично, което гарантира чист краен документ.
|
||||||
autoSplitPDF.formPrompt=Изпратете PDF, съдържащ разделители на страници на Stirling-PDF:
|
autoSplitPDF.formPrompt=Изпратете PDF, съдържащ разделители на страници на Stirling-PDF:
|
||||||
autoSplitPDF.duplexMode=Дуплексен режим (сканиране отпред и отзад)
|
autoSplitPDF.duplexMode=Дуплексен режим (сканиране отпред и отзад)
|
||||||
autoSplitPDF.dividerDownload1=Изтеглете 'Автоматичен сплитер разделител (минимален).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Изтеглете 'Автоматичен сплитер разделител (с инструкции).pdf'
|
autoSplitPDF.dividerDownload2=Изтеглете 'Автоматичен сплитер разделител (с инструкции).pdf'
|
||||||
autoSplitPDF.submit=Подайте
|
autoSplitPDF.submit=Подайте
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Промени
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF към PDF/A
|
pdfToPDFA.title=PDF към PDF/A
|
||||||
pdfToPDFA.header=PDF към PDF/A
|
pdfToPDFA.header=PDF към PDF/A
|
||||||
pdfToPDFA.credit=Тази услуга използва qpdf за PDF/A преобразуване.
|
pdfToPDFA.credit=Тази услуга използва libreoffice за PDF/A преобразуване.
|
||||||
pdfToPDFA.submit=Преобразуване
|
pdfToPDFA.submit=Преобразуване
|
||||||
pdfToPDFA.tip=В момента не работи за няколко входа наведнъж
|
pdfToPDFA.tip=В момента не работи за няколко входа наведнъж
|
||||||
pdfToPDFA.outputFormat=Изходен формат
|
pdfToPDFA.outputFormat=Изходен формат
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=Eina Multifunció de PDF
|
home.multiTool.title=Eina Multifunció de PDF
|
||||||
home.multiTool.desc=Fusiona, Rota, Reorganitza i Esborra pàgines
|
home.multiTool.desc=Fusiona, Rota, Reorganitza i Esborra pàgines
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Mostra Javascript
|
showJS.title=Mostra Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Puja el fitxer PDF escanejat gran i deixa que Stirling
|
|||||||
autoSplitPDF.selectText.4=Les pàgines divisòries es detecten i eliminen automàticament, garantint un document final ordenat.
|
autoSplitPDF.selectText.4=Les pàgines divisòries es detecten i eliminen automàticament, garantint un document final ordenat.
|
||||||
autoSplitPDF.formPrompt=Envia un PDF que contingui les pàgines divisòries de Stirling-PDF:
|
autoSplitPDF.formPrompt=Envia un PDF que contingui les pàgines divisòries de Stirling-PDF:
|
||||||
autoSplitPDF.duplexMode=Mode Dúplex (Escaneig de davant i darrere)
|
autoSplitPDF.duplexMode=Mode Dúplex (Escaneig de davant i darrere)
|
||||||
autoSplitPDF.dividerDownload1=Descarrega 'Divisor Automàtic (mínim).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Descarrega 'Divisor Automàtic (amb instruccions).pdf'
|
autoSplitPDF.dividerDownload2=Descarrega 'Divisor Automàtic (amb instruccions).pdf'
|
||||||
autoSplitPDF.submit=Envia
|
autoSplitPDF.submit=Envia
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Canvia
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF a PDF/A
|
pdfToPDFA.title=PDF a PDF/A
|
||||||
pdfToPDFA.header=PDF a PDF/A
|
pdfToPDFA.header=PDF a PDF/A
|
||||||
pdfToPDFA.credit=Utilitza qpdf per a la conversió a PDF/A
|
pdfToPDFA.credit=Utilitza libreoffice per a la conversió a PDF/A
|
||||||
pdfToPDFA.submit=Converteix
|
pdfToPDFA.submit=Converteix
|
||||||
pdfToPDFA.tip=Actualment no funciona per a múltiples entrades al mateix temps
|
pdfToPDFA.tip=Actualment no funciona per a múltiples entrades al mateix temps
|
||||||
pdfToPDFA.outputFormat=Format de sortida
|
pdfToPDFA.outputFormat=Format de sortida
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF Multi nástroj
|
home.multiTool.title=PDF Multi nástroj
|
||||||
home.multiTool.desc=Sloučit, otočit, přeuspořádat, rozdělit a odstranit stránky
|
home.multiTool.desc=Sloučit, otočit, přeuspořádat, rozdělit a odstranit stránky
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Zobrazit přílohy
|
|||||||
redact.showLayers=Zobrazit vrstvy (dvojklik pro obnovení všech vrstev do výchozího stavu)
|
redact.showLayers=Zobrazit vrstvy (dvojklik pro obnovení všech vrstev do výchozího stavu)
|
||||||
redact.colourPicker=Výběr barvy
|
redact.colourPicker=Výběr barvy
|
||||||
redact.findCurrentOutlineItem=Najít aktuální položku osnovy
|
redact.findCurrentOutlineItem=Najít aktuální položku osnovy
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Zobrazit Javascript
|
showJS.title=Zobrazit Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Nahrajte jediný velký naskenovaný PDF soubor a nech
|
|||||||
autoSplitPDF.selectText.4=Oddělovací stránky jsou automaticky detekovány a odstraněny, což zaručuje čistý finální dokument.
|
autoSplitPDF.selectText.4=Oddělovací stránky jsou automaticky detekovány a odstraněny, což zaručuje čistý finální dokument.
|
||||||
autoSplitPDF.formPrompt=Odeslat PDF obsahující Stirling-PDF oddělovače stránek:
|
autoSplitPDF.formPrompt=Odeslat PDF obsahující Stirling-PDF oddělovače stránek:
|
||||||
autoSplitPDF.duplexMode=Duplexní režim (skenování přední a zadní strany)
|
autoSplitPDF.duplexMode=Duplexní režim (skenování přední a zadní strany)
|
||||||
autoSplitPDF.dividerDownload1=Stáhnout 'Automatický oddělovač (minimální).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Stáhnout 'Automatický oddělovač (s instrukcemi).pdf'
|
autoSplitPDF.dividerDownload2=Stáhnout 'Automatický oddělovač (s instrukcemi).pdf'
|
||||||
autoSplitPDF.submit=Odeslat
|
autoSplitPDF.submit=Odeslat
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Změnit
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF na PDF/A
|
pdfToPDFA.title=PDF na PDF/A
|
||||||
pdfToPDFA.header=PDF na PDF/A
|
pdfToPDFA.header=PDF na PDF/A
|
||||||
pdfToPDFA.credit=Tato služba používá qpdf pro konverzi do PDF/A
|
pdfToPDFA.credit=Tato služba používá libreoffice pro konverzi do PDF/A
|
||||||
pdfToPDFA.submit=Převést
|
pdfToPDFA.submit=Převést
|
||||||
pdfToPDFA.tip=Momentálně nefunguje pro více vstupů najednou
|
pdfToPDFA.tip=Momentálně nefunguje pro více vstupů najednou
|
||||||
pdfToPDFA.outputFormat=Výstupní formát
|
pdfToPDFA.outputFormat=Výstupní formát
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF Multi Værktøj
|
home.multiTool.title=PDF Multi Værktøj
|
||||||
home.multiTool.desc=Flet, Rotér, Omarrangér og Fjern sider
|
home.multiTool.desc=Flet, Rotér, Omarrangér og Fjern sider
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Vis Javascript
|
showJS.title=Vis Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Upload den enkelte store scannede PDF-fil og lad Stirl
|
|||||||
autoSplitPDF.selectText.4=Skillesider detekteres automatisk og fjernes, hvilket garanterer et pænt endeligt dokument.
|
autoSplitPDF.selectText.4=Skillesider detekteres automatisk og fjernes, hvilket garanterer et pænt endeligt dokument.
|
||||||
autoSplitPDF.formPrompt=Indsend PDF indeholdende Stirling-PDF Sideopdelere:
|
autoSplitPDF.formPrompt=Indsend PDF indeholdende Stirling-PDF Sideopdelere:
|
||||||
autoSplitPDF.duplexMode=Duplex-tilstand (For- og bagside scanning)
|
autoSplitPDF.duplexMode=Duplex-tilstand (For- og bagside scanning)
|
||||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (med instruktioner).pdf'
|
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (med instruktioner).pdf'
|
||||||
autoSplitPDF.submit=Indsend
|
autoSplitPDF.submit=Indsend
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Ændre
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF Til PDF/A
|
pdfToPDFA.title=PDF Til PDF/A
|
||||||
pdfToPDFA.header=PDF Til PDF/A
|
pdfToPDFA.header=PDF Til PDF/A
|
||||||
pdfToPDFA.credit=Denne tjeneste bruger qpdf til PDF/A-konvertering
|
pdfToPDFA.credit=Denne tjeneste bruger libreoffice til PDF/A-konvertering
|
||||||
pdfToPDFA.submit=Konvertér
|
pdfToPDFA.submit=Konvertér
|
||||||
pdfToPDFA.tip=Fungerer i øjeblikket ikke for flere input på én gang
|
pdfToPDFA.tip=Fungerer i øjeblikket ikke for flere input på én gang
|
||||||
pdfToPDFA.outputFormat=Outputformat
|
pdfToPDFA.outputFormat=Outputformat
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ analytics.settings=Sie können die Einstellungen für die Analytics in der confi
|
|||||||
# NAVBAR #
|
# NAVBAR #
|
||||||
#############
|
#############
|
||||||
navbar.favorite=Favoriten
|
navbar.favorite=Favoriten
|
||||||
navbar.recent=New and recently updated
|
navbar.recent=Neu und kürzlich aktualisiert
|
||||||
navbar.darkmode=Dunkler Modus
|
navbar.darkmode=Dunkler Modus
|
||||||
navbar.language=Sprachen
|
navbar.language=Sprachen
|
||||||
navbar.settings=Einstellungen
|
navbar.settings=Einstellungen
|
||||||
@@ -266,13 +266,14 @@ home.viewPdf.title=PDF anzeigen
|
|||||||
home.viewPdf.desc=Anzeigen, Kommentieren, Text oder Bilder hinzufügen
|
home.viewPdf.desc=Anzeigen, Kommentieren, Text oder Bilder hinzufügen
|
||||||
viewPdf.tags=anzeigen,lesen,kommentieren,text,bild
|
viewPdf.tags=anzeigen,lesen,kommentieren,text,bild
|
||||||
|
|
||||||
home.setFavorites=Set Favourites
|
home.setFavorites=Favoriten festlegen
|
||||||
home.hideFavorites=Hide Favourites
|
home.hideFavorites=Favoriten ausblenden
|
||||||
home.showFavorites=Show Favourites
|
home.showFavorites=Favoriten anzeigen
|
||||||
home.legacyHomepage=Old homepage
|
home.legacyHomepage=Alte Homepage
|
||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Probieren Sie unsere neue Homepage aus!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetisch
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Beliebtheit
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF-Multitool
|
home.multiTool.title=PDF-Multitool
|
||||||
home.multiTool.desc=Seiten zusammenführen, drehen, neu anordnen und entfernen
|
home.multiTool.desc=Seiten zusammenführen, drehen, neu anordnen und entfernen
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Zeige Anhänge
|
|||||||
redact.showLayers=Ebenen anzeigen (Doppelklick, um alle Ebenen auf den Standardzustand zurückzusetzen)
|
redact.showLayers=Ebenen anzeigen (Doppelklick, um alle Ebenen auf den Standardzustand zurückzusetzen)
|
||||||
redact.colourPicker=Farbauswahl
|
redact.colourPicker=Farbauswahl
|
||||||
redact.findCurrentOutlineItem=Aktuell gewähltes Element finden
|
redact.findCurrentOutlineItem=Aktuell gewähltes Element finden
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Javascript anzeigen
|
showJS.title=Javascript anzeigen
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Laden Sie die einzelne große gescannte PDF-Datei hoch
|
|||||||
autoSplitPDF.selectText.4=Trennseiten werden automatisch erkannt und entfernt, so dass ein sauberes Enddokument garantiert ist.
|
autoSplitPDF.selectText.4=Trennseiten werden automatisch erkannt und entfernt, so dass ein sauberes Enddokument garantiert ist.
|
||||||
autoSplitPDF.formPrompt=PDF mit Stirling-PDF Seitentrennern hochladen:
|
autoSplitPDF.formPrompt=PDF mit Stirling-PDF Seitentrennern hochladen:
|
||||||
autoSplitPDF.duplexMode=Duplex-Modus (Scannen von Vorder- und Rückseite)
|
autoSplitPDF.duplexMode=Duplex-Modus (Scannen von Vorder- und Rückseite)
|
||||||
autoSplitPDF.dividerDownload1=Herunterladen 'Auto Splitter Divider (minimal).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (mit Anleitung).pdf'
|
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (mit Anleitung).pdf'
|
||||||
autoSplitPDF.submit=Aufteilen
|
autoSplitPDF.submit=Aufteilen
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Ändern
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF zu PDF/A
|
pdfToPDFA.title=PDF zu PDF/A
|
||||||
pdfToPDFA.header=PDF zu PDF/A
|
pdfToPDFA.header=PDF zu PDF/A
|
||||||
pdfToPDFA.credit=Dieser Dienst verwendet qpdf für die PDF/A-Konvertierung
|
pdfToPDFA.credit=Dieser Dienst verwendet libreoffice für die PDF/A-Konvertierung
|
||||||
pdfToPDFA.submit=Konvertieren
|
pdfToPDFA.submit=Konvertieren
|
||||||
pdfToPDFA.tip=Dieser Dienst kann nur einzelne Eingangsdateien verarbeiten.
|
pdfToPDFA.tip=Dieser Dienst kann nur einzelne Eingangsdateien verarbeiten.
|
||||||
pdfToPDFA.outputFormat=Ausgabeformat
|
pdfToPDFA.outputFormat=Ausgabeformat
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=Πολυεργαλείο PDF
|
home.multiTool.title=Πολυεργαλείο PDF
|
||||||
home.multiTool.desc=Συγχώνευση, Περιστροφή, Αναδιάταξη, Διαχωρισμός και Αφαίρεση σελίδων
|
home.multiTool.desc=Συγχώνευση, Περιστροφή, Αναδιάταξη, Διαχωρισμός και Αφαίρεση σελίδων
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Εμφάνιση συνημμένων
|
|||||||
redact.showLayers=Εμφάνιση επιπέδων (διπλό κλικ για επαναφορά όλων των επιπέδων στην προεπιλεγμένη κατάσταση)
|
redact.showLayers=Εμφάνιση επιπέδων (διπλό κλικ για επαναφορά όλων των επιπέδων στην προεπιλεγμένη κατάσταση)
|
||||||
redact.colourPicker=Επιλογέας χρώματος
|
redact.colourPicker=Επιλογέας χρώματος
|
||||||
redact.findCurrentOutlineItem=Εύρεση τρέχοντος στοιχείου περιγράμματος
|
redact.findCurrentOutlineItem=Εύρεση τρέχοντος στοιχείου περιγράμματος
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Εμφάνιση Javascript
|
showJS.title=Εμφάνιση Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Μεταφορτώστε το ενιαίο μεγάλ
|
|||||||
autoSplitPDF.selectText.4=Οι σελίδες διαχωρισμού ανιχνεύονται και αφαιρούνται αυτόματα, εξασφαλίζοντας ένα καθαρό τελικό έγγραφο.
|
autoSplitPDF.selectText.4=Οι σελίδες διαχωρισμού ανιχνεύονται και αφαιρούνται αυτόματα, εξασφαλίζοντας ένα καθαρό τελικό έγγραφο.
|
||||||
autoSplitPDF.formPrompt=Υποβολή PDF που περιέχει διαχωριστές σελίδων Stirling-PDF:
|
autoSplitPDF.formPrompt=Υποβολή PDF που περιέχει διαχωριστές σελίδων Stirling-PDF:
|
||||||
autoSplitPDF.duplexMode=Λειτουργία διπλής όψης (Σάρωση μπρος και πίσω)
|
autoSplitPDF.duplexMode=Λειτουργία διπλής όψης (Σάρωση μπρος και πίσω)
|
||||||
autoSplitPDF.dividerDownload1=Λήψη 'Αυτόματος διαχωριστής (ελάχιστος).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Λήψη 'Αυτόματος διαχωριστής (με οδηγίες).pdf'
|
autoSplitPDF.dividerDownload2=Λήψη 'Αυτόματος διαχωριστής (με οδηγίες).pdf'
|
||||||
autoSplitPDF.submit=Υποβολή
|
autoSplitPDF.submit=Υποβολή
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Αλλαγή
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF σε PDF/A
|
pdfToPDFA.title=PDF σε PDF/A
|
||||||
pdfToPDFA.header=PDF σε PDF/A
|
pdfToPDFA.header=PDF σε PDF/A
|
||||||
pdfToPDFA.credit=Αυτή η υπηρεσία χρησιμοποιεί qpdf για μετατροπή PDF/A
|
pdfToPDFA.credit=Αυτή η υπηρεσία χρησιμοποιεί libreoffice για μετατροπή PDF/A
|
||||||
pdfToPDFA.submit=Μετατροπή
|
pdfToPDFA.submit=Μετατροπή
|
||||||
pdfToPDFA.tip=Προς το παρόν δεν λειτουργεί για πολλαπλές εισόδους ταυτόχρονα
|
pdfToPDFA.tip=Προς το παρόν δεν λειτουργεί για πολλαπλές εισόδους ταυτόχρονα
|
||||||
pdfToPDFA.outputFormat=Μορφή εξόδου
|
pdfToPDFA.outputFormat=Μορφή εξόδου
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF Multi Tool
|
home.multiTool.title=PDF Multi Tool
|
||||||
home.multiTool.desc=Merge, Rotate, Rearrange, Split, and Remove pages
|
home.multiTool.desc=Merge, Rotate, Rearrange, Split, and Remove pages
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Show Javascript
|
showJS.title=Show Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirl
|
|||||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
|
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
|
||||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
|
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
|
||||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
|
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
|
||||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
|
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
|
||||||
autoSplitPDF.submit=Submit
|
autoSplitPDF.submit=Submit
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Change
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF To PDF/A
|
pdfToPDFA.title=PDF To PDF/A
|
||||||
pdfToPDFA.header=PDF To PDF/A
|
pdfToPDFA.header=PDF To PDF/A
|
||||||
pdfToPDFA.credit=This service uses qpdf for PDF/A conversion
|
pdfToPDFA.credit=This service uses libreoffice for PDF/A conversion
|
||||||
pdfToPDFA.submit=Convert
|
pdfToPDFA.submit=Convert
|
||||||
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
pdfToPDFA.outputFormat=Output format
|
pdfToPDFA.outputFormat=Output format
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF Multi Tool
|
home.multiTool.title=PDF Multi Tool
|
||||||
home.multiTool.desc=Merge, Rotate, Rearrange, Split, and Remove pages
|
home.multiTool.desc=Merge, Rotate, Rearrange, Split, and Remove pages
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Show Javascript
|
showJS.title=Show Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirl
|
|||||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
|
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
|
||||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
|
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
|
||||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
|
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
|
||||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
|
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
|
||||||
autoSplitPDF.submit=Submit
|
autoSplitPDF.submit=Submit
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Change
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF To PDF/A
|
pdfToPDFA.title=PDF To PDF/A
|
||||||
pdfToPDFA.header=PDF To PDF/A
|
pdfToPDFA.header=PDF To PDF/A
|
||||||
pdfToPDFA.credit=This service uses qpdf for PDF/A conversion
|
pdfToPDFA.credit=This service uses libreoffice for PDF/A conversion
|
||||||
pdfToPDFA.submit=Convert
|
pdfToPDFA.submit=Convert
|
||||||
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
pdfToPDFA.outputFormat=Output format
|
pdfToPDFA.outputFormat=Output format
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=Multi-herramienta PDF
|
home.multiTool.title=Multi-herramienta PDF
|
||||||
home.multiTool.desc=Combinar, rotar, reorganizar y eliminar páginas
|
home.multiTool.desc=Combinar, rotar, reorganizar y eliminar páginas
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Mostrar Javascript
|
showJS.title=Mostrar Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Cargue un único archivo PDF escaneado de gran tamaño
|
|||||||
autoSplitPDF.selectText.4=Las páginas divisorias son automáticamente detectadas y eliminadas, garantizando un buen documento final.
|
autoSplitPDF.selectText.4=Las páginas divisorias son automáticamente detectadas y eliminadas, garantizando un buen documento final.
|
||||||
autoSplitPDF.formPrompt=Entregar PDF conteniendo divisores de página de Stirling-PDF:
|
autoSplitPDF.formPrompt=Entregar PDF conteniendo divisores de página de Stirling-PDF:
|
||||||
autoSplitPDF.duplexMode=Modo Dúplex (Escaneado de ambas caras)
|
autoSplitPDF.duplexMode=Modo Dúplex (Escaneado de ambas caras)
|
||||||
autoSplitPDF.dividerDownload1=Descargar 'Divisor automático (mínima).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Descargar 'Divisor automático (con instrucciones).pdf'
|
autoSplitPDF.dividerDownload2=Descargar 'Divisor automático (con instrucciones).pdf'
|
||||||
autoSplitPDF.submit=Entregar
|
autoSplitPDF.submit=Entregar
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Cambiar
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF a PDF/A
|
pdfToPDFA.title=PDF a PDF/A
|
||||||
pdfToPDFA.header=PDF a PDF/A
|
pdfToPDFA.header=PDF a PDF/A
|
||||||
pdfToPDFA.credit=Este servicio usa qpdf para la conversión a PDF/A
|
pdfToPDFA.credit=Este servicio usa libreoffice para la conversión a PDF/A
|
||||||
pdfToPDFA.submit=Convertir
|
pdfToPDFA.submit=Convertir
|
||||||
pdfToPDFA.tip=Actualmente no funciona para múltiples entrada a la vez
|
pdfToPDFA.tip=Actualmente no funciona para múltiples entrada a la vez
|
||||||
pdfToPDFA.outputFormat=Formato de salida
|
pdfToPDFA.outputFormat=Formato de salida
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=Erabilera anitzeko tresna PDF
|
home.multiTool.title=Erabilera anitzeko tresna PDF
|
||||||
home.multiTool.desc=Orriak konbinatu, biratu, berrantolatu eta ezabatu
|
home.multiTool.desc=Orriak konbinatu, biratu, berrantolatu eta ezabatu
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Javascript erakutsi
|
showJS.title=Javascript erakutsi
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Igo eskaneatutako PDF artxibo handia, eta utzi Stirlin
|
|||||||
autoSplitPDF.selectText.4=Orrialde zatitzaileak automatikoki detektatu eta kentzen dira, eta azken dokumentu ordenatua bermatzen da.
|
autoSplitPDF.selectText.4=Orrialde zatitzaileak automatikoki detektatu eta kentzen dira, eta azken dokumentu ordenatua bermatzen da.
|
||||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
|
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
|
||||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)Duplex modua (aurreko eta atzeko azterketa)
|
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)Duplex modua (aurreko eta atzeko azterketa)
|
||||||
autoSplitPDF.dividerDownload1=Deskargatu 'Auto Splitter Divider (minimal).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Deskargatu 'Auto Splitter Divider (with instructions).pdf'
|
autoSplitPDF.dividerDownload2=Deskargatu 'Auto Splitter Divider (with instructions).pdf'
|
||||||
autoSplitPDF.submit=Bidali
|
autoSplitPDF.submit=Bidali
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Aldatu
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDFa PDF/A bihurtu
|
pdfToPDFA.title=PDFa PDF/A bihurtu
|
||||||
pdfToPDFA.header=PDFa PDF/A bihurtu
|
pdfToPDFA.header=PDFa PDF/A bihurtu
|
||||||
pdfToPDFA.credit=Zerbitzu honek qpdf erabiltzen du PDFak PDF/A bihurtzeko
|
pdfToPDFA.credit=Zerbitzu honek libreoffice erabiltzen du PDFak PDF/A bihurtzeko
|
||||||
pdfToPDFA.submit=Bihurtu
|
pdfToPDFA.submit=Bihurtu
|
||||||
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
pdfToPDFA.outputFormat=Output format
|
pdfToPDFA.outputFormat=Output format
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=ابزار چندگانه PDF
|
home.multiTool.title=ابزار چندگانه PDF
|
||||||
home.multiTool.desc=ترکیب، چرخش، بازآرایی، تقسیم و حذف صفحات
|
home.multiTool.desc=ترکیب، چرخش، بازآرایی، تقسیم و حذف صفحات
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=نمایش جاوااسکریپت
|
showJS.title=نمایش جاوااسکریپت
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=فایل PDF بزرگ اسکن شده را بارگذ
|
|||||||
autoSplitPDF.selectText.4=صفحات جداکننده به طور خودکار تشخیص داده و حذف میشوند، تضمینکننده یک سند نهایی منظم.
|
autoSplitPDF.selectText.4=صفحات جداکننده به طور خودکار تشخیص داده و حذف میشوند، تضمینکننده یک سند نهایی منظم.
|
||||||
autoSplitPDF.formPrompt=PDF حاوی جداکنندههای Stirling-PDF را ارسال کنید:
|
autoSplitPDF.formPrompt=PDF حاوی جداکنندههای Stirling-PDF را ارسال کنید:
|
||||||
autoSplitPDF.duplexMode=حالت دوبلکس (اسکن جلو و عقب)
|
autoSplitPDF.duplexMode=حالت دوبلکس (اسکن جلو و عقب)
|
||||||
autoSplitPDF.dividerDownload1=دانلود 'Auto Splitter Divider (minimal).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=دانلود 'Auto Splitter Divider (with instructions).pdf'
|
autoSplitPDF.dividerDownload2=دانلود 'Auto Splitter Divider (with instructions).pdf'
|
||||||
autoSplitPDF.submit=ارسال
|
autoSplitPDF.submit=ارسال
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=تغییر
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF به PDF/A
|
pdfToPDFA.title=PDF به PDF/A
|
||||||
pdfToPDFA.header=PDF به PDF/A
|
pdfToPDFA.header=PDF به PDF/A
|
||||||
pdfToPDFA.credit=این سرویس از qpdf برای تبدیل PDF/A استفاده میکند
|
pdfToPDFA.credit=این سرویس از libreoffice برای تبدیل PDF/A استفاده میکند
|
||||||
pdfToPDFA.submit=تبدیل
|
pdfToPDFA.submit=تبدیل
|
||||||
pdfToPDFA.tip=در حال حاضر برای چندین ورودی به طور همزمان کار نمیکند
|
pdfToPDFA.tip=در حال حاضر برای چندین ورودی به طور همزمان کار نمیکند
|
||||||
pdfToPDFA.outputFormat=فرمت خروجی
|
pdfToPDFA.outputFormat=فرمت خروجی
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ analytics.settings=Vous pouvez modifier les paramètres des analyses dans le fic
|
|||||||
# NAVBAR #
|
# NAVBAR #
|
||||||
#############
|
#############
|
||||||
navbar.favorite=Favoris
|
navbar.favorite=Favoris
|
||||||
navbar.recent=New and recently updated
|
navbar.recent=Nouveau et mise à jour
|
||||||
navbar.darkmode=Mode sombre
|
navbar.darkmode=Mode sombre
|
||||||
navbar.language=Langues
|
navbar.language=Langues
|
||||||
navbar.settings=Paramètres
|
navbar.settings=Paramètres
|
||||||
@@ -266,13 +266,14 @@ home.viewPdf.title=Visionner le PDF
|
|||||||
home.viewPdf.desc=Visionner, annoter, ajouter du texte ou des images.
|
home.viewPdf.desc=Visionner, annoter, ajouter du texte ou des images.
|
||||||
viewPdf.tags=visualiser,lire,annoter,texte,image
|
viewPdf.tags=visualiser,lire,annoter,texte,image
|
||||||
|
|
||||||
home.setFavorites=Set Favourites
|
home.setFavorites=Ajouter des favoris
|
||||||
home.hideFavorites=Hide Favourites
|
home.hideFavorites=Cacher les favoris
|
||||||
home.showFavorites=Show Favourites
|
home.showFavorites=Montrer les favoris
|
||||||
home.legacyHomepage=Old homepage
|
home.legacyHomepage=Ancienne Homepage
|
||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Essayez notre nouvelle Homepage !
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabétique
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Popularité globale
|
||||||
|
home.sortBy=Trier par :
|
||||||
|
|
||||||
home.multiTool.title=Outil multifonction PDF
|
home.multiTool.title=Outil multifonction PDF
|
||||||
home.multiTool.desc=Fusionnez, faites pivoter, réorganisez et supprimez des pages.
|
home.multiTool.desc=Fusionnez, faites pivoter, réorganisez et supprimez des pages.
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Montrer les éléments attachés
|
|||||||
redact.showLayers=Montrer les calques (double-click pour réinitialiser tous les calques à l'état par défaut)
|
redact.showLayers=Montrer les calques (double-click pour réinitialiser tous les calques à l'état par défaut)
|
||||||
redact.colourPicker=Sélection de couleur
|
redact.colourPicker=Sélection de couleur
|
||||||
redact.findCurrentOutlineItem=Trouver l'élément de contour courrant
|
redact.findCurrentOutlineItem=Trouver l'élément de contour courrant
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Afficher le JavaScript
|
showJS.title=Afficher le JavaScript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Téléchargez le fichier PDF numérisé et laissez Sti
|
|||||||
autoSplitPDF.selectText.4=Les feuilles de séparation sont automatiquement détectées et supprimées, garantissant un document final soigné.
|
autoSplitPDF.selectText.4=Les feuilles de séparation sont automatiquement détectées et supprimées, garantissant un document final soigné.
|
||||||
autoSplitPDF.formPrompt=PDF contenant des feuilles de séparation de Stirling PDF :
|
autoSplitPDF.formPrompt=PDF contenant des feuilles de séparation de Stirling PDF :
|
||||||
autoSplitPDF.duplexMode=Mode recto-verso
|
autoSplitPDF.duplexMode=Mode recto-verso
|
||||||
autoSplitPDF.dividerDownload1=Auto Splitter Divider (minimal).pdf
|
|
||||||
autoSplitPDF.dividerDownload2=Auto Splitter Divider (with instructions).pdf
|
autoSplitPDF.dividerDownload2=Auto Splitter Divider (with instructions).pdf
|
||||||
autoSplitPDF.submit=Séparer
|
autoSplitPDF.submit=Séparer
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Modifier
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF en PDF/A
|
pdfToPDFA.title=PDF en PDF/A
|
||||||
pdfToPDFA.header=PDF en PDF/A
|
pdfToPDFA.header=PDF en PDF/A
|
||||||
pdfToPDFA.credit=Ce service utilise qpdf pour la conversion en PDF/A.
|
pdfToPDFA.credit=Ce service utilise libreoffice pour la conversion en PDF/A.
|
||||||
pdfToPDFA.submit=Convertir
|
pdfToPDFA.submit=Convertir
|
||||||
pdfToPDFA.tip=Ne fonctionne actuellement pas pour plusieurs entrées à la fois
|
pdfToPDFA.tip=Ne fonctionne actuellement pas pour plusieurs entrées à la fois
|
||||||
pdfToPDFA.outputFormat=Format de sortie
|
pdfToPDFA.outputFormat=Format de sortie
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=Il-uirlis PDF
|
home.multiTool.title=Il-uirlis PDF
|
||||||
home.multiTool.desc=Cumaisc, Rothlaigh, Atheagraigh, agus Bain leathanaigh
|
home.multiTool.desc=Cumaisc, Rothlaigh, Atheagraigh, agus Bain leathanaigh
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Taispeáin Ceangaltáin
|
|||||||
redact.showLayers=Taispeáin Sraitheanna (cliceáil faoi dhó chun gach sraith a athshocrú go dtí an staid réamhshocraithe)
|
redact.showLayers=Taispeáin Sraitheanna (cliceáil faoi dhó chun gach sraith a athshocrú go dtí an staid réamhshocraithe)
|
||||||
redact.colourPicker=Roghnóir Dathanna
|
redact.colourPicker=Roghnóir Dathanna
|
||||||
redact.findCurrentOutlineItem=Faigh imlíne reatha
|
redact.findCurrentOutlineItem=Faigh imlíne reatha
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Taispeáin Javascript
|
showJS.title=Taispeáin Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Uaslódáil an comhad PDF mór scanta amháin agus lig
|
|||||||
autoSplitPDF.selectText.4=Déantar leathanaigh roinnteoirí a bhrath agus a bhaint go huathoibríoch, rud a ráthaíonn doiciméad deiridh néata.
|
autoSplitPDF.selectText.4=Déantar leathanaigh roinnteoirí a bhrath agus a bhaint go huathoibríoch, rud a ráthaíonn doiciméad deiridh néata.
|
||||||
autoSplitPDF.formPrompt=Cuir PDF isteach ina bhfuil roinnteoirí Leathanaigh Stirling-PDF:
|
autoSplitPDF.formPrompt=Cuir PDF isteach ina bhfuil roinnteoirí Leathanaigh Stirling-PDF:
|
||||||
autoSplitPDF.duplexMode=Mód Duplex (scanadh tosaigh agus cúil)
|
autoSplitPDF.duplexMode=Mód Duplex (scanadh tosaigh agus cúil)
|
||||||
autoSplitPDF.dividerDownload1=Íoslódáil 'Auto Scoilteoir Roinnteoir (íosmhéid).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Íoslódáil 'Auto Splitter Divider (le treoracha).pdf'
|
autoSplitPDF.dividerDownload2=Íoslódáil 'Auto Splitter Divider (le treoracha).pdf'
|
||||||
autoSplitPDF.submit=Cuir isteach
|
autoSplitPDF.submit=Cuir isteach
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Athrú
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF Go PDF/A
|
pdfToPDFA.title=PDF Go PDF/A
|
||||||
pdfToPDFA.header=PDF Go PDF/A
|
pdfToPDFA.header=PDF Go PDF/A
|
||||||
pdfToPDFA.credit=Úsáideann an tseirbhís seo qpdf chun PDF/A a thiontú
|
pdfToPDFA.credit=Úsáideann an tseirbhís seo libreoffice chun PDF/A a thiontú
|
||||||
pdfToPDFA.submit=Tiontaigh
|
pdfToPDFA.submit=Tiontaigh
|
||||||
pdfToPDFA.tip=Faoi láthair ní oibríonn sé le haghaidh ionchuir iolracha ag an am céanna
|
pdfToPDFA.tip=Faoi láthair ní oibríonn sé le haghaidh ionchuir iolracha ag an am céanna
|
||||||
pdfToPDFA.outputFormat=Formáid aschuir
|
pdfToPDFA.outputFormat=Formáid aschuir
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF मल्टी टूल
|
home.multiTool.title=PDF मल्टी टूल
|
||||||
home.multiTool.desc=मर्ज करें, घुमाएं, पुनर्व्यवस्थित करें और पृष्ठ हटाएं
|
home.multiTool.desc=मर्ज करें, घुमाएं, पुनर्व्यवस्थित करें और पृष्ठ हटाएं
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=अटैचमेंट दिखाएं
|
|||||||
redact.showLayers=लेयर्स दिखाएं (सभी लेयर्स को डिफ़ॉल्ट स्थिति में रीसेट करने के लिए डबल-क्लिक करें)
|
redact.showLayers=लेयर्स दिखाएं (सभी लेयर्स को डिफ़ॉल्ट स्थिति में रीसेट करने के लिए डबल-क्लिक करें)
|
||||||
redact.colourPicker=रंग चयनकर्ता
|
redact.colourPicker=रंग चयनकर्ता
|
||||||
redact.findCurrentOutlineItem=वर्तमान आउटलाइन आइटम खोजें
|
redact.findCurrentOutlineItem=वर्तमान आउटलाइन आइटम खोजें
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=जावास्क्रिप्ट दिखाएं
|
showJS.title=जावास्क्रिप्ट दिखाएं
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=एक बड़ी स्कैन की गई PDF
|
|||||||
autoSplitPDF.selectText.4=विभाजक पृष्ठ स्वचालित रूप से पहचाने जाते हैं और हटा दिए जाते हैं, एक साफ अंतिम दस्तावेज़ सुनिश्चित करते हैं।
|
autoSplitPDF.selectText.4=विभाजक पृष्ठ स्वचालित रूप से पहचाने जाते हैं और हटा दिए जाते हैं, एक साफ अंतिम दस्तावेज़ सुनिश्चित करते हैं।
|
||||||
autoSplitPDF.formPrompt=Stirling-PDF पृष्ठ विभाजक वाली PDF जमा करें:
|
autoSplitPDF.formPrompt=Stirling-PDF पृष्ठ विभाजक वाली PDF जमा करें:
|
||||||
autoSplitPDF.duplexMode=डुप्लेक्स मोड (सामने और पीछे स्कैनिंग)
|
autoSplitPDF.duplexMode=डुप्लेक्स मोड (सामने और पीछे स्कैनिंग)
|
||||||
autoSplitPDF.dividerDownload1='स्वतः विभाजक (न्यूनतम).pdf' डाउनलोड करें
|
|
||||||
autoSplitPDF.dividerDownload2='स्वतः विभाजक (निर्देशों के साथ).pdf' डाउनलोड करें
|
autoSplitPDF.dividerDownload2='स्वतः विभाजक (निर्देशों के साथ).pdf' डाउनलोड करें
|
||||||
autoSplitPDF.submit=जमा करें
|
autoSplitPDF.submit=जमा करें
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=बदलें
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF से PDF/A
|
pdfToPDFA.title=PDF से PDF/A
|
||||||
pdfToPDFA.header=PDF से PDF/A
|
pdfToPDFA.header=PDF से PDF/A
|
||||||
pdfToPDFA.credit=यह सेवा PDF/A रूपांतरण के लिए qpdf का उपयोग करती है
|
pdfToPDFA.credit=यह सेवा PDF/A रूपांतरण के लिए libreoffice का उपयोग करती है
|
||||||
pdfToPDFA.submit=बदलें
|
pdfToPDFA.submit=बदलें
|
||||||
pdfToPDFA.tip=वर्तमान में एक बार में कई इनपुट के लिए काम नहीं करता
|
pdfToPDFA.tip=वर्तमान में एक बार में कई इनपुट के लिए काम नहीं करता
|
||||||
pdfToPDFA.outputFormat=आउटपुट प्रारूप
|
pdfToPDFA.outputFormat=आउटपुट प्रारूप
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF Višestruki alat
|
home.multiTool.title=PDF Višestruki alat
|
||||||
home.multiTool.desc=Spajanje, rotiranje, preuređivanje i uklanjanje stranica
|
home.multiTool.desc=Spajanje, rotiranje, preuređivanje i uklanjanje stranica
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Prikaži Javascript
|
showJS.title=Prikaži Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Prenesite jednu veliku skeniranu PDF datoteku i pustit
|
|||||||
autoSplitPDF.selectText.4=Razdjelne stranice automatski se otkrivaju i uklanjaju, jamčeći uredan konačni dokument.
|
autoSplitPDF.selectText.4=Razdjelne stranice automatski se otkrivaju i uklanjaju, jamčeći uredan konačni dokument.
|
||||||
autoSplitPDF.formPrompt=Pošaljite PDF koji sadrži naše razdjelnike stranica:
|
autoSplitPDF.formPrompt=Pošaljite PDF koji sadrži naše razdjelnike stranica:
|
||||||
autoSplitPDF.duplexMode=Obostrani način rada (skeniranje s prednje i stražnje strane)
|
autoSplitPDF.duplexMode=Obostrani način rada (skeniranje s prednje i stražnje strane)
|
||||||
autoSplitPDF.dividerDownload1=Preuzmite 'Auto Splitter Divider (minimalan).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Preuzmite 'Auto Splitter Divider (s uputama).pdf'
|
autoSplitPDF.dividerDownload2=Preuzmite 'Auto Splitter Divider (s uputama).pdf'
|
||||||
autoSplitPDF.submit=Potvrdi
|
autoSplitPDF.submit=Potvrdi
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Promijeniti
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF u PDF/A
|
pdfToPDFA.title=PDF u PDF/A
|
||||||
pdfToPDFA.header=PDF u PDF/A
|
pdfToPDFA.header=PDF u PDF/A
|
||||||
pdfToPDFA.credit=Ova usluga koristi qpdf za PDF/A pretvorbu
|
pdfToPDFA.credit=Ova usluga koristi libreoffice za PDF/A pretvorbu
|
||||||
pdfToPDFA.submit=Pretvoriti
|
pdfToPDFA.submit=Pretvoriti
|
||||||
pdfToPDFA.tip=Trenutno ne radi za više unosa odjednom
|
pdfToPDFA.tip=Trenutno ne radi za više unosa odjednom
|
||||||
pdfToPDFA.outputFormat=Izlazni format
|
pdfToPDFA.outputFormat=Izlazni format
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF többfunkciós eszköz
|
home.multiTool.title=PDF többfunkciós eszköz
|
||||||
home.multiTool.desc=Egyesítés, forgatás, átrendezés és oldalak eltávolítása
|
home.multiTool.desc=Egyesítés, forgatás, átrendezés és oldalak eltávolítása
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=JavaScript megjelenítése
|
showJS.title=JavaScript megjelenítése
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Töltse fel az egyetlen nagy szkennelt PDF fájlt, és
|
|||||||
autoSplitPDF.selectText.4=Az elválasztólapokat automatikusan felismeri és eltávolítja, garantálva a rendezett végeredményt.
|
autoSplitPDF.selectText.4=Az elválasztólapokat automatikusan felismeri és eltávolítja, garantálva a rendezett végeredményt.
|
||||||
autoSplitPDF.formPrompt=Töltse fel a Stirling-PDF oldalelválasztókat tartalmazó PDF-et:
|
autoSplitPDF.formPrompt=Töltse fel a Stirling-PDF oldalelválasztókat tartalmazó PDF-et:
|
||||||
autoSplitPDF.duplexMode=Duplex mód (Elő- és hátoldali szkennelés)
|
autoSplitPDF.duplexMode=Duplex mód (Elő- és hátoldali szkennelés)
|
||||||
autoSplitPDF.dividerDownload1='Automatikus elválasztó (minimális).pdf' letöltése
|
|
||||||
autoSplitPDF.dividerDownload2='Automatikus elválasztó (utasításokkal).pdf' letöltése
|
autoSplitPDF.dividerDownload2='Automatikus elválasztó (utasításokkal).pdf' letöltése
|
||||||
autoSplitPDF.submit=Küldés
|
autoSplitPDF.submit=Küldés
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Módosítás
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF konvertálása PDF/A formátumba
|
pdfToPDFA.title=PDF konvertálása PDF/A formátumba
|
||||||
pdfToPDFA.header=PDF konvertálása PDF/A formátumba
|
pdfToPDFA.header=PDF konvertálása PDF/A formátumba
|
||||||
pdfToPDFA.credit=Ez a szolgáltatás a qpdf használatával végzi a PDF/A konverziót
|
pdfToPDFA.credit=Ez a szolgáltatás a libreoffice használatával végzi a PDF/A konverziót
|
||||||
pdfToPDFA.submit=Konvertálás
|
pdfToPDFA.submit=Konvertálás
|
||||||
pdfToPDFA.tip=Jelenleg nem támogatja a több fájl egyidejű feldolgozását
|
pdfToPDFA.tip=Jelenleg nem támogatja a több fájl egyidejű feldolgozását
|
||||||
pdfToPDFA.outputFormat=Kimeneti formátum
|
pdfToPDFA.outputFormat=Kimeneti formátum
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=Alat Multi PDF
|
home.multiTool.title=Alat Multi PDF
|
||||||
home.multiTool.desc=Menggabungkan, Memutar, Mengatur Ulang, dan Menghapus halaman
|
home.multiTool.desc=Menggabungkan, Memutar, Mengatur Ulang, dan Menghapus halaman
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Tampilkan Javascript
|
showJS.title=Tampilkan Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Unggah satu berkas PDF besar yang dipindai dan biarkan
|
|||||||
autoSplitPDF.selectText.4=Halaman pembatas secara otomatis terdeteksi dan dihapus, menjamin dokumen akhir yang rapi.
|
autoSplitPDF.selectText.4=Halaman pembatas secara otomatis terdeteksi dan dihapus, menjamin dokumen akhir yang rapi.
|
||||||
autoSplitPDF.formPrompt=Kirimkan PDF yang berisi pembagi Halaman Stirling-PDF:
|
autoSplitPDF.formPrompt=Kirimkan PDF yang berisi pembagi Halaman Stirling-PDF:
|
||||||
autoSplitPDF.duplexMode=Mode Dupleks (Pemindaian depan dan belakang)
|
autoSplitPDF.duplexMode=Mode Dupleks (Pemindaian depan dan belakang)
|
||||||
autoSplitPDF.dividerDownload1=Unduh 'Pembagi Pembagi Otomatis (minimal).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Unduh 'Pembagi Pembagi Otomatis (dengan instruksi).pdf'
|
autoSplitPDF.dividerDownload2=Unduh 'Pembagi Pembagi Otomatis (dengan instruksi).pdf'
|
||||||
autoSplitPDF.submit=Kirim
|
autoSplitPDF.submit=Kirim
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Ganti
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF Ke PDF/A
|
pdfToPDFA.title=PDF Ke PDF/A
|
||||||
pdfToPDFA.header=PDF ke PDF/A
|
pdfToPDFA.header=PDF ke PDF/A
|
||||||
pdfToPDFA.credit=Layanan ini menggunakan qpdf untuk konversi PDF/A.
|
pdfToPDFA.credit=Layanan ini menggunakan libreoffice untuk konversi PDF/A.
|
||||||
pdfToPDFA.submit=Konversi
|
pdfToPDFA.submit=Konversi
|
||||||
pdfToPDFA.tip=Saat ini tidak dapat digunakan untuk beberapa input sekaligus
|
pdfToPDFA.tip=Saat ini tidak dapat digunakan untuk beberapa input sekaligus
|
||||||
pdfToPDFA.outputFormat=Format keluaran
|
pdfToPDFA.outputFormat=Format keluaran
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ bored=Stanco di aspettare?
|
|||||||
alphabet=Alfabeto
|
alphabet=Alfabeto
|
||||||
downloadPdf=Scarica PDF
|
downloadPdf=Scarica PDF
|
||||||
text=Testo
|
text=Testo
|
||||||
font=Fonte
|
font=Font
|
||||||
selectFillter=-- Seleziona --
|
selectFillter=-- Seleziona --
|
||||||
pageNum=Numero pagina
|
pageNum=Numero pagina
|
||||||
sizes.small=Piccolo
|
sizes.small=Piccolo
|
||||||
@@ -272,7 +272,8 @@ home.showFavorites=Mostra preferiti
|
|||||||
home.legacyHomepage=Vecchia homepage
|
home.legacyHomepage=Vecchia homepage
|
||||||
home.newHomePage=Prova la nostra nuova homepage!
|
home.newHomePage=Prova la nostra nuova homepage!
|
||||||
home.alphabetical=Alfabetico
|
home.alphabetical=Alfabetico
|
||||||
home.globalPopularity=Popolarità globale
|
home.globalPopularity=Popolarità
|
||||||
|
home.sortBy=Ordinamento:
|
||||||
|
|
||||||
home.multiTool.title=Multifunzione PDF
|
home.multiTool.title=Multifunzione PDF
|
||||||
home.multiTool.desc=Unisci, Ruota, Riordina, e Rimuovi pagine
|
home.multiTool.desc=Unisci, Ruota, Riordina, e Rimuovi pagine
|
||||||
@@ -601,7 +602,7 @@ autoRedact.submitButton=Invia
|
|||||||
redact.title=Redazione manuale
|
redact.title=Redazione manuale
|
||||||
redact.header=Redazione manuale
|
redact.header=Redazione manuale
|
||||||
redact.submit=Redazione
|
redact.submit=Redazione
|
||||||
redact.textBasedRedaction=TRedazione basata sul testo
|
redact.textBasedRedaction=Redazione basata sul testo
|
||||||
redact.pageBasedRedaction=Redazione basata sulla pagina
|
redact.pageBasedRedaction=Redazione basata sulla pagina
|
||||||
redact.convertPDFToImageLabel=Converti PDF in immagine PDF (utilizzato per rimuovere il testo dietro la casella)
|
redact.convertPDFToImageLabel=Converti PDF in immagine PDF (utilizzato per rimuovere il testo dietro la casella)
|
||||||
redact.pageRedactionNumbers.title=Pagine
|
redact.pageRedactionNumbers.title=Pagine
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Mostra allegati
|
|||||||
redact.showLayers=Mostra livelli (fare doppio clic per ripristinare tutti i livelli allo stato predefinito)
|
redact.showLayers=Mostra livelli (fare doppio clic per ripristinare tutti i livelli allo stato predefinito)
|
||||||
redact.colourPicker=Selettore colore
|
redact.colourPicker=Selettore colore
|
||||||
redact.findCurrentOutlineItem=Trova l'elemento di contorno corrente
|
redact.findCurrentOutlineItem=Trova l'elemento di contorno corrente
|
||||||
|
redact.applyChanges=Applica modifiche
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Mostra Javascript
|
showJS.title=Mostra Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Carica il singolo file PDF scansionato di grandi dimen
|
|||||||
autoSplitPDF.selectText.4=Le pagine divisorie vengono rilevate e rimosse automaticamente, garantendo un documento finale ordinato.
|
autoSplitPDF.selectText.4=Le pagine divisorie vengono rilevate e rimosse automaticamente, garantendo un documento finale ordinato.
|
||||||
autoSplitPDF.formPrompt=Invia PDF contenente divisori di pagina Stirling-PDF:
|
autoSplitPDF.formPrompt=Invia PDF contenente divisori di pagina Stirling-PDF:
|
||||||
autoSplitPDF.duplexMode=Modalità duplex (scansione fronte e retro)
|
autoSplitPDF.duplexMode=Modalità duplex (scansione fronte e retro)
|
||||||
autoSplitPDF.dividerDownload1=Scarica 'Divisore automatico (minimo).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Scarica 'Divisore automatico (con istruzioni).pdf'
|
autoSplitPDF.dividerDownload2=Scarica 'Divisore automatico (con istruzioni).pdf'
|
||||||
autoSplitPDF.submit=Invia
|
autoSplitPDF.submit=Invia
|
||||||
|
|
||||||
@@ -925,7 +926,7 @@ ocr.selectText.10=Modalità OCR
|
|||||||
ocr.selectText.11=Rimuovi immagini dopo la scansione (Rimuove TUTTE le immagini, utile solo come parte del processo di conversione)
|
ocr.selectText.11=Rimuovi immagini dopo la scansione (Rimuove TUTTE le immagini, utile solo come parte del processo di conversione)
|
||||||
ocr.selectText.12=Modalità di rendering (avanzato)
|
ocr.selectText.12=Modalità di rendering (avanzato)
|
||||||
ocr.help=Per favore leggi la documentazione su come usare il programma per altri linguaggi e/o uso non in Docker
|
ocr.help=Per favore leggi la documentazione su come usare il programma per altri linguaggi e/o uso non in Docker
|
||||||
ocr.credit=Questo servizio utilizza qpdf e Tesseract per l'OCR.
|
ocr.credit=Questo servizio utilizza Qpdf e Tesseract per l'OCR.
|
||||||
ocr.submit=Scansiona testo nel PDF con OCR
|
ocr.submit=Scansiona testo nel PDF con OCR
|
||||||
|
|
||||||
|
|
||||||
@@ -951,7 +952,7 @@ compress.title=Comprimi
|
|||||||
compress.header=Comprimi PDF
|
compress.header=Comprimi PDF
|
||||||
compress.credit=Questo servizio utilizza qpdf per la compressione/ottimizzazione dei PDF.
|
compress.credit=Questo servizio utilizza qpdf per la compressione/ottimizzazione dei PDF.
|
||||||
compress.selectText.1=Modalità manuale - Da 1 a 5
|
compress.selectText.1=Modalità manuale - Da 1 a 5
|
||||||
compress.selectText.1.1=In optimization levels 6 to 9, in addition to general PDF compression, image resolution is scaled down to further reduce file size. Higher levels result in stronger image compression (up to 50% of the original size), achieving greater size reduction but with potential quality loss in images.
|
compress.selectText.1.1=Nei livelli di ottimizzazione da 6 a 9, oltre alla compressione PDF generale, la risoluzione dell'immagine viene ridotta per ridurre ulteriormente le dimensioni del file. Livelli più alti comportano una compressione dell'immagine più forte (fino al 50% delle dimensioni originali), ottenendo una maggiore riduzione delle dimensioni ma con una potenziale perdita di qualità nelle immagini.
|
||||||
compress.selectText.2=Livello di ottimizzazione:
|
compress.selectText.2=Livello di ottimizzazione:
|
||||||
compress.selectText.3=4 (Terribile per le immagini di testo)
|
compress.selectText.3=4 (Terribile per le immagini di testo)
|
||||||
compress.selectText.4=Modalità automatica - Regola automaticamente la qualità per ottenere le dimensioni esatte del PDF
|
compress.selectText.4=Modalità automatica - Regola automaticamente la qualità per ottenere le dimensioni esatte del PDF
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Cambia proprietà
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=Da PDF a PDF/A
|
pdfToPDFA.title=Da PDF a PDF/A
|
||||||
pdfToPDFA.header=Da PDF a PDF/A
|
pdfToPDFA.header=Da PDF a PDF/A
|
||||||
pdfToPDFA.credit=Questo servizio utilizza qpdf per la conversione in PDF/A.
|
pdfToPDFA.credit=Questo servizio utilizza libreoffice per la conversione in PDF/A.
|
||||||
pdfToPDFA.submit=Converti
|
pdfToPDFA.submit=Converti
|
||||||
pdfToPDFA.tip=Attualmente non funziona per più input contemporaneamente
|
pdfToPDFA.tip=Attualmente non funziona per più input contemporaneamente
|
||||||
pdfToPDFA.outputFormat=Formato di output
|
pdfToPDFA.outputFormat=Formato di output
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDFマルチツール
|
home.multiTool.title=PDFマルチツール
|
||||||
home.multiTool.desc=ページの結合、回転、並べ替え、削除します。
|
home.multiTool.desc=ページの結合、回転、並べ替え、削除します。
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=添付ファイルを表示
|
|||||||
redact.showLayers=レイヤーを表示(ダブルクリックするとすべてのレイヤーがデフォルトの状態にリセットされます)
|
redact.showLayers=レイヤーを表示(ダブルクリックするとすべてのレイヤーがデフォルトの状態にリセットされます)
|
||||||
redact.colourPicker=カラー選択
|
redact.colourPicker=カラー選択
|
||||||
redact.findCurrentOutlineItem=現在のアウトライン項目を検索
|
redact.findCurrentOutlineItem=現在のアウトライン項目を検索
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Javascriptを表示
|
showJS.title=Javascriptを表示
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=スキャンしたPDFファイルをアップロード
|
|||||||
autoSplitPDF.selectText.4=仕切りページは自動的に検出、削除されるので、最終的な文書はきれいに仕上がります。
|
autoSplitPDF.selectText.4=仕切りページは自動的に検出、削除されるので、最終的な文書はきれいに仕上がります。
|
||||||
autoSplitPDF.formPrompt=Stirling-PDF仕切り用紙を含むPDFを送信:
|
autoSplitPDF.formPrompt=Stirling-PDF仕切り用紙を含むPDFを送信:
|
||||||
autoSplitPDF.duplexMode=両面モード (表裏スキャン)
|
autoSplitPDF.duplexMode=両面モード (表裏スキャン)
|
||||||
autoSplitPDF.dividerDownload1=ダウンロード '自動仕切り用紙 (最小).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=ダウンロード '自動仕切り用紙 (手順書付き).pdf'
|
autoSplitPDF.dividerDownload2=ダウンロード '自動仕切り用紙 (手順書付き).pdf'
|
||||||
autoSplitPDF.submit=送信
|
autoSplitPDF.submit=送信
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=変更
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDFをPDF/Aに変換
|
pdfToPDFA.title=PDFをPDF/Aに変換
|
||||||
pdfToPDFA.header=PDFをPDF/Aに変換
|
pdfToPDFA.header=PDFをPDF/Aに変換
|
||||||
pdfToPDFA.credit=本サービスはPDF/Aの変換にqpdfを使用しています。
|
pdfToPDFA.credit=本サービスはPDF/Aの変換にlibreofficeを使用しています。
|
||||||
pdfToPDFA.submit=変換
|
pdfToPDFA.submit=変換
|
||||||
pdfToPDFA.tip=現在、一度に複数の入力に対して機能しません
|
pdfToPDFA.tip=現在、一度に複数の入力に対して機能しません
|
||||||
pdfToPDFA.outputFormat=出力形式
|
pdfToPDFA.outputFormat=出力形式
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF 멀티 도구
|
home.multiTool.title=PDF 멀티 도구
|
||||||
home.multiTool.desc=병합, 회전, 재배치, 분할 및 페이지 제거
|
home.multiTool.desc=병합, 회전, 재배치, 분할 및 페이지 제거
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=첨부 파일 보기
|
|||||||
redact.showLayers=레이어 보기 (더블클릭하여 모든 레이어를 기본 상태로 재설정)
|
redact.showLayers=레이어 보기 (더블클릭하여 모든 레이어를 기본 상태로 재설정)
|
||||||
redact.colourPicker=색상 선택기
|
redact.colourPicker=색상 선택기
|
||||||
redact.findCurrentOutlineItem=현재 개요 항목 찾기
|
redact.findCurrentOutlineItem=현재 개요 항목 찾기
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=JavaScript 보기
|
showJS.title=JavaScript 보기
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=스캔한 단일 PDF 파일을 업로드하고 나머
|
|||||||
autoSplitPDF.selectText.4=구분자 페이지는 자동으로 감지되고 제거되어 깔끔한 최종 문서를 보장합니다.
|
autoSplitPDF.selectText.4=구분자 페이지는 자동으로 감지되고 제거되어 깔끔한 최종 문서를 보장합니다.
|
||||||
autoSplitPDF.formPrompt=Stirling-PDF 페이지 구분자가 포함된 PDF 제출:
|
autoSplitPDF.formPrompt=Stirling-PDF 페이지 구분자가 포함된 PDF 제출:
|
||||||
autoSplitPDF.duplexMode=양면 모드 (앞뒷면 스캔)
|
autoSplitPDF.duplexMode=양면 모드 (앞뒷면 스캔)
|
||||||
autoSplitPDF.dividerDownload1='자동 분할 구분자 (최소)' PDF 다운로드
|
|
||||||
autoSplitPDF.dividerDownload2='자동 분할 구분자 (설명 포함)' PDF 다운로드
|
autoSplitPDF.dividerDownload2='자동 분할 구분자 (설명 포함)' PDF 다운로드
|
||||||
autoSplitPDF.submit=제출
|
autoSplitPDF.submit=제출
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=변경
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF를 PDF/A로
|
pdfToPDFA.title=PDF를 PDF/A로
|
||||||
pdfToPDFA.header=PDF를 PDF/A로
|
pdfToPDFA.header=PDF를 PDF/A로
|
||||||
pdfToPDFA.credit=이 서비스는 PDF/A 변환을 위해 qpdf를 사용합니다
|
pdfToPDFA.credit=이 서비스는 PDF/A 변환을 위해 libreoffice를 사용합니다
|
||||||
pdfToPDFA.submit=변환
|
pdfToPDFA.submit=변환
|
||||||
pdfToPDFA.tip=현재 여러 입력을 한 번에 처리할 수 없습니다
|
pdfToPDFA.tip=현재 여러 입력을 한 번에 처리할 수 없습니다
|
||||||
pdfToPDFA.outputFormat=출력 형식
|
pdfToPDFA.outputFormat=출력 형식
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF multitool
|
home.multiTool.title=PDF multitool
|
||||||
home.multiTool.desc=Pagina's samenvoegen, draaien, herschikken en verwijderen
|
home.multiTool.desc=Pagina's samenvoegen, draaien, herschikken en verwijderen
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Toon Javascript
|
showJS.title=Toon Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Upload het enkele grote gescande PDF-bestand en laat S
|
|||||||
autoSplitPDF.selectText.4=Scheidingspagina's worden automatisch gedetecteerd en verwijderd, wat een net einddocument garandeert.
|
autoSplitPDF.selectText.4=Scheidingspagina's worden automatisch gedetecteerd en verwijderd, wat een net einddocument garandeert.
|
||||||
autoSplitPDF.formPrompt=Dien PDF in met Stirling-PDF Pagina-scheiders:
|
autoSplitPDF.formPrompt=Dien PDF in met Stirling-PDF Pagina-scheiders:
|
||||||
autoSplitPDF.duplexMode=Duplex Modus (voor- en achterkant scannen)
|
autoSplitPDF.duplexMode=Duplex Modus (voor- en achterkant scannen)
|
||||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
|
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
|
||||||
autoSplitPDF.submit=Indienen
|
autoSplitPDF.submit=Indienen
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Wijzigen
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF naar PDF/A
|
pdfToPDFA.title=PDF naar PDF/A
|
||||||
pdfToPDFA.header=PDF naar PDF/A
|
pdfToPDFA.header=PDF naar PDF/A
|
||||||
pdfToPDFA.credit=Deze service gebruikt qpdf voor PDF/A-conversie
|
pdfToPDFA.credit=Deze service gebruikt libreoffice voor PDF/A-conversie
|
||||||
pdfToPDFA.submit=Converteren
|
pdfToPDFA.submit=Converteren
|
||||||
pdfToPDFA.tip=Werkt momenteel niet voor meerdere inputs tegelijkertijd.
|
pdfToPDFA.tip=Werkt momenteel niet voor meerdere inputs tegelijkertijd.
|
||||||
pdfToPDFA.outputFormat=Uitvoerindeling
|
pdfToPDFA.outputFormat=Uitvoerindeling
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF Multi Verktøy
|
home.multiTool.title=PDF Multi Verktøy
|
||||||
home.multiTool.desc=Slå sammen, roter, omorganiser og fjern sider
|
home.multiTool.desc=Slå sammen, roter, omorganiser og fjern sider
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Vis Javascript
|
showJS.title=Vis Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Last opp den enkelte store skannede PDF-filen og la St
|
|||||||
autoSplitPDF.selectText.4=Delingssidene blir automatisk oppdaget og fjernet, og garanterer et pent endelig dokument.
|
autoSplitPDF.selectText.4=Delingssidene blir automatisk oppdaget og fjernet, og garanterer et pent endelig dokument.
|
||||||
autoSplitPDF.formPrompt=Send inn PDF som inneholder Stirling-PDF-sideskillere:
|
autoSplitPDF.formPrompt=Send inn PDF som inneholder Stirling-PDF-sideskillere:
|
||||||
autoSplitPDF.duplexMode=Dupleksmodus (Front- og bakskanning)
|
autoSplitPDF.duplexMode=Dupleksmodus (Front- og bakskanning)
|
||||||
autoSplitPDF.dividerDownload1=Last ned 'Auto Splitter Divider (minimal).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Last ned 'Auto Splitter Divider (med instruksjoner).pdf'
|
autoSplitPDF.dividerDownload2=Last ned 'Auto Splitter Divider (med instruksjoner).pdf'
|
||||||
autoSplitPDF.submit=Send inn
|
autoSplitPDF.submit=Send inn
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Endre
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF til PDF/A
|
pdfToPDFA.title=PDF til PDF/A
|
||||||
pdfToPDFA.header=PDF til PDF/A
|
pdfToPDFA.header=PDF til PDF/A
|
||||||
pdfToPDFA.credit=Denne tjenesten bruker qpdf for PDF/A-konvertering
|
pdfToPDFA.credit=Denne tjenesten bruker libreoffice for PDF/A-konvertering
|
||||||
pdfToPDFA.submit=Konverter
|
pdfToPDFA.submit=Konverter
|
||||||
pdfToPDFA.tip=Fungere for øyeblikket ikke for flere innganger samtidig
|
pdfToPDFA.tip=Fungere for øyeblikket ikke for flere innganger samtidig
|
||||||
pdfToPDFA.outputFormat=Utdataformat
|
pdfToPDFA.outputFormat=Utdataformat
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=Wielofunkcyjne Narzędzie PDF
|
home.multiTool.title=Wielofunkcyjne Narzędzie PDF
|
||||||
home.multiTool.desc=Łącz, dziel, obracaj, zmieniaj kolejność i usuwaj strony
|
home.multiTool.desc=Łącz, dziel, obracaj, zmieniaj kolejność i usuwaj strony
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Pokaż Javascript
|
showJS.title=Pokaż Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Wyślij pojedynczy duży plik PDF zawierający skan i
|
|||||||
autoSplitPDF.selectText.4=Strony separacji są automatycznie wykrywane i usuwane, gwarantując ładny finalny dokument.
|
autoSplitPDF.selectText.4=Strony separacji są automatycznie wykrywane i usuwane, gwarantując ładny finalny dokument.
|
||||||
autoSplitPDF.formPrompt=Wyślij dokument PDF zawierający strony podziału z Stirling PDF.
|
autoSplitPDF.formPrompt=Wyślij dokument PDF zawierający strony podziału z Stirling PDF.
|
||||||
autoSplitPDF.duplexMode=Skanowanie dwustronne
|
autoSplitPDF.duplexMode=Skanowanie dwustronne
|
||||||
autoSplitPDF.dividerDownload1=Pobierz 'Auto Splitter Divider (minimal).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Pobierz 'Auto Splitter Divider (with instructions).pdf'
|
autoSplitPDF.dividerDownload2=Pobierz 'Auto Splitter Divider (with instructions).pdf'
|
||||||
autoSplitPDF.submit=Wyślij
|
autoSplitPDF.submit=Wyślij
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Zmień
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF na PDF/A
|
pdfToPDFA.title=PDF na PDF/A
|
||||||
pdfToPDFA.header=PDF na PDF/A
|
pdfToPDFA.header=PDF na PDF/A
|
||||||
pdfToPDFA.credit=Ta usługa używa qpdf do konwersji PDF/A
|
pdfToPDFA.credit=Ta usługa używa libreoffice do konwersji PDF/A
|
||||||
pdfToPDFA.submit=Konwertuj
|
pdfToPDFA.submit=Konwertuj
|
||||||
pdfToPDFA.tip=Tylko jeden plik na raz
|
pdfToPDFA.tip=Tylko jeden plik na raz
|
||||||
pdfToPDFA.outputFormat=Format wyjściowy:
|
pdfToPDFA.outputFormat=Format wyjściowy:
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ analytics.settings=Você pode alterar as configurações de coleta de dados no a
|
|||||||
# NAVBAR #
|
# NAVBAR #
|
||||||
#############
|
#############
|
||||||
navbar.favorite=Favoritos
|
navbar.favorite=Favoritos
|
||||||
navbar.recent=New and recently updated
|
navbar.recent=Novos e Recentemente Atualizados
|
||||||
navbar.darkmode=Modo Escuro
|
navbar.darkmode=Modo Escuro
|
||||||
navbar.language=Idiomas
|
navbar.language=Idiomas
|
||||||
navbar.settings=Configurações
|
navbar.settings=Configurações
|
||||||
@@ -266,13 +266,14 @@ home.viewPdf.title=Visualizar PDF
|
|||||||
home.viewPdf.desc=Visualizar, anotar, adicionar texto ou imagens ao PDF.
|
home.viewPdf.desc=Visualizar, anotar, adicionar texto ou imagens ao PDF.
|
||||||
viewPdf.tags=visualizar,ler,anotar,texto,imagem
|
viewPdf.tags=visualizar,ler,anotar,texto,imagem
|
||||||
|
|
||||||
home.setFavorites=Set Favourites
|
home.setFavorites=Adicionar Favoritos
|
||||||
home.hideFavorites=Hide Favourites
|
home.hideFavorites=Ocultar Favoritos
|
||||||
home.showFavorites=Show Favourites
|
home.showFavorites=Mostrar Favoritos
|
||||||
home.legacyHomepage=Old homepage
|
home.legacyHomepage=Homepage Antiga
|
||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Experimente nossa nova Homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alfabética
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Popularidade Global
|
||||||
|
home.sortBy=Ordenar por:
|
||||||
|
|
||||||
home.multiTool.title=Multiferramentas de PDF
|
home.multiTool.title=Multiferramentas de PDF
|
||||||
home.multiTool.desc=Mesclar, girar, reorganizar, dividir, inserir e remover páginas.
|
home.multiTool.desc=Mesclar, girar, reorganizar, dividir, inserir e remover páginas.
|
||||||
@@ -416,7 +417,7 @@ home.pageLayout.title=Layout de Múltiplas Páginas
|
|||||||
home.pageLayout.desc=Mesclar várias páginas de um documento PDF em uma única página.
|
home.pageLayout.desc=Mesclar várias páginas de um documento PDF em uma única página.
|
||||||
pageLayout.tags=mesclar,composto,vista-única,organizar
|
pageLayout.tags=mesclar,composto,vista-única,organizar
|
||||||
|
|
||||||
home.scalePages.title=Ajustar Tamanho/Escala da Página
|
home.scalePages.title=Ajustar Dimensões da Página
|
||||||
home.scalePages.desc=Alterar o tamanho/escala da página e/ou seu conteúdo.
|
home.scalePages.desc=Alterar o tamanho/escala da página e/ou seu conteúdo.
|
||||||
scalePages.tags=redimensionar,modificar,dimensão,adaptar
|
scalePages.tags=redimensionar,modificar,dimensão,adaptar
|
||||||
|
|
||||||
@@ -428,7 +429,7 @@ home.add-page-numbers.title=Adicionar Números de Página
|
|||||||
home.add-page-numbers.desc=Adicionar números de página no documento, em um local definido.
|
home.add-page-numbers.desc=Adicionar números de página no documento, em um local definido.
|
||||||
add-page-numbers.tags=paginar,rotular,organizar,índice
|
add-page-numbers.tags=paginar,rotular,organizar,índice
|
||||||
|
|
||||||
home.auto-rename.title=Renomear Automaticamente o PDF
|
home.auto-rename.title=Renomeação Automática do PDF
|
||||||
home.auto-rename.desc=Renomeia automaticamente o PDF com base no cabeçalho detectado.
|
home.auto-rename.desc=Renomeia automaticamente o PDF com base no cabeçalho detectado.
|
||||||
auto-rename.tags=detecção-automática,baseado-em-cabeçalho,organizar,relabel
|
auto-rename.tags=detecção-automática,baseado-em-cabeçalho,organizar,relabel
|
||||||
|
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Mostrar Anexos
|
|||||||
redact.showLayers=Mostrar Camadas (duplo clique para restabelecer as camadas para o estado padrão)
|
redact.showLayers=Mostrar Camadas (duplo clique para restabelecer as camadas para o estado padrão)
|
||||||
redact.colourPicker=Seletor de Cores
|
redact.colourPicker=Seletor de Cores
|
||||||
redact.findCurrentOutlineItem=Encontrar item atual
|
redact.findCurrentOutlineItem=Encontrar item atual
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Mostrar JavaScript
|
showJS.title=Mostrar JavaScript
|
||||||
@@ -737,8 +739,8 @@ addPageNumbers.submit=Adicionar Números de Página
|
|||||||
|
|
||||||
|
|
||||||
#auto-rename
|
#auto-rename
|
||||||
auto-rename.title=Renomear Automaticamente o PDF
|
auto-rename.title=Renomeação Automática do PDF
|
||||||
auto-rename.header=Renomear Automaticamente o PDF
|
auto-rename.header=Renomeação Automática do PDF
|
||||||
auto-rename.submit=Renomeação Automática
|
auto-rename.submit=Renomeação Automática
|
||||||
|
|
||||||
|
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Faça o upload do arquivo único PDF digitalizado e de
|
|||||||
autoSplitPDF.selectText.4=As páginas divisórias são detectadas e removidas automaticamente, garantindo um documento final organizado.
|
autoSplitPDF.selectText.4=As páginas divisórias são detectadas e removidas automaticamente, garantindo um documento final organizado.
|
||||||
autoSplitPDF.formPrompt=Enviar PDF contendo folhas divisórias Stirling-PDF:
|
autoSplitPDF.formPrompt=Enviar PDF contendo folhas divisórias Stirling-PDF:
|
||||||
autoSplitPDF.duplexMode=Modo Duplex (Digitalização frente e verso).
|
autoSplitPDF.duplexMode=Modo Duplex (Digitalização frente e verso).
|
||||||
autoSplitPDF.dividerDownload1=Baixar 'Folha Divisória Automática (mínimo).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Baixar 'Folha Divisória Automática (com instruções).pdf'
|
autoSplitPDF.dividerDownload2=Baixar 'Folha Divisória Automática (com instruções).pdf'
|
||||||
autoSplitPDF.submit=Enviar
|
autoSplitPDF.submit=Enviar
|
||||||
|
|
||||||
@@ -785,8 +786,8 @@ pageLayout.submit=Enviar
|
|||||||
|
|
||||||
|
|
||||||
#scalePages
|
#scalePages
|
||||||
scalePages.title=Ajustar Tamanho/Escala da Página
|
scalePages.title=Ajustar Dimensões da Página
|
||||||
scalePages.header=Ajustar Tamanho/Escala da Página
|
scalePages.header=Ajustar Dimensões da Página
|
||||||
scalePages.pageSize=Tamanho desejado do documento:
|
scalePages.pageSize=Tamanho desejado do documento:
|
||||||
scalePages.keepPageSize=Tamanho Original
|
scalePages.keepPageSize=Tamanho Original
|
||||||
scalePages.scaleFactor=Fator de zoom (corte) de uma página:
|
scalePages.scaleFactor=Fator de zoom (corte) de uma página:
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Alterar
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF para PDF/A
|
pdfToPDFA.title=PDF para PDF/A
|
||||||
pdfToPDFA.header=PDF para PDF/A
|
pdfToPDFA.header=PDF para PDF/A
|
||||||
pdfToPDFA.credit=Este serviço usa Qpdf para conversão para PDF/A.
|
pdfToPDFA.credit=Este serviço usa o LibreOffice para conversão para PDF/A.
|
||||||
pdfToPDFA.submit=Converter
|
pdfToPDFA.submit=Converter
|
||||||
pdfToPDFA.tip=Atenção, atualmente não funciona para múltiplas entradas ao mesmo tempo.
|
pdfToPDFA.tip=Atenção, atualmente não funciona para múltiplas entradas ao mesmo tempo.
|
||||||
pdfToPDFA.outputFormat=Formato de saída:
|
pdfToPDFA.outputFormat=Formato de saída:
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=Multi Ferramenta PDF
|
home.multiTool.title=Multi Ferramenta PDF
|
||||||
home.multiTool.desc=Juntar, Rodar, Reorganizar, Dividir e Remover páginas
|
home.multiTool.desc=Juntar, Rodar, Reorganizar, Dividir e Remover páginas
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Mostrar Anexos
|
|||||||
redact.showLayers=Mostrar Camadas (duplo clique para repor todas as camadas para o estado predefinido)
|
redact.showLayers=Mostrar Camadas (duplo clique para repor todas as camadas para o estado predefinido)
|
||||||
redact.colourPicker=Seletor de Cor
|
redact.colourPicker=Seletor de Cor
|
||||||
redact.findCurrentOutlineItem=Encontrar item atual do esquema
|
redact.findCurrentOutlineItem=Encontrar item atual do esquema
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Mostrar Javascript
|
showJS.title=Mostrar Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Carregue o único ficheiro PDF digitalizado grande e d
|
|||||||
autoSplitPDF.selectText.4=As páginas separadoras são automaticamente detetadas e removidas, garantindo um documento final organizado.
|
autoSplitPDF.selectText.4=As páginas separadoras são automaticamente detetadas e removidas, garantindo um documento final organizado.
|
||||||
autoSplitPDF.formPrompt=Submeter PDF contendo separadores de página Stirling-PDF:
|
autoSplitPDF.formPrompt=Submeter PDF contendo separadores de página Stirling-PDF:
|
||||||
autoSplitPDF.duplexMode=Modo Duplex (Digitalização frente e verso)
|
autoSplitPDF.duplexMode=Modo Duplex (Digitalização frente e verso)
|
||||||
autoSplitPDF.dividerDownload1=Transferir 'Separador de Divisão Automática (minimal).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Transferir 'Separador de Divisão Automática (com instruções).pdf'
|
autoSplitPDF.dividerDownload2=Transferir 'Separador de Divisão Automática (com instruções).pdf'
|
||||||
autoSplitPDF.submit=Submeter
|
autoSplitPDF.submit=Submeter
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Alterar
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF Para PDF/A
|
pdfToPDFA.title=PDF Para PDF/A
|
||||||
pdfToPDFA.header=PDF Para PDF/A
|
pdfToPDFA.header=PDF Para PDF/A
|
||||||
pdfToPDFA.credit=Este serviço usa qpdf para conversão PDF/A
|
pdfToPDFA.credit=Este serviço usa libreoffice para conversão PDF/A
|
||||||
pdfToPDFA.submit=Converter
|
pdfToPDFA.submit=Converter
|
||||||
pdfToPDFA.tip=Atualmente não funciona para múltiplas entradas de uma só vez
|
pdfToPDFA.tip=Atualmente não funciona para múltiplas entradas de uma só vez
|
||||||
pdfToPDFA.outputFormat=Formato de saída
|
pdfToPDFA.outputFormat=Formato de saída
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=Instrument multiplu PDF
|
home.multiTool.title=Instrument multiplu PDF
|
||||||
home.multiTool.desc=Unifică, rotește, rearanjează și elimină pagini
|
home.multiTool.desc=Unifică, rotește, rearanjează și elimină pagini
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Arată Javascript
|
showJS.title=Arată Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Încarcă fișierul PDF scanat mare și lasă Stirling
|
|||||||
autoSplitPDF.selectText.4=Paginile separatoare sunt detectate automat și eliminate, garantând un document final ordonat.
|
autoSplitPDF.selectText.4=Paginile separatoare sunt detectate automat și eliminate, garantând un document final ordonat.
|
||||||
autoSplitPDF.formPrompt=Trimite PDF-ul conținând separatoarele de pagini Stirling-PDF:
|
autoSplitPDF.formPrompt=Trimite PDF-ul conținând separatoarele de pagini Stirling-PDF:
|
||||||
autoSplitPDF.duplexMode=Mod Duplex (Scanare față-verso)
|
autoSplitPDF.duplexMode=Mod Duplex (Scanare față-verso)
|
||||||
autoSplitPDF.dividerDownload1=Descarcă 'Separator Auto Splitter (minimal).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Descarcă 'Separator Auto Splitter (cu instrucțiuni).pdf'
|
autoSplitPDF.dividerDownload2=Descarcă 'Separator Auto Splitter (cu instrucțiuni).pdf'
|
||||||
autoSplitPDF.submit=Trimite
|
autoSplitPDF.submit=Trimite
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Schimbă
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF către PDF/A
|
pdfToPDFA.title=PDF către PDF/A
|
||||||
pdfToPDFA.header=PDF către PDF/A
|
pdfToPDFA.header=PDF către PDF/A
|
||||||
pdfToPDFA.credit=Acest serviciu utilizează qpdf pentru conversia în PDF/A
|
pdfToPDFA.credit=Acest serviciu utilizează libreoffice pentru conversia în PDF/A
|
||||||
pdfToPDFA.submit=Convertește
|
pdfToPDFA.submit=Convertește
|
||||||
pdfToPDFA.tip=În prezent nu funcționează pentru mai multe intrări simultan
|
pdfToPDFA.tip=În prezent nu funcționează pentru mai multe intrări simultan
|
||||||
pdfToPDFA.outputFormat=Format de ieșire
|
pdfToPDFA.outputFormat=Format de ieșire
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=Мультиинструмент PDF
|
home.multiTool.title=Мультиинструмент PDF
|
||||||
home.multiTool.desc=Объединение, поворот, переупорядочивание и удаление страниц
|
home.multiTool.desc=Объединение, поворот, переупорядочивание и удаление страниц
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Показать вложения
|
|||||||
redact.showLayers=Показать слои (двойной щелчок для сброса всех слоев к состоянию по умолчанию)
|
redact.showLayers=Показать слои (двойной щелчок для сброса всех слоев к состоянию по умолчанию)
|
||||||
redact.colourPicker=Выбор цвета
|
redact.colourPicker=Выбор цвета
|
||||||
redact.findCurrentOutlineItem=Найти текущий элемент структуры
|
redact.findCurrentOutlineItem=Найти текущий элемент структуры
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Показать Javascript
|
showJS.title=Показать Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Загрузите один большой отска
|
|||||||
autoSplitPDF.selectText.4=Разделительные страницы автоматически обнаруживаются и удаляются, гарантируя аккуратный конечный документ.
|
autoSplitPDF.selectText.4=Разделительные страницы автоматически обнаруживаются и удаляются, гарантируя аккуратный конечный документ.
|
||||||
autoSplitPDF.formPrompt=Отправить PDF, содержащий разделители страниц Stirling-PDF:
|
autoSplitPDF.formPrompt=Отправить PDF, содержащий разделители страниц Stirling-PDF:
|
||||||
autoSplitPDF.duplexMode=Двусторонний режим (сканирование с двух сторон)
|
autoSplitPDF.duplexMode=Двусторонний режим (сканирование с двух сторон)
|
||||||
autoSplitPDF.dividerDownload1=Скачать 'Автоматический разделитель (минимальный).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Скачать 'Автоматический разделитель (с инструкциями).pdf'
|
autoSplitPDF.dividerDownload2=Скачать 'Автоматический разделитель (с инструкциями).pdf'
|
||||||
autoSplitPDF.submit=Отправить
|
autoSplitPDF.submit=Отправить
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Изменить
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF в PDF/A
|
pdfToPDFA.title=PDF в PDF/A
|
||||||
pdfToPDFA.header=PDF в PDF/A
|
pdfToPDFA.header=PDF в PDF/A
|
||||||
pdfToPDFA.credit=Этот сервис использует qpdf для преобразования в PDF/A
|
pdfToPDFA.credit=Этот сервис использует libreoffice для преобразования в PDF/A
|
||||||
pdfToPDFA.submit=Преобразовать
|
pdfToPDFA.submit=Преобразовать
|
||||||
pdfToPDFA.tip=В настоящее время не работает с несколькими входными файлами одновременно
|
pdfToPDFA.tip=В настоящее время не работает с несколькими входными файлами одновременно
|
||||||
pdfToPDFA.outputFormat=Формат вывода
|
pdfToPDFA.outputFormat=Формат вывода
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF Multi Tool
|
home.multiTool.title=PDF Multi Tool
|
||||||
home.multiTool.desc=Zlúčiť, otočiť, preusporiadať a odstrániť stránky
|
home.multiTool.desc=Zlúčiť, otočiť, preusporiadať a odstrániť stránky
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Zobraziť JavaScript
|
showJS.title=Zobraziť JavaScript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Nahrajte jeden veľký naskenovaný PDF súbor a necha
|
|||||||
autoSplitPDF.selectText.4=Rozdeľovacie stránky sú automaticky detekované a odstránené, čo zaručuje čistý konečný dokument.
|
autoSplitPDF.selectText.4=Rozdeľovacie stránky sú automaticky detekované a odstránené, čo zaručuje čistý konečný dokument.
|
||||||
autoSplitPDF.formPrompt=Odoslať PDF obsahujúce Stirling-PDF rozdeľovače stránok:
|
autoSplitPDF.formPrompt=Odoslať PDF obsahujúce Stirling-PDF rozdeľovače stránok:
|
||||||
autoSplitPDF.duplexMode=Duplex režim (skanovanie prednej a zadnej strany)
|
autoSplitPDF.duplexMode=Duplex režim (skanovanie prednej a zadnej strany)
|
||||||
autoSplitPDF.dividerDownload1=Stiahnuť 'Auto Splitter Divider (minimálny).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Stiahnuť 'Auto Splitter Divider (s inštrukciami).pdf'
|
autoSplitPDF.dividerDownload2=Stiahnuť 'Auto Splitter Divider (s inštrukciami).pdf'
|
||||||
autoSplitPDF.submit=Odoslať
|
autoSplitPDF.submit=Odoslať
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Zmeniť
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF na PDF/A
|
pdfToPDFA.title=PDF na PDF/A
|
||||||
pdfToPDFA.header=PDF na PDF/A
|
pdfToPDFA.header=PDF na PDF/A
|
||||||
pdfToPDFA.credit=Táto služba používa qpdf na konverziu PDF/A
|
pdfToPDFA.credit=Táto služba používa libreoffice na konverziu PDF/A
|
||||||
pdfToPDFA.submit=Konvertovať
|
pdfToPDFA.submit=Konvertovať
|
||||||
pdfToPDFA.tip=Momentálne nefunguje pre viacero vstupov naraz
|
pdfToPDFA.tip=Momentálne nefunguje pre viacero vstupov naraz
|
||||||
pdfToPDFA.outputFormat=Výstupný formát
|
pdfToPDFA.outputFormat=Výstupný formát
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF Multi Tool
|
home.multiTool.title=PDF Multi Tool
|
||||||
home.multiTool.desc=Spoji, zavrti, prerazporedi, razdeli in odstrani strani
|
home.multiTool.desc=Spoji, zavrti, prerazporedi, razdeli in odstrani strani
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Prikaži priloge
|
|||||||
redact.showLayers=Prikaži plasti (dvokliknite za ponastavitev vseh plasti na privzeto stanje)
|
redact.showLayers=Prikaži plasti (dvokliknite za ponastavitev vseh plasti na privzeto stanje)
|
||||||
redact.colourPicker=Izbirnik barv
|
redact.colourPicker=Izbirnik barv
|
||||||
redact.findCurrentOutlineItem=Poišči trenutno postavko orisa
|
redact.findCurrentOutlineItem=Poišči trenutno postavko orisa
|
||||||
|
redact.applyChanges=Uporabi spremembe
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Prikaži Javascript
|
showJS.title=Prikaži Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Naložite eno veliko optično prebrano datoteko PDF in
|
|||||||
autoSplitPDF.selectText.4=Ločilne strani so samodejno zaznane in odstranjene, kar zagotavlja čist končni dokument.
|
autoSplitPDF.selectText.4=Ločilne strani so samodejno zaznane in odstranjene, kar zagotavlja čist končni dokument.
|
||||||
autoSplitPDF.formPrompt=Pošljite PDF, ki vsebuje razdelilnike strani Stirling-PDF:
|
autoSplitPDF.formPrompt=Pošljite PDF, ki vsebuje razdelilnike strani Stirling-PDF:
|
||||||
autoSplitPDF.duplexMode=Dupleksni način (skeniranje spredaj in zadaj)
|
autoSplitPDF.duplexMode=Dupleksni način (skeniranje spredaj in zadaj)
|
||||||
autoSplitPDF.dividerDownload1=Prenesi 'Auto Splitter Divider (minimal).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Prenesi 'Auto Splitter Divider (z navodili).pdf'
|
autoSplitPDF.dividerDownload2=Prenesi 'Auto Splitter Divider (z navodili).pdf'
|
||||||
autoSplitPDF.submit=Pošlji
|
autoSplitPDF.submit=Pošlji
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Spremeni
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF v PDF/A
|
pdfToPDFA.title=PDF v PDF/A
|
||||||
pdfToPDFA.header=PDF v PDF/A
|
pdfToPDFA.header=PDF v PDF/A
|
||||||
pdfToPDFA.credit=Ta storitev uporablja qpdf za pretvorbo PDF/A
|
pdfToPDFA.credit=Ta storitev uporablja libreoffice za pretvorbo PDF/A
|
||||||
pdfToPDFA.submit=Pretvori
|
pdfToPDFA.submit=Pretvori
|
||||||
pdfToPDFA.tip=Trenutno ne deluje za več vnosov hkrati
|
pdfToPDFA.tip=Trenutno ne deluje za več vnosov hkrati
|
||||||
pdfToPDFA.outputFormat=Izhodna oblika
|
pdfToPDFA.outputFormat=Izhodna oblika
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF Multi Alat
|
home.multiTool.title=PDF Multi Alat
|
||||||
home.multiTool.desc=Spajanje, rotacija, premeštanje i uklanjanje stranica
|
home.multiTool.desc=Spajanje, rotacija, premeštanje i uklanjanje stranica
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Prikaži Javascript
|
showJS.title=Prikaži Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Učitajte jedan veliki skenirani PDF fajl i dozvolite
|
|||||||
autoSplitPDF.selectText.4=Listovi razdeljivača se automatski detektuju i uklanjaju, obezbeđujući uredan konačni dokument.
|
autoSplitPDF.selectText.4=Listovi razdeljivača se automatski detektuju i uklanjaju, obezbeđujući uredan konačni dokument.
|
||||||
autoSplitPDF.formPrompt=Potvrdite PDF koji sadrži Stirling-PDF listove razdeljivača:
|
autoSplitPDF.formPrompt=Potvrdite PDF koji sadrži Stirling-PDF listove razdeljivača:
|
||||||
autoSplitPDF.duplexMode=Dupleks režim (skeniranje prednje i zadnje strane)
|
autoSplitPDF.duplexMode=Dupleks režim (skeniranje prednje i zadnje strane)
|
||||||
autoSplitPDF.dividerDownload1=Preuzmi 'Auto Splitter Divider (minimal).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Preuzmi 'Auto Splitter Divider (sa uputstvima).pdf'
|
autoSplitPDF.dividerDownload2=Preuzmi 'Auto Splitter Divider (sa uputstvima).pdf'
|
||||||
autoSplitPDF.submit=Potvrdi
|
autoSplitPDF.submit=Potvrdi
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Promeni
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF u PDF/A
|
pdfToPDFA.title=PDF u PDF/A
|
||||||
pdfToPDFA.header=PDF u PDF/A
|
pdfToPDFA.header=PDF u PDF/A
|
||||||
pdfToPDFA.credit=Ova usluga koristi qpdf za konverziju u PDF/A format
|
pdfToPDFA.credit=Ova usluga koristi libreoffice za konverziju u PDF/A format
|
||||||
pdfToPDFA.submit=Konvertuj
|
pdfToPDFA.submit=Konvertuj
|
||||||
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
pdfToPDFA.outputFormat=Output format
|
pdfToPDFA.outputFormat=Output format
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ close=Stäng
|
|||||||
filesSelected=filer valda
|
filesSelected=filer valda
|
||||||
noFavourites=Inga favoriter har lagts till
|
noFavourites=Inga favoriter har lagts till
|
||||||
downloadComplete=Nedladdning klar
|
downloadComplete=Nedladdning klar
|
||||||
bored=Utråkad att vänta?
|
bored=Trött på att vänta?
|
||||||
alphabet=Alfabet
|
alphabet=Alfabet
|
||||||
downloadPdf=Ladda ner PDF
|
downloadPdf=Ladda ner PDF
|
||||||
text=Text
|
text=Text
|
||||||
@@ -31,7 +31,7 @@ font=Teckensnitt
|
|||||||
selectFillter=-- Välj --
|
selectFillter=-- Välj --
|
||||||
pageNum=Sidnummer
|
pageNum=Sidnummer
|
||||||
sizes.small=Liten
|
sizes.small=Liten
|
||||||
sizes.medium=Mellanvärd
|
sizes.medium=Mellan
|
||||||
sizes.large=Stor
|
sizes.large=Stor
|
||||||
sizes.x-large=Extra stor
|
sizes.x-large=Extra stor
|
||||||
error.pdfPassword=PDF-dokumentet är lösenordsskyddat och antingen har lösenordet inte angetts eller är felaktigt
|
error.pdfPassword=PDF-dokumentet är lösenordsskyddat och antingen har lösenordet inte angetts eller är felaktigt
|
||||||
@@ -46,7 +46,7 @@ red=Röd
|
|||||||
green=Grön
|
green=Grön
|
||||||
blue=Blå
|
blue=Blå
|
||||||
custom=Anpassad...
|
custom=Anpassad...
|
||||||
WorkInProgess=Pågående arbete, kan inte fungera eller vara buggigt. Rapportera eventuella problem!
|
WorkInProgess=Pågående arbete, kan vara icke fungerande eller buggigt. Rapportera eventuella problem!
|
||||||
poweredBy=Drivs av
|
poweredBy=Drivs av
|
||||||
yes=Ja
|
yes=Ja
|
||||||
no=Nej
|
no=Nej
|
||||||
@@ -240,17 +240,17 @@ database.creationDate=Skapelsedatum
|
|||||||
database.fileSize=Filstorlek
|
database.fileSize=Filstorlek
|
||||||
database.deleteBackupFile=Ta bort säkerhetskopieringsfil
|
database.deleteBackupFile=Ta bort säkerhetskopieringsfil
|
||||||
database.importBackupFile=Importera säkerhetskopieringsfil
|
database.importBackupFile=Importera säkerhetskopieringsfil
|
||||||
database.createBackupFile=Create Backup File
|
database.createBackupFile=Skapa säkerhetskopieringsfil
|
||||||
database.downloadBackupFile=Ladda ner säkerhetskopieringsfil
|
database.downloadBackupFile=Ladda ner säkerhetskopieringsfil
|
||||||
database.info_1=Vid import av data är det avgörande att säkerställa korrekt struktur. Om du är osäker på vad du gör, sök råd och stöd från en professionell. Ett fel i strukturen kan orsaka funktionsfel i applikationen, upp till och inklusive fullständig oförmåga att köra applikationen.
|
database.info_1=Vid import av data är det avgörande att säkerställa korrekt struktur. Om du är osäker på vad du gör, sök råd och stöd från en professionell. Ett fel i strukturen kan orsaka funktionsfel i applikationen, upp till och inklusive fullständig oförmåga att köra applikationen.
|
||||||
database.info_2=Filnamnet spelar ingen roll vid uppladdning. Det kommer att döpas om efteråt för att följa formatet backup_user_yyyyMMddHHmm.sql, vilket säkerställer en konsekvent namngivningskonvention.
|
database.info_2=Filnamnet spelar ingen roll vid uppladdning. Det kommer att döpas om efteråt för att följa formatet backup_user_yyyyMMddHHmm.sql, vilket säkerställer en konsekvent namngivningskonvention.
|
||||||
database.submit=Importera säkerhetskopia
|
database.submit=Importera säkerhetskopia
|
||||||
database.importIntoDatabaseSuccessed=Import till databas lyckades
|
database.importIntoDatabaseSuccessed=Import till databas lyckades
|
||||||
database.backupCreated=Database backup successful
|
database.backupCreated=Backup av databas lyckades
|
||||||
database.fileNotFound=Filen hittades inte
|
database.fileNotFound=Filen hittades inte
|
||||||
database.fileNullOrEmpty=Filen får inte vara null eller tom
|
database.fileNullOrEmpty=Filen får inte vara null eller tom
|
||||||
database.failedImportFile=Misslyckades med att importera fil
|
database.failedImportFile=Misslyckades med att importera fil
|
||||||
database.notSupported=This function is not available for your database connection.
|
database.notSupported=Denna funktion är inte tillgänglig för din databasanslutning.
|
||||||
|
|
||||||
session.expired=Din session har löpt ut. Uppdatera sidan och försök igen.
|
session.expired=Din session har löpt ut. Uppdatera sidan och försök igen.
|
||||||
session.refreshPage=Uppdatera sida
|
session.refreshPage=Uppdatera sida
|
||||||
@@ -266,13 +266,14 @@ home.viewPdf.title=Visa PDF
|
|||||||
home.viewPdf.desc=Visa, kommentera, lägg till text eller bilder
|
home.viewPdf.desc=Visa, kommentera, lägg till text eller bilder
|
||||||
viewPdf.tags=visa,läs,kommentera,text,bild
|
viewPdf.tags=visa,läs,kommentera,text,bild
|
||||||
|
|
||||||
home.setFavorites=Set Favourites
|
home.setFavorites=Välj Favoriter
|
||||||
home.hideFavorites=Hide Favourites
|
home.hideFavorites=Dölj Favoriter
|
||||||
home.showFavorites=Show Favourites
|
home.showFavorites=Visa Favoriter
|
||||||
home.legacyHomepage=Old homepage
|
home.legacyHomepage=Gammal Hem-vy.
|
||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Testa vår nya Hem-vy!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alfabetisk
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sortera efter:
|
||||||
|
|
||||||
home.multiTool.title=PDF Multi-verktyg
|
home.multiTool.title=PDF Multi-verktyg
|
||||||
home.multiTool.desc=Sammanfoga, rotera, ordna om och ta bort sidor
|
home.multiTool.desc=Sammanfoga, rotera, ordna om och ta bort sidor
|
||||||
@@ -461,8 +462,8 @@ home.MarkdownToPDF.title=Markdown till PDF
|
|||||||
home.MarkdownToPDF.desc=Konverterar valfri Markdown-fil till PDF
|
home.MarkdownToPDF.desc=Konverterar valfri Markdown-fil till PDF
|
||||||
MarkdownToPDF.tags=markup,webbinnehåll,transformation,konvertera
|
MarkdownToPDF.tags=markup,webbinnehåll,transformation,konvertera
|
||||||
|
|
||||||
home.PDFToMarkdown.title=PDF to Markdown
|
home.PDFToMarkdown.title=PDF till Markdown
|
||||||
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
home.PDFToMarkdown.desc=Konvertera PDF till Markdown
|
||||||
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Hämta ALL information om PDF
|
home.getPdfInfo.title=Hämta ALL information om PDF
|
||||||
@@ -532,9 +533,9 @@ home.splitPdfByChapters.title=Dela upp PDF efter kapitel
|
|||||||
home.splitPdfByChapters.desc=Dela upp en PDF till flera filer baserat på dess kapitelstruktur.
|
home.splitPdfByChapters.desc=Dela upp en PDF till flera filer baserat på dess kapitelstruktur.
|
||||||
splitPdfByChapters.tags=dela,kapitel,bokmärken,organisera
|
splitPdfByChapters.tags=dela,kapitel,bokmärken,organisera
|
||||||
|
|
||||||
home.validateSignature.title=Validate PDF Signature
|
home.validateSignature.title=Validera PDF signature
|
||||||
home.validateSignature.desc=Verify digital signatures and certificates in PDF documents
|
home.validateSignature.desc=Verifiera digitala signaturer och certifiakt i PDF dokument
|
||||||
validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate
|
validateSignature.tags=signatur,verifiera,validera,pdf,certifikat,digital signatur,Validera Signatur,Validera certifikat
|
||||||
|
|
||||||
#replace-invert-color
|
#replace-invert-color
|
||||||
replace-color.title=Ersätt-Invertera-Färg
|
replace-color.title=Ersätt-Invertera-Färg
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Visa Javascript
|
showJS.title=Visa Javascript
|
||||||
@@ -659,9 +661,9 @@ MarkdownToPDF.credit=Använder WeasyPrint
|
|||||||
|
|
||||||
|
|
||||||
#pdf-to-markdown
|
#pdf-to-markdown
|
||||||
PDFToMarkdown.title=PDF To Markdown
|
PDFToMarkdown.title=PDF Till Markdown
|
||||||
PDFToMarkdown.header=PDF To Markdown
|
PDFToMarkdown.header=PDF Till Markdown
|
||||||
PDFToMarkdown.submit=Convert
|
PDFToMarkdown.submit=Konvertera
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Ladda upp den enda stora skannade PDF-filen och låt S
|
|||||||
autoSplitPDF.selectText.4=Avdelarsidor detekteras automatiskt och tas bort, vilket garanterar ett prydligt slutdokument.
|
autoSplitPDF.selectText.4=Avdelarsidor detekteras automatiskt och tas bort, vilket garanterar ett prydligt slutdokument.
|
||||||
autoSplitPDF.formPrompt=Skicka PDF som innehåller Stirling-PDF-sidavdelare:
|
autoSplitPDF.formPrompt=Skicka PDF som innehåller Stirling-PDF-sidavdelare:
|
||||||
autoSplitPDF.duplexMode=Duplexläge (Fram- och baksideskanning)
|
autoSplitPDF.duplexMode=Duplexläge (Fram- och baksideskanning)
|
||||||
autoSplitPDF.dividerDownload1=Ladda ner 'Auto-delningsavdelare (minimal).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Ladda ner 'Auto-delningsavdelare (med instruktioner).pdf'
|
autoSplitPDF.dividerDownload2=Ladda ner 'Auto-delningsavdelare (med instruktioner).pdf'
|
||||||
autoSplitPDF.submit=Skicka
|
autoSplitPDF.submit=Skicka
|
||||||
|
|
||||||
@@ -873,12 +874,12 @@ sign.save=Spara signatur
|
|||||||
sign.personalSigs=Personliga signaturer
|
sign.personalSigs=Personliga signaturer
|
||||||
sign.sharedSigs=Delade signaturer
|
sign.sharedSigs=Delade signaturer
|
||||||
sign.noSavedSigs=Inga sparade signaturer hittades
|
sign.noSavedSigs=Inga sparade signaturer hittades
|
||||||
sign.addToAll=Add to all pages
|
sign.addToAll=Lägg till på alla sidor
|
||||||
sign.delete=Delete
|
sign.delete=Ta bort
|
||||||
sign.first=First page
|
sign.first=Första sidan
|
||||||
sign.last=Last page
|
sign.last=Sista sidan
|
||||||
sign.next=Next page
|
sign.next=Nästa sida
|
||||||
sign.previous=Previous page
|
sign.previous=Föregående sida
|
||||||
sign.maintainRatio=Toggle maintain aspect ratio
|
sign.maintainRatio=Toggle maintain aspect ratio
|
||||||
|
|
||||||
|
|
||||||
@@ -998,24 +999,24 @@ pdfOrganiser.placeholder=(t.ex. 1,3,2 eller 4-8,2,10-12 eller 2n-1)
|
|||||||
multiTool.title=PDF-multiverktyg
|
multiTool.title=PDF-multiverktyg
|
||||||
multiTool.header=PDF Multi-verktyg
|
multiTool.header=PDF Multi-verktyg
|
||||||
multiTool.uploadPrompts=Filnamn
|
multiTool.uploadPrompts=Filnamn
|
||||||
multiTool.selectAll=Select All
|
multiTool.selectAll=Välj allt
|
||||||
multiTool.deselectAll=Deselect All
|
multiTool.deselectAll=Deselect All
|
||||||
multiTool.selectPages=Page Select
|
multiTool.selectPages=Välj sidor
|
||||||
multiTool.selectedPages=Selected Pages
|
multiTool.selectedPages=Valda sidor
|
||||||
multiTool.page=Page
|
multiTool.page=Sida
|
||||||
multiTool.deleteSelected=Delete Selected
|
multiTool.deleteSelected=Ta bort valda
|
||||||
multiTool.downloadAll=Export
|
multiTool.downloadAll=Exportera
|
||||||
multiTool.downloadSelected=Export Selected
|
multiTool.downloadSelected=Exportersa valda
|
||||||
|
|
||||||
multiTool.insertPageBreak=Insert Page Break
|
multiTool.insertPageBreak=Insert Page Break
|
||||||
multiTool.addFile=Add File
|
multiTool.addFile=Lägg till fil
|
||||||
multiTool.rotateLeft=Rotate Left
|
multiTool.rotateLeft=Rotera Vänster
|
||||||
multiTool.rotateRight=Rotate Right
|
multiTool.rotateRight=Rotera Höger
|
||||||
multiTool.split=Split
|
multiTool.split=Dela upp
|
||||||
multiTool.moveLeft=Move Left
|
multiTool.moveLeft=Flytta Vänster
|
||||||
multiTool.moveRight=Move Right
|
multiTool.moveRight=Flytta Höger
|
||||||
multiTool.delete=Delete
|
multiTool.delete=Ta bort
|
||||||
multiTool.dragDropMessage=Page(s) Selected
|
multiTool.dragDropMessage=Valda sid(or)
|
||||||
multiTool.undo=Undo
|
multiTool.undo=Undo
|
||||||
multiTool.redo=Redo
|
multiTool.redo=Redo
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Ändra
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF till PDF/A
|
pdfToPDFA.title=PDF till PDF/A
|
||||||
pdfToPDFA.header=PDF till PDF/A
|
pdfToPDFA.header=PDF till PDF/A
|
||||||
pdfToPDFA.credit=Denna tjänst använder qpdf för PDF/A-konvertering
|
pdfToPDFA.credit=Denna tjänst använder libreoffice för PDF/A-konvertering
|
||||||
pdfToPDFA.submit=Konvertera
|
pdfToPDFA.submit=Konvertera
|
||||||
pdfToPDFA.tip=Fungerar för närvarande inte för flera inmatningar samtidigt
|
pdfToPDFA.tip=Fungerar för närvarande inte för flera inmatningar samtidigt
|
||||||
pdfToPDFA.outputFormat=Utdataformat
|
pdfToPDFA.outputFormat=Utdataformat
|
||||||
@@ -1334,34 +1335,34 @@ splitByChapters.desc.4=Tillåt duplicieringar: Om kryssrutan är markerad tillå
|
|||||||
splitByChapters.submit=Dela upp PDF
|
splitByChapters.submit=Dela upp PDF
|
||||||
|
|
||||||
#File Chooser
|
#File Chooser
|
||||||
fileChooser.click=Click
|
fileChooser.click=Klicka
|
||||||
fileChooser.or=or
|
fileChooser.or=eller
|
||||||
fileChooser.dragAndDrop=Drag & Drop
|
fileChooser.dragAndDrop=Dra & Släpp
|
||||||
fileChooser.dragAndDropPDF=Drag & Drop PDF file
|
fileChooser.dragAndDropPDF=Dra & Släpp PDF fil
|
||||||
fileChooser.dragAndDropImage=Drag & Drop Image file
|
fileChooser.dragAndDropImage=Dra & Släpp bildfil
|
||||||
fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here
|
fileChooser.hoveredDragAndDrop=Dra & Släpp fil(er) här
|
||||||
|
|
||||||
#release notes
|
#release notes
|
||||||
releases.footer=Releases
|
releases.footer=Utgåvor
|
||||||
releases.title=Release Notes
|
releases.title=Release Notes
|
||||||
releases.header=Release Notes
|
releases.header=Release Notes
|
||||||
releases.current.version=Current Release
|
releases.current.version=Nuvarande Utgåva
|
||||||
releases.note=Release notes are only available in English
|
releases.note=Release notes are only available in English
|
||||||
|
|
||||||
#Validate Signature
|
#Validate Signature
|
||||||
validateSignature.title=Validate PDF Signatures
|
validateSignature.title=Validera PDF Signaturer
|
||||||
validateSignature.header=Validate Digital Signatures
|
validateSignature.header=Validera Digitala Signaturer
|
||||||
validateSignature.selectPDF=Select signed PDF file
|
validateSignature.selectPDF=Välj signerad PDF fil
|
||||||
validateSignature.submit=Validate Signatures
|
validateSignature.submit=Validera Signaturer
|
||||||
validateSignature.results=Validation Results
|
validateSignature.results=Valideringsresultat
|
||||||
validateSignature.status=Status
|
validateSignature.status=Status
|
||||||
validateSignature.signer=Signer
|
validateSignature.signer=Signer
|
||||||
validateSignature.date=Date
|
validateSignature.date=Datum
|
||||||
validateSignature.reason=Reason
|
validateSignature.reason=Anledning
|
||||||
validateSignature.location=Location
|
validateSignature.location=Plats
|
||||||
validateSignature.noSignatures=No digital signatures found in this document
|
validateSignature.noSignatures=Inga digitala signaturer hittade i detta dokument
|
||||||
validateSignature.status.valid=Valid
|
validateSignature.status.valid=Giltig
|
||||||
validateSignature.status.invalid=Invalid
|
validateSignature.status.invalid=Ogiltig
|
||||||
validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity
|
validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity
|
||||||
validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified
|
validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified
|
||||||
validateSignature.cert.expired=Certificate has expired
|
validateSignature.cert.expired=Certificate has expired
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=เครื่องมือ PDF หลายตัว
|
home.multiTool.title=เครื่องมือ PDF หลายตัว
|
||||||
home.multiTool.desc=รวม หมุน จัดเรียง และลบหน้าต่างๆ
|
home.multiTool.desc=รวม หมุน จัดเรียง และลบหน้าต่างๆ
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=แสดง Javascript
|
showJS.title=แสดง Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=อัปโหลดไฟล์ PDF ที่สแ
|
|||||||
autoSplitPDF.selectText.4=หน้ากั้นจะถูกตรวจจับและลบโดยอัตโนมัติ รับประกันเอกสารสุดท้ายที่เรียบร้อย
|
autoSplitPDF.selectText.4=หน้ากั้นจะถูกตรวจจับและลบโดยอัตโนมัติ รับประกันเอกสารสุดท้ายที่เรียบร้อย
|
||||||
autoSplitPDF.formPrompt=ส่ง PDF ที่มีแผ่นแยก Stirling-PDF:
|
autoSplitPDF.formPrompt=ส่ง PDF ที่มีแผ่นแยก Stirling-PDF:
|
||||||
autoSplitPDF.duplexMode=โหมด Duplex (การสแกนหน้าและหลัง)
|
autoSplitPDF.duplexMode=โหมด Duplex (การสแกนหน้าและหลัง)
|
||||||
autoSplitPDF.dividerDownload1=ดาวน์โหลด 'Auto Splitter Divider (minimal).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=ดาวน์โหลด 'Auto Splitter Divider (with instructions).pdf'
|
autoSplitPDF.dividerDownload2=ดาวน์โหลด 'Auto Splitter Divider (with instructions).pdf'
|
||||||
autoSplitPDF.submit=ส่ง
|
autoSplitPDF.submit=ส่ง
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=เปลี่ยน
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF เป็น PDF/A
|
pdfToPDFA.title=PDF เป็น PDF/A
|
||||||
pdfToPDFA.header=PDF เป็น PDF/A
|
pdfToPDFA.header=PDF เป็น PDF/A
|
||||||
pdfToPDFA.credit=บริการนี้ใช้ qpdf สำหรับการแปลง PDF/A
|
pdfToPDFA.credit=บริการนี้ใช้ libreoffice สำหรับการแปลง PDF/A
|
||||||
pdfToPDFA.submit=แปลง
|
pdfToPDFA.submit=แปลง
|
||||||
pdfToPDFA.tip=ปัจจุบันไม่ทำงานสำหรับการป้อนข้อมูลหลายรายการพร้อมกัน
|
pdfToPDFA.tip=ปัจจุบันไม่ทำงานสำหรับการป้อนข้อมูลหลายรายการพร้อมกัน
|
||||||
pdfToPDFA.outputFormat=รูปแบบผลลัพธ์
|
pdfToPDFA.outputFormat=รูปแบบผลลัพธ์
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF Çoklu Araç
|
home.multiTool.title=PDF Çoklu Araç
|
||||||
home.multiTool.desc=Birleştir, Döndür, Yeniden Düzenle ve Sayfaları Kaldır
|
home.multiTool.desc=Birleştir, Döndür, Yeniden Düzenle ve Sayfaları Kaldır
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Javascript'i Göster
|
showJS.title=Javascript'i Göster
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Tek büyük taranmış PDF dosyasını yükleyin ve ge
|
|||||||
autoSplitPDF.selectText.4=Ayırıcı sayfalar otomatik olarak tespit edilir ve kaldırılır, düzgün bir final belgesi garantilidir.
|
autoSplitPDF.selectText.4=Ayırıcı sayfalar otomatik olarak tespit edilir ve kaldırılır, düzgün bir final belgesi garantilidir.
|
||||||
autoSplitPDF.formPrompt=Stirling-PDF Sayfa ayırıcıları içeren PDF'i gönderin:
|
autoSplitPDF.formPrompt=Stirling-PDF Sayfa ayırıcıları içeren PDF'i gönderin:
|
||||||
autoSplitPDF.duplexMode=Çift Taraflı Mod (Ön ve arka tarama)
|
autoSplitPDF.duplexMode=Çift Taraflı Mod (Ön ve arka tarama)
|
||||||
autoSplitPDF.dividerDownload1='Otomatik Ayırıcı Ayırıcı (minimal).pdf' indir
|
|
||||||
autoSplitPDF.dividerDownload2='Otomatik Ayırıcı Ayırıcı (talimatlarla).pdf' indir
|
autoSplitPDF.dividerDownload2='Otomatik Ayırıcı Ayırıcı (talimatlarla).pdf' indir
|
||||||
autoSplitPDF.submit=Gönder
|
autoSplitPDF.submit=Gönder
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Değiştir
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF'den PDF/A'ya
|
pdfToPDFA.title=PDF'den PDF/A'ya
|
||||||
pdfToPDFA.header=PDF'den PDF/A'ya
|
pdfToPDFA.header=PDF'den PDF/A'ya
|
||||||
pdfToPDFA.credit=Bu hizmet PDF/A dönüşümü için qpdf kullanır
|
pdfToPDFA.credit=Bu hizmet PDF/A dönüşümü için libreoffice kullanır
|
||||||
pdfToPDFA.submit=Dönüştür
|
pdfToPDFA.submit=Dönüştür
|
||||||
pdfToPDFA.tip=Şu anda aynı anda birden fazla giriş için çalışmıyor
|
pdfToPDFA.tip=Şu anda aynı anda birden fazla giriş için çalışmıyor
|
||||||
pdfToPDFA.outputFormat=Çıkış formatı
|
pdfToPDFA.outputFormat=Çıkış formatı
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=Мультіінструмент PDF
|
home.multiTool.title=Мультіінструмент PDF
|
||||||
home.multiTool.desc=Об'єднання, поворот, зміна порядку та видалення сторінок
|
home.multiTool.desc=Об'єднання, поворот, зміна порядку та видалення сторінок
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Показати JavaScript
|
showJS.title=Показати JavaScript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Завантажте один великий відс
|
|||||||
autoSplitPDF.selectText.4=Роздільні сторінки автоматично виявляються і видаляються, забезпечуючи акуратний кінцевий документ.
|
autoSplitPDF.selectText.4=Роздільні сторінки автоматично виявляються і видаляються, забезпечуючи акуратний кінцевий документ.
|
||||||
autoSplitPDF.formPrompt=Надіслати PDF-файл, що містить роздільні сторінки Stirling-PDF:
|
autoSplitPDF.formPrompt=Надіслати PDF-файл, що містить роздільні сторінки Stirling-PDF:
|
||||||
autoSplitPDF.duplexMode=Дуплексний режим (сканування спереду і ззаду)
|
autoSplitPDF.duplexMode=Дуплексний режим (сканування спереду і ззаду)
|
||||||
autoSplitPDF.dividerDownload1=Завантажити 'Auto Splitter Divider (minimal).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Завантажити 'Auto Splitter Divider (with instructions).pdf'
|
autoSplitPDF.dividerDownload2=Завантажити 'Auto Splitter Divider (with instructions).pdf'
|
||||||
autoSplitPDF.submit=Надіслати
|
autoSplitPDF.submit=Надіслати
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Змінити
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF в PDF/A
|
pdfToPDFA.title=PDF в PDF/A
|
||||||
pdfToPDFA.header=PDF в PDF/A
|
pdfToPDFA.header=PDF в PDF/A
|
||||||
pdfToPDFA.credit=Цей сервіс використовує qpdf для перетворення у формат PDF/A
|
pdfToPDFA.credit=Цей сервіс використовує libreoffice для перетворення у формат PDF/A
|
||||||
pdfToPDFA.submit=Конвертувати
|
pdfToPDFA.submit=Конвертувати
|
||||||
pdfToPDFA.tip=Наразі не працює для кількох вхідних файлів одночасно
|
pdfToPDFA.tip=Наразі не працює для кількох вхідних файлів одночасно
|
||||||
pdfToPDFA.outputFormat=Вихідний формат
|
pdfToPDFA.outputFormat=Вихідний формат
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=Đa công cụ PDF
|
home.multiTool.title=Đa công cụ PDF
|
||||||
home.multiTool.desc=Ghép nối, Xoay, Sắp xếp lại và Xóa trang
|
home.multiTool.desc=Ghép nối, Xoay, Sắp xếp lại và Xóa trang
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Hiển thị Javascript
|
showJS.title=Hiển thị Javascript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=Tải lên tệp PDF quét lớn duy nhất và để
|
|||||||
autoSplitPDF.selectText.4=Các trang phân cách được tự động phát hiện và xóa, đảm bảo tài liệu cuối cùng gọn gàng.
|
autoSplitPDF.selectText.4=Các trang phân cách được tự động phát hiện và xóa, đảm bảo tài liệu cuối cùng gọn gàng.
|
||||||
autoSplitPDF.formPrompt=Gửi PDF chứa trang phân cách Stirling-PDF:
|
autoSplitPDF.formPrompt=Gửi PDF chứa trang phân cách Stirling-PDF:
|
||||||
autoSplitPDF.duplexMode=Chế độ hai mặt (Quét mặt trước và sau)
|
autoSplitPDF.duplexMode=Chế độ hai mặt (Quét mặt trước và sau)
|
||||||
autoSplitPDF.dividerDownload1=Tải xuống 'Trang phân cách tự động (tối giản).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=Tải xuống 'Trang phân cách tự động (có hướng dẫn).pdf'
|
autoSplitPDF.dividerDownload2=Tải xuống 'Trang phân cách tự động (có hướng dẫn).pdf'
|
||||||
autoSplitPDF.submit=Gửi
|
autoSplitPDF.submit=Gửi
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=Thay đổi
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF sang PDF/A
|
pdfToPDFA.title=PDF sang PDF/A
|
||||||
pdfToPDFA.header=PDF sang PDF/A
|
pdfToPDFA.header=PDF sang PDF/A
|
||||||
pdfToPDFA.credit=Dịch vụ này sử dụng qpdf để chuyển đổi PDF/A
|
pdfToPDFA.credit=Dịch vụ này sử dụng libreoffice để chuyển đổi PDF/A
|
||||||
pdfToPDFA.submit=Chuyển đổi
|
pdfToPDFA.submit=Chuyển đổi
|
||||||
pdfToPDFA.tip=Hiện tại không hoạt động với nhiều đầu vào cùng lúc
|
pdfToPDFA.tip=Hiện tại không hoạt động với nhiều đầu vào cùng lúc
|
||||||
pdfToPDFA.outputFormat=Định dạng đầu ra
|
pdfToPDFA.outputFormat=Định dạng đầu ra
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF ལག་ཆ་མང་པོ།
|
home.multiTool.title=PDF ལག་ཆ་མང་པོ།
|
||||||
home.multiTool.desc=སྡེབ་སྦྱོར། འཁོར་སྐྱོད། བསྐྱར་སྒྲིག ཁ་གྱེས། དང་ཤོག་ངོས་སུབ་པ།
|
home.multiTool.desc=སྡེབ་སྦྱོར། འཁོར་སྐྱོད། བསྐྱར་སྒྲིག ཁ་གྱེས། དང་ཤོག་ངོས་སུབ་པ།
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=ཟུར་སྦྱར་སྟོན།
|
|||||||
redact.showLayers=རིམ་པ་སྟོན། (རིམ་པ་ཚང་མ་སྔོན་སྒྲིག་གནས་བབ་ལ་བསྐྱར་སྒྲིག་བྱེད་པར་ཉིས་རྡེབ།)
|
redact.showLayers=རིམ་པ་སྟོན། (རིམ་པ་ཚང་མ་སྔོན་སྒྲིག་གནས་བབ་ལ་བསྐྱར་སྒྲིག་བྱེད་པར་ཉིས་རྡེབ།)
|
||||||
redact.colourPicker=ཚོས་གཞི་འདེམས་བྱེད<EFBFBD><EFBFBD><EFBFBD>
|
redact.colourPicker=ཚོས་གཞི་འདེམས་བྱེད<EFBFBD><EFBFBD><EFBFBD>
|
||||||
redact.findCurrentOutlineItem=ད་ལྟའི་སྒྲོམ་གཞིའི་ནང་དོན་འཚོལ་བ།
|
redact.findCurrentOutlineItem=ད་ལྟའི་སྒྲོམ་གཞིའི་ནང་དོན་འཚོལ་བ།
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Javascript ས<>ོན་པ།
|
showJS.title=Javascript ས<>ོན་པ།
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=བཤེར་འབེབས་བྱས་པའི
|
|||||||
autoSplitPDF.selectText.4=བར་མཚམས་ཤོག་ངོས་རྣམས་རང་འགུལ་གྱིས་ངོས་འཛིན་དང་སུབ་པ་བྱས་ནས་མཐའ་མའི་ཡིག་ཆ་གཙང་མ་ཞིག་ངེས་པར་དུ་ཐོབ་ཐུབ།
|
autoSplitPDF.selectText.4=བར་མཚམས་ཤོག་ངོས་རྣམས་རང་འགུལ་གྱིས་ངོས་འཛིན་དང་སུབ་པ་བྱས་ནས་མཐའ་མའི་ཡིག་ཆ་གཙང་མ་ཞིག་ངེས་པར་དུ་ཐོབ་ཐུབ།
|
||||||
autoSplitPDF.formPrompt=Stirling-PDF ཤོག་ངོས་བར་མཚམས་ཡོད་པའི་ PDF ཕུལ་བ།
|
autoSplitPDF.formPrompt=Stirling-PDF ཤོག་ངོས་བར་མཚམས་ཡོད་པའི་ PDF ཕུལ་བ།
|
||||||
autoSplitPDF.duplexMode=ཕྱོགས་གཉིས་ཀྱི་རྣམ་པ། (མདུན་རྒྱབ་བཤེར་འབེབས།)
|
autoSplitPDF.duplexMode=ཕྱོགས་གཉིས་ཀྱི་རྣམ་པ། (མདུན་རྒྱབ་བཤེར་འབེབས།)
|
||||||
autoSplitPDF.dividerDownload1='རང་འགུལ་ཁ་གྱེས་བར་མཚམས། (ཉུང་ཤོས།).pdf' ཕབ་ལེན།
|
|
||||||
autoSplitPDF.dividerDownload2='རང་འགུལ་ཁ་གྱེས་བར་མཚམས། (བཀོལ་སྤྱོད་ལམ་སྟོན་དང་བཅས་པ།).pdf' ཕབ་ལེན།
|
autoSplitPDF.dividerDownload2='རང་འགུལ་ཁ་གྱེས་བར་མཚམས། (བཀོལ་སྤྱོད་ལམ་སྟོན་དང་བཅས་པ།).pdf' ཕབ་ལེན།
|
||||||
autoSplitPDF.submit=ཕུལ་བ།
|
autoSplitPDF.submit=ཕུལ་བ།
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=བསྒྱུར་བ།
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF ནས་ PDF/A ལ།
|
pdfToPDFA.title=PDF ནས་ PDF/A ལ།
|
||||||
pdfToPDFA.header=PDF ནས་ PDF/A ལ།
|
pdfToPDFA.header=PDF ནས་ PDF/A ལ།
|
||||||
pdfToPDFA.credit=ཞབས་ཞུ་འདིས་ PDF/A བསྒྱུར་བའི་ཆེད་དུ་ qpdf བེད་སྤྱོད་བྱེད་པ།
|
pdfToPDFA.credit=ཞབས་ཞུ་འདིས་ PDF/A བསྒྱུར་བའི་ཆེད་དུ་ libreoffice བེད་སྤྱོད་བྱེད་པ།
|
||||||
pdfToPDFA.submit=བསྒྱུར་བ།
|
pdfToPDFA.submit=བསྒྱུར་བ།
|
||||||
pdfToPDFA.tip=ད་ལྟ་ཡིག་ཆ་མང་པོ་དུས་གཅིག་ལ་བསྒྱུར་མི་ཐུབ།
|
pdfToPDFA.tip=ད་ལྟ་ཡིག་ཆ་མང་པོ་དུས་གཅིག་ལ་བསྒྱུར་མི་ཐུབ།
|
||||||
pdfToPDFA.outputFormat=ཕྱིར་འདོན་རྣམ་གཞག
|
pdfToPDFA.outputFormat=ཕྱིར་འདོན་རྣམ་གཞག
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ pages=Pages
|
|||||||
loading=加载中...
|
loading=加载中...
|
||||||
addToDoc=Add to Document
|
addToDoc=Add to Document
|
||||||
reset=重置
|
reset=重置
|
||||||
apply=Apply
|
apply=应用
|
||||||
|
|
||||||
legal.privacy=隐私政策
|
legal.privacy=隐私政策
|
||||||
legal.terms=服务条款
|
legal.terms=服务条款
|
||||||
@@ -138,20 +138,20 @@ analytics.settings=You can change the settings for analytics in the config/setti
|
|||||||
# NAVBAR #
|
# NAVBAR #
|
||||||
#############
|
#############
|
||||||
navbar.favorite=收藏
|
navbar.favorite=收藏
|
||||||
navbar.recent=New and recently updated
|
navbar.recent=新功能和最近更新
|
||||||
navbar.darkmode=暗黑模式
|
navbar.darkmode=暗黑模式
|
||||||
navbar.language=语言
|
navbar.language=语言
|
||||||
navbar.settings=设置
|
navbar.settings=设置
|
||||||
navbar.allTools=工具箱
|
navbar.allTools=工具箱
|
||||||
navbar.multiTool=多功能工具
|
navbar.multiTool=多功能工具
|
||||||
navbar.search=Search
|
navbar.search=搜索
|
||||||
navbar.sections.organize=组织
|
navbar.sections.organize=组织
|
||||||
navbar.sections.convertTo=转换成PDF
|
navbar.sections.convertTo=转换成PDF
|
||||||
navbar.sections.convertFrom=从PDF转换
|
navbar.sections.convertFrom=从PDF转换
|
||||||
navbar.sections.security=签名和安全
|
navbar.sections.security=签名和安全
|
||||||
navbar.sections.advance=高级功能
|
navbar.sections.advance=高级功能
|
||||||
navbar.sections.edit=查看和编辑
|
navbar.sections.edit=查看和编辑
|
||||||
navbar.sections.popular=Popular
|
navbar.sections.popular=热门
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# SETTINGS #
|
# SETTINGS #
|
||||||
@@ -266,13 +266,14 @@ home.viewPdf.title=浏览 PDF
|
|||||||
home.viewPdf.desc=浏览、注释、添加文本或图像
|
home.viewPdf.desc=浏览、注释、添加文本或图像
|
||||||
viewPdf.tags=浏览、阅读、注释、文本、图像
|
viewPdf.tags=浏览、阅读、注释、文本、图像
|
||||||
|
|
||||||
home.setFavorites=Set Favourites
|
home.setFavorites=编辑收藏夹
|
||||||
home.hideFavorites=Hide Favourites
|
home.hideFavorites=Hide Favourites
|
||||||
home.showFavorites=Show Favourites
|
home.showFavorites=Show Favourites
|
||||||
home.legacyHomepage=Old homepage
|
home.legacyHomepage=使用旧版主页
|
||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=试用新版主页!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=按字母顺序
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=按全球热度
|
||||||
|
home.sortBy=排序:
|
||||||
|
|
||||||
home.multiTool.title=PDF 多功能工具
|
home.multiTool.title=PDF 多功能工具
|
||||||
home.multiTool.desc=合并、旋转、重新排列和删除 PDF 页面
|
home.multiTool.desc=合并、旋转、重新排列和删除 PDF 页面
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=Show Attachments
|
|||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Colour Picker
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Find current outline item
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=显示 JavaScript
|
showJS.title=显示 JavaScript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=上传单个大型扫描的 PDF 文件,让 Stirling
|
|||||||
autoSplitPDF.selectText.4=分隔页会自动检测和删除,确保最终文档整洁。
|
autoSplitPDF.selectText.4=分隔页会自动检测和删除,确保最终文档整洁。
|
||||||
autoSplitPDF.formPrompt=提交包含 Stirling-PDF 分隔页的 PDF:
|
autoSplitPDF.formPrompt=提交包含 Stirling-PDF 分隔页的 PDF:
|
||||||
autoSplitPDF.duplexMode=双面模式(正反面扫描)
|
autoSplitPDF.duplexMode=双面模式(正反面扫描)
|
||||||
autoSplitPDF.dividerDownload1=下载“自动拆分分隔页(最小化).pdf”
|
|
||||||
autoSplitPDF.dividerDownload2=下载“自动拆分分隔页(带指导说明).pdf”
|
autoSplitPDF.dividerDownload2=下载“自动拆分分隔页(带指导说明).pdf”
|
||||||
autoSplitPDF.submit=提交
|
autoSplitPDF.submit=提交
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=更改
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF 转 PDF/A
|
pdfToPDFA.title=PDF 转 PDF/A
|
||||||
pdfToPDFA.header=将 PDF 转换为 PDF/A
|
pdfToPDFA.header=将 PDF 转换为 PDF/A
|
||||||
pdfToPDFA.credit=此服务使用 qpdf 进行 PDF/A 转换
|
pdfToPDFA.credit=此服务使用 libreoffice 进行 PDF/A 转换
|
||||||
pdfToPDFA.submit=转换
|
pdfToPDFA.submit=转换
|
||||||
pdfToPDFA.tip=目前不支持上传多个
|
pdfToPDFA.tip=目前不支持上传多个
|
||||||
pdfToPDFA.outputFormat=输出格式
|
pdfToPDFA.outputFormat=输出格式
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ home.legacyHomepage=Old homepage
|
|||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=Try our new homepage!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alphabetical
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Global Popularity
|
||||||
|
home.sortBy=Sort by:
|
||||||
|
|
||||||
home.multiTool.title=PDF 複合工具
|
home.multiTool.title=PDF 複合工具
|
||||||
home.multiTool.desc=合併、旋轉、重新排列和移除頁面
|
home.multiTool.desc=合併、旋轉、重新排列和移除頁面
|
||||||
@@ -622,6 +623,7 @@ redact.showAttatchments=顯示附件
|
|||||||
redact.showLayers=顯示圖層(按兩下可將所有圖層重設為預設狀態)
|
redact.showLayers=顯示圖層(按兩下可將所有圖層重設為預設狀態)
|
||||||
redact.colourPicker=顏色選擇器
|
redact.colourPicker=顏色選擇器
|
||||||
redact.findCurrentOutlineItem=尋找目前的大綱項目
|
redact.findCurrentOutlineItem=尋找目前的大綱項目
|
||||||
|
redact.applyChanges=Apply Changes
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=顯示 JavaScript
|
showJS.title=顯示 JavaScript
|
||||||
@@ -767,7 +769,6 @@ autoSplitPDF.selectText.3=上傳單一大的掃描 PDF 檔案,讓 Stirling PDF
|
|||||||
autoSplitPDF.selectText.4=自動偵測並移除分隔頁面,確保最終文件整潔。
|
autoSplitPDF.selectText.4=自動偵測並移除分隔頁面,確保最終文件整潔。
|
||||||
autoSplitPDF.formPrompt=送出包含 Stirling-PDF 頁面分隔器的 PDF:
|
autoSplitPDF.formPrompt=送出包含 Stirling-PDF 頁面分隔器的 PDF:
|
||||||
autoSplitPDF.duplexMode=雙面模式(正反面掃描)
|
autoSplitPDF.duplexMode=雙面模式(正反面掃描)
|
||||||
autoSplitPDF.dividerDownload1=下載 '自動分割器分隔器(最小化).pdf'
|
|
||||||
autoSplitPDF.dividerDownload2=下載 '自動分割器分隔器(帶說明).pdf'
|
autoSplitPDF.dividerDownload2=下載 '自動分割器分隔器(帶說明).pdf'
|
||||||
autoSplitPDF.submit=送出
|
autoSplitPDF.submit=送出
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ changeMetadata.submit=變更
|
|||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF 轉 PDF/A
|
pdfToPDFA.title=PDF 轉 PDF/A
|
||||||
pdfToPDFA.header=PDF 轉 PDF/A
|
pdfToPDFA.header=PDF 轉 PDF/A
|
||||||
pdfToPDFA.credit=此服務使用 qpdf 進行 PDF/A 轉換
|
pdfToPDFA.credit=此服務使用 libreoffice 進行 PDF/A 轉換
|
||||||
pdfToPDFA.submit=轉換
|
pdfToPDFA.submit=轉換
|
||||||
pdfToPDFA.tip=目前不支援上傳多個
|
pdfToPDFA.tip=目前不支援上傳多個
|
||||||
pdfToPDFA.outputFormat=輸出格式
|
pdfToPDFA.outputFormat=輸出格式
|
||||||
|
|||||||
@@ -86,6 +86,7 @@ system:
|
|||||||
customHTMLFiles: false # enable to have files placed in /customFiles/templates override the existing template HTML files
|
customHTMLFiles: false # enable to have files placed in /customFiles/templates override the existing template HTML files
|
||||||
tessdataDir: /usr/share/tessdata # path to the directory containing the Tessdata files. This setting is relevant for Windows systems. For Windows users, this path should be adjusted to point to the appropriate directory where the Tessdata files are stored.
|
tessdataDir: /usr/share/tessdata # path to the directory containing the Tessdata files. This setting is relevant for Windows systems. For Windows users, this path should be adjusted to point to the appropriate directory where the Tessdata files are stored.
|
||||||
enableAnalytics: 'true' # set to 'true' to enable analytics, set to 'false' to disable analytics; for enterprise users, this is set to true
|
enableAnalytics: 'true' # set to 'true' to enable analytics, set to 'false' to disable analytics; for enterprise users, this is set to true
|
||||||
|
disableSanitize: false # set to true to disable Sanitize HTML; (can lead to injections in HTML)
|
||||||
datasource:
|
datasource:
|
||||||
enableCustomDatabase: false # Enterprise users ONLY, set this property to 'true' if you would like to use your own custom database configuration
|
enableCustomDatabase: false # Enterprise users ONLY, set this property to 'true' if you would like to use your own custom database configuration
|
||||||
customDatabaseUrl: '' # eg jdbc:postgresql://localhost:5432/postgres, set the url for your own custom database connection. If provided, the type, hostName, port and name are not necessary and will not be used
|
customDatabaseUrl: '' # eg jdbc:postgresql://localhost:5432/postgres, set the url for your own custom database connection. If provided, the type, hostName, port and name are not necessary and will not be used
|
||||||
@@ -100,6 +101,7 @@ ui:
|
|||||||
appName: '' # application's visible name
|
appName: '' # application's visible name
|
||||||
homeDescription: '' # short description or tagline shown on the homepage
|
homeDescription: '' # short description or tagline shown on the homepage
|
||||||
appNameNavbar: '' # name displayed on the navigation bar
|
appNameNavbar: '' # name displayed on the navigation bar
|
||||||
|
languages: [] # If empty, all languages are enabled. To display only German and Polish ["de_DE", "pl_PL"]. British English is always enabled.
|
||||||
|
|
||||||
endpoints:
|
endpoints:
|
||||||
toRemove: [] # list endpoints to disable (e.g. ['img-to-pdf', 'remove-pages'])
|
toRemove: [] # list endpoints to disable (e.g. ['img-to-pdf', 'remove-pages'])
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24">
|
||||||
<symbol id="icon-redact-auto" viewBox="0 0 24 24"> <g id="Layer_2" data-name="Layer 2">
|
<symbol id="icon-redact-auto" viewBox="0 0 24 24"> <g id="Layer_2" data-name="Layer 2">
|
||||||
<g id="Layer_1-2" data-name="Layer 1">
|
<g id="Layer_1-2" data-name="Layer 1">
|
||||||
<rect width="24" height="24" style="fill: none"/>
|
<rect width="24" height="24" style="fill: none"/>
|
||||||
@@ -14,4 +14,5 @@
|
|||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
|
</symbol>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.5 KiB |
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24">
|
||||||
<symbol id="icon-redact-manual" viewBox="-2 0 24 24">
|
<symbol id="icon-redact-manual" viewBox="-2 0 24 24">
|
||||||
<g id="Layer_2" data-name="Layer 2">
|
<g id="Layer_2" data-name="Layer 2">
|
||||||
<g id="Layer_1-2" data-name="Layer 1">
|
<g id="Layer_1-2" data-name="Layer 1">
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.5 KiB |
@@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24">
|
||||||
<symbol id="icon-split-auto" viewBox="0 0 24 24"> <g id="Layer_2" data-name="Layer 2"> <g id="Layer_2" data-name="Layer 2">
|
<symbol id="icon-split-auto" viewBox="0 0 24 24">
|
||||||
|
<g id="Layer_2" data-name="Layer 2">
|
||||||
<g id="Layer_1-2" data-name="Layer 1">
|
<g id="Layer_1-2" data-name="Layer 1">
|
||||||
<g>
|
<g>
|
||||||
<path d="M18.42466,20.16555,12,13.74089,9.84315,15.89774a2.45776,2.45776,0,0,1,.2524.73425,4.481,4.481,0,0,1,.06883.78013A3.53515,3.53515,0,0,1,9.086,20.00493a3.53516,3.53516,0,0,1-2.59281,1.07843,3.53516,3.53516,0,0,1-2.59281-1.07843,3.6561,3.6561,0,0,1,0-5.18561,3.53516,3.53516,0,0,1,2.59281-1.07843,4.48117,4.48117,0,0,1,.78014.06884,2.45778,2.45778,0,0,1,.73424.25239l2.15685-2.15685L8.00753,9.74842a2.45752,2.45752,0,0,1-.73424.2524,4.48117,4.48117,0,0,1-.78014.06884A3.53516,3.53516,0,0,1,3.90034,8.99123,3.53515,3.53515,0,0,1,2.82192,6.39842,3.53515,3.53515,0,0,1,3.90034,3.80561,3.53515,3.53515,0,0,1,6.49315,2.72719,3.53515,3.53515,0,0,1,9.086,3.80561a3.53515,3.53515,0,0,1,1.07842,2.59281,4.48107,4.48107,0,0,1-.06883.78014,2.45786,2.45786,0,0,1-.2524.73425L21.17808,19.24774v.91781Zm-3.67123-9.17809L12.91781,9.15185,18.42466,3.645h2.75342v.91781ZM6.49315,8.234A1.841,1.841,0,0,0,8.32877,6.39842,1.841,1.841,0,0,0,6.49315,4.56281,1.841,1.841,0,0,0,4.65753,6.39842,1.841,1.841,0,0,0,6.49315,8.234ZM12,12.36418a.47051.47051,0,1,0-.32123-.13767A.44026.44026,0,0,0,12,12.36418ZM6.49315,19.24774a1.83562,1.83562,0,1,0-1.29641-3.132,1.83562,1.83562,0,0,0,1.29641,3.132Z" style="fill: currentColor"/>
|
<path d="M18.42466,20.16555,12,13.74089,9.84315,15.89774a2.45776,2.45776,0,0,1,.2524.73425,4.481,4.481,0,0,1,.06883.78013A3.53515,3.53515,0,0,1,9.086,20.00493a3.53516,3.53516,0,0,1-2.59281,1.07843,3.53516,3.53516,0,0,1-2.59281-1.07843,3.6561,3.6561,0,0,1,0-5.18561,3.53516,3.53516,0,0,1,2.59281-1.07843,4.48117,4.48117,0,0,1,.78014.06884,2.45778,2.45778,0,0,1,.73424.25239l2.15685-2.15685L8.00753,9.74842a2.45752,2.45752,0,0,1-.73424.2524,4.48117,4.48117,0,0,1-.78014.06884A3.53516,3.53516,0,0,1,3.90034,8.99123,3.53515,3.53515,0,0,1,2.82192,6.39842,3.53515,3.53515,0,0,1,3.90034,3.80561,3.53515,3.53515,0,0,1,6.49315,2.72719,3.53515,3.53515,0,0,1,9.086,3.80561a3.53515,3.53515,0,0,1,1.07842,2.59281,4.48107,4.48107,0,0,1-.06883.78014,2.45786,2.45786,0,0,1-.2524.73425L21.17808,19.24774v.91781Zm-3.67123-9.17809L12.91781,9.15185,18.42466,3.645h2.75342v.91781ZM6.49315,8.234A1.841,1.841,0,0,0,8.32877,6.39842,1.841,1.841,0,0,0,6.49315,4.56281,1.841,1.841,0,0,0,4.65753,6.39842,1.841,1.841,0,0,0,6.49315,8.234ZM12,12.36418a.47051.47051,0,1,0-.32123-.13767A.44026.44026,0,0,0,12,12.36418ZM6.49315,19.24774a1.83562,1.83562,0,1,0-1.29641-3.132,1.83562,1.83562,0,0,0,1.29641,3.132Z" style="fill: currentColor"/>
|
||||||
@@ -9,4 +10,5 @@
|
|||||||
<rect width="24" height="24" style="fill: none"/>
|
<rect width="24" height="24" style="fill: none"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
|
</symbol>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |