Compare commits
113 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3868b4eca2 | ||
|
|
64f8765115 | ||
|
|
3804656218 | ||
|
|
a5d824213c | ||
|
|
160a4e9f8d | ||
|
|
74a0574462 | ||
|
|
1cf23b3542 | ||
|
|
2ef1242cd8 | ||
|
|
54c3bee205 | ||
|
|
a63c0a3625 | ||
|
|
3103a0bffc | ||
|
|
5d71ffbfaa | ||
|
|
c0c137d1b0 | ||
|
|
8625db2885 | ||
|
|
a2a969a0a0 | ||
|
|
8a6386ca73 | ||
|
|
255c018415 | ||
|
|
df27ed6907 | ||
|
|
989491b903 | ||
|
|
664dd62d8b | ||
|
|
3d6b145db5 | ||
|
|
37a63242a6 | ||
|
|
dfb8c64f5a | ||
|
|
27bbf7a513 | ||
|
|
ca890e4b32 | ||
|
|
4834d01223 | ||
|
|
84b3bb1aed | ||
|
|
a9679da719 | ||
|
|
f10b3ffe3c | ||
|
|
ea982d6412 | ||
|
|
1035a3be31 | ||
|
|
c16db14cd9 | ||
|
|
1698f9d5df | ||
|
|
08e43cc89c | ||
|
|
fb1baaa275 | ||
|
|
eda838d6f8 | ||
|
|
2fff3083ae | ||
|
|
7e2d58b3e8 | ||
|
|
31ec385282 | ||
|
|
14ef7c0a72 | ||
|
|
c9331afeac | ||
|
|
09cb92e235 | ||
|
|
6bd6e6563b | ||
|
|
3c08c20426 | ||
|
|
3800e3e465 | ||
|
|
e2bd73dbf3 | ||
|
|
a20c3018ae | ||
|
|
7f17b33859 | ||
|
|
029937a1c5 | ||
|
|
cfcf02708c | ||
|
|
c1724ef74c | ||
|
|
3c53f97c36 | ||
|
|
aa895d10ac | ||
|
|
6c603618ce | ||
|
|
78aa0d4c61 | ||
|
|
da3fc72e5c | ||
|
|
a800766cb8 | ||
|
|
67a1529dc7 | ||
|
|
77354f47bf | ||
|
|
49ea07fd13 | ||
|
|
bb69c67b52 | ||
|
|
6b29c28e2e | ||
|
|
ba0fe43f31 | ||
|
|
e54597f108 | ||
|
|
9809ad9d7b | ||
|
|
1d4ad19acd | ||
|
|
2c24e754be | ||
|
|
4a3326a560 | ||
|
|
24862e2d4a | ||
|
|
51bb26ae34 | ||
|
|
f474651f36 | ||
|
|
11193b1b6d | ||
|
|
3066b3e500 | ||
|
|
217f112bc4 | ||
|
|
e1bb0cf5ec | ||
|
|
3930c25a75 | ||
|
|
b27e79cb52 | ||
|
|
daf6486b86 | ||
|
|
1af41f8ea5 | ||
|
|
70e4ac21df | ||
|
|
95d9d85ca2 | ||
|
|
9cc7a49d12 | ||
|
|
ae73595335 | ||
|
|
ac620082ec | ||
|
|
1e4134c7d1 | ||
|
|
a7bcdd0003 | ||
|
|
121af0501a | ||
|
|
82c4e9cf41 | ||
|
|
142e11a59a | ||
|
|
08205ed32d | ||
|
|
9246b42057 | ||
|
|
67e4d6e3a2 | ||
|
|
cf4613d043 | ||
|
|
2f703796e9 | ||
|
|
731dc3f3dc | ||
|
|
97472310f2 | ||
|
|
ece1d071c0 | ||
|
|
20f532c872 | ||
|
|
bdcccfd937 | ||
|
|
146b8f0103 | ||
|
|
c8a37245fa | ||
|
|
af68c70239 | ||
|
|
5bd544dcd7 | ||
|
|
642b85069d | ||
|
|
6fef4ea82c | ||
|
|
8670afb96f | ||
|
|
33f8d60900 | ||
|
|
4e2156ad79 | ||
|
|
a07245224e | ||
|
|
f96a4cdb59 | ||
|
|
efea22aa6e | ||
|
|
ae9a7dc580 | ||
|
|
7135ace1aa |
51
.github/scripts/check_duplicates.py
vendored
Normal file
51
.github/scripts/check_duplicates.py
vendored
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def find_duplicate_keys(file_path):
|
||||||
|
"""
|
||||||
|
Finds duplicate keys in a properties file and returns their occurrences.
|
||||||
|
|
||||||
|
This function reads a properties file, identifies any keys that occur more than
|
||||||
|
once, and returns a dictionary with these keys and the line numbers of their occurrences.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
file_path (str): The path to the properties file to be checked.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
dict: A dictionary where each key is a duplicated key in the file, and the value is a list
|
||||||
|
of line numbers where the key occurs.
|
||||||
|
"""
|
||||||
|
with open(file_path, "r", encoding="utf-8") as file:
|
||||||
|
lines = file.readlines()
|
||||||
|
|
||||||
|
keys = {}
|
||||||
|
duplicates = {}
|
||||||
|
|
||||||
|
for line_number, line in enumerate(lines, start=1):
|
||||||
|
line = line.strip()
|
||||||
|
if line and not line.startswith("#") and "=" in line:
|
||||||
|
key = line.split("=", 1)[0].strip()
|
||||||
|
if key in keys:
|
||||||
|
# If the key already exists, add the current line number
|
||||||
|
duplicates.setdefault(key, []).append(line_number)
|
||||||
|
# Also add the first instance of the key if not already done
|
||||||
|
if keys[key] not in duplicates[key]:
|
||||||
|
duplicates[key].insert(0, keys[key])
|
||||||
|
else:
|
||||||
|
# Store the line number of the first instance of the key
|
||||||
|
keys[key] = line_number
|
||||||
|
|
||||||
|
return duplicates
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
failed = False
|
||||||
|
for ar in sys.argv[1:]:
|
||||||
|
duplicates = find_duplicate_keys(ar)
|
||||||
|
if duplicates:
|
||||||
|
for key, lines in duplicates.items():
|
||||||
|
lines_str = ", ".join(map(str, lines))
|
||||||
|
print(f"{key} duplicated in {ar} on lines {lines_str}")
|
||||||
|
failed = True
|
||||||
|
if failed:
|
||||||
|
sys.exit(1)
|
||||||
84
.github/scripts/check_tabulator.py
vendored
Normal file
84
.github/scripts/check_tabulator.py
vendored
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
"""check_tabulator.py"""
|
||||||
|
import argparse
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def check_tabs(file_path):
|
||||||
|
"""
|
||||||
|
Checks for tabs in the specified file.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
file_path (str): The path to the file to be checked.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
bool: True if tabs are found, False otherwise.
|
||||||
|
"""
|
||||||
|
with open(file_path, "r", encoding="utf-8") as file:
|
||||||
|
content = file.read()
|
||||||
|
|
||||||
|
if "\t" in content:
|
||||||
|
print(f"Tab found in {file_path}")
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def replace_tabs_with_spaces(file_path, replace_with=" "):
|
||||||
|
"""
|
||||||
|
Replaces tabs with a specified number of spaces in the file.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
file_path (str): The path to the file where tabs will be replaced.
|
||||||
|
replace_with (str): The character(s) to replace tabs with. Defaults to two spaces.
|
||||||
|
"""
|
||||||
|
with open(file_path, "r", encoding="utf-8") as file:
|
||||||
|
content = file.read()
|
||||||
|
|
||||||
|
updated_content = content.replace("\t", replace_with)
|
||||||
|
|
||||||
|
with open(file_path, "w", encoding="utf-8") as file:
|
||||||
|
file.write(updated_content)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
"""
|
||||||
|
Main function to replace tabs with spaces in the provided files.
|
||||||
|
The replacement character and files to check are taken from command line arguments.
|
||||||
|
"""
|
||||||
|
# Create ArgumentParser instance
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Replace tabs in files with specified characters."
|
||||||
|
)
|
||||||
|
|
||||||
|
# Define optional argument `--replace_with`
|
||||||
|
parser.add_argument(
|
||||||
|
"--replace_with",
|
||||||
|
default=" ",
|
||||||
|
help="Character(s) to replace tabs with. Default is two spaces.",
|
||||||
|
)
|
||||||
|
|
||||||
|
# Define argument for file paths
|
||||||
|
parser.add_argument("files", metavar="FILE", nargs="+", help="Files to process.")
|
||||||
|
|
||||||
|
# Parse arguments
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
# Extract replacement characters and files from the parsed arguments
|
||||||
|
replace_with = args.replace_with
|
||||||
|
files_checked = args.files
|
||||||
|
|
||||||
|
error = False
|
||||||
|
|
||||||
|
for file_path in files_checked:
|
||||||
|
if check_tabs(file_path):
|
||||||
|
replace_tabs_with_spaces(file_path, replace_with)
|
||||||
|
error = True
|
||||||
|
|
||||||
|
if error:
|
||||||
|
print("Error: Originally found tabs in HTML files, now replaced.")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
67
.github/scripts/gradle_to_chart.py
vendored
Normal file
67
.github/scripts/gradle_to_chart.py
vendored
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
import re
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
# Paths to the files
|
||||||
|
chart_yaml_path = "chart/stirling-pdf/Chart.yaml"
|
||||||
|
gradle_path = "build.gradle"
|
||||||
|
|
||||||
|
|
||||||
|
def get_chart_version(path):
|
||||||
|
"""
|
||||||
|
Reads the appVersion from Chart.yaml.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
path (str): The file path to the Chart.yaml.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: The appVersion if found, otherwise an empty string.
|
||||||
|
"""
|
||||||
|
with open(path, encoding="utf-8") as file:
|
||||||
|
chart_yaml = yaml.safe_load(file)
|
||||||
|
return chart_yaml.get("appVersion", "")
|
||||||
|
|
||||||
|
|
||||||
|
def get_gradle_version(path):
|
||||||
|
"""
|
||||||
|
Extracts the version from build.gradle.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
path (str): The file path to the build.gradle.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: The version if found, otherwise an empty string.
|
||||||
|
"""
|
||||||
|
with open(path, encoding="utf-8") as file:
|
||||||
|
for line in file:
|
||||||
|
if "version =" in line:
|
||||||
|
# Extracts the value after 'version ='
|
||||||
|
return re.search(r'version\s*=\s*[\'"](.+?)[\'"]', line).group(1)
|
||||||
|
return ""
|
||||||
|
|
||||||
|
|
||||||
|
def update_chart_version(path, new_version):
|
||||||
|
"""
|
||||||
|
Updates the appVersion in Chart.yaml with a new version.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
path (str): The file path to the Chart.yaml.
|
||||||
|
new_version (str): The new version to update to.
|
||||||
|
"""
|
||||||
|
with open(path, encoding="utf-8") as file:
|
||||||
|
chart_yaml = yaml.safe_load(file)
|
||||||
|
chart_yaml["appVersion"] = new_version
|
||||||
|
with open(path, "w", encoding="utf-8") as file:
|
||||||
|
yaml.safe_dump(chart_yaml, file)
|
||||||
|
|
||||||
|
|
||||||
|
# Main logic
|
||||||
|
chart_version = get_chart_version(chart_yaml_path)
|
||||||
|
gradle_version = get_gradle_version(gradle_path)
|
||||||
|
|
||||||
|
if chart_version != gradle_version:
|
||||||
|
print(
|
||||||
|
f"Versions do not match. Updating Chart.yaml from {chart_version} to {gradle_version}."
|
||||||
|
)
|
||||||
|
update_chart_version(chart_yaml_path, gradle_version)
|
||||||
|
else:
|
||||||
|
print("Versions match. No update required.")
|
||||||
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
@@ -3,8 +3,14 @@ name: "Build repo"
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ "main" ]
|
branches: [ "main" ]
|
||||||
|
paths-ignore:
|
||||||
|
- ".github/**"
|
||||||
|
- "**/*.md"
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ "main" ]
|
branches: [ "main" ]
|
||||||
|
paths-ignore:
|
||||||
|
- ".github/**"
|
||||||
|
- "**/*.md"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
|||||||
33
.github/workflows/licenses-update.yml
vendored
33
.github/workflows/licenses-update.yml
vendored
@@ -32,17 +32,30 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
mv build/reports/dependency-license/index.json src/main/resources/static/3rdPartyLicenses.json
|
mv build/reports/dependency-license/index.json src/main/resources/static/3rdPartyLicenses.json
|
||||||
|
|
||||||
- name: Check for Changes
|
- name: Set up git config
|
||||||
id: git-check
|
run: |
|
||||||
|
git config --global user.email "GitHub Action <action@github.com>"
|
||||||
|
git config --global user.name "GitHub Action <action@github.com>"
|
||||||
|
|
||||||
|
- name: Run git add
|
||||||
run: |
|
run: |
|
||||||
git add src/main/resources/static/3rdPartyLicenses.json
|
git add src/main/resources/static/3rdPartyLicenses.json
|
||||||
git diff --staged --exit-code || echo "changes=true" >> $GITHUB_ENV
|
git diff --staged --quiet || echo "CHANGES_DETECTED=true" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Commit and Push Changes
|
- name: Create Pull Request
|
||||||
if: env.changes == 'true'
|
if: env.CHANGES_DETECTED == 'true'
|
||||||
run: |
|
uses: peter-evans/create-pull-request@v3
|
||||||
git config --global user.name 'Stirling-PDF-Bot'
|
with:
|
||||||
git config --global user.email 'Stirling-PDF-Bot@stirlingtools.com'
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
git commit -m "Update 3rd Party Licenses"
|
commit-message: "Update 3rd Party Licenses"
|
||||||
git push
|
committer: GitHub Action <action@github.com>
|
||||||
|
author: GitHub Action <action@github.com>
|
||||||
|
signoff: true
|
||||||
|
branch: update-3rd-party-licenses
|
||||||
|
title: "Update 3rd Party Licenses"
|
||||||
|
body: |
|
||||||
|
Auto-generated by [create-pull-request][1]
|
||||||
|
[1]: https://github.com/peter-evans/create-pull-request
|
||||||
|
draft: false
|
||||||
|
delete-branch: true
|
||||||
|
|
||||||
|
|||||||
35
.github/workflows/push-docker.yml
vendored
35
.github/workflows/push-docker.yml
vendored
@@ -6,6 +6,7 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
- main
|
- main
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
packages: write
|
packages: write
|
||||||
@@ -115,37 +116,3 @@ jobs:
|
|||||||
build-args:
|
build-args:
|
||||||
VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }}
|
VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }}
|
||||||
platforms: linux/amd64,linux/arm64/v8
|
platforms: linux/amd64,linux/arm64/v8
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- name: Generate tags lite
|
|
||||||
id: meta3
|
|
||||||
uses: docker/metadata-action@v4.4.0
|
|
||||||
if: github.ref != 'refs/heads/main'
|
|
||||||
with:
|
|
||||||
images: |
|
|
||||||
${{ secrets.DOCKER_HUB_USERNAME }}/s-pdf
|
|
||||||
ghcr.io/${{ steps.repoowner.outputs.lowercase }}/s-pdf
|
|
||||||
tags: |
|
|
||||||
type=raw,value=${{ steps.versionNumber.outputs.versionNumber }}-lite,enable=${{ github.ref == 'refs/heads/master' }}
|
|
||||||
type=raw,value=latest-lite,enable=${{ github.ref == 'refs/heads/master' }}
|
|
||||||
|
|
||||||
|
|
||||||
- name: Build and push Dockerfile-lite
|
|
||||||
uses: docker/build-push-action@v4.0.0
|
|
||||||
if: github.ref != 'refs/heads/main'
|
|
||||||
with:
|
|
||||||
context: .
|
|
||||||
file: ./Dockerfile-lite
|
|
||||||
push: true
|
|
||||||
cache-from: type=gha
|
|
||||||
cache-to: type=gha,mode=max
|
|
||||||
tags: ${{ steps.meta3.outputs.tags }}
|
|
||||||
labels: ${{ steps.meta3.outputs.labels }}
|
|
||||||
build-args:
|
|
||||||
VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }}
|
|
||||||
platforms: linux/amd64,linux/arm64/v8
|
|
||||||
- name: Build and Push Helm Chart
|
|
||||||
run: |
|
|
||||||
helm package chart/stirling-pdf
|
|
||||||
helm push stirling-pdf-chart-1.0.0.tgz oci://registry-1.docker.io/frooodle
|
|
||||||
|
|||||||
1
.github/workflows/swagger.yml
vendored
1
.github/workflows/swagger.yml
vendored
@@ -5,6 +5,7 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
push:
|
push:
|
||||||
|
|
||||||
|
|||||||
51
.github/workflows/sync_versions.yml
vendored
Normal file
51
.github/workflows/sync_versions.yml
vendored
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
name: Sync Versions
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- "build.gradle"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
sync-versions:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4.1.1
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v5.0.0
|
||||||
|
with:
|
||||||
|
python-version: '3.x'
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pip install pyyaml
|
||||||
|
- name: Sync versions
|
||||||
|
run: python .github/scripts/gradle_to_chart.py
|
||||||
|
- name: Set up git config
|
||||||
|
run: |
|
||||||
|
git config --global user.email "GitHub Action <action@github.com>"
|
||||||
|
git config --global user.name "GitHub Action <action@github.com>"
|
||||||
|
- name: Run git add
|
||||||
|
run: |
|
||||||
|
git add .
|
||||||
|
git diff --staged --quiet || git commit -m ":floppy_disk: Sync Versions
|
||||||
|
> Made via sync_versions.yml" || echo "no changes"
|
||||||
|
- name: Create Pull Request
|
||||||
|
uses: peter-evans/create-pull-request@v6.0.0
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
commit-message: Update files
|
||||||
|
committer: GitHub Action <action@github.com>
|
||||||
|
author: GitHub Action <action@github.com>
|
||||||
|
signoff: true
|
||||||
|
branch: sync_version
|
||||||
|
title: ":floppy_disk: Update Version"
|
||||||
|
body: |
|
||||||
|
Auto-generated by [create-pull-request][1]
|
||||||
|
|
||||||
|
[1]: https://github.com/peter-evans/create-pull-request
|
||||||
|
draft: false
|
||||||
|
delete-branch: true
|
||||||
37
.pre-commit-config.yaml
Normal file
37
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
repos:
|
||||||
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||||
|
rev: v0.2.1
|
||||||
|
hooks:
|
||||||
|
- id: ruff
|
||||||
|
args:
|
||||||
|
- --fix
|
||||||
|
- --line-length=127
|
||||||
|
files: ^((.github/scripts)/.+)?[^/]+\.py$
|
||||||
|
- id: ruff-format
|
||||||
|
files: ^((.github/scripts)/.+)?[^/]+\.py$
|
||||||
|
- repo: https://github.com/codespell-project/codespell
|
||||||
|
rev: v2.2.6
|
||||||
|
hooks:
|
||||||
|
- id: codespell
|
||||||
|
args:
|
||||||
|
- --ignore-words-list=
|
||||||
|
- --skip="./.*,*.csv,*.json,*.ambr"
|
||||||
|
- --quiet-level=2
|
||||||
|
files: \.(properties|html|css|js|py|md)$
|
||||||
|
exclude: (.vscode|.devcontainer|src/main/resources|Dockerfile)
|
||||||
|
- repo: local
|
||||||
|
hooks:
|
||||||
|
- id: check-duplicate-properties-keys
|
||||||
|
name: Check Duplicate Properties Keys
|
||||||
|
entry: python .github/scripts/check_duplicates.py
|
||||||
|
language: python
|
||||||
|
files: ^(src)/.+\.properties$
|
||||||
|
- repo: local
|
||||||
|
hooks:
|
||||||
|
- id: check-html-tabs
|
||||||
|
name: Check HTML for tabs
|
||||||
|
# args: ["--replace_with= "]
|
||||||
|
entry: python .github/scripts/check_tabulator.py
|
||||||
|
language: python
|
||||||
|
exclude: ^src/main/resources/static/pdfjs/
|
||||||
|
files: ^.*(\.html|\.css|\.js)$
|
||||||
72
Dockerfile
72
Dockerfile
@@ -1,5 +1,25 @@
|
|||||||
# Main stage
|
# Main stage
|
||||||
FROM alpine:3.19.1
|
FROM alpine:20240329
|
||||||
|
|
||||||
|
# Copy necessary files
|
||||||
|
COPY scripts /scripts
|
||||||
|
COPY pipeline /pipeline
|
||||||
|
COPY src/main/resources/static/fonts/*.ttf /usr/share/fonts/opentype/noto
|
||||||
|
COPY src/main/resources/static/fonts/*.otf /usr/share/fonts/opentype/noto
|
||||||
|
COPY build/libs/*.jar app.jar
|
||||||
|
|
||||||
|
ARG VERSION_TAG
|
||||||
|
|
||||||
|
|
||||||
|
# Set Environment Variables
|
||||||
|
ENV DOCKER_ENABLE_SECURITY=false \
|
||||||
|
VERSION_TAG=$VERSION_TAG \
|
||||||
|
JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS -XX:MaxRAMPercentage=75" \
|
||||||
|
HOME=/home/stirlingpdfuser \
|
||||||
|
PUID=1000 \
|
||||||
|
PGID=1000 \
|
||||||
|
UMASK=022
|
||||||
|
|
||||||
|
|
||||||
# JDK for app
|
# JDK for app
|
||||||
RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /etc/apk/repositories && \
|
RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /etc/apk/repositories && \
|
||||||
@@ -12,8 +32,13 @@ RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /et
|
|||||||
bash \
|
bash \
|
||||||
curl \
|
curl \
|
||||||
openjdk17-jre \
|
openjdk17-jre \
|
||||||
|
su-exec \
|
||||||
|
font-noto-cjk \
|
||||||
|
shadow \
|
||||||
# Doc conversion
|
# Doc conversion
|
||||||
libreoffice@testing \
|
libreoffice@testing \
|
||||||
|
# pdftohtml
|
||||||
|
poppler-utils \
|
||||||
# OCR MY PDF (unpaper for descew and other advanced featues)
|
# OCR MY PDF (unpaper for descew and other advanced featues)
|
||||||
ocrmypdf \
|
ocrmypdf \
|
||||||
tesseract-ocr-data-eng \
|
tesseract-ocr-data-eng \
|
||||||
@@ -24,46 +49,19 @@ RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /et
|
|||||||
wget https://bootstrap.pypa.io/get-pip.py -qO - | python3 - --break-system-packages --no-cache-dir --upgrade && \
|
wget https://bootstrap.pypa.io/get-pip.py -qO - | python3 - --break-system-packages --no-cache-dir --upgrade && \
|
||||||
# uno unoconv and HTML
|
# uno unoconv and HTML
|
||||||
pip install --break-system-packages --no-cache-dir --upgrade unoconv WeasyPrint && \
|
pip install --break-system-packages --no-cache-dir --upgrade unoconv WeasyPrint && \
|
||||||
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 && \
|
||||||
|
|
||||||
|
|
||||||
ARG VERSION_TAG
|
|
||||||
|
|
||||||
# Set Environment Variables
|
|
||||||
ENV DOCKER_ENABLE_SECURITY=false \
|
|
||||||
HOME=/home/stirlingpdfuser \
|
|
||||||
VERSION_TAG=$VERSION_TAG \
|
|
||||||
JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS -XX:MaxRAMPercentage=75"
|
|
||||||
# PUID=1000 \
|
|
||||||
# PGID=1000 \
|
|
||||||
# UMASK=022 \
|
|
||||||
|
|
||||||
# Copy necessary files
|
|
||||||
COPY scripts /scripts
|
|
||||||
COPY pipeline /pipeline
|
|
||||||
COPY src/main/resources/static/fonts/*.ttf /usr/share/fonts/opentype/noto
|
|
||||||
COPY src/main/resources/static/fonts/*.otf /usr/share/fonts/opentype/noto
|
|
||||||
COPY build/libs/*.jar app.jar
|
|
||||||
|
|
||||||
# Create user and group
|
|
||||||
##RUN groupadd -g $PGID stirlingpdfgroup && \
|
|
||||||
## useradd -u $PUID -g stirlingpdfgroup -s /bin/sh stirlingpdfuser && \
|
|
||||||
## mkdir -p $HOME && chown stirlingpdfuser:stirlingpdfgroup $HOME && \
|
|
||||||
# Set up necessary directories and permissions
|
|
||||||
RUN mkdir -p /configs /logs /customFiles /pipeline/watchedFolders /pipeline/finishedFolders && \
|
|
||||||
##&& \
|
|
||||||
## chown -R stirlingpdfuser:stirlingpdfgroup /scripts /usr/share/fonts/opentype/noto /usr/share/tesseract-ocr /configs /customFiles && \
|
|
||||||
## chown -R stirlingpdfuser:stirlingpdfgroup /usr/share/tesseract-ocr-original && \
|
|
||||||
# Set font cache and permissions
|
|
||||||
fc-cache -f -v && \
|
fc-cache -f -v && \
|
||||||
chmod +x /scripts/*
|
chmod +x /scripts/* && \
|
||||||
## chown stirlingpdfuser:stirlingpdfgroup /app.jar && \
|
chmod +x /scripts/init.sh && \
|
||||||
## chmod +x /scripts/init.sh
|
# User permissions
|
||||||
|
addgroup -S stirlingpdfgroup && adduser -S stirlingpdfuser -G stirlingpdfgroup && \
|
||||||
|
chown -R stirlingpdfuser:stirlingpdfgroup $HOME /scripts /usr/share/fonts/opentype/noto /configs /customFiles /pipeline && \
|
||||||
|
chown stirlingpdfuser:stirlingpdfgroup /app.jar && \
|
||||||
|
tesseract --list-langs
|
||||||
|
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
|
|
||||||
# Set user and run command
|
# Set user and run command
|
||||||
##USER stirlingpdfuser
|
|
||||||
ENTRYPOINT ["tini", "--", "/scripts/init.sh"]
|
ENTRYPOINT ["tini", "--", "/scripts/init.sh"]
|
||||||
CMD ["java", "-Dfile.encoding=UTF-8", "-jar", "/app.jar"]
|
CMD ["java", "-Dfile.encoding=UTF-8", "-jar", "/app.jar"]
|
||||||
|
|||||||
@@ -1,61 +0,0 @@
|
|||||||
# use alpine
|
|
||||||
FROM alpine:3.19.1
|
|
||||||
|
|
||||||
ARG VERSION_TAG
|
|
||||||
|
|
||||||
# Set Environment Variables
|
|
||||||
ENV DOCKER_ENABLE_SECURITY=false \
|
|
||||||
HOME=/home/stirlingpdfuser \
|
|
||||||
VERSION_TAG=$VERSION_TAG \
|
|
||||||
JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS -XX:MaxRAMPercentage=75"
|
|
||||||
# PUID=1000 \
|
|
||||||
# PGID=1000 \
|
|
||||||
# UMASK=022 \
|
|
||||||
|
|
||||||
# Copy necessary files
|
|
||||||
COPY scripts/download-security-jar.sh /scripts/download-security-jar.sh
|
|
||||||
COPY scripts/init-without-ocr.sh /scripts/init-without-ocr.sh
|
|
||||||
COPY pipeline /pipeline
|
|
||||||
COPY src/main/resources/static/fonts/*.ttf /usr/share/fonts/opentype/noto
|
|
||||||
COPY src/main/resources/static/fonts/*.otf /usr/share/fonts/opentype/noto
|
|
||||||
COPY build/libs/*.jar app.jar
|
|
||||||
|
|
||||||
RUN echo "@testing 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 "@testing https://dl-cdn.alpinelinux.org/alpine/edge/testing" | tee -a /etc/apk/repositories && \
|
|
||||||
apk add --no-cache \
|
|
||||||
ca-certificates \
|
|
||||||
tzdata \
|
|
||||||
tini \
|
|
||||||
bash \
|
|
||||||
curl \
|
|
||||||
openjdk17-jre \
|
|
||||||
# Doc conversion
|
|
||||||
libreoffice@testing \
|
|
||||||
# python and pip
|
|
||||||
python3 && \
|
|
||||||
wget https://bootstrap.pypa.io/get-pip.py -qO - | python3 - --break-system-packages --no-cache-dir --upgrade && \
|
|
||||||
# uno unoconv and HTML
|
|
||||||
pip install --break-system-packages --no-cache-dir --upgrade unoconv WeasyPrint && \
|
|
||||||
# Create user and group
|
|
||||||
#RUN groupadd -g $PGID stirlingpdfgroup && \
|
|
||||||
# useradd -u $PUID -g stirlingpdfgroup -s /bin/sh stirlingpdfuser && \
|
|
||||||
# mkdir -p $HOME && chown stirlingpdfuser:stirlingpdfgroup $HOME
|
|
||||||
# Set up necessary directories and permissions
|
|
||||||
mkdir -p /configs /logs /customFiles /pipeline/watchedFolders /pipeline/finishedFolders && \
|
|
||||||
# chown -R stirlingpdfuser:stirlingpdfgroup /usr/share/fonts/opentype/noto /configs /customFiles
|
|
||||||
# Set font cache and permissions
|
|
||||||
fc-cache -f -v && \
|
|
||||||
chmod +x /scripts/*.sh
|
|
||||||
# chown stirlingpdfuser:stirlingpdfgroup /app.jar
|
|
||||||
|
|
||||||
# Set environment variables
|
|
||||||
ENV ENDPOINTS_GROUPS_TO_REMOVE=OpenCV,OCRmyPDF
|
|
||||||
ENV DOCKER_ENABLE_SECURITY=false
|
|
||||||
|
|
||||||
EXPOSE 8080
|
|
||||||
|
|
||||||
# Run the application
|
|
||||||
#USER stirlingpdfuser
|
|
||||||
ENTRYPOINT ["tini", "--", "/scripts/init-without-ocr.sh"]
|
|
||||||
CMD ["java", "-Dfile.encoding=UTF-8", "-jar", "/app.jar"]
|
|
||||||
@@ -7,10 +7,10 @@ ARG VERSION_TAG
|
|||||||
ENV DOCKER_ENABLE_SECURITY=false \
|
ENV DOCKER_ENABLE_SECURITY=false \
|
||||||
HOME=/home/stirlingpdfuser \
|
HOME=/home/stirlingpdfuser \
|
||||||
VERSION_TAG=$VERSION_TAG \
|
VERSION_TAG=$VERSION_TAG \
|
||||||
JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS -XX:MaxRAMPercentage=75"
|
JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS -XX:MaxRAMPercentage=75" \
|
||||||
# PUID=1000 \
|
PUID=1000 \
|
||||||
# PGID=1000 \
|
PGID=1000 \
|
||||||
# UMASK=022 \
|
UMASK=022
|
||||||
|
|
||||||
# Copy necessary files
|
# Copy necessary files
|
||||||
COPY scripts/download-security-jar.sh /scripts/download-security-jar.sh
|
COPY scripts/download-security-jar.sh /scripts/download-security-jar.sh
|
||||||
@@ -18,16 +18,10 @@ COPY scripts/init-without-ocr.sh /scripts/init-without-ocr.sh
|
|||||||
COPY pipeline /pipeline
|
COPY pipeline /pipeline
|
||||||
COPY build/libs/*.jar app.jar
|
COPY build/libs/*.jar app.jar
|
||||||
|
|
||||||
# Create user and group using Alpine's addgroup and adduser
|
|
||||||
#RUN addgroup -g $PGID stirlingpdfgroup && \
|
|
||||||
# adduser -u $PUID -G stirlingpdfgroup -s /bin/sh -D stirlingpdfuser && \
|
|
||||||
# mkdir -p $HOME && chown stirlingpdfuser:stirlingpdfgroup $HOME
|
|
||||||
# Set up necessary directories and permissions
|
# Set up necessary directories and permissions
|
||||||
#RUN mkdir -p /scripts /configs /customFiles && \
|
|
||||||
# chown -R stirlingpdfuser:stirlingpdfgroup /scripts /configs /customFiles /logs /pipeline /pipeline/defaultWebUIConfigs /pipeline/watchedFolders /pipeline/finishedFolders
|
|
||||||
RUN mkdir /configs /logs /customFiles && \
|
RUN mkdir /configs /logs /customFiles && \
|
||||||
# Set font cache and permissions
|
|
||||||
#RUN chown stirlingpdfuser:stirlingpdfgroup /app.jar
|
|
||||||
chmod +x /scripts/*.sh && \
|
chmod +x /scripts/*.sh && \
|
||||||
apk add --no-cache \
|
apk add --no-cache \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
@@ -35,10 +29,16 @@ RUN mkdir /configs /logs /customFiles && \
|
|||||||
tini \
|
tini \
|
||||||
bash \
|
bash \
|
||||||
curl \
|
curl \
|
||||||
|
su-exec \
|
||||||
|
shadow \
|
||||||
openjdk17-jre && \
|
openjdk17-jre && \
|
||||||
echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /etc/apk/repositories && \
|
echo "@testing 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 "@testing 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 && \
|
||||||
|
# User permissions
|
||||||
|
addgroup -S stirlingpdfgroup && adduser -S stirlingpdfuser -G stirlingpdfgroup && \
|
||||||
|
chown -R stirlingpdfuser:stirlingpdfgroup $HOME /scripts /configs /customFiles /pipeline && \
|
||||||
|
chown stirlingpdfuser:stirlingpdfgroup /app.jar
|
||||||
|
|
||||||
# Set environment variables
|
# Set environment variables
|
||||||
ENV ENDPOINTS_GROUPS_TO_REMOVE=CLI
|
ENV ENDPOINTS_GROUPS_TO_REMOVE=CLI
|
||||||
|
|||||||
@@ -1,13 +1,5 @@
|
|||||||
## User Guide for Local Directory Scanning and File Processing
|
## User Guide for Local Directory Scanning and File Processing
|
||||||
|
|
||||||
### Whilst Pipelines are in alpha...
|
|
||||||
You must enable this alpha functionality by setting
|
|
||||||
```yaml
|
|
||||||
system:
|
|
||||||
enableAlphaFunctionality: true
|
|
||||||
```
|
|
||||||
To true like in the above for your `/config/settings.yml` file, after restarting Stirling-PDF you should see both UI and folder scanning enabled.
|
|
||||||
|
|
||||||
### Setting Up Watched Folders:
|
### Setting Up Watched Folders:
|
||||||
- Create a folder where you want your files to be monitored. This is your 'watched folder'.
|
- Create a folder where you want your files to be monitored. This is your 'watched folder'.
|
||||||
- The default directory for this is `./pipeline/watchedFolders/`
|
- The default directory for this is `./pipeline/watchedFolders/`
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
This document provides instructions on how to add additional language packs for the OCR tab in Stirling-PDF, both inside and outside of Docker.
|
This document provides instructions on how to add additional language packs for the OCR tab in Stirling-PDF, both inside and outside of Docker.
|
||||||
|
|
||||||
## My OCR used to work and now doesn't!
|
## My OCR used to work and now doesn't!
|
||||||
The paths have changed for the tessadata locations on new docker images, please use ``/usr/share/tessdata`` (Others should still work for backwards compatability but might not)
|
The paths have changed for the tessadata locations on new docker images, please use ``/usr/share/tessdata`` (Others should still work for backwards compatibility but might not)
|
||||||
|
|
||||||
## How does the OCR Work
|
## How does the OCR Work
|
||||||
Stirling-PDF uses [OCRmyPDF](https://github.com/ocrmypdf/OCRmyPDF) which in turn uses tesseract for its text recognition.
|
Stirling-PDF uses [OCRmyPDF](https://github.com/ocrmypdf/OCRmyPDF) which in turn uses tesseract for its text recognition.
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ For Debian-based systems, you can use the following command:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y git automake autoconf libtool libleptonica-dev pkg-config zlib1g-dev make g++ java-17-openjdk python3 python3-pip
|
sudo apt-get install -y git automake autoconf libtool libleptonica-dev pkg-config zlib1g-dev make g++ openjdk-17-jdk python3 python3-pip
|
||||||
```
|
```
|
||||||
|
|
||||||
For Fedora-based systems use this command:
|
For Fedora-based systems use this command:
|
||||||
@@ -95,7 +95,7 @@ For Debian-based systems, you can use the following command:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo apt-get install -y libreoffice-writer libreoffice-calc libreoffice-impress unpaper ocrmypdf
|
sudo apt-get install -y libreoffice-writer libreoffice-calc libreoffice-impress unpaper ocrmypdf
|
||||||
pip3 install uno opencv-python-headless unoconv pngquant WeasyPrint
|
pip3 install uno opencv-python-headless unoconv pngquant WeasyPrint --break-system-packages
|
||||||
```
|
```
|
||||||
|
|
||||||
For Fedora:
|
For Fedora:
|
||||||
|
|||||||
@@ -1,13 +1,6 @@
|
|||||||
# Pipeline Configuration and Usage Tutorial
|
# Pipeline Configuration and Usage Tutorial
|
||||||
|
- Configure the pipeline config file and input files to run files against it
|
||||||
## Whilst Pipelines are in alpha...
|
- For reuse, download the config file and re-upload it when needed, or place it in /pipeline/defaultWebUIConfigs/ to auto-load in the web UI for all users
|
||||||
You must enable this alpha functionality by setting
|
|
||||||
```yaml
|
|
||||||
system:
|
|
||||||
enableAlphaFunctionality: true
|
|
||||||
```
|
|
||||||
To true like in the above for your `/config/settings.yml` file, after restarting Stirling-PDF you should see both UI and folder scanning enabled.
|
|
||||||
|
|
||||||
|
|
||||||
## Steps to Configure and Use Your Pipeline
|
## Steps to Configure and Use Your Pipeline
|
||||||
|
|
||||||
@@ -40,3 +33,12 @@ To true like in the above for your `/config/settings.yml` file, after restarting
|
|||||||
|
|
||||||
10. **Note on Web UI Limitations**
|
10. **Note on Web UI Limitations**
|
||||||
- The current web UI version does not support operations that require multiple different types of inputs, such as adding a separate image to a PDF.
|
- The current web UI version does not support operations that require multiple different types of inputs, such as adding a separate image to a PDF.
|
||||||
|
|
||||||
|
|
||||||
|
### Current Limitations
|
||||||
|
- Cannot have more than one of the same operation
|
||||||
|
- Cannot input additional files via UI
|
||||||
|
- All files and operations run in serial mode
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
101
README.md
101
README.md
@@ -1,5 +1,5 @@
|
|||||||
<p align="center"><img src="https://raw.githubusercontent.com/Stirling-Tools/Stirling-PDF/main/docs/stirling.png" width="80" ><br><h1 align="center">Stirling-PDF</h1>
|
<p align="center"><img src="https://raw.githubusercontent.com/Stirling-Tools/Stirling-PDF/main/docs/stirling.png" width="80" ></p>
|
||||||
</p>
|
<h1 align="center">Stirling-PDF</h1>
|
||||||
|
|
||||||
[](https://hub.docker.com/r/frooodle/s-pdf)
|
[](https://hub.docker.com/r/frooodle/s-pdf)
|
||||||
[](https://discord.gg/Cn8pWhQRxZ)
|
[](https://discord.gg/Cn8pWhQRxZ)
|
||||||
@@ -10,25 +10,26 @@
|
|||||||
|
|
||||||
[](https://cloud.digitalocean.com/apps/new?repo=https://github.com/Stirling-Tools/Stirling-PDF/tree/digitalOcean&refcode=c3210994b1af)
|
[](https://cloud.digitalocean.com/apps/new?repo=https://github.com/Stirling-Tools/Stirling-PDF/tree/digitalOcean&refcode=c3210994b1af)
|
||||||
|
|
||||||
This is a powerful locally hosted web based PDF manipulation tool using docker that allows you to perform various operations on PDF files, such as splitting merging, converting, reorganizing, adding images, rotating, compressing, and more. This locally hosted web application started as a 100% ChatGPT-made application and has evolved to include a wide range of features to handle all your PDF needs.
|
This is a robust, locally hosted web-based PDF manipulation tool using Docker. It enables you to carry out various operations on PDF files, including splitting, merging, converting, reorganizing, adding images, rotating, compressing, and more. Originally developed entirely by ChatGPT, this locally hosted web application has evolved to encompass a comprehensive set of features, addressing all your PDF requirements.
|
||||||
|
|
||||||
Stirling PDF makes no outbound calls for any record keeping or tracking.
|
Stirling PDF does not initiate any outbound calls for record-keeping or tracking purposes.
|
||||||
|
|
||||||
All files and PDFs exist either exclusively on the client side, reside in server memory only during task execution, or temporarily reside in a file solely for the execution of the task. Any file downloaded by the user will have been deleted from the server by that point.
|
All files and PDFs exist either exclusively on the client side, reside in server memory only during task execution, or temporarily reside in a file solely for the execution of the task. Any file downloaded by the user will have been deleted from the server by that point.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- Dark mode support.
|
- Dark mode support.
|
||||||
- Custom download options (see [here](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/images/settings.png) for example)
|
- Custom download options (see [here](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/images/settings.png) for example)
|
||||||
- Parallel file processing and downloads
|
- Parallel file processing and downloads
|
||||||
- API for integration with external scripts
|
- API for integration with external scripts
|
||||||
- Optional Login and Authentication support (see [here](https://github.com/Stirling-Tools/Stirling-PDF/tree/main#login-authentication) for documentation)
|
- Optional Login and Authentication support (see [here](https://github.com/Stirling-Tools/Stirling-PDF/tree/main#login-authentication) for documentation)
|
||||||
|
|
||||||
|
|
||||||
## **PDF Features**
|
## **PDF Features**
|
||||||
|
|
||||||
### **Page Operations**
|
### **Page Operations**
|
||||||
|
|
||||||
- View and modify PDFs - View multi page PDFs with custom viewing sorting and searching. Plus on page edit features like annotate, draw and adding text and images. (Using PDF.js with Joxit and Liberation.Liberation fonts)
|
- View and modify PDFs - View multi page PDFs with custom viewing sorting and searching. Plus on page edit features like annotate, draw and adding text and images. (Using PDF.js with Joxit and Liberation.Liberation fonts)
|
||||||
- Full interactive GUI for merging/splitting/rotating/moving PDFs and their pages.
|
- Full interactive GUI for merging/splitting/rotating/moving PDFs and their pages.
|
||||||
- Merge multiple PDFs together into a single resultant file.
|
- Merge multiple PDFs together into a single resultant file.
|
||||||
@@ -45,6 +46,7 @@ All files and PDFs exist either exclusively on the client side, reside in server
|
|||||||
- Convert PDF to a single page.
|
- Convert PDF to a single page.
|
||||||
|
|
||||||
### **Conversion Operations**
|
### **Conversion Operations**
|
||||||
|
|
||||||
- Convert PDFs to and from images.
|
- Convert PDFs to and from images.
|
||||||
- Convert any common file to PDF (using LibreOffice).
|
- Convert any common file to PDF (using LibreOffice).
|
||||||
- Convert PDF to Word/Powerpoint/Others (using LibreOffice).
|
- Convert PDF to Word/Powerpoint/Others (using LibreOffice).
|
||||||
@@ -53,6 +55,7 @@ All files and PDFs exist either exclusively on the client side, reside in server
|
|||||||
- Markdown to PDF.
|
- Markdown to PDF.
|
||||||
|
|
||||||
### **Security & Permissions**
|
### **Security & Permissions**
|
||||||
|
|
||||||
- Add and remove passwords.
|
- Add and remove passwords.
|
||||||
- Change/set PDF Permissions.
|
- Change/set PDF Permissions.
|
||||||
- Add watermark(s).
|
- Add watermark(s).
|
||||||
@@ -61,6 +64,7 @@ All files and PDFs exist either exclusively on the client side, reside in server
|
|||||||
- Auto-redact text.
|
- Auto-redact text.
|
||||||
|
|
||||||
### **Other Operations**
|
### **Other Operations**
|
||||||
|
|
||||||
- Add/Generate/Write signatures.
|
- Add/Generate/Write signatures.
|
||||||
- Repair PDFs.
|
- Repair PDFs.
|
||||||
- Detect and remove blank pages.
|
- Detect and remove blank pages.
|
||||||
@@ -77,11 +81,11 @@ All files and PDFs exist either exclusively on the client side, reside in server
|
|||||||
- Flatten PDFs.
|
- Flatten PDFs.
|
||||||
- Get all information on a PDF to view or export as JSON.
|
- Get all information on a PDF to view or export as JSON.
|
||||||
|
|
||||||
|
|
||||||
For a overview of the tasks and the technology each uses please view [Endpoint-groups.md](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/Endpoint-groups.md)
|
For a overview of the tasks and the technology each uses please view [Endpoint-groups.md](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/Endpoint-groups.md)
|
||||||
Demo of the app is available [here](https://stirlingpdf.io). username: demo, password: demo
|
Demo of the app is available [here](https://stirlingpdf.io). username: demo, password: demo
|
||||||
|
|
||||||
## Technologies used
|
## Technologies used
|
||||||
|
|
||||||
- Spring Boot + Thymeleaf
|
- Spring Boot + Thymeleaf
|
||||||
- [PDFBox](https://github.com/apache/pdfbox/tree/trunk)
|
- [PDFBox](https://github.com/apache/pdfbox/tree/trunk)
|
||||||
- [LibreOffice](https://www.libreoffice.org/discover/libreoffice/) for advanced conversions
|
- [LibreOffice](https://www.libreoffice.org/discover/libreoffice/) for advanced conversions
|
||||||
@@ -94,19 +98,21 @@ Demo of the app is available [here](https://stirlingpdf.io). username: demo, pas
|
|||||||
## How to use
|
## How to use
|
||||||
|
|
||||||
### Locally
|
### Locally
|
||||||
|
|
||||||
Please view https://github.com/Stirling-Tools/Stirling-PDF/blob/main/LocalRunGuide.md
|
Please view https://github.com/Stirling-Tools/Stirling-PDF/blob/main/LocalRunGuide.md
|
||||||
|
|
||||||
### Docker / Podman
|
### Docker / Podman
|
||||||
|
|
||||||
https://hub.docker.com/r/frooodle/s-pdf
|
https://hub.docker.com/r/frooodle/s-pdf
|
||||||
|
|
||||||
Stirling PDF has 3 different versions, a Full version, Lite, and ultra-Lite. Depending on the types of features you use you may want a smaller image to save on space.
|
Stirling PDF has 2 different versions, a Full version and ultra-Lite version. Depending on the types of features you use you may want a smaller image to save on space.
|
||||||
To see what the different versions offer please look at our [version mapping](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/Version-groups.md)
|
To see what the different versions offer please look at our [version mapping](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/Version-groups.md)
|
||||||
For people that don't mind about space optimization just use the latest tag.
|
For people that don't mind about space optimization just use the latest tag.
|
||||||

|

|
||||||

|
|
||||||

|

|
||||||
|
|
||||||
Docker Run
|
Docker Run
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run -d \
|
docker run -d \
|
||||||
-p 8080:8080 \
|
-p 8080:8080 \
|
||||||
@@ -114,6 +120,7 @@ docker run -d \
|
|||||||
-v /location/of/extraConfigs:/configs \
|
-v /location/of/extraConfigs:/configs \
|
||||||
-v /location/of/logs:/logs \
|
-v /location/of/logs:/logs \
|
||||||
-e DOCKER_ENABLE_SECURITY=false \
|
-e DOCKER_ENABLE_SECURITY=false \
|
||||||
|
-e INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false \
|
||||||
--name stirling-pdf \
|
--name stirling-pdf \
|
||||||
frooodle/s-pdf:latest
|
frooodle/s-pdf:latest
|
||||||
|
|
||||||
@@ -122,7 +129,9 @@ docker run -d \
|
|||||||
|
|
||||||
-v /location/of/customFiles:/customFiles \
|
-v /location/of/customFiles:/customFiles \
|
||||||
```
|
```
|
||||||
|
|
||||||
Docker Compose
|
Docker Compose
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
version: '3.3'
|
version: '3.3'
|
||||||
services:
|
services:
|
||||||
@@ -137,59 +146,66 @@ services:
|
|||||||
# - /location/of/logs:/logs/
|
# - /location/of/logs:/logs/
|
||||||
environment:
|
environment:
|
||||||
- DOCKER_ENABLE_SECURITY=false
|
- DOCKER_ENABLE_SECURITY=false
|
||||||
|
- INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false
|
||||||
```
|
```
|
||||||
|
|
||||||
Note: Podman is CLI-compatible with Docker, so simply replace "docker" with "podman".
|
Note: Podman is CLI-compatible with Docker, so simply replace "docker" with "podman".
|
||||||
|
|
||||||
## Enable OCR/Compression feature
|
## Enable OCR/Compression feature
|
||||||
|
|
||||||
Please view https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToUseOCR.md
|
Please view https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToUseOCR.md
|
||||||
|
|
||||||
## Supported Languages
|
## Supported Languages
|
||||||
|
|
||||||
Stirling PDF currently supports 26!
|
Stirling PDF currently supports 26!
|
||||||
- English (English) (en_GB)
|
|
||||||
- English (US) (en_US)
|
| Language | Progress |
|
||||||
- Arabic (العربية) (ar_AR)
|
| ------------------------------------------- | -------------------------------------- |
|
||||||
- German (Deutsch) (de_DE)
|
| English (English) (en_GB) |  |
|
||||||
- French (Français) (fr_FR)
|
| English (US) (en_US) |  |
|
||||||
- Spanish (Español) (es_ES)
|
| Arabic (العربية) (ar_AR) |  |
|
||||||
- Simplified Chinese (简体中文) (zh_CN)
|
| German (Deutsch) (de_DE) |  |
|
||||||
- Traditional Chinese (繁體中文) (zh_TW)
|
| French (Français) (fr_FR) |  |
|
||||||
- Catalan (Català) (ca_CA)
|
| Spanish (Español) (es_ES) |  |
|
||||||
- Italian (Italiano) (it_IT)
|
| Simplified Chinese (简体中文) (zh_CN) |  |
|
||||||
- Swedish (Svenska) (sv_SE)
|
| Traditional Chinese (繁體中文) (zh_TW) |  |
|
||||||
- Polish (Polski) (pl_PL)
|
| Catalan (Català) (ca_CA) |  |
|
||||||
- Romanian (Română) (ro_RO)
|
| Italian (Italiano) (it_IT) |  |
|
||||||
- Korean (한국어) (ko_KR)
|
| Swedish (Svenska) (sv_SE) |  |
|
||||||
- Portuguese Brazilian (Português) (pt_BR)
|
| Polish (Polski) (pl_PL) |  |
|
||||||
- Russian (Русский) (ru_RU)
|
| Romanian (Română) (ro_RO) |  |
|
||||||
- Basque (Euskara) (eu_ES)
|
| Korean (한국어) (ko_KR) |  |
|
||||||
- Japanese (日本語) (ja_JP)
|
| Portuguese Brazilian (Português) (pt_BR) |  |
|
||||||
- Dutch (Nederlands) (nl_NL)
|
| Russian (Русский) (ru_RU) |  |
|
||||||
- Greek (el_GR)
|
| Basque (Euskara) (eu_ES) |  |
|
||||||
- Turkish (Türkçe) (tr_TR)
|
| Japanese (日本語) (ja_JP) |  |
|
||||||
- Indonesia (Bahasa Indonesia) (id_ID)
|
| Dutch (Nederlands) (nl_NL) |  |
|
||||||
- Hindi (हिंदी) (hi_IN)
|
| Greek (Ελληνικά) (el_GR) |  |
|
||||||
- Hungarian (Magyar) (hu_HU)
|
| Turkish (Türkçe) (tr_TR) |  |
|
||||||
- Bulgarian (Български) (bg_BG)
|
| Indonesia (Bahasa Indonesia) (id_ID) |  |
|
||||||
- Sebian Latin alphabet (Srpski) (sr_LATN_RS)
|
| Hindi (हिंदी) (hi_IN) |  |
|
||||||
|
| Hungarian (Magyar) (hu_HU) |  |
|
||||||
|
| Bulgarian (Български) (bg_BG) |  |
|
||||||
|
| Sebian Latin alphabet (Srpski) (sr_LATN_RS) |  |
|
||||||
|
|
||||||
## Contributing (creating issues, translations, fixing bugs, etc.)
|
## Contributing (creating issues, translations, fixing bugs, etc.)
|
||||||
|
|
||||||
Please see our [Contributing Guide](CONTRIBUTING.md)!
|
Please see our [Contributing Guide](CONTRIBUTING.md)!
|
||||||
|
|
||||||
## Customisation
|
## Customisation
|
||||||
|
|
||||||
Stirling PDF allows easy customization of the app.
|
Stirling PDF allows easy customization of the app.
|
||||||
Includes things like
|
Includes things like
|
||||||
|
|
||||||
- Custom application name
|
- Custom application name
|
||||||
- Custom slogans, icons, images, and even custom HTML (via file overrides)
|
- Custom slogans, icons, images, and even custom HTML (via file overrides)
|
||||||
|
|
||||||
|
|
||||||
There are two options for this, either using the generated settings file ``settings.yml``
|
There are two options for this, either using the generated settings file ``settings.yml``
|
||||||
This file is located in the ``/configs`` directory and follows standard YAML formatting
|
This file is located in the ``/configs`` directory and follows standard YAML formatting
|
||||||
|
|
||||||
Environment variables are also supported and would override the settings file
|
Environment variables are also supported and would override the settings file
|
||||||
For example in the settings.yml you have
|
For example in the settings.yml you have
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
system:
|
system:
|
||||||
defaultLocale: 'en-US'
|
defaultLocale: 'en-US'
|
||||||
@@ -198,6 +214,7 @@ system:
|
|||||||
To have this via an environment variable you would have ``SYSTEM_DEFAULTLOCALE``
|
To have this via an environment variable you would have ``SYSTEM_DEFAULTLOCALE``
|
||||||
|
|
||||||
The Current list of settings is
|
The Current list of settings is
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
security:
|
security:
|
||||||
enableLogin: false # set to 'true' to enable login
|
enableLogin: false # set to 'true' to enable login
|
||||||
@@ -220,23 +237,31 @@ endpoints:
|
|||||||
metrics:
|
metrics:
|
||||||
enabled: true # 'true' to enable Info APIs endpoints (view http://localhost:8080/swagger-ui/index.html#/API to learn more), 'false' to disable
|
enabled: true # 'true' to enable Info APIs endpoints (view http://localhost:8080/swagger-ui/index.html#/API to learn more), 'false' to disable
|
||||||
```
|
```
|
||||||
|
|
||||||
### Extra notes
|
### Extra notes
|
||||||
|
|
||||||
- Endpoints. Currently, the endpoints ENDPOINTS_TO_REMOVE and GROUPS_TO_REMOVE can include comma separate lists of endpoints and groups to disable as example ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages would disable both image-to-pdf and remove pages, GROUPS_TO_REMOVE=LibreOffice Would disable all things that use LibreOffice. You can see a list of all endpoints and groups [here](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/Endpoint-groups.md)
|
- Endpoints. Currently, the endpoints ENDPOINTS_TO_REMOVE and GROUPS_TO_REMOVE can include comma separate lists of endpoints and groups to disable as example ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages would disable both image-to-pdf and remove pages, GROUPS_TO_REMOVE=LibreOffice Would disable all things that use LibreOffice. You can see a list of all endpoints and groups [here](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/Endpoint-groups.md)
|
||||||
- customStaticFilePath. Customise static files such as the app logo by placing files in the /customFiles/static/ directory. An example of customising app logo is placing a /customFiles/static/favicon.svg to override current SVG. This can be used to change any images/icons/css/fonts/js etc in Stirling-PDF
|
- customStaticFilePath. Customise static files such as the app logo by placing files in the /customFiles/static/ directory. An example of customising app logo is placing a /customFiles/static/favicon.svg to override current SVG. This can be used to change any images/icons/css/fonts/js etc in Stirling-PDF
|
||||||
|
|
||||||
### Environment only parameters
|
### Environment only parameters
|
||||||
|
|
||||||
- ``SYSTEM_ROOTURIPATH`` ie set to ``/pdf-app`` to Set the application's root URI to ``localhost:8080/pdf-app``
|
- ``SYSTEM_ROOTURIPATH`` ie set to ``/pdf-app`` to Set the application's root URI to ``localhost:8080/pdf-app``
|
||||||
- ``SYSTEM_CONNECTIONTIMEOUTMINUTES`` to set custom connection timeout values
|
- ``SYSTEM_CONNECTIONTIMEOUTMINUTES`` to set custom connection timeout values
|
||||||
- ``DOCKER_ENABLE_SECURITY`` to tell docker to download security jar (required as true for auth login)
|
- ``DOCKER_ENABLE_SECURITY`` to tell docker to download security jar (required as true for auth login)
|
||||||
|
- ``INSTALL_BOOK_AND_ADVANCED_HTML_OPS`` to download calibre onto stirling-pdf enabling pdf to/from book and advanced html conversion
|
||||||
|
|
||||||
## API
|
## API
|
||||||
|
|
||||||
For those wanting to use Stirling-PDFs backend API to link with their own custom scripting to edit PDFs you can view all existing API documentation
|
For those wanting to use Stirling-PDFs backend API to link with their own custom scripting to edit PDFs you can view all existing API documentation
|
||||||
[here](https://app.swaggerhub.com/apis-docs/Stirling-Tools/Stirling-PDF/) or navigate to /swagger-ui/index.html of your stirling-pdf instance for your versions documentation (Or by following the API button in your settings of Stirling-PDF)
|
[here](https://app.swaggerhub.com/apis-docs/Stirling-Tools/Stirling-PDF/) or navigate to /swagger-ui/index.html of your stirling-pdf instance for your versions documentation (Or by following the API button in your settings of Stirling-PDF)
|
||||||
|
|
||||||
|
|
||||||
## Login authentication
|
## Login authentication
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### Prerequisites:
|
### Prerequisites:
|
||||||
|
|
||||||
- User must have the folder ./configs volumed within docker so that it is retained during updates.
|
- User must have the folder ./configs volumed within docker so that it is retained during updates.
|
||||||
- Docker uses must download the security jar version by setting ``DOCKER_ENABLE_SECURITY`` to ``true`` in environment variables.
|
- Docker uses must download the security jar version by setting ``DOCKER_ENABLE_SECURITY`` to ``true`` in environment variables.
|
||||||
- Then either enable login via the settings.yml file or via setting ``SECURITY_ENABLE_LOGIN`` to ``true``
|
- Then either enable login via the settings.yml file or via setting ``SECURITY_ENABLE_LOGIN`` to ``true``
|
||||||
@@ -252,10 +277,10 @@ To add new users go to the bottom of Account settings and hit 'Admin Settings',
|
|||||||
|
|
||||||
For API usage you must provide a header with 'X-API-Key' and the associated API key for that user.
|
For API usage you must provide a header with 'X-API-Key' and the associated API key for that user.
|
||||||
|
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
### Q1: What are your planned features?
|
### Q1: What are your planned features?
|
||||||
|
|
||||||
- Progress bar/Tracking
|
- Progress bar/Tracking
|
||||||
- Full custom logic pipelines to combine multiple operations together.
|
- Full custom logic pipelines to combine multiple operations together.
|
||||||
- Folder support with auto scanning to perform operations on
|
- Folder support with auto scanning to perform operations on
|
||||||
@@ -265,7 +290,9 @@ For API usage you must provide a header with 'X-API-Key' and the associated API
|
|||||||
- Fill forms manually or automatically
|
- Fill forms manually or automatically
|
||||||
|
|
||||||
### Q2: Why is my application downloading .htm files?
|
### Q2: Why is my application downloading .htm files?
|
||||||
|
|
||||||
This is an issue caused commonly by your NGINX configuration. The default file upload size for NGINX is 1MB, you need to add the following in your Nginx sites-available file. ``client_max_body_size SIZE;`` Where "SIZE" is 50M for example for 50MB files.
|
This is an issue caused commonly by your NGINX configuration. The default file upload size for NGINX is 1MB, you need to add the following in your Nginx sites-available file. ``client_max_body_size SIZE;`` Where "SIZE" is 50M for example for 50MB files.
|
||||||
|
|
||||||
### Q3: Why is my download timing out
|
### Q3: Why is my download timing out
|
||||||
|
|
||||||
NGINX has timeout values by default so if you are running Stirling-PDF behind NGINX you may need to set a timeout value such as adding the config ``proxy_read_timeout 3600;``
|
NGINX has timeout values by default so if you are running Stirling-PDF behind NGINX you may need to set a timeout value such as adding the config ``proxy_read_timeout 3600;``
|
||||||
|
|||||||
@@ -1,64 +1,52 @@
|
|||||||
|Technology | Ultra-Lite | Lite | Full |
|
| Technology | Ultra-Lite | Full |
|
||||||
|----------------|:----------:|:----:|:----:|
|
|----------------|:----------:|:----:|
|
||||||
| Java | ✔️ | ✔️ | ✔️ |
|
| Java | ✔️ | ✔️ |
|
||||||
| JavaScript | ✔️ | ✔️ | ✔️ |
|
| JavaScript | ✔️ | ✔️ |
|
||||||
| Libre | | ✔️ | ✔️ |
|
| Libre | | ✔️ |
|
||||||
| Python | | | ✔️ |
|
| Python | | ✔️ |
|
||||||
| OpenCV | | | ✔️ |
|
| OpenCV | | ✔️ |
|
||||||
| OCRmyPDF | | | ✔️ |
|
| OCRmyPDF | | ✔️ |
|
||||||
|
|
||||||
|
Operation | Ultra-Lite | Full
|
||||||
|
-------------------------|------------|-----
|
||||||
|
add-page-numbers | ✔️ | ✔️
|
||||||
|
add-password | ✔️ | ✔️
|
||||||
Operation | Ultra-Lite | Lite | Full
|
add-image | ✔️ | ✔️
|
||||||
--------------------|------------|------|-----
|
add-watermark | ✔️ | ✔️
|
||||||
add-page-numbers | ✔️ | ✔️ | ✔️
|
adjust-contrast | ✔️ | ✔️
|
||||||
add-password | ✔️ | ✔️ | ✔️
|
auto-split-pdf | ✔️ | ✔️
|
||||||
add-image | ✔️ | ✔️ | ✔️
|
auto-redact | ✔️ | ✔️
|
||||||
add-watermark | ✔️ | ✔️ | ✔️
|
auto-rename | ✔️ | ✔️
|
||||||
adjust-contrast | ✔️ | ✔️ | ✔️
|
cert-sign | ✔️ | ✔️
|
||||||
auto-split-pdf | ✔️ | ✔️ | ✔️
|
crop | ✔️ | ✔️
|
||||||
auto-redact | ✔️ | ✔️ | ✔️
|
change-metadata | ✔️ | ✔️
|
||||||
auto-rename | ✔️ | ✔️ | ✔️
|
change-permissions | ✔️ | ✔️
|
||||||
cert-sign | ✔️ | ✔️ | ✔️
|
compare | ✔️ | ✔️
|
||||||
crop | ✔️ | ✔️ | ✔️
|
extract-page | ✔️ | ✔️
|
||||||
change-metadata | ✔️ | ✔️ | ✔️
|
extract-images | ✔️ | ✔️
|
||||||
change-permissions | ✔️ | ✔️ | ✔️
|
flatten | ✔️ | ✔️
|
||||||
compare | ✔️ | ✔️ | ✔️
|
get-info-on-pdf | ✔️ | ✔️
|
||||||
extract-page | ✔️ | ✔️ | ✔️
|
img-to-pdf | ✔️ | ✔️
|
||||||
extract-images | ✔️ | ✔️ | ✔️
|
markdown-to-pdf | ✔️ | ✔️
|
||||||
flatten | ✔️ | ✔️ | ✔️
|
merge-pdfs | ✔️ | ✔️
|
||||||
get-info-on-pdf | ✔️ | ✔️ | ✔️
|
multi-page-layout | ✔️ | ✔️
|
||||||
img-to-pdf | ✔️ | ✔️ | ✔️
|
overlay-pdf | ✔️ | ✔️
|
||||||
markdown-to-pdf | ✔️ | ✔️ | ✔️
|
pdf-organizer | ✔️ | ✔️
|
||||||
merge-pdfs | ✔️ | ✔️ | ✔️
|
pdf-to-csv | ✔️ | ✔️
|
||||||
multi-page-layout | ✔️ | ✔️ | ✔️
|
pdf-to-img | ✔️ | ✔️
|
||||||
overlay-pdf | ✔️ | ✔️ | ✔️
|
pdf-to-single-page | ✔️ | ✔️
|
||||||
pdf-organizer | ✔️ | ✔️ | ✔️
|
remove-pages | ✔️ | ✔️
|
||||||
pdf-to-csv | ✔️ | ✔️ | ✔️
|
remove-password | ✔️ | ✔️
|
||||||
pdf-to-img | ✔️ | ✔️ | ✔️
|
rotate-pdf | ✔️ | ✔️
|
||||||
pdf-to-single-page | ✔️ | ✔️ | ✔️
|
sanitize-pdf | ✔️ | ✔️
|
||||||
remove-pages | ✔️ | ✔️ | ✔️
|
scale-pages | ✔️ | ✔️
|
||||||
remove-password | ✔️ | ✔️ | ✔️
|
sign | ✔️ | ✔️
|
||||||
rotate-pdf | ✔️ | ✔️ | ✔️
|
show-javascript | ✔️ | ✔️
|
||||||
sanitize-pdf | ✔️ | ✔️ | ✔️
|
split-by-size-or-count | ✔️ | ✔️
|
||||||
scale-pages | ✔️ | ✔️ | ✔️
|
split-pdf-by-sections | ✔️ | ✔️
|
||||||
sign | ✔️ | ✔️ | ✔️
|
split-pdfs | ✔️ | ✔️
|
||||||
show-javascript | ✔️ | ✔️ | ✔️
|
compress-pdf | | ✔️
|
||||||
split-by-size-or-count | ✔️ | ✔️ | ✔️
|
extract-image-scans | | ✔️
|
||||||
split-pdf-by-sections | ✔️ | ✔️ | ✔️
|
ocr-pdf | | ✔️
|
||||||
split-pdfs | ✔️ | ✔️ | ✔️
|
pdf-to-pdfa | | ✔️
|
||||||
file-to-pdf | | ✔️ | ✔️
|
remove-blanks | | ✔️
|
||||||
pdf-to-html | | ✔️ | ✔️
|
|
||||||
pdf-to-presentation | | ✔️ | ✔️
|
|
||||||
pdf-to-text | | ✔️ | ✔️
|
|
||||||
pdf-to-word | | ✔️ | ✔️
|
|
||||||
pdf-to-xml | | ✔️ | ✔️
|
|
||||||
repair | | ✔️ | ✔️
|
|
||||||
xlsx-to-pdf | | ✔️ | ✔️
|
|
||||||
compress-pdf | | | ✔️
|
|
||||||
extract-image-scans | | | ✔️
|
|
||||||
ocr-pdf | | | ✔️
|
|
||||||
pdf-to-pdfa | | | ✔️
|
|
||||||
remove-blanks | | | ✔️
|
|
||||||
|
|||||||
48
build.gradle
48
build.gradle
@@ -1,18 +1,18 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id 'java'
|
id 'java'
|
||||||
id 'org.springframework.boot' version '3.2.2'
|
id 'org.springframework.boot' version '3.2.4'
|
||||||
id 'io.spring.dependency-management' version '1.1.3'
|
id 'io.spring.dependency-management' version '1.1.3'
|
||||||
id 'org.springdoc.openapi-gradle-plugin' version '1.8.0'
|
id 'org.springdoc.openapi-gradle-plugin' version '1.8.0'
|
||||||
id "io.swagger.swaggerhub" version "1.3.2"
|
id "io.swagger.swaggerhub" version "1.3.2"
|
||||||
id 'edu.sc.seis.launch4j' version '3.0.5'
|
id 'edu.sc.seis.launch4j' version '3.0.5'
|
||||||
id 'com.diffplug.spotless' version '6.25.0'
|
id 'com.diffplug.spotless' version '6.25.0'
|
||||||
id 'com.github.jk1.dependency-license-report' version '2.5'
|
id 'com.github.jk1.dependency-license-report' version '2.6'
|
||||||
}
|
}
|
||||||
|
|
||||||
import com.github.jk1.license.render.*
|
import com.github.jk1.license.render.*
|
||||||
|
|
||||||
group = 'stirling.software'
|
group = 'stirling.software'
|
||||||
version = '0.21.0'
|
version = '0.22.8'
|
||||||
sourceCompatibility = '17'
|
sourceCompatibility = '17'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
@@ -20,7 +20,6 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
licenseReport {
|
licenseReport {
|
||||||
renderers = [new JsonReportRenderer()]
|
renderers = [new JsonReportRenderer()]
|
||||||
}
|
}
|
||||||
@@ -48,7 +47,6 @@ openApi {
|
|||||||
outputFileName = "SwaggerDoc.json"
|
outputFileName = "SwaggerDoc.json"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
launch4j {
|
launch4j {
|
||||||
icon = "${projectDir}/src/main/resources/static/favicon.ico"
|
icon = "${projectDir}/src/main/resources/static/favicon.ico"
|
||||||
|
|
||||||
@@ -87,26 +85,26 @@ spotless {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
//security updates
|
//security updates
|
||||||
implementation 'ch.qos.logback:logback-classic:1.4.14'
|
implementation 'ch.qos.logback:logback-classic:1.5.3'
|
||||||
implementation 'ch.qos.logback:logback-core:1.4.14'
|
implementation 'ch.qos.logback:logback-core:1.5.3'
|
||||||
implementation 'org.springframework:spring-webmvc:6.1.3'
|
implementation 'org.springframework:spring-webmvc:6.1.5'
|
||||||
|
|
||||||
implementation("io.github.pixee:java-security-toolkit:1.1.2")
|
implementation("io.github.pixee:java-security-toolkit:1.1.3")
|
||||||
|
|
||||||
implementation 'org.yaml:snakeyaml:2.2'
|
implementation 'org.yaml:snakeyaml:2.2'
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-web:3.2.2'
|
implementation 'org.springframework.boot:spring-boot-starter-web:3.2.4'
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf:3.2.2'
|
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf:3.2.4'
|
||||||
|
|
||||||
if (System.getenv('DOCKER_ENABLE_SECURITY') != 'false') {
|
if (System.getenv('DOCKER_ENABLE_SECURITY') != 'false') {
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-security:3.2.2'
|
implementation 'org.springframework.boot:spring-boot-starter-security:3.2.4'
|
||||||
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.2.RELEASE'
|
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.2.RELEASE'
|
||||||
implementation "org.springframework.boot:spring-boot-starter-data-jpa:3.2.2"
|
implementation "org.springframework.boot:spring-boot-starter-data-jpa:3.2.4"
|
||||||
|
|
||||||
//2.2.x requires rebuild of DB file.. need migration path
|
//2.2.x requires rebuild of DB file.. need migration path
|
||||||
implementation "com.h2database:h2:2.1.214"
|
implementation "com.h2database:h2:2.1.214"
|
||||||
}
|
}
|
||||||
|
|
||||||
testImplementation 'org.springframework.boot:spring-boot-starter-test:3.2.2'
|
testImplementation 'org.springframework.boot:spring-boot-starter-test:3.2.4'
|
||||||
|
|
||||||
// Batik
|
// Batik
|
||||||
implementation 'org.apache.xmlgraphics:batik-all:1.17'
|
implementation 'org.apache.xmlgraphics:batik-all:1.17'
|
||||||
@@ -139,28 +137,30 @@ dependencies {
|
|||||||
exclude group: 'commons-logging', module: 'commons-logging'
|
exclude group: 'commons-logging', module: 'commons-logging'
|
||||||
}
|
}
|
||||||
|
|
||||||
implementation ('org.apache.pdfbox:pdfbox:3.0.1'){
|
implementation ('org.apache.pdfbox:pdfbox:3.0.2'){
|
||||||
exclude group: 'commons-logging', module: 'commons-logging'
|
exclude group: 'commons-logging', module: 'commons-logging'
|
||||||
}
|
}
|
||||||
|
|
||||||
implementation ('org.apache.pdfbox:xmpbox:3.0.1'){
|
implementation ('org.apache.pdfbox:xmpbox:3.0.2'){
|
||||||
exclude group: 'commons-logging', module: 'commons-logging'
|
exclude group: 'commons-logging', module: 'commons-logging'
|
||||||
}
|
}
|
||||||
|
|
||||||
implementation 'org.bouncycastle:bcprov-jdk18on:1.77'
|
implementation 'org.bouncycastle:bcprov-jdk18on:1.77'
|
||||||
implementation 'org.bouncycastle:bcpkix-jdk18on:1.77'
|
implementation 'org.bouncycastle:bcpkix-jdk18on:1.77'
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-actuator:3.2.2'
|
implementation 'org.springframework.boot:spring-boot-starter-actuator:3.2.4'
|
||||||
implementation 'io.micrometer:micrometer-core:1.12.3'
|
implementation 'io.micrometer:micrometer-core:1.12.4'
|
||||||
implementation group: 'com.google.zxing', name: 'core', version: '3.5.2'
|
implementation group: 'com.google.zxing', name: 'core', version: '3.5.3'
|
||||||
// https://mvnrepository.com/artifact/org.commonmark/commonmark
|
// https://mvnrepository.com/artifact/org.commonmark/commonmark
|
||||||
implementation 'org.commonmark:commonmark:0.21.0'
|
implementation 'org.commonmark:commonmark:0.22.0'
|
||||||
implementation 'org.commonmark:commonmark-ext-gfm-tables:0.21.0'
|
implementation 'org.commonmark:commonmark-ext-gfm-tables:0.22.0'
|
||||||
// https://mvnrepository.com/artifact/com.github.vladimir-bukhtoyarov/bucket4j-core
|
// https://mvnrepository.com/artifact/com.github.vladimir-bukhtoyarov/bucket4j-core
|
||||||
implementation 'com.github.vladimir-bukhtoyarov:bucket4j-core:7.6.0'
|
implementation 'com.github.vladimir-bukhtoyarov:bucket4j-core:7.6.0'
|
||||||
|
|
||||||
developmentOnly("org.springframework.boot:spring-boot-devtools:3.2.2")
|
implementation 'com.fathzer:javaluator:3.0.3'
|
||||||
compileOnly 'org.projectlombok:lombok:1.18.30'
|
|
||||||
annotationProcessor 'org.projectlombok:lombok:1.18.28'
|
developmentOnly("org.springframework.boot:spring-boot-devtools:3.2.4")
|
||||||
|
compileOnly 'org.projectlombok:lombok:1.18.32'
|
||||||
|
annotationProcessor 'org.projectlombok:lombok:1.18.32'
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.withType(JavaCompile) {
|
tasks.withType(JavaCompile) {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
appVersion: 0.20.2
|
appVersion: 0.22.8
|
||||||
description: locally hosted web application that allows you to perform various operations on PDF files
|
description: locally hosted web application that allows you to perform various operations
|
||||||
|
on PDF files
|
||||||
home: https://github.com/Stirling-Tools/Stirling-PDF
|
home: https://github.com/Stirling-Tools/Stirling-PDF
|
||||||
keywords:
|
keywords:
|
||||||
- stirling-pdf
|
- stirling-pdf
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
version: '3.3'
|
|
||||||
services:
|
|
||||||
stirling-pdf:
|
|
||||||
container_name: Stirling-PDF-Lite-Security
|
|
||||||
image: frooodle/s-pdf:latest-lite
|
|
||||||
deploy:
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
memory: 2G
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "curl -f http://localhost:8080/api/v1/info/status | grep -q 'UP' && curl -fL http://localhost:8080/ | grep -q 'Please sign in'"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 16
|
|
||||||
ports:
|
|
||||||
- 8080:8080
|
|
||||||
volumes:
|
|
||||||
- /stirling/latest/data:/usr/share/tessdata:rw
|
|
||||||
- /stirling/latest/config:/configs:rw
|
|
||||||
- /stirling/latest/logs:/logs:rw
|
|
||||||
environment:
|
|
||||||
DOCKER_ENABLE_SECURITY: "true"
|
|
||||||
SECURITY_ENABLELOGIN: "true"
|
|
||||||
SYSTEM_DEFAULTLOCALE: en-US
|
|
||||||
UI_APPNAME: Stirling-PDF-Lite
|
|
||||||
UI_HOMEDESCRIPTION: Demo site for Stirling-PDF-Lite Latest with Security
|
|
||||||
UI_APPNAMENAVBAR: Stirling-PDF-Lite Latest
|
|
||||||
SYSTEM_MAXFILESIZE: "100"
|
|
||||||
METRICS_ENABLED: "true"
|
|
||||||
SYSTEM_GOOGLEVISIBILITY: "true"
|
|
||||||
restart: on-failure:5
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
version: '3.3'
|
|
||||||
services:
|
|
||||||
stirling-pdf:
|
|
||||||
container_name: Stirling-PDF-Lite
|
|
||||||
image: frooodle/s-pdf:latest-lite
|
|
||||||
deploy:
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
memory: 2G
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "curl -f http://localhost:8080/api/v1/info/status | grep -q 'UP' && curl -fL http://localhost:8080/ | grep -qv 'Please sign in'"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 16
|
|
||||||
ports:
|
|
||||||
- 8080:8080
|
|
||||||
volumes:
|
|
||||||
- /stirling/latest/config:/configs:rw
|
|
||||||
- /stirling/latest/logs:/logs:rw
|
|
||||||
environment:
|
|
||||||
DOCKER_ENABLE_SECURITY: "false"
|
|
||||||
SECURITY_ENABLELOGIN: "false"
|
|
||||||
SYSTEM_DEFAULTLOCALE: en-US
|
|
||||||
UI_APPNAME: Stirling-PDF-Lite
|
|
||||||
UI_HOMEDESCRIPTION: Demo site for Stirling-PDF-Lite Latest
|
|
||||||
UI_APPNAMENAVBAR: Stirling-PDF-Lite Latest
|
|
||||||
SYSTEM_MAXFILESIZE: "100"
|
|
||||||
METRICS_ENABLED: "true"
|
|
||||||
SYSTEM_GOOGLEVISIBILITY: "true"
|
|
||||||
restart: on-failure:5
|
|
||||||
@@ -21,6 +21,9 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
DOCKER_ENABLE_SECURITY: "true"
|
DOCKER_ENABLE_SECURITY: "true"
|
||||||
SECURITY_ENABLELOGIN: "true"
|
SECURITY_ENABLELOGIN: "true"
|
||||||
|
PUID: 1002
|
||||||
|
PGID: 1002
|
||||||
|
UMASK: "022"
|
||||||
SYSTEM_DEFAULTLOCALE: en-US
|
SYSTEM_DEFAULTLOCALE: en-US
|
||||||
UI_APPNAME: Stirling-PDF
|
UI_APPNAME: Stirling-PDF
|
||||||
UI_HOMEDESCRIPTION: Demo site for Stirling-PDF Latest with Security
|
UI_HOMEDESCRIPTION: Demo site for Stirling-PDF Latest with Security
|
||||||
|
|||||||
BIN
images/stirling-home.jpg
Normal file
BIN
images/stirling-home.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 203 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 131 KiB |
@@ -6,7 +6,8 @@
|
|||||||
"parameters": {
|
"parameters": {
|
||||||
"horizontalDivisions": 2,
|
"horizontalDivisions": 2,
|
||||||
"verticalDivisions": 2,
|
"verticalDivisions": 2,
|
||||||
"fileInput": "automated"
|
"fileInput": "automated",
|
||||||
|
"merge": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
122
scripts/counter_translation.py
Normal file
122
scripts/counter_translation.py
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
"""A script to update language progress status in README.md based on
|
||||||
|
properties file comparison.
|
||||||
|
|
||||||
|
This script compares default properties file with others in a directory to
|
||||||
|
determine language progress.
|
||||||
|
It then updates README.md based on provided progress list.
|
||||||
|
|
||||||
|
Author: Ludy87
|
||||||
|
|
||||||
|
Example:
|
||||||
|
To use this script, simply run it from command line:
|
||||||
|
$ python counter_translation.py
|
||||||
|
"""
|
||||||
|
import os
|
||||||
|
import glob
|
||||||
|
import re
|
||||||
|
from typing import List, Tuple
|
||||||
|
|
||||||
|
|
||||||
|
def write_readme(progress_list: List[Tuple[str, int]]) -> None:
|
||||||
|
"""
|
||||||
|
Updates the progress status in the README.md file based
|
||||||
|
on the provided progress list.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
progress_list (List[Tuple[str, int]]): A list of tuples containing
|
||||||
|
language and progress percentage.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
None
|
||||||
|
"""
|
||||||
|
with open("README.md", "r", encoding="utf-8") as file:
|
||||||
|
content = file.read()
|
||||||
|
|
||||||
|
lines = content.split("\n")
|
||||||
|
for i, line in enumerate(lines[2:], start=2):
|
||||||
|
for progress in progress_list:
|
||||||
|
language, value = progress
|
||||||
|
if language in line:
|
||||||
|
match = re.search(r"\!\[(\d+(\.\d+)?)%\]\(.*\)", line)
|
||||||
|
if match:
|
||||||
|
lines[i] = line.replace(
|
||||||
|
match.group(0),
|
||||||
|
f"",
|
||||||
|
)
|
||||||
|
|
||||||
|
new_content = "\n".join(lines)
|
||||||
|
|
||||||
|
with open("README.md", "w", encoding="utf-8") as file:
|
||||||
|
file.write(new_content)
|
||||||
|
|
||||||
|
|
||||||
|
def compare_files(default_file_path, files_directory) -> List[Tuple[str, int]]:
|
||||||
|
"""
|
||||||
|
Compares the default properties file with other
|
||||||
|
properties files in the directory.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
default_file_path (str): The path to the default properties file.
|
||||||
|
files_directory (str): The directory containing other properties files.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
List[Tuple[str, int]]: A list of tuples containing
|
||||||
|
language and progress percentage.
|
||||||
|
"""
|
||||||
|
file_paths = glob.glob(os.path.join(files_directory, "messages_*.properties"))
|
||||||
|
num_lines = sum(1 for _ in open(default_file_path, encoding="utf-8"))
|
||||||
|
|
||||||
|
result_list = []
|
||||||
|
|
||||||
|
for file_path in file_paths:
|
||||||
|
language = (
|
||||||
|
os.path.basename(file_path)
|
||||||
|
.split("messages_", 1)[1]
|
||||||
|
.split(".properties", 1)[0]
|
||||||
|
)
|
||||||
|
|
||||||
|
fails = 0
|
||||||
|
if "en_GB" in language or "en_US" in language:
|
||||||
|
result_list.append(("en_GB", 100))
|
||||||
|
result_list.append(("en_US", 100))
|
||||||
|
continue
|
||||||
|
|
||||||
|
with open(default_file_path, "r", encoding="utf-8") as default_file, open(
|
||||||
|
file_path, "r", encoding="utf-8"
|
||||||
|
) as file:
|
||||||
|
for _ in range(5):
|
||||||
|
next(default_file)
|
||||||
|
try:
|
||||||
|
next(file)
|
||||||
|
except StopIteration:
|
||||||
|
fails = num_lines
|
||||||
|
|
||||||
|
for _, (line_default, line_file) in enumerate(
|
||||||
|
zip(default_file, file), start=6
|
||||||
|
):
|
||||||
|
try:
|
||||||
|
if (
|
||||||
|
line_default.split("=", 1)[1].strip()
|
||||||
|
== line_file.split("=", 1)[1].strip()
|
||||||
|
):
|
||||||
|
fails += 1
|
||||||
|
except IndexError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
result_list.append(
|
||||||
|
(
|
||||||
|
language,
|
||||||
|
int((num_lines - fails) * 100 / num_lines),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
unique_data = list(set(result_list))
|
||||||
|
unique_data.sort(key=lambda x: x[1], reverse=True)
|
||||||
|
|
||||||
|
return unique_data
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
directory = os.path.join(os.getcwd(), "src", "main", "resources")
|
||||||
|
reference_file = os.path.join(directory, "messages_en_GB.properties")
|
||||||
|
write_readme(compare_files(reference_file, directory))
|
||||||
@@ -14,6 +14,8 @@ if [ "$DOCKER_ENABLE_SECURITY" = "true" ] && [ "$VERSION_TAG" != "alpha" ]; then
|
|||||||
if [ $? -eq 0 ]; then # checks if curl was successful
|
if [ $? -eq 0 ]; then # checks if curl was successful
|
||||||
rm -f app.jar
|
rm -f app.jar
|
||||||
ln -s app-security.jar app.jar
|
ln -s app-security.jar app.jar
|
||||||
|
chown stirlingpdfuser:stirlingpdfgroup app.jar || true
|
||||||
|
chmod 755 app.jar || true
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,6 +1,29 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Update the user and group IDs as per environment variables
|
||||||
|
if [ ! -z "$PUID" ] && [ "$PUID" != "$(id -u stirlingpdfuser)" ]; then
|
||||||
|
usermod -o -u "$PUID" stirlingpdfuser || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -z "$PGID" ] && [ "$PGID" != "$(getent group stirlingpdfgroup | cut -d: -f3)" ]; then
|
||||||
|
groupmod -o -g "$PGID" stirlingpdfgroup || true
|
||||||
|
fi
|
||||||
|
umask "$UMASK" || true
|
||||||
|
|
||||||
|
|
||||||
|
if [[ "$INSTALL_BOOK_AND_ADVANCED_HTML_OPS" == "true" ]]; then
|
||||||
|
apk add --no-cache calibre@testing
|
||||||
|
fi
|
||||||
|
|
||||||
/scripts/download-security-jar.sh
|
/scripts/download-security-jar.sh
|
||||||
|
|
||||||
# Run the main command
|
echo "Setting permissions and ownership for necessary directories..."
|
||||||
exec "$@"
|
if chown -R stirlingpdfuser:stirlingpdfgroup $HOME /logs /scripts /usr/share/fonts/opentype/noto /usr/share/tessdata /configs /customFiles /pipeline /app.jar; then
|
||||||
|
chmod -R 755 /logs /scripts /usr/share/fonts/opentype/noto /usr/share/tessdata /configs /customFiles /pipeline /app.jar || true
|
||||||
|
# If chown succeeds, execute the command as stirlingpdfuser
|
||||||
|
exec su-exec stirlingpdfuser "$@"
|
||||||
|
else
|
||||||
|
# If chown fails, execute the command without changing the user context
|
||||||
|
echo "[WARN] Chown failed, running as host user"
|
||||||
|
exec "$@"
|
||||||
|
fi
|
||||||
|
|||||||
@@ -13,18 +13,47 @@ if [ -d /usr/share/tesseract-ocr/5/tessdata ]; then
|
|||||||
cp -r /usr/share/tesseract-ocr/5/tessdata/* /usr/share/tessdata || true;
|
cp -r /usr/share/tesseract-ocr/5/tessdata/* /usr/share/tessdata || true;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Update the user and group IDs as per environment variables
|
||||||
|
if [ ! -z "$PUID" ] && [ "$PUID" != "$(id -u stirlingpdfuser)" ]; then
|
||||||
|
usermod -o -u "$PUID" stirlingpdfuser || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ ! -z "$PGID" ] && [ "$PGID" != "$(getent group stirlingpdfgroup | cut -d: -f3)" ]; then
|
||||||
|
groupmod -o -g "$PGID" stirlingpdfgroup || true
|
||||||
|
fi
|
||||||
|
umask "$UMASK" || true
|
||||||
|
|
||||||
|
|
||||||
# Check if TESSERACT_LANGS environment variable is set and is not empty
|
# Check if TESSERACT_LANGS environment variable is set and is not empty
|
||||||
if [[ -n "$TESSERACT_LANGS" ]]; then
|
if [[ -n "$TESSERACT_LANGS" ]]; then
|
||||||
# Convert comma-separated values to a space-separated list
|
# Convert comma-separated values to a space-separated list
|
||||||
LANGS=$(echo $TESSERACT_LANGS | tr ',' ' ')
|
LANGS=$(echo $TESSERACT_LANGS | tr ',' ' ')
|
||||||
|
pattern='^[a-zA-Z]{2,4}(_[a-zA-Z]{2,4})?$'
|
||||||
# Install each language pack
|
# Install each language pack
|
||||||
for LANG in $LANGS; do
|
for LANG in $LANGS; do
|
||||||
apt-get install -y "tesseract-ocr-$LANG"
|
if [[ $LANG =~ $pattern ]]; then
|
||||||
|
apk add --no-cache "tesseract-ocr-data-$LANG"
|
||||||
|
else
|
||||||
|
echo "Skipping invalid language code"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ "$INSTALL_BOOK_AND_ADVANCED_HTML_OPS" == "true" ]]; then
|
||||||
|
apk add --no-cache calibre@testing
|
||||||
|
fi
|
||||||
|
|
||||||
/scripts/download-security-jar.sh
|
/scripts/download-security-jar.sh
|
||||||
|
|
||||||
# Run the main command
|
echo "Setting permissions and ownership for necessary directories..."
|
||||||
exec "$@"
|
# Attempt to change ownership of directories and files
|
||||||
|
if chown -R stirlingpdfuser:stirlingpdfgroup $HOME /logs /scripts /usr/share/fonts/opentype/noto /usr/share/tessdata /configs /customFiles /pipeline /app.jar; then
|
||||||
|
chmod -R 755 /logs /scripts /usr/share/fonts/opentype/noto /usr/share/tessdata /configs /customFiles /pipeline /app.jar || true
|
||||||
|
# If chown succeeds, execute the command as stirlingpdfuser
|
||||||
|
exec su-exec stirlingpdfuser "$@"
|
||||||
|
else
|
||||||
|
# If chown fails, execute the command without changing the user context
|
||||||
|
echo "[WARN] Chown failed, running as host user"
|
||||||
|
exec "$@"
|
||||||
|
fi
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
package stirling.software.SPDF;
|
package stirling.software.SPDF;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.core.env.Environment;
|
import org.springframework.core.env.Environment;
|
||||||
@@ -14,14 +19,25 @@ import io.github.pixee.security.SystemCommand;
|
|||||||
|
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import stirling.software.SPDF.config.ConfigInitializer;
|
import stirling.software.SPDF.config.ConfigInitializer;
|
||||||
import stirling.software.SPDF.utils.GeneralUtils;
|
import stirling.software.SPDF.model.ApplicationProperties;
|
||||||
|
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
@EnableScheduling
|
@EnableScheduling
|
||||||
public class SPdfApplication {
|
public class SPdfApplication {
|
||||||
|
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(SPdfApplication.class);
|
||||||
|
|
||||||
@Autowired private Environment env;
|
@Autowired private Environment env;
|
||||||
|
|
||||||
|
@Autowired ApplicationProperties applicationProperties;
|
||||||
|
|
||||||
|
private static String serverPortStatic;
|
||||||
|
|
||||||
|
@Value("${server.port:8080}")
|
||||||
|
public void setServerPortStatic(String port) {
|
||||||
|
SPdfApplication.serverPortStatic = port;
|
||||||
|
}
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void init() {
|
public void init() {
|
||||||
// Check if the BROWSER_OPEN environment variable is set to true
|
// Check if the BROWSER_OPEN environment variable is set to true
|
||||||
@@ -30,7 +46,7 @@ public class SPdfApplication {
|
|||||||
|
|
||||||
if (browserOpen) {
|
if (browserOpen) {
|
||||||
try {
|
try {
|
||||||
String url = "http://localhost:" + getPort();
|
String url = "http://localhost:" + getNonStaticPort();
|
||||||
|
|
||||||
String os = System.getProperty("os.name").toLowerCase();
|
String os = System.getProperty("os.name").toLowerCase();
|
||||||
Runtime rt = Runtime.getRuntime();
|
Runtime rt = Runtime.getRuntime();
|
||||||
@@ -39,12 +55,13 @@ public class SPdfApplication {
|
|||||||
SystemCommand.runCommand(rt, "rundll32 url.dll,FileProtocolHandler " + url);
|
SystemCommand.runCommand(rt, "rundll32 url.dll,FileProtocolHandler " + url);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
logger.error("Error opening browser: {}", e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
logger.info("Running configs {}", applicationProperties.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) throws IOException, InterruptedException {
|
||||||
SpringApplication app = new SpringApplication(SPdfApplication.class);
|
SpringApplication app = new SpringApplication(SPdfApplication.class);
|
||||||
app.addInitializers(new ConfigInitializer());
|
app.addInitializers(new ConfigInitializer());
|
||||||
if (Files.exists(Paths.get("configs/settings.yml"))) {
|
if (Files.exists(Paths.get("configs/settings.yml"))) {
|
||||||
@@ -52,7 +69,7 @@ public class SPdfApplication {
|
|||||||
Collections.singletonMap(
|
Collections.singletonMap(
|
||||||
"spring.config.additional-location", "file:configs/settings.yml"));
|
"spring.config.additional-location", "file:configs/settings.yml"));
|
||||||
} else {
|
} else {
|
||||||
System.out.println(
|
logger.warn(
|
||||||
"External configuration file 'configs/settings.yml' does not exist. Using default configuration and environment configuration instead.");
|
"External configuration file 'configs/settings.yml' does not exist. Using default configuration and environment configuration instead.");
|
||||||
}
|
}
|
||||||
app.run(args);
|
app.run(args);
|
||||||
@@ -60,24 +77,30 @@ public class SPdfApplication {
|
|||||||
try {
|
try {
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
// TODO Auto-generated catch block
|
Thread.currentThread().interrupt();
|
||||||
e.printStackTrace();
|
throw new RuntimeException("Thread interrupted while sleeping", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
GeneralUtils.createDir("customFiles/static/");
|
try {
|
||||||
GeneralUtils.createDir("customFiles/templates/");
|
Files.createDirectories(Path.of("customFiles/static/"));
|
||||||
|
Files.createDirectories(Path.of("customFiles/templates/"));
|
||||||
System.out.println("Stirling-PDF Started.");
|
} catch (Exception e) {
|
||||||
|
logger.error("Error creating directories: {}", e.getMessage());
|
||||||
String url = "http://localhost:" + getPort();
|
}
|
||||||
System.out.println("Navigate to " + url);
|
printStartupLogs();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getPort() {
|
private static void printStartupLogs() {
|
||||||
String port = System.getProperty("local.server.port");
|
logger.info("Stirling-PDF Started.");
|
||||||
if (port == null || port.isEmpty()) {
|
String url = "http://localhost:" + getStaticPort();
|
||||||
port = "8080";
|
logger.info("Navigate to {}", url);
|
||||||
}
|
}
|
||||||
return port;
|
|
||||||
|
public static String getStaticPort() {
|
||||||
|
return serverPortStatic;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNonStaticPort() {
|
||||||
|
return serverPortStatic;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,9 +79,10 @@ public class AppConfig {
|
|||||||
|
|
||||||
@Bean(name = "bookAndHtmlFormatsInstalled")
|
@Bean(name = "bookAndHtmlFormatsInstalled")
|
||||||
public boolean bookAndHtmlFormatsInstalled() {
|
public boolean bookAndHtmlFormatsInstalled() {
|
||||||
return applicationProperties
|
String installOps = System.getProperty("INSTALL_BOOK_AND_ADVANCED_HTML_OPS");
|
||||||
.getSystem()
|
if (installOps == null) {
|
||||||
.getCustomApplications()
|
installOps = System.getenv("INSTALL_BOOK_AND_ADVANCED_HTML_OPS");
|
||||||
.isInstallBookAndHtmlFormats();
|
}
|
||||||
|
return "true".equalsIgnoreCase(installOps);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ public class EndpointConfiguration {
|
|||||||
addEndpointToGroup("Other", "sign");
|
addEndpointToGroup("Other", "sign");
|
||||||
addEndpointToGroup("Other", "flatten");
|
addEndpointToGroup("Other", "flatten");
|
||||||
addEndpointToGroup("Other", "repair");
|
addEndpointToGroup("Other", "repair");
|
||||||
addEndpointToGroup("Other", "remove-blanks");
|
addEndpointToGroup("Other", REMOVE_BLANKS);
|
||||||
addEndpointToGroup("Other", "remove-annotations");
|
addEndpointToGroup("Other", "remove-annotations");
|
||||||
addEndpointToGroup("Other", "compare");
|
addEndpointToGroup("Other", "compare");
|
||||||
addEndpointToGroup("Other", "add-page-numbers");
|
addEndpointToGroup("Other", "add-page-numbers");
|
||||||
@@ -161,13 +161,13 @@ public class EndpointConfiguration {
|
|||||||
|
|
||||||
// python
|
// python
|
||||||
addEndpointToGroup("Python", "extract-image-scans");
|
addEndpointToGroup("Python", "extract-image-scans");
|
||||||
addEndpointToGroup("Python", "remove-blanks");
|
addEndpointToGroup("Python", REMOVE_BLANKS);
|
||||||
addEndpointToGroup("Python", "html-to-pdf");
|
addEndpointToGroup("Python", "html-to-pdf");
|
||||||
addEndpointToGroup("Python", "url-to-pdf");
|
addEndpointToGroup("Python", "url-to-pdf");
|
||||||
|
|
||||||
// openCV
|
// openCV
|
||||||
addEndpointToGroup("OpenCV", "extract-image-scans");
|
addEndpointToGroup("OpenCV", "extract-image-scans");
|
||||||
addEndpointToGroup("OpenCV", "remove-blanks");
|
addEndpointToGroup("OpenCV", REMOVE_BLANKS);
|
||||||
|
|
||||||
// LibreOffice
|
// LibreOffice
|
||||||
addEndpointToGroup("LibreOffice", "repair");
|
addEndpointToGroup("LibreOffice", "repair");
|
||||||
@@ -217,7 +217,7 @@ public class EndpointConfiguration {
|
|||||||
addEndpointToGroup("Java", "split-by-size-or-count");
|
addEndpointToGroup("Java", "split-by-size-or-count");
|
||||||
addEndpointToGroup("Java", "overlay-pdf");
|
addEndpointToGroup("Java", "overlay-pdf");
|
||||||
addEndpointToGroup("Java", "split-pdf-by-sections");
|
addEndpointToGroup("Java", "split-pdf-by-sections");
|
||||||
addEndpointToGroup("Java", "remove-blanks");
|
addEndpointToGroup("Java", REMOVE_BLANKS);
|
||||||
|
|
||||||
// Javascript
|
// Javascript
|
||||||
addEndpointToGroup("Javascript", "pdf-organizer");
|
addEndpointToGroup("Javascript", "pdf-organizer");
|
||||||
@@ -244,4 +244,6 @@ public class EndpointConfiguration {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final String REMOVE_BLANKS = "remove-blanks";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,69 +0,0 @@
|
|||||||
package stirling.software.SPDF.config;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import jakarta.annotation.PostConstruct;
|
|
||||||
import stirling.software.SPDF.model.ApplicationProperties;
|
|
||||||
import stirling.software.SPDF.utils.ProcessExecutor;
|
|
||||||
import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
public class PostStartupProcesses {
|
|
||||||
|
|
||||||
@Autowired ApplicationProperties applicationProperties;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("RunningInDocker")
|
|
||||||
private boolean runningInDocker;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("bookAndHtmlFormatsInstalled")
|
|
||||||
private boolean bookAndHtmlFormatsInstalled;
|
|
||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(PostStartupProcesses.class);
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
public void runInstallCommandBasedOnEnvironment() throws IOException, InterruptedException {
|
|
||||||
List<List<String>> commands = new ArrayList<>();
|
|
||||||
// Checking for DOCKER_INSTALL_BOOK_FORMATS environment variable
|
|
||||||
if (bookAndHtmlFormatsInstalled) {
|
|
||||||
List<String> tmpList = new ArrayList<>();
|
|
||||||
|
|
||||||
tmpList = new ArrayList<>();
|
|
||||||
tmpList.addAll(Arrays.asList("apk add --no-cache calibre"));
|
|
||||||
commands.add(tmpList);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!commands.isEmpty()) {
|
|
||||||
// Run the command
|
|
||||||
if (runningInDocker) {
|
|
||||||
List<String> tmpList = new ArrayList<>();
|
|
||||||
|
|
||||||
for (List<String> list : commands) {
|
|
||||||
ProcessExecutorResult returnCode =
|
|
||||||
ProcessExecutor.getInstance(ProcessExecutor.Processes.INSTALL_APP, true)
|
|
||||||
.runCommandWithOutputHandling(list);
|
|
||||||
logger.info("RC for app installs {}", returnCode.getRc());
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
|
|
||||||
logger.info(
|
|
||||||
"Not running inside Docker so skipping automated install process with command.");
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
if (runningInDocker) {
|
|
||||||
logger.info("No custom apps to install.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package stirling.software.SPDF.config.security;
|
package stirling.software.SPDF.config.security;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.security.authentication.BadCredentialsException;
|
import org.springframework.security.authentication.BadCredentialsException;
|
||||||
@@ -12,15 +13,19 @@ import org.springframework.stereotype.Component;
|
|||||||
import jakarta.servlet.ServletException;
|
import jakarta.servlet.ServletException;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import stirling.software.SPDF.model.User;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler {
|
public class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler {
|
||||||
|
|
||||||
@Autowired private final LoginAttemptService loginAttemptService;
|
@Autowired private final LoginAttemptService loginAttemptService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired private final UserService userService; // Inject the UserService
|
||||||
public CustomAuthenticationFailureHandler(LoginAttemptService loginAttemptService) {
|
|
||||||
|
public CustomAuthenticationFailureHandler(
|
||||||
|
LoginAttemptService loginAttemptService, UserService userService) {
|
||||||
this.loginAttemptService = loginAttemptService;
|
this.loginAttemptService = loginAttemptService;
|
||||||
|
this.userService = userService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -33,17 +38,27 @@ public class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationF
|
|||||||
logger.error("Failed login attempt from IP: " + ip);
|
logger.error("Failed login attempt from IP: " + ip);
|
||||||
|
|
||||||
String username = request.getParameter("username");
|
String username = request.getParameter("username");
|
||||||
|
if (!isDemoUser(username)) {
|
||||||
if (loginAttemptService.loginAttemptCheck(username)) {
|
if (loginAttemptService.loginAttemptCheck(username)) {
|
||||||
setDefaultFailureUrl("/login?error=locked");
|
setDefaultFailureUrl("/login?error=locked");
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (exception.getClass().isAssignableFrom(BadCredentialsException.class)) {
|
if (exception.getClass().isAssignableFrom(LockedException.class)) {
|
||||||
setDefaultFailureUrl("/login?error=badcredentials");
|
|
||||||
} else if (exception.getClass().isAssignableFrom(LockedException.class)) {
|
|
||||||
setDefaultFailureUrl("/login?error=locked");
|
setDefaultFailureUrl("/login?error=locked");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (exception.getClass().isAssignableFrom(BadCredentialsException.class)) {
|
||||||
|
setDefaultFailureUrl("/login?error=badcredentials");
|
||||||
|
}
|
||||||
|
|
||||||
super.onAuthenticationFailure(request, response, exception);
|
super.onAuthenticationFailure(request, response, exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isDemoUser(String username) {
|
||||||
|
Optional<User> user = userService.findByUsername(username);
|
||||||
|
return user.isPresent()
|
||||||
|
&& user.get().getAuthorities().stream()
|
||||||
|
.anyMatch(authority -> "ROLE_DEMO_USER".equals(authority.getAuthority()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import org.springframework.security.web.authentication.rememberme.PersistentToke
|
|||||||
import org.springframework.security.web.savedrequest.NullRequestCache;
|
import org.springframework.security.web.savedrequest.NullRequestCache;
|
||||||
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
|
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
|
||||||
|
|
||||||
|
import jakarta.servlet.http.HttpSession;
|
||||||
import stirling.software.SPDF.repository.JPATokenRepositoryImpl;
|
import stirling.software.SPDF.repository.JPATokenRepositoryImpl;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@@ -65,10 +66,11 @@ public class SecurityConfiguration {
|
|||||||
sessionManagement ->
|
sessionManagement ->
|
||||||
sessionManagement
|
sessionManagement
|
||||||
.sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
|
.sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
|
||||||
.maximumSessions(3)
|
.maximumSessions(10)
|
||||||
.maxSessionsPreventsLogin(true)
|
.maxSessionsPreventsLogin(false)
|
||||||
.sessionRegistry(sessionRegistry())
|
.sessionRegistry(sessionRegistry())
|
||||||
.expiredUrl("/login?logout=true"));
|
.expiredUrl("/login?logout=true"));
|
||||||
|
|
||||||
http.formLogin(
|
http.formLogin(
|
||||||
formLogin ->
|
formLogin ->
|
||||||
formLogin
|
formLogin
|
||||||
@@ -78,7 +80,7 @@ public class SecurityConfiguration {
|
|||||||
.defaultSuccessUrl("/")
|
.defaultSuccessUrl("/")
|
||||||
.failureHandler(
|
.failureHandler(
|
||||||
new CustomAuthenticationFailureHandler(
|
new CustomAuthenticationFailureHandler(
|
||||||
loginAttemptService))
|
loginAttemptService, userService))
|
||||||
.permitAll())
|
.permitAll())
|
||||||
.requestCache(requestCache -> requestCache.requestCache(new NullRequestCache()))
|
.requestCache(requestCache -> requestCache.requestCache(new NullRequestCache()))
|
||||||
.logout(
|
.logout(
|
||||||
@@ -87,7 +89,18 @@ public class SecurityConfiguration {
|
|||||||
new AntPathRequestMatcher("/logout"))
|
new AntPathRequestMatcher("/logout"))
|
||||||
.logoutSuccessUrl("/login?logout=true")
|
.logoutSuccessUrl("/login?logout=true")
|
||||||
.invalidateHttpSession(true) // Invalidate session
|
.invalidateHttpSession(true) // Invalidate session
|
||||||
.deleteCookies("JSESSIONID", "remember-me"))
|
.deleteCookies("JSESSIONID", "remember-me")
|
||||||
|
.addLogoutHandler(
|
||||||
|
(request, response, authentication) -> {
|
||||||
|
HttpSession session =
|
||||||
|
request.getSession(false);
|
||||||
|
if (session != null) {
|
||||||
|
String sessionId = session.getId();
|
||||||
|
sessionRegistry()
|
||||||
|
.removeSessionInformation(
|
||||||
|
sessionId);
|
||||||
|
}
|
||||||
|
}))
|
||||||
.rememberMe(
|
.rememberMe(
|
||||||
rememberMeConfigurer ->
|
rememberMeConfigurer ->
|
||||||
rememberMeConfigurer // Use the configurator directly
|
rememberMeConfigurer // Use the configurator directly
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ public class UserAuthenticationFilter extends OncePerRequestFilter {
|
|||||||
response.setStatus(HttpStatus.UNAUTHORIZED.value());
|
response.setStatus(HttpStatus.UNAUTHORIZED.value());
|
||||||
response.getWriter()
|
response.getWriter()
|
||||||
.write(
|
.write(
|
||||||
"Authentication required. Please provide a X-API-KEY in request header.\nThis is found in Settings -> Account Settings -> API Key\nAlternativly you can disable authentication if this is unexpected");
|
"Authentication required. Please provide a X-API-KEY in request header.\nThis is found in Settings -> Account Settings -> API Key\nAlternatively you can disable authentication if this is unexpected");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -176,6 +176,10 @@ public class UserService implements UserServiceInterface {
|
|||||||
return userRepository.findByUsername(username);
|
return userRepository.findByUsername(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Optional<User> findByUsernameIgnoreCase(String username) {
|
||||||
|
return userRepository.findByUsernameIgnoreCase(username);
|
||||||
|
}
|
||||||
|
|
||||||
public void changeUsername(User user, String newUsername) {
|
public void changeUsername(User user, String newUsername) {
|
||||||
user.setUsername(newUsername);
|
user.setUsername(newUsername);
|
||||||
userRepository.save(user);
|
userRepository.save(user);
|
||||||
@@ -194,4 +198,8 @@ public class UserService implements UserServiceInterface {
|
|||||||
public boolean isPasswordCorrect(User user, String currentPassword) {
|
public boolean isPasswordCorrect(User user, String currentPassword) {
|
||||||
return passwordEncoder.matches(currentPassword, user.getPassword());
|
return passwordEncoder.matches(currentPassword, user.getPassword());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isUsernameValid(String username) {
|
||||||
|
return username.matches("[a-zA-Z0-9]+");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ public class MergeController {
|
|||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(MergeController.class);
|
private static final Logger logger = LoggerFactory.getLogger(MergeController.class);
|
||||||
|
|
||||||
private PDDocument mergeDocuments(List<PDDocument> documents) throws IOException {
|
public PDDocument mergeDocuments(List<PDDocument> documents) throws IOException {
|
||||||
PDDocument mergedDoc = new PDDocument();
|
PDDocument mergedDoc = new PDDocument();
|
||||||
for (PDDocument doc : documents) {
|
for (PDDocument doc : documents) {
|
||||||
for (PDPage page : doc.getPages()) {
|
for (PDPage page : doc.getPages()) {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package stirling.software.SPDF.controller.api;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.pdfbox.Loader;
|
import org.apache.pdfbox.Loader;
|
||||||
@@ -50,7 +51,9 @@ public class RearrangePagesPDFController {
|
|||||||
String[] pageOrderArr = pagesToDelete.split(",");
|
String[] pageOrderArr = pagesToDelete.split(",");
|
||||||
|
|
||||||
List<Integer> pagesToRemove =
|
List<Integer> pagesToRemove =
|
||||||
GeneralUtils.parsePageList(pageOrderArr, document.getNumberOfPages());
|
GeneralUtils.parsePageList(pageOrderArr, document.getNumberOfPages(), false);
|
||||||
|
|
||||||
|
Collections.sort(pagesToRemove);
|
||||||
|
|
||||||
for (int i = pagesToRemove.size() - 1; i >= 0; i--) {
|
for (int i = pagesToRemove.size() - 1; i >= 0; i--) {
|
||||||
int pageIndex = pagesToRemove.get(i);
|
int pageIndex = pagesToRemove.get(i);
|
||||||
@@ -192,7 +195,7 @@ public class RearrangePagesPDFController {
|
|||||||
if (sortType != null && sortType.length() > 0) {
|
if (sortType != null && sortType.length() > 0) {
|
||||||
newPageOrder = processSortTypes(sortType, totalPages);
|
newPageOrder = processSortTypes(sortType, totalPages);
|
||||||
} else {
|
} else {
|
||||||
newPageOrder = GeneralUtils.parsePageList(pageOrderArr, totalPages);
|
newPageOrder = GeneralUtils.parsePageList(pageOrderArr, totalPages, false);
|
||||||
}
|
}
|
||||||
logger.info("newPageOrder = " + newPageOrder);
|
logger.info("newPageOrder = " + newPageOrder);
|
||||||
logger.info("totalPages = " + totalPages);
|
logger.info("totalPages = " + totalPages);
|
||||||
|
|||||||
@@ -49,10 +49,16 @@ public class SplitPDFController {
|
|||||||
// open the pdf document
|
// open the pdf document
|
||||||
|
|
||||||
PDDocument document = Loader.loadPDF(file.getBytes());
|
PDDocument document = Loader.loadPDF(file.getBytes());
|
||||||
|
int totalPages = document.getNumberOfPages();
|
||||||
|
List<Integer> pageNumbers = request.getPageNumbersList(document, false);
|
||||||
|
System.out.println(
|
||||||
|
pageNumbers.stream().map(String::valueOf).collect(Collectors.joining(",")));
|
||||||
|
if (!pageNumbers.contains(totalPages - 1)) {
|
||||||
|
// Create a mutable ArrayList so we can add to it
|
||||||
|
pageNumbers = new ArrayList<>(pageNumbers);
|
||||||
|
pageNumbers.add(totalPages - 1);
|
||||||
|
}
|
||||||
|
|
||||||
List<Integer> pageNumbers = request.getPageNumbersList(document, true);
|
|
||||||
if (!pageNumbers.contains(document.getNumberOfPages() - 1))
|
|
||||||
pageNumbers.add(document.getNumberOfPages() - 1);
|
|
||||||
logger.info(
|
logger.info(
|
||||||
"Splitting PDF into pages: {}",
|
"Splitting PDF into pages: {}",
|
||||||
pageNumbers.stream().map(String::valueOf).collect(Collectors.joining(",")));
|
pageNumbers.stream().map(String::valueOf).collect(Collectors.joining(",")));
|
||||||
@@ -65,7 +71,7 @@ public class SplitPDFController {
|
|||||||
for (int i = previousPageNumber; i <= splitPoint; i++) {
|
for (int i = previousPageNumber; i <= splitPoint; i++) {
|
||||||
PDPage page = document.getPage(i);
|
PDPage page = document.getPage(i);
|
||||||
splitDocument.addPage(page);
|
splitDocument.addPage(page);
|
||||||
logger.debug("Adding page {} to split document", i);
|
logger.info("Adding page {} to split document", i);
|
||||||
}
|
}
|
||||||
previousPageNumber = splitPoint + 1;
|
previousPageNumber = splitPoint + 1;
|
||||||
|
|
||||||
|
|||||||
@@ -53,8 +53,21 @@ public class SplitPdfBySectionsController {
|
|||||||
// Process the PDF based on split parameters
|
// Process the PDF based on split parameters
|
||||||
int horiz = request.getHorizontalDivisions() + 1;
|
int horiz = request.getHorizontalDivisions() + 1;
|
||||||
int verti = request.getVerticalDivisions() + 1;
|
int verti = request.getVerticalDivisions() + 1;
|
||||||
|
boolean merge = request.isMerge();
|
||||||
List<PDDocument> splitDocuments = splitPdfPages(sourceDocument, verti, horiz);
|
List<PDDocument> splitDocuments = splitPdfPages(sourceDocument, verti, horiz);
|
||||||
|
|
||||||
|
String filename =
|
||||||
|
Filenames.toSimpleFileName(file.getOriginalFilename())
|
||||||
|
.replaceFirst("[.][^.]+$", "");
|
||||||
|
if (merge) {
|
||||||
|
MergeController mergeController = new MergeController();
|
||||||
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
|
mergeController.mergeDocuments(splitDocuments).save(baos);
|
||||||
|
return WebResponseUtils.bytesToWebResponse(
|
||||||
|
baos.toByteArray(),
|
||||||
|
filename + "_split.pdf",
|
||||||
|
MediaType.APPLICATION_OCTET_STREAM);
|
||||||
|
}
|
||||||
for (PDDocument doc : splitDocuments) {
|
for (PDDocument doc : splitDocuments) {
|
||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
doc.save(baos);
|
doc.save(baos);
|
||||||
@@ -65,9 +78,6 @@ public class SplitPdfBySectionsController {
|
|||||||
sourceDocument.close();
|
sourceDocument.close();
|
||||||
|
|
||||||
Path zipFile = Files.createTempFile("split_documents", ".zip");
|
Path zipFile = Files.createTempFile("split_documents", ".zip");
|
||||||
String filename =
|
|
||||||
Filenames.toSimpleFileName(file.getOriginalFilename())
|
|
||||||
.replaceFirst("[.][^.]+$", "");
|
|
||||||
byte[] data;
|
byte[] data;
|
||||||
|
|
||||||
try (ZipOutputStream zipOut = new ZipOutputStream(Files.newOutputStream(zipFile))) {
|
try (ZipOutputStream zipOut = new ZipOutputStream(Files.newOutputStream(zipFile))) {
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ import jakarta.servlet.http.HttpServletResponse;
|
|||||||
import stirling.software.SPDF.config.security.UserService;
|
import stirling.software.SPDF.config.security.UserService;
|
||||||
import stirling.software.SPDF.model.Role;
|
import stirling.software.SPDF.model.Role;
|
||||||
import stirling.software.SPDF.model.User;
|
import stirling.software.SPDF.model.User;
|
||||||
import stirling.software.SPDF.model.api.user.UpdateUserDetails;
|
|
||||||
import stirling.software.SPDF.model.api.user.UsernameAndPass;
|
import stirling.software.SPDF.model.api.user.UsernameAndPass;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
@@ -53,67 +52,25 @@ public class UserController {
|
|||||||
return "redirect:/login?registered=true";
|
return "redirect:/login?registered=true";
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
|
||||||
@PostMapping("/change-username-and-password")
|
|
||||||
public RedirectView changeUsernameAndPassword(
|
|
||||||
Principal principal,
|
|
||||||
@ModelAttribute UpdateUserDetails requestModel,
|
|
||||||
HttpServletRequest request,
|
|
||||||
HttpServletResponse response,
|
|
||||||
RedirectAttributes redirectAttributes) {
|
|
||||||
|
|
||||||
String currentPassword = requestModel.getPassword();
|
|
||||||
String newPassword = requestModel.getNewPassword();
|
|
||||||
String newUsername = requestModel.getNewUsername();
|
|
||||||
|
|
||||||
if (principal == null) {
|
|
||||||
return new RedirectView("/change-creds?messageType=notAuthenticated");
|
|
||||||
}
|
|
||||||
|
|
||||||
Optional<User> userOpt = userService.findByUsername(principal.getName());
|
|
||||||
|
|
||||||
if (userOpt == null || userOpt.isEmpty()) {
|
|
||||||
return new RedirectView("/change-creds?messageType=userNotFound");
|
|
||||||
}
|
|
||||||
|
|
||||||
User user = userOpt.get();
|
|
||||||
|
|
||||||
if (!userService.isPasswordCorrect(user, currentPassword)) {
|
|
||||||
return new RedirectView("/change-creds?messageType=incorrectPassword");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!user.getUsername().equals(newUsername) && userService.usernameExists(newUsername)) {
|
|
||||||
return new RedirectView("/change-creds?messageType=usernameExists");
|
|
||||||
}
|
|
||||||
|
|
||||||
userService.changePassword(user, newPassword);
|
|
||||||
if (newUsername != null
|
|
||||||
&& newUsername.length() > 0
|
|
||||||
&& !user.getUsername().equals(newUsername)) {
|
|
||||||
userService.changeUsername(user, newUsername);
|
|
||||||
}
|
|
||||||
userService.changeFirstUse(user, false);
|
|
||||||
|
|
||||||
// Logout using Spring's utility
|
|
||||||
new SecurityContextLogoutHandler().logout(request, response, null);
|
|
||||||
|
|
||||||
return new RedirectView("/login?messageType=credsUpdated");
|
|
||||||
}
|
|
||||||
|
|
||||||
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
||||||
@PostMapping("/change-username")
|
@PostMapping("/change-username")
|
||||||
public RedirectView changeUsername(
|
public RedirectView changeUsername(
|
||||||
Principal principal,
|
Principal principal,
|
||||||
@RequestParam String currentPassword,
|
@RequestParam(name = "currentPassword") String currentPassword,
|
||||||
@RequestParam String newUsername,
|
@RequestParam(name = "newUsername") String newUsername,
|
||||||
HttpServletRequest request,
|
HttpServletRequest request,
|
||||||
HttpServletResponse response,
|
HttpServletResponse response,
|
||||||
RedirectAttributes redirectAttributes) {
|
RedirectAttributes redirectAttributes) {
|
||||||
|
|
||||||
|
if (!userService.isUsernameValid(newUsername)) {
|
||||||
|
return new RedirectView("/account?messageType=invalidUsername");
|
||||||
|
}
|
||||||
|
|
||||||
if (principal == null) {
|
if (principal == null) {
|
||||||
return new RedirectView("/account?messageType=notAuthenticated");
|
return new RedirectView("/account?messageType=notAuthenticated");
|
||||||
}
|
}
|
||||||
|
|
||||||
Optional<User> userOpt = userService.findByUsername(principal.getName());
|
Optional<User> userOpt = userService.findByUsernameIgnoreCase(principal.getName());
|
||||||
|
|
||||||
if (userOpt == null || userOpt.isEmpty()) {
|
if (userOpt == null || userOpt.isEmpty()) {
|
||||||
return new RedirectView("/account?messageType=userNotFound");
|
return new RedirectView("/account?messageType=userNotFound");
|
||||||
@@ -121,6 +78,10 @@ public class UserController {
|
|||||||
|
|
||||||
User user = userOpt.get();
|
User user = userOpt.get();
|
||||||
|
|
||||||
|
if (user.getUsername().equals(newUsername)) {
|
||||||
|
return new RedirectView("/account?messageType=usernameExists");
|
||||||
|
}
|
||||||
|
|
||||||
if (!userService.isPasswordCorrect(user, currentPassword)) {
|
if (!userService.isPasswordCorrect(user, currentPassword)) {
|
||||||
return new RedirectView("/account?messageType=incorrectPassword");
|
return new RedirectView("/account?messageType=incorrectPassword");
|
||||||
}
|
}
|
||||||
@@ -136,15 +97,48 @@ public class UserController {
|
|||||||
// Logout using Spring's utility
|
// Logout using Spring's utility
|
||||||
new SecurityContextLogoutHandler().logout(request, response, null);
|
new SecurityContextLogoutHandler().logout(request, response, null);
|
||||||
|
|
||||||
return new RedirectView("/login?messageType=credsUpdated");
|
return new RedirectView(LOGIN_MESSAGETYPE_CREDSUPDATED);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
||||||
|
@PostMapping("/change-password-on-login")
|
||||||
|
public RedirectView changePasswordOnLogin(
|
||||||
|
Principal principal,
|
||||||
|
@RequestParam(name = "currentPassword") String currentPassword,
|
||||||
|
@RequestParam(name = "newPassword") String newPassword,
|
||||||
|
HttpServletRequest request,
|
||||||
|
HttpServletResponse response,
|
||||||
|
RedirectAttributes redirectAttributes) {
|
||||||
|
if (principal == null) {
|
||||||
|
return new RedirectView("/change-creds?messageType=notAuthenticated");
|
||||||
|
}
|
||||||
|
|
||||||
|
Optional<User> userOpt = userService.findByUsername(principal.getName());
|
||||||
|
|
||||||
|
if (userOpt == null || userOpt.isEmpty()) {
|
||||||
|
return new RedirectView("/change-creds?messageType=userNotFound");
|
||||||
|
}
|
||||||
|
|
||||||
|
User user = userOpt.get();
|
||||||
|
|
||||||
|
if (!userService.isPasswordCorrect(user, currentPassword)) {
|
||||||
|
return new RedirectView("/change-creds?messageType=incorrectPassword");
|
||||||
|
}
|
||||||
|
|
||||||
|
userService.changePassword(user, newPassword);
|
||||||
|
userService.changeFirstUse(user, false);
|
||||||
|
// Logout using Spring's utility
|
||||||
|
new SecurityContextLogoutHandler().logout(request, response, null);
|
||||||
|
|
||||||
|
return new RedirectView(LOGIN_MESSAGETYPE_CREDSUPDATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
||||||
@PostMapping("/change-password")
|
@PostMapping("/change-password")
|
||||||
public RedirectView changePassword(
|
public RedirectView changePassword(
|
||||||
Principal principal,
|
Principal principal,
|
||||||
@RequestParam String currentPassword,
|
@RequestParam(name = "currentPassword") String currentPassword,
|
||||||
@RequestParam String newPassword,
|
@RequestParam(name = "newPassword") String newPassword,
|
||||||
HttpServletRequest request,
|
HttpServletRequest request,
|
||||||
HttpServletResponse response,
|
HttpServletResponse response,
|
||||||
RedirectAttributes redirectAttributes) {
|
RedirectAttributes redirectAttributes) {
|
||||||
@@ -169,7 +163,7 @@ public class UserController {
|
|||||||
// Logout using Spring's utility
|
// Logout using Spring's utility
|
||||||
new SecurityContextLogoutHandler().logout(request, response, null);
|
new SecurityContextLogoutHandler().logout(request, response, null);
|
||||||
|
|
||||||
return new RedirectView("/login?messageType=credsUpdated");
|
return new RedirectView(LOGIN_MESSAGETYPE_CREDSUPDATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
||||||
@@ -195,12 +189,24 @@ public class UserController {
|
|||||||
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
||||||
@PostMapping("/admin/saveUser")
|
@PostMapping("/admin/saveUser")
|
||||||
public RedirectView saveUser(
|
public RedirectView saveUser(
|
||||||
@RequestParam String username,
|
@RequestParam(name = "username") String username,
|
||||||
@RequestParam String password,
|
@RequestParam(name = "password") String password,
|
||||||
@RequestParam String role,
|
@RequestParam(name = "role") String role,
|
||||||
@RequestParam(name = "forceChange", required = false, defaultValue = "false")
|
@RequestParam(name = "forceChange", required = false, defaultValue = "false")
|
||||||
boolean forceChange) {
|
boolean forceChange) {
|
||||||
|
|
||||||
|
if (!userService.isUsernameValid(username)) {
|
||||||
|
return new RedirectView("/addUsers?messageType=invalidUsername");
|
||||||
|
}
|
||||||
|
|
||||||
|
Optional<User> userOpt = userService.findByUsernameIgnoreCase(username);
|
||||||
|
|
||||||
|
if (userOpt.isPresent()) {
|
||||||
|
User user = userOpt.get();
|
||||||
|
if (user != null && user.getUsername().equalsIgnoreCase(username)) {
|
||||||
|
return new RedirectView("/addUsers?messageType=usernameExists");
|
||||||
|
}
|
||||||
|
}
|
||||||
if (userService.usernameExists(username)) {
|
if (userService.usernameExists(username)) {
|
||||||
return new RedirectView("/addUsers?messageType=usernameExists");
|
return new RedirectView("/addUsers?messageType=usernameExists");
|
||||||
}
|
}
|
||||||
@@ -222,18 +228,23 @@ public class UserController {
|
|||||||
|
|
||||||
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
||||||
@PostMapping("/admin/deleteUser/{username}")
|
@PostMapping("/admin/deleteUser/{username}")
|
||||||
public String deleteUser(@PathVariable String username, Authentication authentication) {
|
public RedirectView deleteUser(
|
||||||
|
@PathVariable(name = "username") String username, Authentication authentication) {
|
||||||
|
|
||||||
|
if (!userService.usernameExists(username)) {
|
||||||
|
return new RedirectView("/addUsers?messageType=deleteUsernameExists");
|
||||||
|
}
|
||||||
|
|
||||||
// Get the currently authenticated username
|
// Get the currently authenticated username
|
||||||
String currentUsername = authentication.getName();
|
String currentUsername = authentication.getName();
|
||||||
|
|
||||||
// Check if the provided username matches the current session's username
|
// Check if the provided username matches the current session's username
|
||||||
if (currentUsername.equals(username)) {
|
if (currentUsername.equals(username)) {
|
||||||
throw new IllegalArgumentException("Cannot delete currently logined in user.");
|
return new RedirectView("/addUsers?messageType=deleteCurrentUser");
|
||||||
}
|
}
|
||||||
invalidateUserSessions(username);
|
invalidateUserSessions(username);
|
||||||
userService.deleteUser(username);
|
userService.deleteUser(username);
|
||||||
return "redirect:/addUsers";
|
return new RedirectView("/addUsers");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Autowired private SessionRegistry sessionRegistry;
|
@Autowired private SessionRegistry sessionRegistry;
|
||||||
@@ -280,4 +291,6 @@ public class UserController {
|
|||||||
}
|
}
|
||||||
return ResponseEntity.ok(apiKey);
|
return ResponseEntity.ok(apiKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final String LOGIN_MESSAGETYPE_CREDSUPDATED = "/login?messageType=credsUpdated";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ public class ConvertBookToPDFController {
|
|||||||
|
|
||||||
if (!bookAndHtmlFormatsInstalled) {
|
if (!bookAndHtmlFormatsInstalled) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
"bookAndHtmlFormatsInstalled flag is False, this functionality is not avaiable");
|
"bookAndHtmlFormatsInstalled flag is False, this functionality is not available");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fileInput == null) {
|
if (fileInput == null) {
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public class ConvertPDFToBookController {
|
|||||||
|
|
||||||
if (!bookAndHtmlFormatsInstalled) {
|
if (!bookAndHtmlFormatsInstalled) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
"bookAndHtmlFormatsInstalled flag is False, this functionality is not avaiable");
|
"bookAndHtmlFormatsInstalled flag is False, this functionality is not available");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fileInput == null) {
|
if (fileInput == null) {
|
||||||
|
|||||||
@@ -29,18 +29,6 @@ import stirling.software.SPDF.utils.WebResponseUtils;
|
|||||||
@Tag(name = "Convert", description = "Convert APIs")
|
@Tag(name = "Convert", description = "Convert APIs")
|
||||||
public class ConvertPDFToOffice {
|
public class ConvertPDFToOffice {
|
||||||
|
|
||||||
@PostMapping(consumes = "multipart/form-data", value = "/pdf/html")
|
|
||||||
@Operation(
|
|
||||||
summary = "Convert PDF to HTML",
|
|
||||||
description =
|
|
||||||
"This endpoint converts a PDF file to HTML format. Input:PDF Output:HTML Type:SISO")
|
|
||||||
public ResponseEntity<byte[]> processPdfToHTML(@ModelAttribute PDFFile request)
|
|
||||||
throws Exception {
|
|
||||||
MultipartFile inputFile = request.getFileInput();
|
|
||||||
PDFToFile pdfToFile = new PDFToFile();
|
|
||||||
return pdfToFile.processPdfToOfficeFormat(inputFile, "html", "writer_pdf_import");
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping(consumes = "multipart/form-data", value = "/pdf/presentation")
|
@PostMapping(consumes = "multipart/form-data", value = "/pdf/presentation")
|
||||||
@Operation(
|
@Operation(
|
||||||
summary = "Convert PDF to Presentation format",
|
summary = "Convert PDF to Presentation format",
|
||||||
|
|||||||
@@ -6,8 +6,6 @@ import java.nio.file.Path;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
@@ -28,10 +26,6 @@ import stirling.software.SPDF.utils.WebResponseUtils;
|
|||||||
@RequestMapping("/api/v1/convert")
|
@RequestMapping("/api/v1/convert")
|
||||||
public class ConvertWebsiteToPDF {
|
public class ConvertWebsiteToPDF {
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("bookAndHtmlFormatsInstalled")
|
|
||||||
private boolean bookAndHtmlFormatsInstalled;
|
|
||||||
|
|
||||||
@PostMapping(consumes = "multipart/form-data", value = "/url/pdf")
|
@PostMapping(consumes = "multipart/form-data", value = "/url/pdf")
|
||||||
@Operation(
|
@Operation(
|
||||||
summary = "Convert a URL to a PDF",
|
summary = "Convert a URL to a PDF",
|
||||||
@@ -53,11 +47,7 @@ public class ConvertWebsiteToPDF {
|
|||||||
|
|
||||||
// Prepare the OCRmyPDF command
|
// Prepare the OCRmyPDF command
|
||||||
List<String> command = new ArrayList<>();
|
List<String> command = new ArrayList<>();
|
||||||
if (!bookAndHtmlFormatsInstalled) {
|
|
||||||
command.add("weasyprint");
|
command.add("weasyprint");
|
||||||
} else {
|
|
||||||
command.add("wkhtmltopdf");
|
|
||||||
}
|
|
||||||
command.add(URL);
|
command.add(URL);
|
||||||
command.add(tempOutputFile.toString());
|
command.add(tempOutputFile.toString());
|
||||||
|
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ public class AutoRenameController {
|
|||||||
|
|
||||||
// Sanitize the header string by removing characters not allowed in a filename.
|
// Sanitize the header string by removing characters not allowed in a filename.
|
||||||
if (header != null && header.length() < 255) {
|
if (header != null && header.length() < 255) {
|
||||||
header = header.replaceAll("[/\\\\?%*:|\"<>]", "");
|
header = header.replaceAll("[/\\\\?%*:|\"<>]", "").trim();
|
||||||
return WebResponseUtils.pdfDocToWebResponse(document, header + ".pdf");
|
return WebResponseUtils.pdfDocToWebResponse(document, header + ".pdf");
|
||||||
} else {
|
} else {
|
||||||
logger.info("File has no good title to be found");
|
logger.info("File has no good title to be found");
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ public class AutoSplitPdfController {
|
|||||||
|
|
||||||
PDDocument document = Loader.loadPDF(file.getBytes());
|
PDDocument document = Loader.loadPDF(file.getBytes());
|
||||||
PDFRenderer pdfRenderer = new PDFRenderer(document);
|
PDFRenderer pdfRenderer = new PDFRenderer(document);
|
||||||
|
pdfRenderer.setSubsamplingAllowed(true);
|
||||||
List<PDDocument> splitDocuments = new ArrayList<>();
|
List<PDDocument> splitDocuments = new ArrayList<>();
|
||||||
List<ByteArrayOutputStream> splitDocumentsBoas = new ArrayList<>();
|
List<ByteArrayOutputStream> splitDocumentsBoas = new ArrayList<>();
|
||||||
|
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public class BlankPageController {
|
|||||||
List<Integer> pagesToKeepIndex = new ArrayList<>();
|
List<Integer> pagesToKeepIndex = new ArrayList<>();
|
||||||
int pageIndex = 0;
|
int pageIndex = 0;
|
||||||
PDFRenderer pdfRenderer = new PDFRenderer(document);
|
PDFRenderer pdfRenderer = new PDFRenderer(document);
|
||||||
|
pdfRenderer.setSubsamplingAllowed(true);
|
||||||
for (PDPage page : pages) {
|
for (PDPage page : pages) {
|
||||||
logger.info("checking page " + pageIndex);
|
logger.info("checking page " + pageIndex);
|
||||||
textStripper.setStartPage(pageIndex + 1);
|
textStripper.setStartPage(pageIndex + 1);
|
||||||
|
|||||||
@@ -2,9 +2,7 @@ package stirling.software.SPDF.controller.api.misc;
|
|||||||
|
|
||||||
import java.awt.Image;
|
import java.awt.Image;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.ByteArrayInputStream;
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.File;
|
|
||||||
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;
|
||||||
@@ -75,8 +73,11 @@ public class CompressController {
|
|||||||
long inputFileSize = Files.size(tempInputFile);
|
long inputFileSize = Files.size(tempInputFile);
|
||||||
|
|
||||||
// Prepare the output file path
|
// Prepare the output file path
|
||||||
Path tempOutputFile = Files.createTempFile("output_", ".pdf");
|
|
||||||
|
|
||||||
|
Path tempOutputFile = null;
|
||||||
|
byte[] pdfBytes;
|
||||||
|
try {
|
||||||
|
tempOutputFile = Files.createTempFile("output_", ".pdf");
|
||||||
// Determine initial optimization level based on expected size reduction, only if in
|
// Determine initial optimization level based on expected size reduction, only if in
|
||||||
// autoMode
|
// autoMode
|
||||||
if (autoMode) {
|
if (autoMode) {
|
||||||
@@ -134,11 +135,9 @@ public class CompressController {
|
|||||||
} else {
|
} else {
|
||||||
// Increase optimization level for next iteration
|
// Increase optimization level for next iteration
|
||||||
optimizeLevel++;
|
optimizeLevel++;
|
||||||
if (autoMode && optimizeLevel > 3) {
|
if (autoMode && optimizeLevel > 4) {
|
||||||
System.out.println("Skipping level 4 due to bad results in auto mode");
|
System.out.println("Skipping level 5 due to bad results in auto mode");
|
||||||
sizeMet = true;
|
sizeMet = true;
|
||||||
} else if (optimizeLevel == 5) {
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
System.out.println(
|
System.out.println(
|
||||||
"Increasing ghostscript optimisation level to " + optimizeLevel);
|
"Increasing ghostscript optimisation level to " + optimizeLevel);
|
||||||
@@ -148,25 +147,33 @@ public class CompressController {
|
|||||||
|
|
||||||
if (expectedOutputSize != null && autoMode) {
|
if (expectedOutputSize != null && autoMode) {
|
||||||
long outputFileSize = Files.size(tempOutputFile);
|
long outputFileSize = Files.size(tempOutputFile);
|
||||||
|
byte[] fileBytes = Files.readAllBytes(tempOutputFile);
|
||||||
if (outputFileSize > expectedOutputSize) {
|
if (outputFileSize > expectedOutputSize) {
|
||||||
try (PDDocument doc = Loader.loadPDF(new File(tempOutputFile.toString()))) {
|
try (PDDocument doc = Loader.loadPDF(fileBytes)) {
|
||||||
long previousFileSize = 0;
|
long previousFileSize = 0;
|
||||||
double scaleFactor = 1.0;
|
double scaleFactorConst = 0.9f;
|
||||||
|
double scaleFactor = 0.9f;
|
||||||
while (true) {
|
while (true) {
|
||||||
for (PDPage page : doc.getPages()) {
|
for (PDPage page : doc.getPages()) {
|
||||||
PDResources res = page.getResources();
|
PDResources res = page.getResources();
|
||||||
|
if (res != null && res.getXObjectNames() != null) {
|
||||||
for (COSName name : res.getXObjectNames()) {
|
for (COSName name : res.getXObjectNames()) {
|
||||||
PDXObject xobj = res.getXObject(name);
|
PDXObject xobj = res.getXObject(name);
|
||||||
if (xobj instanceof PDImageXObject) {
|
if (xobj != null && xobj instanceof PDImageXObject) {
|
||||||
PDImageXObject image = (PDImageXObject) xobj;
|
PDImageXObject image = (PDImageXObject) xobj;
|
||||||
|
|
||||||
// Get the image in BufferedImage format
|
// Get the image in BufferedImage format
|
||||||
BufferedImage bufferedImage = image.getImage();
|
BufferedImage bufferedImage = image.getImage();
|
||||||
|
|
||||||
// Calculate the new dimensions
|
// Calculate the new dimensions
|
||||||
int newWidth = (int) (bufferedImage.getWidth() * scaleFactor);
|
int newWidth =
|
||||||
int newHeight = (int) (bufferedImage.getHeight() * scaleFactor);
|
(int)
|
||||||
|
(bufferedImage.getWidth()
|
||||||
|
* scaleFactorConst);
|
||||||
|
int newHeight =
|
||||||
|
(int)
|
||||||
|
(bufferedImage.getHeight()
|
||||||
|
* scaleFactorConst);
|
||||||
|
|
||||||
// If the new dimensions are zero, skip this iteration
|
// If the new dimensions are zero, skip this iteration
|
||||||
if (newWidth == 0 || newHeight == 0) {
|
if (newWidth == 0 || newHeight == 0) {
|
||||||
@@ -176,7 +183,9 @@ public class CompressController {
|
|||||||
// Otherwise, proceed with the scaling
|
// Otherwise, proceed with the scaling
|
||||||
Image scaledImage =
|
Image scaledImage =
|
||||||
bufferedImage.getScaledInstance(
|
bufferedImage.getScaledInstance(
|
||||||
newWidth, newHeight, Image.SCALE_SMOOTH);
|
newWidth,
|
||||||
|
newHeight,
|
||||||
|
Image.SCALE_SMOOTH);
|
||||||
|
|
||||||
// Convert the scaled image back to a BufferedImage
|
// Convert the scaled image back to a BufferedImage
|
||||||
BufferedImage scaledBufferedImage =
|
BufferedImage scaledBufferedImage =
|
||||||
@@ -192,25 +201,26 @@ public class CompressController {
|
|||||||
ByteArrayOutputStream compressedImageStream =
|
ByteArrayOutputStream compressedImageStream =
|
||||||
new ByteArrayOutputStream();
|
new ByteArrayOutputStream();
|
||||||
ImageIO.write(
|
ImageIO.write(
|
||||||
scaledBufferedImage, "jpeg", compressedImageStream);
|
scaledBufferedImage,
|
||||||
|
"jpeg",
|
||||||
|
compressedImageStream);
|
||||||
byte[] imageBytes = compressedImageStream.toByteArray();
|
byte[] imageBytes = compressedImageStream.toByteArray();
|
||||||
compressedImageStream.close();
|
compressedImageStream.close();
|
||||||
|
|
||||||
// Convert compressed image back to PDImageXObject
|
|
||||||
ByteArrayInputStream bais =
|
|
||||||
new ByteArrayInputStream(imageBytes);
|
|
||||||
PDImageXObject compressedImage =
|
PDImageXObject compressedImage =
|
||||||
PDImageXObject.createFromByteArray(
|
PDImageXObject.createFromByteArray(
|
||||||
doc,
|
doc,
|
||||||
imageBytes,
|
imageBytes,
|
||||||
image.getCOSObject().toString());
|
image.getCOSObject().toString());
|
||||||
|
|
||||||
// Replace the image in the resources with the compressed
|
// Replace the image in the resources with the
|
||||||
|
// compressed
|
||||||
// version
|
// version
|
||||||
res.put(name, compressedImage);
|
res.put(name, compressedImage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// save the document to tempOutputFile again
|
// save the document to tempOutputFile again
|
||||||
doc.save(tempOutputFile.toString());
|
doc.save(tempOutputFile.toString());
|
||||||
@@ -226,9 +236,10 @@ public class CompressController {
|
|||||||
System.out.println("Current scale factor: " + scaleFactor);
|
System.out.println("Current scale factor: " + scaleFactor);
|
||||||
|
|
||||||
// The file is still too large, reduce scaleFactor and try again
|
// The file is still too large, reduce scaleFactor and try again
|
||||||
scaleFactor *= 0.9; // reduce scaleFactor by 10%
|
scaleFactor *= 0.9f; // reduce scaleFactor by 10%
|
||||||
// Avoid scaleFactor being too small, causing the image to shrink to 0
|
// Avoid scaleFactor being too small, causing the image to shrink to
|
||||||
if (scaleFactor < 0.2 || previousFileSize == currentSize) {
|
// 0
|
||||||
|
if (scaleFactor < 0.2f || previousFileSize == currentSize) {
|
||||||
throw new RuntimeException(
|
throw new RuntimeException(
|
||||||
"Could not reach the desired size without excessively degrading image quality, lowest size recommended is "
|
"Could not reach the desired size without excessively degrading image quality, lowest size recommended is "
|
||||||
+ FileUtils.byteCountToDisplaySize(currentSize)
|
+ FileUtils.byteCountToDisplaySize(currentSize)
|
||||||
@@ -247,7 +258,7 @@ public class CompressController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Read the optimized PDF file
|
// Read the optimized PDF file
|
||||||
byte[] pdfBytes = Files.readAllBytes(tempOutputFile);
|
pdfBytes = Files.readAllBytes(tempOutputFile);
|
||||||
|
|
||||||
// Check if optimized file is larger than the original
|
// Check if optimized file is larger than the original
|
||||||
if (pdfBytes.length > inputFileSize) {
|
if (pdfBytes.length > inputFileSize) {
|
||||||
@@ -258,10 +269,11 @@ public class CompressController {
|
|||||||
// Read the original file again
|
// Read the original file again
|
||||||
pdfBytes = Files.readAllBytes(tempInputFile);
|
pdfBytes = Files.readAllBytes(tempInputFile);
|
||||||
}
|
}
|
||||||
|
} finally {
|
||||||
// Clean up the temporary files
|
// Clean up the temporary files
|
||||||
Files.delete(tempInputFile);
|
Files.delete(tempInputFile);
|
||||||
Files.delete(tempOutputFile);
|
Files.delete(tempOutputFile);
|
||||||
|
}
|
||||||
|
|
||||||
// Return the optimized PDF as a response
|
// Return the optimized PDF as a response
|
||||||
String outputFilename =
|
String outputFilename =
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import java.nio.file.StandardCopyOption;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipOutputStream;
|
import java.util.zip.ZipOutputStream;
|
||||||
|
|
||||||
@@ -73,11 +72,18 @@ public class ExtractImageScansController {
|
|||||||
|
|
||||||
List<String> images = new ArrayList<>();
|
List<String> images = new ArrayList<>();
|
||||||
|
|
||||||
|
List<Path> tempImageFiles = new ArrayList<>();
|
||||||
|
Path tempInputFile = null;
|
||||||
|
Path tempZipFile = null;
|
||||||
|
List<Path> tempDirs = new ArrayList<>();
|
||||||
|
|
||||||
|
try {
|
||||||
// Check if input file is a PDF
|
// Check if input file is a PDF
|
||||||
if ("pdf".equalsIgnoreCase(extension)) {
|
if ("pdf".equalsIgnoreCase(extension)) {
|
||||||
// Load PDF document
|
// Load PDF document
|
||||||
try (PDDocument document = Loader.loadPDF(form.getFileInput().getBytes())) {
|
try (PDDocument document = Loader.loadPDF(form.getFileInput().getBytes())) {
|
||||||
PDFRenderer pdfRenderer = new PDFRenderer(document);
|
PDFRenderer pdfRenderer = new PDFRenderer(document);
|
||||||
|
pdfRenderer.setSubsamplingAllowed(true);
|
||||||
int pageCount = document.getNumberOfPages();
|
int pageCount = document.getNumberOfPages();
|
||||||
images = new ArrayList<>();
|
images = new ArrayList<>();
|
||||||
|
|
||||||
@@ -92,10 +98,11 @@ public class ExtractImageScansController {
|
|||||||
|
|
||||||
// Add temp file path to images list
|
// Add temp file path to images list
|
||||||
images.add(tempFile.toString());
|
images.add(tempFile.toString());
|
||||||
|
tempImageFiles.add(tempFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Path tempInputFile = Files.createTempFile("input_", "." + extension);
|
tempInputFile = Files.createTempFile("input_", "." + extension);
|
||||||
Files.copy(
|
Files.copy(
|
||||||
form.getFileInput().getInputStream(),
|
form.getFileInput().getInputStream(),
|
||||||
tempInputFile,
|
tempInputFile,
|
||||||
@@ -110,6 +117,7 @@ public class ExtractImageScansController {
|
|||||||
for (int i = 0; i < images.size(); i++) {
|
for (int i = 0; i < images.size(); i++) {
|
||||||
|
|
||||||
Path tempDir = Files.createTempDirectory("openCV_output");
|
Path tempDir = Files.createTempDirectory("openCV_output");
|
||||||
|
tempDirs.add(tempDir);
|
||||||
List<String> command =
|
List<String> command =
|
||||||
new ArrayList<>(
|
new ArrayList<>(
|
||||||
Arrays.asList(
|
Arrays.asList(
|
||||||
@@ -134,7 +142,7 @@ public class ExtractImageScansController {
|
|||||||
.runCommandWithOutputHandling(command);
|
.runCommandWithOutputHandling(command);
|
||||||
|
|
||||||
// Read the output photos in temp directory
|
// Read the output photos in temp directory
|
||||||
List<Path> tempOutputFiles = Files.list(tempDir).sorted().collect(Collectors.toList());
|
List<Path> tempOutputFiles = Files.list(tempDir).sorted().toList();
|
||||||
for (Path tempOutputFile : tempOutputFiles) {
|
for (Path tempOutputFile : tempOutputFiles) {
|
||||||
byte[] imageBytes = Files.readAllBytes(tempOutputFile);
|
byte[] imageBytes = Files.readAllBytes(tempOutputFile);
|
||||||
processedImageBytes.add(imageBytes);
|
processedImageBytes.add(imageBytes);
|
||||||
@@ -145,8 +153,9 @@ public class ExtractImageScansController {
|
|||||||
|
|
||||||
// Create zip file if multiple images
|
// Create zip file if multiple images
|
||||||
if (processedImageBytes.size() > 1) {
|
if (processedImageBytes.size() > 1) {
|
||||||
String outputZipFilename = fileName.replaceFirst("[.][^.]+$", "") + "_processed.zip";
|
String outputZipFilename =
|
||||||
Path tempZipFile = Files.createTempFile("output_", ".zip");
|
fileName.replaceFirst(REPLACEFIRST, "") + "_processed.zip";
|
||||||
|
tempZipFile = Files.createTempFile("output_", ".zip");
|
||||||
|
|
||||||
try (ZipOutputStream zipOut =
|
try (ZipOutputStream zipOut =
|
||||||
new ZipOutputStream(new FileOutputStream(tempZipFile.toFile()))) {
|
new ZipOutputStream(new FileOutputStream(tempZipFile.toFile()))) {
|
||||||
@@ -154,7 +163,7 @@ public class ExtractImageScansController {
|
|||||||
for (int i = 0; i < processedImageBytes.size(); i++) {
|
for (int i = 0; i < processedImageBytes.size(); i++) {
|
||||||
ZipEntry entry =
|
ZipEntry entry =
|
||||||
new ZipEntry(
|
new ZipEntry(
|
||||||
fileName.replaceFirst("[.][^.]+$", "")
|
fileName.replaceFirst(REPLACEFIRST, "")
|
||||||
+ "_"
|
+ "_"
|
||||||
+ (i + 1)
|
+ (i + 1)
|
||||||
+ ".png");
|
+ ".png");
|
||||||
@@ -176,8 +185,38 @@ public class ExtractImageScansController {
|
|||||||
byte[] imageBytes = processedImageBytes.get(0);
|
byte[] imageBytes = processedImageBytes.get(0);
|
||||||
return WebResponseUtils.bytesToWebResponse(
|
return WebResponseUtils.bytesToWebResponse(
|
||||||
imageBytes,
|
imageBytes,
|
||||||
fileName.replaceFirst("[.][^.]+$", "") + ".png",
|
fileName.replaceFirst(REPLACEFIRST, "") + ".png",
|
||||||
MediaType.IMAGE_PNG);
|
MediaType.IMAGE_PNG);
|
||||||
}
|
}
|
||||||
|
} finally {
|
||||||
|
// Cleanup logic for all temporary files and directories
|
||||||
|
tempImageFiles.forEach(
|
||||||
|
path -> {
|
||||||
|
try {
|
||||||
|
Files.deleteIfExists(path);
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.error("Failed to delete temporary image file: " + path, e);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (tempZipFile != null && Files.exists(tempZipFile)) {
|
||||||
|
try {
|
||||||
|
Files.delete(tempZipFile);
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.error("Failed to delete temporary zip file: " + tempZipFile, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tempDirs.forEach(
|
||||||
|
dir -> {
|
||||||
|
try {
|
||||||
|
FileUtils.deleteDirectory(dir.toFile());
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.error("Failed to delete temporary directory: " + dir, e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final String REPLACEFIRST = "[.][^.]+$";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ public class FakeScanControllerWIP {
|
|||||||
|
|
||||||
PDDocument document = Loader.loadPDF(inputFile.getBytes());
|
PDDocument document = Loader.loadPDF(inputFile.getBytes());
|
||||||
PDFRenderer pdfRenderer = new PDFRenderer(document);
|
PDFRenderer pdfRenderer = new PDFRenderer(document);
|
||||||
|
pdfRenderer.setSubsamplingAllowed(true);
|
||||||
for (int page = 0; page < document.getNumberOfPages(); ++page) {
|
for (int page = 0; page < document.getNumberOfPages(); ++page) {
|
||||||
BufferedImage image = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
|
BufferedImage image = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
|
||||||
ImageIO.write(image, "png", new File("scanned-" + (page + 1) + ".png"));
|
ImageIO.write(image, "png", new File("scanned-" + (page + 1) + ".png"));
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ public class StampController {
|
|||||||
// Load the input PDF
|
// Load the input PDF
|
||||||
PDDocument document = Loader.loadPDF(pdfFile.getBytes());
|
PDDocument document = Loader.loadPDF(pdfFile.getBytes());
|
||||||
|
|
||||||
List<Integer> pageNumbers = request.getPageNumbersList(document, false);
|
List<Integer> pageNumbers = request.getPageNumbersList(document, true);
|
||||||
|
|
||||||
for (int pageIndex : pageNumbers) {
|
for (int pageIndex : pageNumbers) {
|
||||||
int zeroBasedIndex = pageIndex - 1;
|
int zeroBasedIndex = pageIndex - 1;
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public class ApiDocService {
|
|||||||
|
|
||||||
private String getApiDocsUrl() {
|
private String getApiDocsUrl() {
|
||||||
String contextPath = servletContext.getContextPath();
|
String contextPath = servletContext.getContextPath();
|
||||||
String port = SPdfApplication.getPort();
|
String port = SPdfApplication.getStaticPort();
|
||||||
|
|
||||||
return "http://localhost:" + port + contextPath + "/v1/api-docs";
|
return "http://localhost:" + port + contextPath + "/v1/api-docs";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
import org.springframework.http.HttpStatus;
|
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||||
@@ -50,9 +49,6 @@ public class PipelineController {
|
|||||||
@PostMapping("/handleData")
|
@PostMapping("/handleData")
|
||||||
public ResponseEntity<byte[]> handleData(@ModelAttribute HandleDataRequest request)
|
public ResponseEntity<byte[]> handleData(@ModelAttribute HandleDataRequest request)
|
||||||
throws JsonMappingException, JsonProcessingException {
|
throws JsonMappingException, JsonProcessingException {
|
||||||
if (!Boolean.TRUE.equals(applicationProperties.getSystem().getEnableAlphaFunctionality())) {
|
|
||||||
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
|
||||||
}
|
|
||||||
|
|
||||||
MultipartFile[] files = request.getFileInput();
|
MultipartFile[] files = request.getFileInput();
|
||||||
String jsonString = request.getJson();
|
String jsonString = request.getJson();
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import org.springframework.stereotype.Service;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.ApplicationProperties;
|
|
||||||
import stirling.software.SPDF.model.PipelineConfig;
|
import stirling.software.SPDF.model.PipelineConfig;
|
||||||
import stirling.software.SPDF.model.PipelineOperation;
|
import stirling.software.SPDF.model.PipelineOperation;
|
||||||
|
|
||||||
@@ -36,7 +35,6 @@ public class PipelineDirectoryProcessor {
|
|||||||
private static final Logger logger = LoggerFactory.getLogger(PipelineDirectoryProcessor.class);
|
private static final Logger logger = LoggerFactory.getLogger(PipelineDirectoryProcessor.class);
|
||||||
@Autowired private ObjectMapper objectMapper;
|
@Autowired private ObjectMapper objectMapper;
|
||||||
@Autowired private ApiDocService apiDocService;
|
@Autowired private ApiDocService apiDocService;
|
||||||
@Autowired private ApplicationProperties applicationProperties;
|
|
||||||
|
|
||||||
final String watchedFoldersDir = "./pipeline/watchedFolders/";
|
final String watchedFoldersDir = "./pipeline/watchedFolders/";
|
||||||
final String finishedFoldersDir = "./pipeline/finishedFolders/";
|
final String finishedFoldersDir = "./pipeline/finishedFolders/";
|
||||||
@@ -45,9 +43,6 @@ public class PipelineDirectoryProcessor {
|
|||||||
|
|
||||||
@Scheduled(fixedRate = 60000)
|
@Scheduled(fixedRate = 60000)
|
||||||
public void scanFolders() {
|
public void scanFolders() {
|
||||||
if (!Boolean.TRUE.equals(applicationProperties.getSystem().getEnableAlphaFunctionality())) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Path watchedFolderPath = Paths.get(watchedFoldersDir);
|
Path watchedFolderPath = Paths.get(watchedFoldersDir);
|
||||||
if (!Files.exists(watchedFolderPath)) {
|
if (!Files.exists(watchedFolderPath)) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ public class PipelineProcessor {
|
|||||||
|
|
||||||
private String getBaseUrl() {
|
private String getBaseUrl() {
|
||||||
String contextPath = servletContext.getContextPath();
|
String contextPath = servletContext.getContextPath();
|
||||||
String port = SPdfApplication.getPort();
|
String port = SPdfApplication.getStaticPort();
|
||||||
|
|
||||||
return "http://localhost:" + port + contextPath + "/";
|
return "http://localhost:" + port + contextPath + "/";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ public class RedactController {
|
|||||||
if (convertPDFToImage) {
|
if (convertPDFToImage) {
|
||||||
PDDocument imageDocument = new PDDocument();
|
PDDocument imageDocument = new PDDocument();
|
||||||
PDFRenderer pdfRenderer = new PDFRenderer(document);
|
PDFRenderer pdfRenderer = new PDFRenderer(document);
|
||||||
|
pdfRenderer.setSubsamplingAllowed(true);
|
||||||
for (int page = 0; page < document.getNumberOfPages(); ++page) {
|
for (int page = 0; page < document.getNumberOfPages(); ++page) {
|
||||||
BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
|
BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
|
||||||
PDPage newPage = new PDPage(new PDRectangle(bim.getWidth(), bim.getHeight()));
|
PDPage newPage = new PDPage(new PDRectangle(bim.getWidth(), bim.getHeight()));
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ public class SanitizeController {
|
|||||||
boolean removeLinks = request.isRemoveLinks();
|
boolean removeLinks = request.isRemoveLinks();
|
||||||
boolean removeFonts = request.isRemoveFonts();
|
boolean removeFonts = request.isRemoveFonts();
|
||||||
|
|
||||||
try (PDDocument document = Loader.loadPDF(inputFile.getBytes())) {
|
PDDocument document = Loader.loadPDF(inputFile.getBytes());
|
||||||
if (removeJavaScript) {
|
if (removeJavaScript) {
|
||||||
sanitizeJavaScript(document);
|
sanitizeJavaScript(document);
|
||||||
}
|
}
|
||||||
@@ -81,7 +81,6 @@ public class SanitizeController {
|
|||||||
.replaceFirst("[.][^.]+$", "")
|
.replaceFirst("[.][^.]+$", "")
|
||||||
+ "_sanitized.pdf");
|
+ "_sanitized.pdf");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private void sanitizeJavaScript(PDDocument document) throws IOException {
|
private void sanitizeJavaScript(PDDocument document) throws IOException {
|
||||||
// Get the root dictionary (catalog) of the PDF
|
// Get the root dictionary (catalog) of the PDF
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package stirling.software.SPDF.controller.web;
|
|||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -55,6 +56,7 @@ public class AccountWebController {
|
|||||||
public String showAddUserForm(Model model, Authentication authentication) {
|
public String showAddUserForm(Model model, Authentication authentication) {
|
||||||
List<User> allUsers = userRepository.findAll();
|
List<User> allUsers = userRepository.findAll();
|
||||||
Iterator<User> iterator = allUsers.iterator();
|
Iterator<User> iterator = allUsers.iterator();
|
||||||
|
Map<String, String> roleDetails = Role.getAllRoleDetails();
|
||||||
|
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
User user = iterator.next();
|
User user = iterator.next();
|
||||||
@@ -62,6 +64,7 @@ public class AccountWebController {
|
|||||||
for (Authority authority : user.getAuthorities()) {
|
for (Authority authority : user.getAuthorities()) {
|
||||||
if (authority.getAuthority().equals(Role.INTERNAL_API_USER.getRoleId())) {
|
if (authority.getAuthority().equals(Role.INTERNAL_API_USER.getRoleId())) {
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
|
roleDetails.remove(Role.INTERNAL_API_USER.getRoleId());
|
||||||
break; // Break out of the inner loop once the user is removed
|
break; // Break out of the inner loop once the user is removed
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -70,6 +73,7 @@ public class AccountWebController {
|
|||||||
|
|
||||||
model.addAttribute("users", allUsers);
|
model.addAttribute("users", allUsers);
|
||||||
model.addAttribute("currentUsername", authentication.getName());
|
model.addAttribute("currentUsername", authentication.getName());
|
||||||
|
model.addAttribute("roleDetails", roleDetails);
|
||||||
return "addUsers";
|
return "addUsers";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -210,7 +210,6 @@ public class ApplicationProperties {
|
|||||||
private String rootURIPath;
|
private String rootURIPath;
|
||||||
private String customStaticFilePath;
|
private String customStaticFilePath;
|
||||||
private Integer maxFileSize;
|
private Integer maxFileSize;
|
||||||
private CustomApplications customApplications;
|
|
||||||
|
|
||||||
private Boolean enableAlphaFunctionality;
|
private Boolean enableAlphaFunctionality;
|
||||||
|
|
||||||
@@ -262,14 +261,6 @@ public class ApplicationProperties {
|
|||||||
this.maxFileSize = maxFileSize;
|
this.maxFileSize = maxFileSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CustomApplications getCustomApplications() {
|
|
||||||
return customApplications != null ? customApplications : new CustomApplications();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCustomApplications(CustomApplications customApplications) {
|
|
||||||
this.customApplications = customApplications;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "System [defaultLocale="
|
return "System [defaultLocale="
|
||||||
@@ -282,31 +273,10 @@ public class ApplicationProperties {
|
|||||||
+ customStaticFilePath
|
+ customStaticFilePath
|
||||||
+ ", maxFileSize="
|
+ ", maxFileSize="
|
||||||
+ maxFileSize
|
+ maxFileSize
|
||||||
+ ", customApplications="
|
|
||||||
+ customApplications
|
|
||||||
+ ", enableAlphaFunctionality="
|
+ ", enableAlphaFunctionality="
|
||||||
+ enableAlphaFunctionality
|
+ enableAlphaFunctionality
|
||||||
+ "]";
|
+ "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class CustomApplications {
|
|
||||||
private boolean installBookAndHtmlFormats;
|
|
||||||
|
|
||||||
public boolean isInstallBookAndHtmlFormats() {
|
|
||||||
return installBookAndHtmlFormats;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setInstallBookAndHtmlFormats(boolean installBookAndHtmlFormats) {
|
|
||||||
this.installBookAndHtmlFormats = installBookAndHtmlFormats;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "CustomApplications [installBookAndHtmlFormats="
|
|
||||||
+ installBookAndHtmlFormats
|
|
||||||
+ "]";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Ui {
|
public static class Ui {
|
||||||
|
|||||||
@@ -1,34 +1,43 @@
|
|||||||
package stirling.software.SPDF.model;
|
package stirling.software.SPDF.model;
|
||||||
|
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public enum Role {
|
public enum Role {
|
||||||
|
|
||||||
// Unlimited access
|
// Unlimited access
|
||||||
ADMIN("ROLE_ADMIN", Integer.MAX_VALUE, Integer.MAX_VALUE),
|
ADMIN("ROLE_ADMIN", Integer.MAX_VALUE, Integer.MAX_VALUE, "adminUserSettings.admin"),
|
||||||
|
|
||||||
// Unlimited access
|
// Unlimited access
|
||||||
USER("ROLE_USER", Integer.MAX_VALUE, Integer.MAX_VALUE),
|
USER("ROLE_USER", Integer.MAX_VALUE, Integer.MAX_VALUE, "adminUserSettings.user"),
|
||||||
|
|
||||||
// 40 API calls Per Day, 40 web calls
|
// 40 API calls Per Day, 40 web calls
|
||||||
LIMITED_API_USER("ROLE_LIMITED_API_USER", 40, 40),
|
LIMITED_API_USER("ROLE_LIMITED_API_USER", 40, 40, "adminUserSettings.apiUser"),
|
||||||
|
|
||||||
// 20 API calls Per Day, 20 web calls
|
// 20 API calls Per Day, 20 web calls
|
||||||
EXTRA_LIMITED_API_USER("ROLE_EXTRA_LIMITED_API_USER", 20, 20),
|
EXTRA_LIMITED_API_USER("ROLE_EXTRA_LIMITED_API_USER", 20, 20, "adminUserSettings.extraApiUser"),
|
||||||
|
|
||||||
// 0 API calls per day and 20 web calls
|
// 0 API calls per day and 20 web calls
|
||||||
WEB_ONLY_USER("ROLE_WEB_ONLY_USER", 0, 20),
|
WEB_ONLY_USER("ROLE_WEB_ONLY_USER", 0, 20, "adminUserSettings.webOnlyUser"),
|
||||||
|
|
||||||
INTERNAL_API_USER("STIRLING-PDF-BACKEND-API-USER", Integer.MAX_VALUE, Integer.MAX_VALUE),
|
INTERNAL_API_USER(
|
||||||
|
"STIRLING-PDF-BACKEND-API-USER",
|
||||||
|
Integer.MAX_VALUE,
|
||||||
|
Integer.MAX_VALUE,
|
||||||
|
"adminUserSettings.internalApiUser"),
|
||||||
|
|
||||||
DEMO_USER("ROLE_DEMO_USER", 100, 100);
|
DEMO_USER("ROLE_DEMO_USER", 100, 100, "adminUserSettings.demoUser");
|
||||||
|
|
||||||
private final String roleId;
|
private final String roleId;
|
||||||
private final int apiCallsPerDay;
|
private final int apiCallsPerDay;
|
||||||
private final int webCallsPerDay;
|
private final int webCallsPerDay;
|
||||||
|
private final String roleName;
|
||||||
|
|
||||||
Role(String roleId, int apiCallsPerDay, int webCallsPerDay) {
|
Role(String roleId, int apiCallsPerDay, int webCallsPerDay, String roleName) {
|
||||||
this.roleId = roleId;
|
this.roleId = roleId;
|
||||||
this.apiCallsPerDay = apiCallsPerDay;
|
this.apiCallsPerDay = apiCallsPerDay;
|
||||||
this.webCallsPerDay = webCallsPerDay;
|
this.webCallsPerDay = webCallsPerDay;
|
||||||
|
this.roleName = roleName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getRoleId() {
|
public String getRoleId() {
|
||||||
@@ -43,6 +52,27 @@ public enum Role {
|
|||||||
return webCallsPerDay;
|
return webCallsPerDay;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getRoleName() {
|
||||||
|
return roleName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getRoleNameByRoleId(String roleId) {
|
||||||
|
// Using the fromString method to get the Role enum based on the roleId
|
||||||
|
Role role = fromString(roleId);
|
||||||
|
// Return the roleName of the found Role enum
|
||||||
|
return role.getRoleName();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Method to retrieve all role IDs and role names
|
||||||
|
public static Map<String, String> getAllRoleDetails() {
|
||||||
|
// Using LinkedHashMap to preserve order
|
||||||
|
Map<String, String> roleDetails = new LinkedHashMap<>();
|
||||||
|
for (Role role : Role.values()) {
|
||||||
|
roleDetails.put(role.getRoleId(), role.getRoleName());
|
||||||
|
}
|
||||||
|
return roleDetails;
|
||||||
|
}
|
||||||
|
|
||||||
public static Role fromString(String roleId) {
|
public static Role fromString(String roleId) {
|
||||||
for (Role role : Role.values()) {
|
for (Role role : Role.values()) {
|
||||||
if (role.getRoleId().equalsIgnoreCase(roleId)) {
|
if (role.getRoleId().equalsIgnoreCase(roleId)) {
|
||||||
|
|||||||
@@ -44,6 +44,9 @@ public class User {
|
|||||||
@Column(name = "isFirstLogin")
|
@Column(name = "isFirstLogin")
|
||||||
private Boolean isFirstLogin = false;
|
private Boolean isFirstLogin = false;
|
||||||
|
|
||||||
|
@Column(name = "roleName")
|
||||||
|
private String roleName;
|
||||||
|
|
||||||
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "user")
|
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "user")
|
||||||
private Set<Authority> authorities = new HashSet<>();
|
private Set<Authority> authorities = new HashSet<>();
|
||||||
|
|
||||||
@@ -53,6 +56,10 @@ public class User {
|
|||||||
@CollectionTable(name = "user_settings", joinColumns = @JoinColumn(name = "user_id"))
|
@CollectionTable(name = "user_settings", joinColumns = @JoinColumn(name = "user_id"))
|
||||||
private Map<String, String> settings = new HashMap<>(); // Key-value pairs of settings.
|
private Map<String, String> settings = new HashMap<>(); // Key-value pairs of settings.
|
||||||
|
|
||||||
|
public String getRoleName() {
|
||||||
|
return Role.getRoleNameByRoleId(getRolesAsString());
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isFirstLogin() {
|
public boolean isFirstLogin() {
|
||||||
return isFirstLogin != null && isFirstLogin;
|
return isFirstLogin != null && isFirstLogin;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,13 +33,13 @@ public class PDFWithPageNums extends PDFFile {
|
|||||||
// TODO Auto-generated catch block
|
// TODO Auto-generated catch block
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
return GeneralUtils.parsePageString(pageNumbers, pageCount, zeroCount);
|
return GeneralUtils.parsePageList(pageNumbers, pageCount, zeroCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Hidden
|
@Hidden
|
||||||
public List<Integer> getPageNumbersList(PDDocument doc, boolean zeroCount) {
|
public List<Integer> getPageNumbersList(PDDocument doc, boolean zeroCount) {
|
||||||
int pageCount = 0;
|
int pageCount = 0;
|
||||||
pageCount = doc.getNumberOfPages();
|
pageCount = doc.getNumberOfPages();
|
||||||
return GeneralUtils.parsePageString(pageNumbers, pageCount, zeroCount);
|
return GeneralUtils.parsePageList(pageNumbers, pageCount, zeroCount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,4 +15,7 @@ public class SplitPdfBySectionsRequest extends PDFFile {
|
|||||||
|
|
||||||
@Schema(description = "Number of vertical divisions for each PDF page", example = "2")
|
@Schema(description = "Number of vertical divisions for each PDF page", example = "2")
|
||||||
private int verticalDivisions;
|
private int verticalDivisions;
|
||||||
|
|
||||||
|
@Schema(description = "Merge the split documents into a single PDF", example = "true")
|
||||||
|
private boolean merge;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,16 @@ public class TextFinder extends PDFTextStripper {
|
|||||||
private final boolean wholeWordSearch;
|
private final boolean wholeWordSearch;
|
||||||
private final List<PDFText> textOccurrences = new ArrayList<>();
|
private final List<PDFText> textOccurrences = new ArrayList<>();
|
||||||
|
|
||||||
|
private class MatchInfo {
|
||||||
|
int startIndex;
|
||||||
|
int matchLength;
|
||||||
|
|
||||||
|
MatchInfo(int startIndex, int matchLength) {
|
||||||
|
this.startIndex = startIndex;
|
||||||
|
this.matchLength = matchLength;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public TextFinder(String searchText, boolean useRegex, boolean wholeWordSearch)
|
public TextFinder(String searchText, boolean useRegex, boolean wholeWordSearch)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
this.searchText = searchText.toLowerCase();
|
this.searchText = searchText.toLowerCase();
|
||||||
@@ -27,36 +37,37 @@ public class TextFinder extends PDFTextStripper {
|
|||||||
setSortByPosition(true);
|
setSortByPosition(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Integer> findOccurrencesInText(String searchText, String content) {
|
private List<MatchInfo> findOccurrencesInText(String searchText, String content) {
|
||||||
List<Integer> indexes = new ArrayList<>();
|
List<MatchInfo> matches = new ArrayList<>();
|
||||||
|
|
||||||
Pattern pattern;
|
Pattern pattern;
|
||||||
|
|
||||||
if (useRegex) {
|
if (useRegex) {
|
||||||
// Use regex-based search
|
// Use regex-based search
|
||||||
pattern =
|
pattern =
|
||||||
wholeWordSearch
|
wholeWordSearch
|
||||||
? Pattern.compile("(\\b|_|\\.)" + searchText + "(\\b|_|\\.)")
|
? Pattern.compile("\\b" + searchText + "\\b")
|
||||||
: Pattern.compile(searchText);
|
: Pattern.compile(searchText);
|
||||||
} else {
|
} else {
|
||||||
// Use normal text search
|
// Use normal text search
|
||||||
pattern =
|
pattern =
|
||||||
wholeWordSearch
|
wholeWordSearch
|
||||||
? Pattern.compile(
|
? Pattern.compile("\\b" + Pattern.quote(searchText) + "\\b")
|
||||||
"(\\b|_|\\.)" + Pattern.quote(searchText) + "(\\b|_|\\.)")
|
|
||||||
: Pattern.compile(Pattern.quote(searchText));
|
: Pattern.compile(Pattern.quote(searchText));
|
||||||
}
|
}
|
||||||
|
|
||||||
Matcher matcher = pattern.matcher(content);
|
Matcher matcher = pattern.matcher(content);
|
||||||
while (matcher.find()) {
|
while (matcher.find()) {
|
||||||
indexes.add(matcher.start());
|
matches.add(new MatchInfo(matcher.start(), matcher.end() - matcher.start()));
|
||||||
}
|
}
|
||||||
return indexes;
|
return matches;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void writeString(String text, List<TextPosition> textPositions) {
|
protected void writeString(String text, List<TextPosition> textPositions) {
|
||||||
for (Integer index : findOccurrencesInText(searchText, text.toLowerCase())) {
|
for (MatchInfo match : findOccurrencesInText(searchText, text.toLowerCase())) {
|
||||||
if (index + searchText.length() <= textPositions.size()) {
|
int index = match.startIndex;
|
||||||
|
if (index + match.matchLength <= textPositions.size()) {
|
||||||
// Initial values based on the first character
|
// Initial values based on the first character
|
||||||
TextPosition first = textPositions.get(index);
|
TextPosition first = textPositions.get(index);
|
||||||
float minX = first.getX();
|
float minX = first.getX();
|
||||||
@@ -65,7 +76,7 @@ public class TextFinder extends PDFTextStripper {
|
|||||||
float maxY = first.getY() + first.getHeight();
|
float maxY = first.getY() + first.getHeight();
|
||||||
|
|
||||||
// Loop over the rest of the characters and adjust bounding box values
|
// Loop over the rest of the characters and adjust bounding box values
|
||||||
for (int i = index; i < index + searchText.length(); i++) {
|
for (int i = index; i < index + match.matchLength; i++) {
|
||||||
TextPosition position = textPositions.get(i);
|
TextPosition position = textPositions.get(i);
|
||||||
minX = Math.min(minX, position.getX());
|
minX = Math.min(minX, position.getX());
|
||||||
minY = Math.min(minY, position.getY());
|
minY = Math.min(minY, position.getY());
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
|||||||
import stirling.software.SPDF.model.User;
|
import stirling.software.SPDF.model.User;
|
||||||
|
|
||||||
public interface UserRepository extends JpaRepository<User, String> {
|
public interface UserRepository extends JpaRepository<User, String> {
|
||||||
|
Optional<User> findByUsernameIgnoreCase(String username);
|
||||||
|
|
||||||
Optional<User> findByUsername(String username);
|
Optional<User> findByUsername(String username);
|
||||||
|
|
||||||
User findByApiKey(String apiKey);
|
User findByApiKey(String apiKey);
|
||||||
|
|||||||
@@ -12,11 +12,12 @@ import java.nio.file.Paths;
|
|||||||
import java.nio.file.SimpleFileVisitor;
|
import java.nio.file.SimpleFileVisitor;
|
||||||
import java.nio.file.attribute.BasicFileAttributes;
|
import java.nio.file.attribute.BasicFileAttributes;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import com.fathzer.soft.javaluator.DoubleEvaluator;
|
||||||
|
|
||||||
import io.github.pixee.security.HostValidator;
|
import io.github.pixee.security.HostValidator;
|
||||||
import io.github.pixee.security.Urls;
|
import io.github.pixee.security.Urls;
|
||||||
|
|
||||||
@@ -115,91 +116,115 @@ public class GeneralUtils {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Integer> parsePageString(String pageOrder, int totalPages) {
|
public static List<Integer> parsePageList(String pages, int totalPages, boolean oneBased) {
|
||||||
return parsePageString(pageOrder, totalPages, false);
|
if (pages == null) {
|
||||||
|
return List.of(1); // Default to first page if input is null
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return parsePageList(pages.split(","), totalPages, oneBased);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
return List.of(1); // Default to first page if input is invalid
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Integer> parsePageString(
|
public static List<Integer> parsePageList(String[] pages, int totalPages) {
|
||||||
String pageOrder, int totalPages, boolean isOneBased) {
|
return parsePageList(pages, totalPages, false);
|
||||||
if (pageOrder == null || pageOrder.isEmpty()) {
|
|
||||||
return Collections.singletonList(1);
|
|
||||||
}
|
|
||||||
if (pageOrder.matches("\\d+")) {
|
|
||||||
// Convert the single number string to an integer and return it in a list
|
|
||||||
return Collections.singletonList(Integer.parseInt(pageOrder));
|
|
||||||
}
|
|
||||||
return parsePageList(pageOrder.split(","), totalPages, isOneBased);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Integer> parsePageList(String[] pageOrderArr, int totalPages) {
|
public static List<Integer> parsePageList(String[] pages, int totalPages, boolean oneBased) {
|
||||||
return parsePageList(pageOrderArr, totalPages, false);
|
List<Integer> result = new ArrayList<>();
|
||||||
}
|
int offset = oneBased ? 1 : 0;
|
||||||
|
for (String page : pages) {
|
||||||
|
if ("all".equalsIgnoreCase(page)) {
|
||||||
|
|
||||||
public static List<Integer> parsePageList(
|
|
||||||
String[] pageOrderArr, int totalPages, boolean isOneBased) {
|
|
||||||
List<Integer> newPageOrder = new ArrayList<>();
|
|
||||||
|
|
||||||
int adjustmentFactor = isOneBased ? 1 : 0;
|
|
||||||
|
|
||||||
// loop through the page order array
|
|
||||||
for (String element : pageOrderArr) {
|
|
||||||
if ("all".equalsIgnoreCase(element)) {
|
|
||||||
for (int i = 0; i < totalPages; i++) {
|
for (int i = 0; i < totalPages; i++) {
|
||||||
newPageOrder.add(i + adjustmentFactor);
|
result.add(i + offset);
|
||||||
}
|
}
|
||||||
// As all pages are already added, no need to check further
|
} else if (page.contains(",")) {
|
||||||
break;
|
// Split the string into parts, could be single pages or ranges
|
||||||
} else if (element.matches("\\d*n\\+?-?\\d*|\\d*\\+?n")) {
|
String[] parts = page.split(",");
|
||||||
// Handle page order as a function
|
for (String part : parts) {
|
||||||
int coefficient = 0;
|
result.addAll(handlePart(part, totalPages, offset));
|
||||||
int constant = 0;
|
|
||||||
boolean coefficientExists = false;
|
|
||||||
boolean constantExists = false;
|
|
||||||
|
|
||||||
if (element.contains("n")) {
|
|
||||||
String[] parts = element.split("n");
|
|
||||||
if (!"".equals(parts[0]) && parts[0] != null) {
|
|
||||||
coefficient = Integer.parseInt(parts[0]);
|
|
||||||
coefficientExists = true;
|
|
||||||
}
|
|
||||||
if (parts.length > 1 && !"".equals(parts[1]) && parts[1] != null) {
|
|
||||||
constant = Integer.parseInt(parts[1]);
|
|
||||||
constantExists = true;
|
|
||||||
}
|
|
||||||
} else if (element.contains("+")) {
|
|
||||||
constant = Integer.parseInt(element.replace("+", ""));
|
|
||||||
constantExists = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 1; i <= totalPages; i++) {
|
|
||||||
int pageNum = coefficientExists ? coefficient * i : i;
|
|
||||||
pageNum += constantExists ? constant : 0;
|
|
||||||
|
|
||||||
if (pageNum <= totalPages && pageNum > 0) {
|
|
||||||
newPageOrder.add(pageNum - adjustmentFactor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (element.contains("-")) {
|
|
||||||
// split the range into start and end page
|
|
||||||
String[] range = element.split("-");
|
|
||||||
int start = Integer.parseInt(range[0]);
|
|
||||||
int end = Integer.parseInt(range[1]);
|
|
||||||
// check if the end page is greater than total pages
|
|
||||||
if (end > totalPages) {
|
|
||||||
end = totalPages;
|
|
||||||
}
|
|
||||||
// loop through the range of pages
|
|
||||||
for (int j = start; j <= end; j++) {
|
|
||||||
// print the current index
|
|
||||||
newPageOrder.add(j - adjustmentFactor);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// if the element is a single page
|
result.addAll(handlePart(page, totalPages, offset));
|
||||||
newPageOrder.add(Integer.parseInt(element) - adjustmentFactor);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return new ArrayList<>(
|
||||||
|
new java.util.LinkedHashSet<>(result)); // Remove duplicates and maintain order
|
||||||
|
}
|
||||||
|
|
||||||
return newPageOrder;
|
public static List<Integer> evaluateNFunc(String expression, int maxValue) {
|
||||||
|
List<Integer> results = new ArrayList<>();
|
||||||
|
DoubleEvaluator evaluator = new DoubleEvaluator();
|
||||||
|
|
||||||
|
// Validate the expression
|
||||||
|
if (!expression.matches("[0-9n+\\-*/() ]+")) {
|
||||||
|
throw new IllegalArgumentException("Invalid expression");
|
||||||
|
}
|
||||||
|
|
||||||
|
int n = 0;
|
||||||
|
while (true) {
|
||||||
|
// Replace 'n' with the current value of n, correctly handling numbers before 'n'
|
||||||
|
String sanitizedExpression = insertMultiplicationBeforeN(expression, n);
|
||||||
|
Double result = evaluator.evaluate(sanitizedExpression);
|
||||||
|
|
||||||
|
// Check if the result is null or not within bounds
|
||||||
|
if (result == null || result <= 0 || result.intValue() > maxValue) {
|
||||||
|
if (n != 0) break;
|
||||||
|
} else {
|
||||||
|
results.add(result.intValue());
|
||||||
|
}
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String insertMultiplicationBeforeN(String expression, int nValue) {
|
||||||
|
// Insert multiplication between a number and 'n' (e.g., "4n" becomes "4*n")
|
||||||
|
String withMultiplication = expression.replaceAll("(\\d)n", "$1*n");
|
||||||
|
// Now replace 'n' with its current value
|
||||||
|
return withMultiplication.replaceAll("n", String.valueOf(nValue));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<Integer> handlePart(String part, int totalPages, int offset) {
|
||||||
|
List<Integer> partResult = new ArrayList<>();
|
||||||
|
|
||||||
|
// First check for n-syntax because it should not be processed as a range
|
||||||
|
if (part.contains("n")) {
|
||||||
|
partResult = evaluateNFunc(part, totalPages);
|
||||||
|
// Adjust the results according to the offset
|
||||||
|
for (int i = 0; i < partResult.size(); i++) {
|
||||||
|
int adjustedValue = partResult.get(i) - 1 + offset;
|
||||||
|
partResult.set(i, adjustedValue);
|
||||||
|
}
|
||||||
|
} else if (part.contains("-")) {
|
||||||
|
// Process ranges only if it's not n-syntax
|
||||||
|
String[] rangeParts = part.split("-");
|
||||||
|
try {
|
||||||
|
int start = Integer.parseInt(rangeParts[0]);
|
||||||
|
int end = Integer.parseInt(rangeParts[1]);
|
||||||
|
for (int i = start; i <= end; i++) {
|
||||||
|
if (i >= 1 && i <= totalPages) {
|
||||||
|
partResult.add(i - 1 + offset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
// Range is invalid, ignore this part
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// This is a single page number
|
||||||
|
try {
|
||||||
|
int pageNum = Integer.parseInt(part.trim());
|
||||||
|
if (pageNum >= 1 && pageNum <= totalPages) {
|
||||||
|
partResult.add(pageNum - 1 + offset);
|
||||||
|
}
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
// Ignore invalid numbers
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return partResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean createDir(String path) {
|
public static boolean createDir(String path) {
|
||||||
|
|||||||
@@ -25,6 +25,71 @@ import io.github.pixee.security.Filenames;
|
|||||||
import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
|
import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
|
||||||
|
|
||||||
public class PDFToFile {
|
public class PDFToFile {
|
||||||
|
|
||||||
|
public ResponseEntity<byte[]> processPdfToHtml(MultipartFile inputFile)
|
||||||
|
throws IOException, InterruptedException {
|
||||||
|
if (!"application/pdf".equals(inputFile.getContentType())) {
|
||||||
|
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the original PDF file name without the extension
|
||||||
|
String originalPdfFileName = Filenames.toSimpleFileName(inputFile.getOriginalFilename());
|
||||||
|
String pdfBaseName = originalPdfFileName.substring(0, originalPdfFileName.lastIndexOf('.'));
|
||||||
|
|
||||||
|
Path tempInputFile = null;
|
||||||
|
Path tempOutputDir = null;
|
||||||
|
byte[] fileBytes;
|
||||||
|
String fileName = "temp.file";
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Save the uploaded file to a temporary location
|
||||||
|
tempInputFile = Files.createTempFile("input_", ".pdf");
|
||||||
|
Files.copy(
|
||||||
|
inputFile.getInputStream(), tempInputFile, StandardCopyOption.REPLACE_EXISTING);
|
||||||
|
|
||||||
|
// Prepare the output directory
|
||||||
|
tempOutputDir = Files.createTempDirectory("output_");
|
||||||
|
|
||||||
|
// Run the pdftohtml command with complex output
|
||||||
|
List<String> command =
|
||||||
|
new ArrayList<>(
|
||||||
|
Arrays.asList(
|
||||||
|
"pdftohtml", "-c", tempInputFile.toString(), pdfBaseName));
|
||||||
|
|
||||||
|
ProcessExecutorResult returnCode =
|
||||||
|
ProcessExecutor.getInstance(ProcessExecutor.Processes.PDFTOHTML)
|
||||||
|
.runCommandWithOutputHandling(command, tempOutputDir.toFile());
|
||||||
|
|
||||||
|
// Get output files
|
||||||
|
List<File> outputFiles = Arrays.asList(tempOutputDir.toFile().listFiles());
|
||||||
|
|
||||||
|
// Return output files in a ZIP archive
|
||||||
|
fileName = pdfBaseName + "ToHtml.zip";
|
||||||
|
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
||||||
|
ZipOutputStream zipOutputStream = new ZipOutputStream(byteArrayOutputStream);
|
||||||
|
|
||||||
|
for (File outputFile : outputFiles) {
|
||||||
|
ZipEntry entry = new ZipEntry(outputFile.getName());
|
||||||
|
zipOutputStream.putNextEntry(entry);
|
||||||
|
FileInputStream fis = new FileInputStream(outputFile);
|
||||||
|
IOUtils.copy(fis, zipOutputStream);
|
||||||
|
fis.close();
|
||||||
|
zipOutputStream.closeEntry();
|
||||||
|
}
|
||||||
|
|
||||||
|
zipOutputStream.close();
|
||||||
|
fileBytes = byteArrayOutputStream.toByteArray();
|
||||||
|
|
||||||
|
} finally {
|
||||||
|
// Clean up the temporary files
|
||||||
|
if (tempInputFile != null) Files.delete(tempInputFile);
|
||||||
|
if (tempOutputDir != null) FileUtils.deleteDirectory(tempOutputDir.toFile());
|
||||||
|
}
|
||||||
|
|
||||||
|
return WebResponseUtils.bytesToWebResponse(
|
||||||
|
fileBytes, fileName, MediaType.APPLICATION_OCTET_STREAM);
|
||||||
|
}
|
||||||
|
|
||||||
public ResponseEntity<byte[]> processPdfToOfficeFormat(
|
public ResponseEntity<byte[]> processPdfToOfficeFormat(
|
||||||
MultipartFile inputFile, String outputFormat, String libreOfficeFilter)
|
MultipartFile inputFile, String outputFormat, String libreOfficeFilter)
|
||||||
throws IOException, InterruptedException {
|
throws IOException, InterruptedException {
|
||||||
@@ -39,17 +104,7 @@ public class PDFToFile {
|
|||||||
|
|
||||||
// Validate output format
|
// Validate output format
|
||||||
List<String> allowedFormats =
|
List<String> allowedFormats =
|
||||||
Arrays.asList(
|
Arrays.asList("doc", "docx", "odt", "ppt", "pptx", "odp", "rtf", "xml", "txt:Text");
|
||||||
"doc",
|
|
||||||
"docx",
|
|
||||||
"odt",
|
|
||||||
"ppt",
|
|
||||||
"pptx",
|
|
||||||
"odp",
|
|
||||||
"rtf",
|
|
||||||
"html",
|
|
||||||
"xml",
|
|
||||||
"txt:Text");
|
|
||||||
if (!allowedFormats.contains(outputFormat)) {
|
if (!allowedFormats.contains(outputFormat)) {
|
||||||
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -214,6 +214,7 @@ public class PdfUtils {
|
|||||||
throws IOException, Exception {
|
throws IOException, Exception {
|
||||||
try (PDDocument document = Loader.loadPDF(inputStream)) {
|
try (PDDocument document = Loader.loadPDF(inputStream)) {
|
||||||
PDFRenderer pdfRenderer = new PDFRenderer(document);
|
PDFRenderer pdfRenderer = new PDFRenderer(document);
|
||||||
|
pdfRenderer.setSubsamplingAllowed(true);
|
||||||
int pageCount = document.getNumberOfPages();
|
int pageCount = document.getNumberOfPages();
|
||||||
|
|
||||||
// Create a ByteArrayOutputStream to save the image(s) to
|
// Create a ByteArrayOutputStream to save the image(s) to
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ public class ProcessExecutor {
|
|||||||
|
|
||||||
public enum Processes {
|
public enum Processes {
|
||||||
LIBRE_OFFICE,
|
LIBRE_OFFICE,
|
||||||
|
PDFTOHTML,
|
||||||
OCR_MY_PDF,
|
OCR_MY_PDF,
|
||||||
PYTHON_OPENCV,
|
PYTHON_OPENCV,
|
||||||
GHOSTSCRIPT,
|
GHOSTSCRIPT,
|
||||||
@@ -45,6 +46,7 @@ public class ProcessExecutor {
|
|||||||
int semaphoreLimit =
|
int semaphoreLimit =
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case LIBRE_OFFICE -> 1;
|
case LIBRE_OFFICE -> 1;
|
||||||
|
case PDFTOHTML -> 1;
|
||||||
case OCR_MY_PDF -> 2;
|
case OCR_MY_PDF -> 2;
|
||||||
case PYTHON_OPENCV -> 8;
|
case PYTHON_OPENCV -> 8;
|
||||||
case GHOSTSCRIPT -> 16;
|
case GHOSTSCRIPT -> 16;
|
||||||
@@ -56,6 +58,7 @@ public class ProcessExecutor {
|
|||||||
long timeoutMinutes =
|
long timeoutMinutes =
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case LIBRE_OFFICE -> 30;
|
case LIBRE_OFFICE -> 30;
|
||||||
|
case PDFTOHTML -> 5;
|
||||||
case OCR_MY_PDF -> 30;
|
case OCR_MY_PDF -> 30;
|
||||||
case PYTHON_OPENCV -> 30;
|
case PYTHON_OPENCV -> 30;
|
||||||
case GHOSTSCRIPT -> 5;
|
case GHOSTSCRIPT -> 5;
|
||||||
@@ -169,17 +172,20 @@ public class ProcessExecutor {
|
|||||||
errorReaderThread.join();
|
errorReaderThread.join();
|
||||||
outputReaderThread.join();
|
outputReaderThread.join();
|
||||||
|
|
||||||
if (!liveUpdates) {
|
|
||||||
if (outputLines.size() > 0) {
|
if (outputLines.size() > 0) {
|
||||||
String outputMessage = String.join("\n", outputLines);
|
String outputMessage = String.join("\n", outputLines);
|
||||||
messages += outputMessage;
|
messages += outputMessage;
|
||||||
|
if (!liveUpdates) {
|
||||||
logger.info("Command output:\n" + outputMessage);
|
logger.info("Command output:\n" + outputMessage);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (errorLines.size() > 0) {
|
if (errorLines.size() > 0) {
|
||||||
String errorMessage = String.join("\n", errorLines);
|
String errorMessage = String.join("\n", errorLines);
|
||||||
messages += errorMessage;
|
messages += errorMessage;
|
||||||
|
if (!liveUpdates) {
|
||||||
logger.warn("Command error output:\n" + errorMessage);
|
logger.warn("Command error output:\n" + errorMessage);
|
||||||
|
}
|
||||||
if (exitCode != 0) {
|
if (exitCode != 0) {
|
||||||
throw new IOException(
|
throw new IOException(
|
||||||
"Command process failed with exit code "
|
"Command process failed with exit code "
|
||||||
@@ -188,8 +194,13 @@ public class ProcessExecutor {
|
|||||||
+ errorMessage);
|
+ errorMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (exitCode != 0) {
|
|
||||||
throw new IOException("Command process failed with exit code " + exitCode);
|
if (exitCode != 0) {
|
||||||
|
throw new IOException(
|
||||||
|
"Command process failed with exit code "
|
||||||
|
+ exitCode
|
||||||
|
+ "\nLogs: "
|
||||||
|
+ messages);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
semaphore.release();
|
semaphore.release();
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
fileToPDF.fileTypesList=Microsoft Word: (DOC, DOCX, DOT, DOTX) <br> \
|
|
||||||
Microsoft Excel: (CSV, XLS, XLSX, XLT, XLTX, SLK, DIF) <br> \
|
|
||||||
Microsoft PowerPoint: (PPT, PPTX) <br> \
|
|
||||||
OpenDocument Formats: (ODT, OTT, ODS, OTS, ODP, OTP, ODG, OTG) <br> \
|
|
||||||
Plain Text: (TXT, TEXT, XML) <br> \
|
|
||||||
Rich Text Format: (RTF) <br> \
|
|
||||||
Images: (BMP, GIF, JPEG, PNG, TIF, PBM, PGM, PPM, RAS, XBM, XPM, SVG, SVM, WMF) <br> \
|
|
||||||
HTML: (HTML) <br> \
|
|
||||||
Lotus Word Pro: (LWP) <br> \
|
|
||||||
StarOffice formats: (SDA, SDC, SDD, SDW, STC, STD, STI, STW, SXD, SXG, SXI, SXW) <br> \
|
|
||||||
Other formats: (DBF, FODS, VSD, VOR, VOR3, VOR4, UOP, PCT, PS, PDF)
|
|
||||||
|
|||||||
@@ -13,16 +13,17 @@ processTimeWarning=تحذير: يمكن أن تستغرق هذه العملية
|
|||||||
pageOrderPrompt=ترتيب الصفحات (أدخل قائمة بأرقام الصفحات مفصولة بفواصل):
|
pageOrderPrompt=ترتيب الصفحات (أدخل قائمة بأرقام الصفحات مفصولة بفواصل):
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
||||||
goToPage=اذهب
|
goToPage=اذهب
|
||||||
true=\u0635\u062D\u064A\u062D
|
true=صحيح
|
||||||
false=\u062E\u0637\u0623
|
false=خطأ
|
||||||
unknown=\u063A\u064A\u0631 \u0645\u0639\u0631\u0648\u0641
|
unknown=غير معروف
|
||||||
save=\u062D\u0641\u0638
|
save=حفظ
|
||||||
close=\u0625\u063A\u0644\u0627\u0642
|
saveToBrowser=Save to Browser
|
||||||
|
close=إغلاق
|
||||||
filesSelected=الملفات المحددة
|
filesSelected=الملفات المحددة
|
||||||
noFavourites=لم تتم إضافة أي مفضلات
|
noFavourites=لم تتم إضافة أي مفضلات
|
||||||
downloadComplete=Download Complete
|
downloadComplete=Download Complete
|
||||||
bored=الانتظار بالملل؟
|
bored=الانتظار بالملل؟
|
||||||
alphabet=\u0627\u0644\u0623\u0628\u062C\u062F\u064A\u0629
|
alphabet=الأبجدية
|
||||||
downloadPdf=تنزيل PDF
|
downloadPdf=تنزيل PDF
|
||||||
text=نص
|
text=نص
|
||||||
font=الخط
|
font=الخط
|
||||||
@@ -53,16 +54,32 @@ notAuthenticatedMessage=User not authenticated.
|
|||||||
userNotFoundMessage=User not found.
|
userNotFoundMessage=User not found.
|
||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Current password is incorrect.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=New Username already exists.
|
||||||
|
invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers.
|
||||||
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=Pipeline Menu (Beta)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=Upload Custom
|
||||||
pipeline.configureButton=Configure
|
pipeline.configureButton=Configure
|
||||||
pipeline.defaultOption=Custom
|
pipeline.defaultOption=Custom
|
||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
|
pipeline.help=Pipeline Help
|
||||||
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -88,19 +105,19 @@ navbar.security=الأمان
|
|||||||
navbar.other=أخرى
|
navbar.other=أخرى
|
||||||
navbar.darkmode=الوضع الداكن
|
navbar.darkmode=الوضع الداكن
|
||||||
navbar.pageOps=عمليات الصفحة
|
navbar.pageOps=عمليات الصفحة
|
||||||
navbar.settings=\u0625\u0639\u062F\u0627\u062F\u0627\u062A
|
navbar.settings=إعدادات
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# SETTINGS #
|
# SETTINGS #
|
||||||
#############
|
#############
|
||||||
settings.title=\u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A
|
settings.title=الإعدادات
|
||||||
settings.update=\u0627\u0644\u062A\u062D\u062F\u064A\u062B \u0645\u062A\u0627\u062D
|
settings.update=التحديث متاح
|
||||||
settings.appVersion=\u0625\u0635\u062F\u0627\u0631 \u0627\u0644\u062A\u0637\u0628\u064A\u0642:
|
settings.appVersion=إصدار التطبيق:
|
||||||
settings.downloadOption.title=\u062A\u062D\u062F\u064A\u062F \u062E\u064A\u0627\u0631 \u0627\u0644\u062A\u0646\u0632\u064A\u0644 (\u0644\u0644\u062A\u0646\u0632\u064A\u0644\u0627\u062A \u0630\u0627\u062A \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0648\u0627\u062D\u062F \u063A\u064A\u0631 \u0627\u0644\u0645\u0636\u063A\u0648\u0637):
|
settings.downloadOption.title=تحديد خيار التنزيل (للتنزيلات ذات الملف الواحد غير المضغوط):
|
||||||
settings.downloadOption.1=\u0641\u062A\u062D \u0641\u064A \u0646\u0641\u0633 \u0627\u0644\u0646\u0627\u0641\u0630\u0629
|
settings.downloadOption.1=فتح في نفس النافذة
|
||||||
settings.downloadOption.2=\u0641\u062A\u062D \u0641\u064A \u0646\u0627\u0641\u0630\u0629 \u062C\u062F\u064A\u062F\u0629
|
settings.downloadOption.2=فتح في نافذة جديدة
|
||||||
settings.downloadOption.3=\u062A\u0646\u0632\u064A\u0644 \u0627\u0644\u0645\u0644\u0641
|
settings.downloadOption.3=تنزيل الملف
|
||||||
settings.zipThreshold=\u0645\u0644\u0641\u0627\u062A \u0645\u0636\u063A\u0648\u0637\u0629 \u0639\u0646\u062F \u062A\u062C\u0627\u0648\u0632 \u0639\u062F\u062F \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u0645 \u062A\u0646\u0632\u064A\u0644\u0647\u0627
|
settings.zipThreshold=ملفات مضغوطة عند تجاوز عدد الملفات التي تم تنزيلها
|
||||||
settings.signOut=Sign Out
|
settings.signOut=Sign Out
|
||||||
settings.accountSettings=Account Settings
|
settings.accountSettings=Account Settings
|
||||||
|
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=Account Settings
|
|||||||
|
|
||||||
changeCreds.title=Change Credentials
|
changeCreds.title=Change Credentials
|
||||||
changeCreds.header=Update Your Account Details
|
changeCreds.header=Update Your Account Details
|
||||||
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted)
|
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
||||||
changeCreds.newUsername=New Username
|
changeCreds.newUsername=New Username
|
||||||
changeCreds.oldPassword=Current Password
|
changeCreds.oldPassword=Current Password
|
||||||
changeCreds.newPassword=New Password
|
changeCreds.newPassword=New Password
|
||||||
@@ -143,13 +160,16 @@ adminUserSettings.header=Admin User Control Settings
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=User
|
adminUserSettings.user=User
|
||||||
adminUserSettings.addUser=Add New User
|
adminUserSettings.addUser=Add New User
|
||||||
|
adminUserSettings.usernameInfo=Username must only contain letters and numbers, no spaces or special characters.
|
||||||
adminUserSettings.roles=Roles
|
adminUserSettings.roles=Roles
|
||||||
adminUserSettings.role=Role
|
adminUserSettings.role=Role
|
||||||
adminUserSettings.actions=Actions
|
adminUserSettings.actions=Actions
|
||||||
adminUserSettings.apiUser=Limited API User
|
adminUserSettings.apiUser=Limited API User
|
||||||
|
adminUserSettings.extraApiUser=Additional Limited API User
|
||||||
adminUserSettings.webOnlyUser=Web Only User
|
adminUserSettings.webOnlyUser=Web Only User
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=Demo User (No custom settings)
|
||||||
adminUserSettings.forceChange=Force user to change username/password on login
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
|
adminUserSettings.forceChange=Force user to change password on login
|
||||||
adminUserSettings.submit=Save User
|
adminUserSettings.submit=Save User
|
||||||
|
|
||||||
#############
|
#############
|
||||||
@@ -223,25 +243,25 @@ home.compressPdfs.desc=ضغط ملفات PDF لتقليل حجم الملف.
|
|||||||
compressPdfs.tags=squish,small,tiny
|
compressPdfs.tags=squish,small,tiny
|
||||||
|
|
||||||
|
|
||||||
home.changeMetadata.title=\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0648\u0635\u0641\u064A\u0629
|
home.changeMetadata.title=تغيير البيانات الوصفية
|
||||||
home.changeMetadata.desc=\u062A\u063A\u064A\u064A\u0631 / \u0625\u0632\u0627\u0644\u0629 / \u0625\u0636\u0627\u0641\u0629 \u0628\u064A\u0627\u0646\u0627\u062A \u0623\u0648\u0644\u064A\u0629 \u0645\u0646 \u0645\u0633\u062A\u0646\u062F PDF
|
home.changeMetadata.desc=تغيير / إزالة / إضافة بيانات أولية من مستند PDF
|
||||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
||||||
|
|
||||||
home.fileToPDF.title=\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0645\u0644\u0641 \u0625\u0644\u0649 PDF
|
home.fileToPDF.title=تحويل الملف إلى PDF
|
||||||
home.fileToPDF.desc=\u062A\u062D\u0648\u064A\u0644 \u0623\u064A \u0645\u0644\u0641 \u062A\u0642\u0631\u064A\u0628\u0627 \u0625\u0644\u0649 PDF (DOCX \u0648PNG \u0648XLS \u0648PPT \u0648TXT \u0648\u0627\u0644\u0645\u0632\u064A\u062F)
|
home.fileToPDF.desc=تحويل أي ملف تقريبا إلى PDF (DOCX وPNG وXLS وPPT وTXT والمزيد)
|
||||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=\u062A\u0634\u063A\u064A\u0644 OCR \u0639\u0644\u0649 PDF \u0648 / \u0623\u0648 \u0645\u0633\u062D \u0636\u0648\u0626\u064A
|
home.ocr.title=تشغيل OCR على PDF و / أو مسح ضوئي
|
||||||
home.ocr.desc=\u064A\u0642\u0648\u0645 \u0628\u0631\u0646\u0627\u0645\u062C \u0627\u0644\u062A\u0646\u0638\u064A\u0641 \u0628\u0645\u0633\u062D \u0648\u0627\u0643\u062A\u0634\u0627\u0641 \u0627\u0644\u0646\u0635 \u0645\u0646 \u0627\u0644\u0635\u0648\u0631 \u062F\u0627\u062E\u0644 \u0645\u0644\u0641 PDF \u0648\u064A\u0639\u064A\u062F \u0625\u0636\u0627\u0641\u062A\u0647 \u0643\u0646\u0635
|
home.ocr.desc=يقوم برنامج التنظيف بمسح واكتشاف النص من الصور داخل ملف PDF ويعيد إضافته كنص
|
||||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
||||||
|
|
||||||
|
|
||||||
home.extractImages.title=\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631
|
home.extractImages.title=استخراج الصور
|
||||||
home.extractImages.desc=\u064A\u0633\u062A\u062E\u0631\u062C \u062C\u0645\u064A\u0639 \u0627\u0644\u0635\u0648\u0631 \u0645\u0646 \u0645\u0644\u0641 PDF \u0648\u064A\u062D\u0641\u0638\u0647\u0627 \u0641\u064A \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0628\u0631\u064A\u062F\u064A
|
home.extractImages.desc=يستخرج جميع الصور من ملف PDF ويحفظها في الرمز البريدي
|
||||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
||||||
|
|
||||||
home.pdfToPDFA.title=\u062A\u062D\u0648\u064A\u0644 \u0645\u0644\u0641\u0627\u062A PDF \u0625\u0644\u0649 PDF / A
|
home.pdfToPDFA.title=تحويل ملفات PDF إلى PDF / A
|
||||||
home.pdfToPDFA.desc=\u062A\u062D\u0648\u064A\u0644 PDF \u0625\u0644\u0649 PDF / A \u0644\u0644\u062A\u062E\u0632\u064A\u0646 \u0637\u0648\u064A\u0644 \u0627\u0644\u0645\u062F\u0649
|
home.pdfToPDFA.desc=تحويل PDF إلى PDF / A للتخزين طويل المدى
|
||||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
||||||
|
|
||||||
home.PDFToWord.title=تحويل PDF إلى Word
|
home.PDFToWord.title=تحويل PDF إلى Word
|
||||||
@@ -393,6 +413,15 @@ home.AddStampRequest.desc=Add text or add image stamps at set locations
|
|||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF to Book
|
||||||
|
home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Book to PDF
|
||||||
|
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Sign in
|
login.title=Sign in
|
||||||
|
login.header=Sign in
|
||||||
login.signin=Sign in
|
login.signin=Sign in
|
||||||
login.rememberme=Remember me
|
login.rememberme=Remember me
|
||||||
login.invalid=Invalid username or password.
|
login.invalid=Invalid username or password.
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=Convert To Single Page
|
|||||||
pageExtracter.title=Extract Pages
|
pageExtracter.title=Extract Pages
|
||||||
pageExtracter.header=Extract Pages
|
pageExtracter.header=Extract Pages
|
||||||
pageExtracter.submit=Extract
|
pageExtracter.submit=Extract
|
||||||
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=المستند 1
|
|||||||
compare.document.2=المستند 2
|
compare.document.2=المستند 2
|
||||||
compare.submit=يقارن
|
compare.submit=يقارن
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Books and Comics to PDF
|
||||||
|
BookToPDF.header=Book to PDF
|
||||||
|
BookToPDF.credit=Uses Calibre
|
||||||
|
BookToPDF.submit=Convert
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF to Book
|
||||||
|
PDFToBook.header=PDF to Book
|
||||||
|
PDFToBook.selectText.1=Format
|
||||||
|
PDFToBook.credit=Uses Calibre
|
||||||
|
PDFToBook.submit=Convert
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=تسجيل الدخول
|
sign.title=تسجيل الدخول
|
||||||
@@ -661,38 +704,38 @@ ScannerImageSplit.selectText.10=يضبط حجم الحدود المضافة وا
|
|||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=\u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 / \u062A\u0646\u0638\u064A\u0641 \u0627\u0644\u0645\u0633\u062D \u0627\u0644\u0636\u0648\u0626\u064A
|
ocr.title=التعرف الضوئي على الحروف / تنظيف المسح الضوئي
|
||||||
ocr.header=\u0645\u0633\u062D \u0627\u0644\u0645\u0633\u062D \u0627\u0644\u0636\u0648\u0626\u064A / \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 (\u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641)
|
ocr.header=مسح المسح الضوئي / التعرف الضوئي على الحروف (التعرف الضوئي على الحروف)
|
||||||
ocr.selectText.1=\u062D\u062F\u062F \u0627\u0644\u0644\u063A\u0627\u062A \u0627\u0644\u062A\u064A \u0633\u064A\u062A\u0645 \u0627\u0643\u062A\u0634\u0627\u0641\u0647\u0627 \u062F\u0627\u062E\u0644 \u0645\u0644\u0641 PDF (\u0627\u0644\u0644\u063A\u0627\u062A \u0627\u0644\u0645\u062F\u0631\u062C\u0629 \u0647\u064A \u062A\u0644\u0643 \u0627\u0644\u062A\u064A \u062A\u0645 \u0627\u0643\u062A\u0634\u0627\u0641\u0647\u0627 \u062D\u0627\u0644\u064A\u064B\u0627):
|
ocr.selectText.1=حدد اللغات التي سيتم اكتشافها داخل ملف PDF (اللغات المدرجة هي تلك التي تم اكتشافها حاليًا):
|
||||||
ocr.selectText.2=\u0625\u0646\u062A\u0627\u062C \u0645\u0644\u0641 \u0646\u0635\u064A \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0646\u0635 OCR \u0628\u062C\u0627\u0646\u0628 \u0645\u0644\u0641 PDF \u0627\u0644\u0630\u064A \u062A\u0645 \u0625\u0639\u062F\u0627\u062F\u0647 \u0628\u0648\u0627\u0633\u0637\u0629 OCR
|
ocr.selectText.2=إنتاج ملف نصي يحتوي على نص OCR بجانب ملف PDF الذي تم إعداده بواسطة OCR
|
||||||
ocr.selectText.3=\u062A\u0645 \u0645\u0633\u062D \u0627\u0644\u0635\u0641\u062D\u0627\u062A \u0627\u0644\u0635\u062D\u064A\u062D\u0629 \u0636\u0648\u0626\u064A\u064B\u0627 \u0628\u0632\u0627\u0648\u064A\u0629 \u0645\u0646\u062D\u0631\u0641\u0629 \u0639\u0646 \u0637\u0631\u064A\u0642 \u062A\u062F\u0648\u064A\u0631\u0647\u0627 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0641\u064A \u0645\u0643\u0627\u0646\u0647\u0627
|
ocr.selectText.3=تم مسح الصفحات الصحيحة ضوئيًا بزاوية منحرفة عن طريق تدويرها مرة أخرى في مكانها
|
||||||
ocr.selectText.4=\u0635\u0641\u062D\u0629 \u0646\u0638\u064A\u0641\u0629 \u0644\u0630\u0644\u0643 \u0645\u0646 \u063A\u064A\u0631 \u0627\u0644\u0645\u062D\u062A\u0645\u0644 \u0623\u0646 \u064A\u062C\u062F OCR \u0646\u0635\u064B\u0627 \u0641\u064A \u0636\u0648\u0636\u0627\u0621 \u0627\u0644\u062E\u0644\u0641\u064A\u0629. (\u0644\u0627 \u064A\u0648\u062C\u062F \u062A\u063A\u064A\u064A\u0631 \u0641\u064A \u0627\u0644\u0625\u062E\u0631\u0627\u062C)
|
ocr.selectText.4=صفحة نظيفة لذلك من غير المحتمل أن يجد OCR نصًا في ضوضاء الخلفية. (لا يوجد تغيير في الإخراج)
|
||||||
ocr.selectText.5=\u0635\u0641\u062D\u0629 \u0646\u0638\u064A\u0641\u0629 \u060C \u0644\u0630\u0644\u0643 \u0645\u0646 \u063A\u064A\u0631 \u0627\u0644\u0645\u062D\u062A\u0645\u0644 \u0623\u0646 \u064A\u062C\u062F OCR \u0646\u0635\u064B\u0627 \u0641\u064A \u0636\u0648\u0636\u0627\u0621 \u0627\u0644\u062E\u0644\u0641\u064A\u0629 \u060C \u0648\u064A\u062D\u0627\u0641\u0638 \u0639\u0644\u0649 \u0627\u0644\u062A\u0646\u0638\u064A\u0641 \u0641\u064A \u0627\u0644\u0625\u062E\u0631\u0627\u062C.
|
ocr.selectText.5=صفحة نظيفة ، لذلك من غير المحتمل أن يجد OCR نصًا في ضوضاء الخلفية ، ويحافظ على التنظيف في الإخراج.
|
||||||
ocr.selectText.6=\u064A\u062A\u062C\u0627\u0647\u0644 \u0627\u0644\u0635\u0641\u062D\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0646\u0635 \u062A\u0641\u0627\u0639\u0644\u064A \u060C \u0641\u0642\u0637 \u0635\u0641\u062D\u0627\u062A OCRs \u0627\u0644\u062A\u064A \u0647\u064A \u0635\u0648\u0631
|
ocr.selectText.6=يتجاهل الصفحات التي تحتوي على نص تفاعلي ، فقط صفحات OCRs التي هي صور
|
||||||
ocr.selectText.7=\u0641\u0631\u0636 \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 \u060C \u0633\u064A\u0624\u062F\u064A \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 \u0639\u0644\u0649 \u0643\u0644 \u0635\u0641\u062D\u0629 \u0625\u0644\u0649 \u0625\u0632\u0627\u0644\u0629 \u062C\u0645\u064A\u0639 \u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0646\u0635 \u0627\u0644\u0623\u0635\u0644\u064A
|
ocr.selectText.7=فرض التعرف الضوئي على الحروف ، سيؤدي التعرف الضوئي على الحروف على كل صفحة إلى إزالة جميع عناصر النص الأصلي
|
||||||
ocr.selectText.8=\u0639\u0627\u062F\u064A (\u062E\u0637\u0623 \u0625\u0630\u0627 \u0643\u0627\u0646 PDF \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0646\u0635)
|
ocr.selectText.8=عادي (خطأ إذا كان PDF يحتوي على نص)
|
||||||
ocr.selectText.9=\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0625\u0636\u0627\u0641\u064A\u0629
|
ocr.selectText.9=إعدادات إضافية
|
||||||
ocr.selectText.10=\u0648\u0636\u0639 \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641
|
ocr.selectText.10=وضع التعرف الضوئي على الحروف
|
||||||
ocr.selectText.11=إزالة الصور بعد التعرف الضوئي على الحروف (يزيل كل الصور ، يكون مفيدًا فقط إذا كان جزءًا من خطوة التحويل)
|
ocr.selectText.11=إزالة الصور بعد التعرف الضوئي على الحروف (يزيل كل الصور ، يكون مفيدًا فقط إذا كان جزءًا من خطوة التحويل)
|
||||||
ocr.selectText.12=نوع العرض (متقدم)
|
ocr.selectText.12=نوع العرض (متقدم)
|
||||||
ocr.help=\u064A\u0631\u062C\u0649 \u0642\u0631\u0627\u0621\u0629 \u0647\u0630\u0647 \u0627\u0644\u0648\u062B\u0627\u0626\u0642 \u062D\u0648\u0644 \u0643\u064A\u0641\u064A\u0629 \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0647\u0630\u0627 \u0644\u0644\u063A\u0627\u062A \u0623\u062E\u0631\u0649 \u0648 / \u0623\u0648 \u0627\u0644\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0644\u064A\u0633 \u0641\u064A \u0639\u0627\u0645\u0644 \u0627\u0644\u0625\u0631\u0633\u0627\u0621
|
ocr.help=يرجى قراءة هذه الوثائق حول كيفية استخدام هذا للغات أخرى و / أو الاستخدام ليس في عامل الإرساء
|
||||||
ocr.credit=\u062A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0647 \u0627\u0644\u062E\u062F\u0645\u0629 OCRmyPDF \u0648 Tesseract \u0644 OCR.
|
ocr.credit=تستخدم هذه الخدمة OCRmyPDF و Tesseract ل OCR.
|
||||||
ocr.submit=\u0645\u0639\u0627\u0644\u062C\u0629 PDF \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 OCR
|
ocr.submit=معالجة PDF باستخدام OCR
|
||||||
|
|
||||||
|
|
||||||
#extractImages
|
#extractImages
|
||||||
extractImages.title=\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631
|
extractImages.title=استخراج الصور
|
||||||
extractImages.header=\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631
|
extractImages.header=استخراج الصور
|
||||||
extractImages.selectText=\u062D\u062F\u062F \u062A\u0646\u0633\u064A\u0642 \u0627\u0644\u0635\u0648\u0631\u0629 \u0644\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0635\u0648\u0631 \u0627\u0644\u0645\u0633\u062A\u062E\u0631\u062C\u0629 \u0625\u0644\u0649
|
extractImages.selectText=حدد تنسيق الصورة لتحويل الصور المستخرجة إلى
|
||||||
extractImages.submit=\u0627\u0633\u062A\u062E\u0631\u0627\u062C
|
extractImages.submit=استخراج
|
||||||
|
|
||||||
|
|
||||||
#File to PDF
|
#File to PDF
|
||||||
fileToPDF.title=\u0645\u0644\u0641 \u0625\u0644\u0649 PDF
|
fileToPDF.title=ملف إلى PDF
|
||||||
fileToPDF.header=\u062A\u062D\u0648\u064A\u0644 \u0623\u064A \u0645\u0644\u0641 \u0625\u0644\u0649 PDF
|
fileToPDF.header=تحويل أي ملف إلى PDF
|
||||||
fileToPDF.credit=\u062A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0647 \u0627\u0644\u062E\u062F\u0645\u0629 \u0644\u064A\u0628\u0631 \u0623\u0648\u0641\u064A\u0633 \u0648\u0623\u0648\u0646\u0648\u0643\u0648\u0646\u0641 \u0644\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0645\u0644\u0641\u0627\u062A.
|
fileToPDF.credit=تستخدم هذه الخدمة ليبر أوفيس وأونوكونف لتحويل الملفات.
|
||||||
fileToPDF.supportedFileTypes=\u064A\u062C\u0628 \u0623\u0646 \u062A\u062A\u0636\u0645\u0646 \u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0627\u0644\u0645\u062F\u0639\u0648\u0645\u0629 \u0645\u0627 \u064A\u0644\u064A \u0648\u0644\u0643\u0646 \u0644\u0644\u062D\u0635\u0648\u0644 \u0639\u0644\u0649 \u0642\u0627\u0626\u0645\u0629 \u0645\u062D\u062F\u062B\u0629 \u0643\u0627\u0645\u0644\u0629 \u0628\u0627\u0644\u062A\u0646\u0633\u064A\u0642\u0627\u062A \u0627\u0644\u0645\u062F\u0639\u0648\u0645\u0629 \u060C \u064A\u0631\u062C\u0649 \u0627\u0644\u0631\u062C\u0648\u0639 \u0625\u0644\u0649 \u0648\u062B\u0627\u0626\u0642 LibreOffice
|
fileToPDF.supportedFileTypes=يجب أن تتضمن أنواع الملفات المدعومة ما يلي ولكن للحصول على قائمة محدثة كاملة بالتنسيقات المدعومة ، يرجى الرجوع إلى وثائق LibreOffice
|
||||||
fileToPDF.submit=\u062A\u062D\u0648\u064A\u0644 \u0625\u0644\u0649 PDF
|
fileToPDF.submit=تحويل إلى PDF
|
||||||
|
|
||||||
|
|
||||||
#compress
|
#compress
|
||||||
@@ -727,11 +770,23 @@ merge.submit=دمج
|
|||||||
pdfOrganiser.title=منظم الصفحة
|
pdfOrganiser.title=منظم الصفحة
|
||||||
pdfOrganiser.header=منظم صفحات PDF
|
pdfOrganiser.header=منظم صفحات PDF
|
||||||
pdfOrganiser.submit=إعادة ترتيب الصفحات
|
pdfOrganiser.submit=إعادة ترتيب الصفحات
|
||||||
|
pdfOrganiser.mode=Mode
|
||||||
|
pdfOrganiser.mode.1=Custom Page Order
|
||||||
|
pdfOrganiser.mode.2=Reverse Order
|
||||||
|
pdfOrganiser.mode.3=Duplex Sort
|
||||||
|
pdfOrganiser.mode.4=Booklet Sort
|
||||||
|
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
||||||
|
pdfOrganiser.mode.6=Odd-Even Split
|
||||||
|
pdfOrganiser.mode.7=Remove First
|
||||||
|
pdfOrganiser.mode.8=Remove Last
|
||||||
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=أداة متعددة PDF
|
multiTool.title=أداة متعددة PDF
|
||||||
multiTool.header=أداة متعددة PDF
|
multiTool.header=أداة متعددة PDF
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=View PDF
|
viewPdf.title=View PDF
|
||||||
@@ -742,6 +797,7 @@ pageRemover.title=مزيل الصفحة
|
|||||||
pageRemover.header=مزيل صفحة PDF
|
pageRemover.header=مزيل صفحة PDF
|
||||||
pageRemover.pagesToDelete=الصفحات المراد حذفها (أدخل قائمة بأرقام الصفحات مفصولة بفواصل):
|
pageRemover.pagesToDelete=الصفحات المراد حذفها (أدخل قائمة بأرقام الصفحات مفصولة بفواصل):
|
||||||
pageRemover.submit=حذف الصفحات
|
pageRemover.submit=حذف الصفحات
|
||||||
|
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=حدد زاوية الدوران (بمضاعفات 90 درج
|
|||||||
rotate.submit=استدارة
|
rotate.submit=استدارة
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=انقسام PDF
|
split.title=انقسام PDF
|
||||||
split.header=تقسيم PDF
|
split.header=تقسيم PDF
|
||||||
split.desc.1=الأرقام التي تحددها هي رقم الصفحة التي تريد تقسيمها
|
split.desc.1=الأرقام التي تحددها هي رقم الصفحة التي تريد تقسيمها
|
||||||
split.desc.2=على هذا النحو ، سيؤدي تحديد 1،3،7-8 إلى تقسيم مستند من 10 صفحات إلى 6 PDFS منفصلة مع:
|
split.desc.2=على هذا النحو ، سيؤدي تحديد 1،3،7-9 إلى تقسيم مستند من 10 صفحات إلى 6 PDFS منفصلة مع:
|
||||||
split.desc.3=المستند رقم 1: الصفحة 1
|
split.desc.3=المستند رقم 1: الصفحة 1
|
||||||
split.desc.4=المستند رقم 2: الصفحتان 2 و 3
|
split.desc.4=المستند رقم 2: الصفحتان 2 و 3
|
||||||
split.desc.5=المستند رقم 3: الصفحة 4 و 5 و 6
|
split.desc.5=المستند رقم 3: الصفحة 4 و 5 و 6 و 7
|
||||||
split.desc.6=المستند رقم 4: الصفحة 7
|
split.desc.6=المستند رقم 4: الصفحة 8
|
||||||
split.desc.7=المستند رقم 5: الصفحة 8
|
split.desc.7=المستند رقم 5: الصفحة 9
|
||||||
split.desc.8=المستند رقم 6: الصفحتان 9 و 10
|
split.desc.8=المستند رقم 6: الصفحة 10
|
||||||
split.splitPages=أدخل الصفحات المراد تقسيمها:
|
split.splitPages=أدخل الصفحات المراد تقسيمها:
|
||||||
split.submit=Split
|
split.submit=Split
|
||||||
|
|
||||||
@@ -774,23 +830,23 @@ imageToPDF.selectLabel=Image Fit Options
|
|||||||
imageToPDF.fillPage=Fill Page
|
imageToPDF.fillPage=Fill Page
|
||||||
imageToPDF.fitDocumentToImage=Fit Page to Image
|
imageToPDF.fitDocumentToImage=Fit Page to Image
|
||||||
imageToPDF.maintainAspectRatio=Maintain Aspect Ratios
|
imageToPDF.maintainAspectRatio=Maintain Aspect Ratios
|
||||||
imageToPDF.selectText.2=\u062F\u0648\u0631\u0627\u0646 PDF \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627
|
imageToPDF.selectText.2=دوران PDF تلقائيًا
|
||||||
imageToPDF.selectText.3=\u0627\u0644\u0645\u0646\u0637\u0642 \u0627\u0644\u0645\u062A\u0639\u062F\u062F \u0644\u0644\u0645\u0644\u0641\u0627\u062A (\u0645\u0641\u0639\u0651\u0644 \u0641\u0642\u0637 \u0625\u0630\u0627 \u0643\u0646\u062A \u062A\u0639\u0645\u0644 \u0645\u0639 \u0635\u0648\u0631 \u0645\u062A\u0639\u062F\u062F\u0629)
|
imageToPDF.selectText.3=المنطق المتعدد للملفات (مفعّل فقط إذا كنت تعمل مع صور متعددة)
|
||||||
imageToPDF.selectText.4=\u062F\u0645\u062C \u0641\u064A \u0645\u0644\u0641 PDF \u0648\u0627\u062D\u062F
|
imageToPDF.selectText.4=دمج في ملف PDF واحد
|
||||||
imageToPDF.selectText.5=\u062A\u062D\u0648\u064A\u0644 \u0625\u0644\u0649 \u0645\u0644\u0641\u0627\u062A PDF \u0645\u0646\u0641\u0635\u0644\u0629
|
imageToPDF.selectText.5=تحويل إلى ملفات PDF منفصلة
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=تحويل PDF إلى صورة
|
pdfToImage.title=تحويل PDF إلى صورة
|
||||||
pdfToImage.header=تحويل PDF إلى صورة
|
pdfToImage.header=تحويل PDF إلى صورة
|
||||||
pdfToImage.selectText=تنسيق الصورة
|
pdfToImage.selectText=تنسيق الصورة
|
||||||
pdfToImage.singleOrMultiple=\u0646\u0648\u0639 \u0646\u062A\u064A\u062C\u0629 \u0627\u0644\u0635\u0648\u0631\u0629
|
pdfToImage.singleOrMultiple=نوع نتيجة الصورة
|
||||||
pdfToImage.single=\u0635\u0648\u0631\u0629 \u0648\u0627\u062D\u062F\u0629 \u0643\u0628\u064A\u0631\u0629
|
pdfToImage.single=صورة واحدة كبيرة
|
||||||
pdfToImage.multi=\u0635\u0648\u0631 \u0645\u062A\u0639\u062F\u062F\u0629
|
pdfToImage.multi=صور متعددة
|
||||||
pdfToImage.colorType=\u0646\u0648\u0639 \u0627\u0644\u0644\u0648\u0646
|
pdfToImage.colorType=نوع اللون
|
||||||
pdfToImage.color=\u0627\u0644\u0644\u0648\u0646
|
pdfToImage.color=اللون
|
||||||
pdfToImage.grey=\u062A\u062F\u0631\u062C \u0627\u0644\u0631\u0645\u0627\u062F\u064A
|
pdfToImage.grey=تدرج الرمادي
|
||||||
pdfToImage.blackwhite=\u0623\u0628\u064A\u0636 \u0648\u0623\u0633\u0648\u062F (\u0642\u062F \u064A\u0641\u0642\u062F \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A!)
|
pdfToImage.blackwhite=أبيض وأسود (قد يفقد البيانات!)
|
||||||
pdfToImage.submit=تحول
|
pdfToImage.submit=تحول
|
||||||
|
|
||||||
|
|
||||||
@@ -825,10 +881,12 @@ watermark.selectText.3=حجم الخط:
|
|||||||
watermark.selectText.4=دوران (0-360):
|
watermark.selectText.4=دوران (0-360):
|
||||||
watermark.selectText.5=widthSpacer (مسافة بين كل علامة مائية أفقيًا):
|
watermark.selectText.5=widthSpacer (مسافة بين كل علامة مائية أفقيًا):
|
||||||
watermark.selectText.6=heightSpacer (مسافة بين كل علامة مائية عموديًا):
|
watermark.selectText.6=heightSpacer (مسافة بين كل علامة مائية عموديًا):
|
||||||
watermark.selectText.7=\u0627\u0644\u062A\u0639\u062A\u064A\u0645 (0\u066A - 100\u066A):
|
watermark.selectText.7=التعتيم (0٪ - 100٪):
|
||||||
watermark.selectText.8=Watermark Type:
|
watermark.selectText.8=Watermark Type:
|
||||||
watermark.selectText.9=Watermark Image:
|
watermark.selectText.9=Watermark Image:
|
||||||
watermark.submit=إضافة علامة مائية
|
watermark.submit=إضافة علامة مائية
|
||||||
|
watermark.type.1=Text
|
||||||
|
watermark.type.2=Image
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -857,29 +915,30 @@ removePassword.submit=إزالة
|
|||||||
|
|
||||||
|
|
||||||
#changeMetadata
|
#changeMetadata
|
||||||
changeMetadata.title=\u0627\u0644\u0639\u0646\u0648\u0627\u0646:
|
changeMetadata.title=العنوان:
|
||||||
changeMetadata.header=\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0648\u0635\u0641\u064A\u0629
|
changeMetadata.header=تغيير البيانات الوصفية
|
||||||
changeMetadata.selectText.1=\u064A\u0631\u062C\u0649 \u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0645\u062A\u063A\u064A\u0631\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u0631\u063A\u0628 \u0641\u064A \u062A\u063A\u064A\u064A\u0631\u0647\u0627
|
changeMetadata.selectText.1=يرجى تعديل المتغيرات التي ترغب في تغييرها
|
||||||
changeMetadata.selectText.2=\u062D\u0630\u0641 \u0643\u0644 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0623\u0648\u0644\u064A\u0629
|
changeMetadata.selectText.2=حذف كل البيانات الأولية
|
||||||
changeMetadata.selectText.3=\u0625\u0638\u0647\u0627\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0623\u0648\u0644\u064A\u0629 \u0627\u0644\u0645\u062E\u0635\u0635\u0629:
|
changeMetadata.selectText.3=إظهار البيانات الأولية المخصصة:
|
||||||
changeMetadata.author=\u0627\u0644\u0645\u0624\u0644\u0641:
|
changeMetadata.author=المؤلف:
|
||||||
changeMetadata.creationDate=\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u0625\u0646\u0634\u0627\u0621 (yyyy / MM / dd HH: mm: ss):
|
changeMetadata.creationDate=تاريخ الإنشاء (yyyy / MM / dd HH: mm: ss):
|
||||||
changeMetadata.creator=\u0627\u0644\u0645\u0646\u0634\u0626:
|
changeMetadata.creator=المنشئ:
|
||||||
changeMetadata.keywords=\u0627\u0644\u0643\u0644\u0645\u0627\u062A \u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629:
|
changeMetadata.keywords=الكلمات الرئيسية:
|
||||||
changeMetadata.modDate=\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u062A\u0639\u062F\u064A\u0644 (yyyy / MM / dd HH: mm: ss):
|
changeMetadata.modDate=تاريخ التعديل (yyyy / MM / dd HH: mm: ss):
|
||||||
changeMetadata.producer=\u0627\u0644\u0645\u0646\u062A\u062C:
|
changeMetadata.producer=المنتج:
|
||||||
changeMetadata.subject=\u0627\u0644\u0645\u0648\u0636\u0648\u0639:
|
changeMetadata.subject=الموضوع:
|
||||||
changeMetadata.trapped=\u0645\u062D\u0627\u0635\u0631:
|
changeMetadata.trapped=محاصر:
|
||||||
changeMetadata.selectText.4=\u0628\u064A\u0627\u0646\u0627\u062A \u0648\u0635\u0641\u064A\u0629 \u0623\u062E\u0631\u0649:
|
changeMetadata.selectText.4=بيانات وصفية أخرى:
|
||||||
changeMetadata.selectText.5=\u0625\u0636\u0627\u0641\u0629 \u0625\u062F\u062E\u0627\u0644 \u0628\u064A\u0627\u0646\u0627\u062A \u0623\u0648\u0644\u064A\u0629 \u0645\u062E\u0635\u0635
|
changeMetadata.selectText.5=إضافة إدخال بيانات أولية مخصص
|
||||||
changeMetadata.submit=\u062A\u063A\u064A\u064A\u0631
|
changeMetadata.submit=تغيير
|
||||||
|
|
||||||
|
|
||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF \u0625\u0644\u0649 PDF / A
|
pdfToPDFA.title=PDF إلى PDF / A
|
||||||
pdfToPDFA.header=PDF \u0625\u0644\u0649 PDF / A
|
pdfToPDFA.header=PDF إلى PDF / A
|
||||||
pdfToPDFA.credit=\u062A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0647 \u0627\u0644\u062E\u062F\u0645\u0629 OCRmyPDF \u0644\u062A\u062D\u0648\u064A\u0644 PDF / A.
|
pdfToPDFA.credit=تستخدم هذه الخدمة OCRmyPDF لتحويل PDF / A.
|
||||||
pdfToPDFA.submit=\u062A\u062D\u0648\u064A\u0644
|
pdfToPDFA.submit=تحويل
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=تحويل
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF إلى HTML
|
PDFToHTML.title=PDF إلى HTML
|
||||||
PDFToHTML.header=PDF إلى HTML
|
PDFToHTML.header=PDF إلى HTML
|
||||||
PDFToHTML.credit=تستخدم هذه الخدمة LibreOffice لتحويل الملفات.
|
PDFToHTML.credit=تستخدم هذه الخدمة pdftohtml لتحويل الملفات.
|
||||||
PDFToHTML.submit=تحويل
|
PDFToHTML.submit=تحويل
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=Choose page to extract table
|
|||||||
PDFToCSV.submit=??????
|
PDFToCSV.submit=??????
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=Split PDF by Size or Count
|
||||||
split-by-size-or-count.header=Split PDF by Size or Count
|
split-by-size-or-count.header=Split PDF by Size or Count
|
||||||
split-by-size-or-count.type.label=Select Split Type
|
split-by-size-or-count.type.label=Select Split Type
|
||||||
split-by-size-or-count.type.size=By Size
|
split-by-size-or-count.type.size=By Size
|
||||||
@@ -960,7 +1020,7 @@ split-by-sections.vertical.label=Vertical Divisions
|
|||||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||||
split-by-sections.submit=Split PDF
|
split-by-sections.submit=Split PDF
|
||||||
|
split-by-sections.merge=Merge Into One PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Licenses
|
||||||
@@ -971,3 +1031,16 @@ licenses.version=Version
|
|||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=Вярно
|
|||||||
false=Невярно
|
false=Невярно
|
||||||
unknown=Непознат
|
unknown=Непознат
|
||||||
save=Съхранете
|
save=Съхранете
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=Затворете
|
close=Затворете
|
||||||
filesSelected=избрани файлове
|
filesSelected=избрани файлове
|
||||||
noFavourites=Няма добавени любими
|
noFavourites=Няма добавени любими
|
||||||
@@ -53,16 +54,32 @@ notAuthenticatedMessage=Потребителят не е автентикира
|
|||||||
userNotFoundMessage=Потребителят не е намерен
|
userNotFoundMessage=Потребителят не е намерен
|
||||||
incorrectPasswordMessage=Текущата парола е неправилна.
|
incorrectPasswordMessage=Текущата парола е неправилна.
|
||||||
usernameExistsMessage=Новият потребител вече съществува.
|
usernameExistsMessage=Новият потребител вече съществува.
|
||||||
|
invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers.
|
||||||
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=Pipeline Menu (Beta)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=Upload Custom
|
||||||
pipeline.configureButton=Configure
|
pipeline.configureButton=Configure
|
||||||
pipeline.defaultOption=Custom
|
pipeline.defaultOption=Custom
|
||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
|
pipeline.help=Pipeline Help
|
||||||
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=Настройки на акаунта
|
|||||||
|
|
||||||
changeCreds.title=Промяна на идентификационните данни
|
changeCreds.title=Промяна на идентификационните данни
|
||||||
changeCreds.header=Актуализирайте данните за акаунта си
|
changeCreds.header=Актуализирайте данните за акаунта си
|
||||||
changeCreds.changeUserAndPassword=Използвате идентификационни данни за вход по подразбиране. Моля, въведете нова парола (и потребителско име, ако искате)
|
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
||||||
changeCreds.newUsername=Ново потребителско име
|
changeCreds.newUsername=Ново потребителско име
|
||||||
changeCreds.oldPassword=Текуща парола
|
changeCreds.oldPassword=Текуща парола
|
||||||
changeCreds.newPassword=Нова парола
|
changeCreds.newPassword=Нова парола
|
||||||
@@ -143,12 +160,15 @@ adminUserSettings.header=Настройки за администраторск
|
|||||||
adminUserSettings.admin=Администратор
|
adminUserSettings.admin=Администратор
|
||||||
adminUserSettings.user=Потребител
|
adminUserSettings.user=Потребител
|
||||||
adminUserSettings.addUser=Добавяне на нов потребител
|
adminUserSettings.addUser=Добавяне на нов потребител
|
||||||
|
adminUserSettings.usernameInfo=Username must only contain letters and numbers, no spaces or special characters.
|
||||||
adminUserSettings.roles=Роли
|
adminUserSettings.roles=Роли
|
||||||
adminUserSettings.role=Роля
|
adminUserSettings.role=Роля
|
||||||
adminUserSettings.actions=Действия
|
adminUserSettings.actions=Действия
|
||||||
adminUserSettings.apiUser=Ограничен API потребител
|
adminUserSettings.apiUser=Ограничен API потребител
|
||||||
|
adminUserSettings.extraApiUser=Additional Limited API User
|
||||||
adminUserSettings.webOnlyUser=Само за уеб-потребител
|
adminUserSettings.webOnlyUser=Само за уеб-потребител
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=Demo User (No custom settings)
|
||||||
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
adminUserSettings.forceChange=Принудете потребителя да промени потребителското име/парола при влизане
|
adminUserSettings.forceChange=Принудете потребителя да промени потребителското име/парола при влизане
|
||||||
adminUserSettings.submit=Съхранете потребителя
|
adminUserSettings.submit=Съхранете потребителя
|
||||||
|
|
||||||
@@ -393,6 +413,15 @@ home.AddStampRequest.desc=Add text or add image stamps at set locations
|
|||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF to Book
|
||||||
|
home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Book to PDF
|
||||||
|
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Вход
|
login.title=Вход
|
||||||
|
login.header=Вход
|
||||||
login.signin=Впишете се
|
login.signin=Впишете се
|
||||||
login.rememberme=Запомни ме
|
login.rememberme=Запомни ме
|
||||||
login.invalid=Невалидно потребителско име или парола.
|
login.invalid=Невалидно потребителско име или парола.
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=Преобразуване към единична стр
|
|||||||
pageExtracter.title=Extract Pages
|
pageExtracter.title=Extract Pages
|
||||||
pageExtracter.header=Extract Pages
|
pageExtracter.header=Extract Pages
|
||||||
pageExtracter.submit=Extract
|
pageExtracter.submit=Extract
|
||||||
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=Документ 1
|
|||||||
compare.document.2=Документ 2
|
compare.document.2=Документ 2
|
||||||
compare.submit=Сравнявай
|
compare.submit=Сравнявай
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Books and Comics to PDF
|
||||||
|
BookToPDF.header=Book to PDF
|
||||||
|
BookToPDF.credit=Uses Calibre
|
||||||
|
BookToPDF.submit=Convert
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF to Book
|
||||||
|
PDFToBook.header=PDF to Book
|
||||||
|
PDFToBook.selectText.1=Format
|
||||||
|
PDFToBook.credit=Uses Calibre
|
||||||
|
PDFToBook.submit=Convert
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Подпишете
|
sign.title=Подпишете
|
||||||
@@ -727,11 +770,23 @@ merge.submit=Обединяване
|
|||||||
pdfOrganiser.title=Организатор на страници
|
pdfOrganiser.title=Организатор на страници
|
||||||
pdfOrganiser.header=Организатор на PDF страници
|
pdfOrganiser.header=Организатор на PDF страници
|
||||||
pdfOrganiser.submit=Пренареждане на страниците
|
pdfOrganiser.submit=Пренареждане на страниците
|
||||||
|
pdfOrganiser.mode=Mode
|
||||||
|
pdfOrganiser.mode.1=Custom Page Order
|
||||||
|
pdfOrganiser.mode.2=Reverse Order
|
||||||
|
pdfOrganiser.mode.3=Duplex Sort
|
||||||
|
pdfOrganiser.mode.4=Booklet Sort
|
||||||
|
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
||||||
|
pdfOrganiser.mode.6=Odd-Even Split
|
||||||
|
pdfOrganiser.mode.7=Remove First
|
||||||
|
pdfOrganiser.mode.8=Remove Last
|
||||||
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=PDF Мулти инструмент
|
multiTool.title=PDF Мулти инструмент
|
||||||
multiTool.header=PDF Мулти инструмент
|
multiTool.header=PDF Мулти инструмент
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=View PDF
|
viewPdf.title=View PDF
|
||||||
@@ -742,6 +797,7 @@ pageRemover.title=Премахване на страници
|
|||||||
pageRemover.header=Премахване на PDF страници
|
pageRemover.header=Премахване на PDF страници
|
||||||
pageRemover.pagesToDelete=Страници за изтриване (Въведете списък с номера на страници, разделени със запетая) :
|
pageRemover.pagesToDelete=Страници за изтриване (Въведете списък с номера на страници, разделени със запетая) :
|
||||||
pageRemover.submit=Изтриване на страници
|
pageRemover.submit=Изтриване на страници
|
||||||
|
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=Изберете ъгъл на въртене (кратно
|
|||||||
rotate.submit=Завъртане
|
rotate.submit=Завъртане
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=Разделяне на PDF
|
split.title=Разделяне на PDF
|
||||||
split.header=Разделяне на PDF
|
split.header=Разделяне на PDF
|
||||||
split.desc.1=Числата, които избирате, са номера на страницата, на която искате да направите разделяне
|
split.desc.1=Числата, които избирате, са номера на страницата, на която искате да направите разделяне
|
||||||
split.desc.2=Така че избирането на 1,3,7-8 ще раздели документ от 10 страници на 6 отделни PDF файла с:
|
split.desc.2=Така че избирането на 1,3,7-9 ще раздели документ от 10 страници на 6 отделни PDF файла с:
|
||||||
split.desc.3=Документ #1: Страница 1
|
split.desc.3=Документ #1: Страница 1
|
||||||
split.desc.4=Документ #2: Страница 2 и 3
|
split.desc.4=Документ #2: Страница 2 и 3
|
||||||
split.desc.5=Документ #3: Страница 4, 5 и 6
|
split.desc.5=Документ #3: Страница 4, 5, 6 и 7
|
||||||
split.desc.6=Документ #4: Страница 7
|
split.desc.6=Документ #4: Страница 8
|
||||||
split.desc.7=Документ #5: Страница 8
|
split.desc.7=Документ #5: Страница 9
|
||||||
split.desc.8=Документ #6: Страница 9 и 10
|
split.desc.8=Документ #6: Страница 10
|
||||||
split.splitPages=Въведете страници за разделяне:
|
split.splitPages=Въведете страници за разделяне:
|
||||||
split.submit=Разделяне
|
split.submit=Разделяне
|
||||||
|
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=Непрозрачност (0% - 100%):
|
|||||||
watermark.selectText.8=Тип воден знак:
|
watermark.selectText.8=Тип воден знак:
|
||||||
watermark.selectText.9=Изображение за воден знак:
|
watermark.selectText.9=Изображение за воден знак:
|
||||||
watermark.submit=Добавяне на воден знак
|
watermark.submit=Добавяне на воден знак
|
||||||
|
watermark.type.1=Text
|
||||||
|
watermark.type.2=Image
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ pdfToPDFA.title=PDF към PDF/A
|
|||||||
pdfToPDFA.header=PDF към PDF/A
|
pdfToPDFA.header=PDF към PDF/A
|
||||||
pdfToPDFA.credit=Тази услуга използва OCRmyPDF за PDF/A преобразуване.
|
pdfToPDFA.credit=Тази услуга използва OCRmyPDF за PDF/A преобразуване.
|
||||||
pdfToPDFA.submit=Преобразуване
|
pdfToPDFA.submit=Преобразуване
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=Преобразуване
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF към HTML
|
PDFToHTML.title=PDF към HTML
|
||||||
PDFToHTML.header=PDF към HTML
|
PDFToHTML.header=PDF към HTML
|
||||||
PDFToHTML.credit=Тази услуга използва LibreOffice за преобразуване на файлове.
|
PDFToHTML.credit=Тази услуга използва pdftohtml за преобразуване на файлове.
|
||||||
PDFToHTML.submit=Преобразуване
|
PDFToHTML.submit=Преобразуване
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=Choose page to extract table
|
|||||||
PDFToCSV.submit=????????
|
PDFToCSV.submit=????????
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=Split PDF by Size or Count
|
||||||
split-by-size-or-count.header=Split PDF by Size or Count
|
split-by-size-or-count.header=Split PDF by Size or Count
|
||||||
split-by-size-or-count.type.label=Select Split Type
|
split-by-size-or-count.type.label=Select Split Type
|
||||||
split-by-size-or-count.type.size=By Size
|
split-by-size-or-count.type.size=By Size
|
||||||
@@ -960,7 +1020,7 @@ split-by-sections.vertical.label=Vertical Divisions
|
|||||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||||
split-by-sections.submit=Split PDF
|
split-by-sections.submit=Split PDF
|
||||||
|
split-by-sections.merge=Merge Into One PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Licenses
|
||||||
@@ -971,3 +1031,16 @@ licenses.version=Version
|
|||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=Verdader
|
|||||||
false=Fals
|
false=Fals
|
||||||
unknown=Desconegut
|
unknown=Desconegut
|
||||||
save=Desa
|
save=Desa
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=Tanca
|
close=Tanca
|
||||||
filesSelected=fitxers seleccionats
|
filesSelected=fitxers seleccionats
|
||||||
noFavourites=No s'ha afegit cap favorit
|
noFavourites=No s'ha afegit cap favorit
|
||||||
@@ -53,16 +54,32 @@ notAuthenticatedMessage=User not authenticated.
|
|||||||
userNotFoundMessage=User not found.
|
userNotFoundMessage=User not found.
|
||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Current password is incorrect.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=New Username already exists.
|
||||||
|
invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers.
|
||||||
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=Pipeline Menu (Beta)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=Upload Custom
|
||||||
pipeline.configureButton=Configure
|
pipeline.configureButton=Configure
|
||||||
pipeline.defaultOption=Custom
|
pipeline.defaultOption=Custom
|
||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
|
pipeline.help=Pipeline Help
|
||||||
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=Account Settings
|
|||||||
|
|
||||||
changeCreds.title=Change Credentials
|
changeCreds.title=Change Credentials
|
||||||
changeCreds.header=Update Your Account Details
|
changeCreds.header=Update Your Account Details
|
||||||
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted)
|
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
||||||
changeCreds.newUsername=New Username
|
changeCreds.newUsername=New Username
|
||||||
changeCreds.oldPassword=Current Password
|
changeCreds.oldPassword=Current Password
|
||||||
changeCreds.newPassword=New Password
|
changeCreds.newPassword=New Password
|
||||||
@@ -143,13 +160,16 @@ adminUserSettings.header=Usuari Admin Opcions Control
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=Usuari
|
adminUserSettings.user=Usuari
|
||||||
adminUserSettings.addUser=Afegir Usuari
|
adminUserSettings.addUser=Afegir Usuari
|
||||||
|
adminUserSettings.usernameInfo=Username must only contain letters and numbers, no spaces or special characters.
|
||||||
adminUserSettings.roles=Rols
|
adminUserSettings.roles=Rols
|
||||||
adminUserSettings.role=Rol
|
adminUserSettings.role=Rol
|
||||||
adminUserSettings.actions=Accions
|
adminUserSettings.actions=Accions
|
||||||
adminUserSettings.apiUser=Usuari amb API limitada
|
adminUserSettings.apiUser=Usuari amb API limitada
|
||||||
|
adminUserSettings.extraApiUser=Additional Limited API User
|
||||||
adminUserSettings.webOnlyUser=Usuari només WEB
|
adminUserSettings.webOnlyUser=Usuari només WEB
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=Demo User (No custom settings)
|
||||||
adminUserSettings.forceChange=Force user to change username/password on login
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
|
adminUserSettings.forceChange=Force user to change password on login
|
||||||
adminUserSettings.submit=Desar Usuari
|
adminUserSettings.submit=Desar Usuari
|
||||||
|
|
||||||
#############
|
#############
|
||||||
@@ -393,6 +413,15 @@ home.AddStampRequest.desc=Add text or add image stamps at set locations
|
|||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF to Book
|
||||||
|
home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Book to PDF
|
||||||
|
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Accedir
|
login.title=Accedir
|
||||||
|
login.header=Accedir
|
||||||
login.signin=Accedir
|
login.signin=Accedir
|
||||||
login.rememberme=Recordar
|
login.rememberme=Recordar
|
||||||
login.invalid=Nom usuari / password no vàlid
|
login.invalid=Nom usuari / password no vàlid
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=Convert To Single Page
|
|||||||
pageExtracter.title=Extract Pages
|
pageExtracter.title=Extract Pages
|
||||||
pageExtracter.header=Extract Pages
|
pageExtracter.header=Extract Pages
|
||||||
pageExtracter.submit=Extract
|
pageExtracter.submit=Extract
|
||||||
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=Document 1
|
|||||||
compare.document.2=Document 2
|
compare.document.2=Document 2
|
||||||
compare.submit=Comparar
|
compare.submit=Comparar
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Books and Comics to PDF
|
||||||
|
BookToPDF.header=Book to PDF
|
||||||
|
BookToPDF.credit=Uses Calibre
|
||||||
|
BookToPDF.submit=Convert
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF to Book
|
||||||
|
PDFToBook.header=PDF to Book
|
||||||
|
PDFToBook.selectText.1=Format
|
||||||
|
PDFToBook.credit=Uses Calibre
|
||||||
|
PDFToBook.submit=Convert
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Sign
|
sign.title=Sign
|
||||||
@@ -727,11 +770,23 @@ merge.submit=Fusiona
|
|||||||
pdfOrganiser.title=Organitzador de pàgines
|
pdfOrganiser.title=Organitzador de pàgines
|
||||||
pdfOrganiser.header=Organitzador de pàgines PDF
|
pdfOrganiser.header=Organitzador de pàgines PDF
|
||||||
pdfOrganiser.submit=Reorganitza Pàgines
|
pdfOrganiser.submit=Reorganitza Pàgines
|
||||||
|
pdfOrganiser.mode=Mode
|
||||||
|
pdfOrganiser.mode.1=Custom Page Order
|
||||||
|
pdfOrganiser.mode.2=Reverse Order
|
||||||
|
pdfOrganiser.mode.3=Duplex Sort
|
||||||
|
pdfOrganiser.mode.4=Booklet Sort
|
||||||
|
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
||||||
|
pdfOrganiser.mode.6=Odd-Even Split
|
||||||
|
pdfOrganiser.mode.7=Remove First
|
||||||
|
pdfOrganiser.mode.8=Remove Last
|
||||||
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=PDF Multi Tool
|
multiTool.title=PDF Multi Tool
|
||||||
multiTool.header=PDF Multi Tool
|
multiTool.header=PDF Multi Tool
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=View PDF
|
viewPdf.title=View PDF
|
||||||
@@ -742,6 +797,7 @@ pageRemover.title=Eliminació Pàgines
|
|||||||
pageRemover.header=Eliminació Pàgines PDF
|
pageRemover.header=Eliminació Pàgines PDF
|
||||||
pageRemover.pagesToDelete=Pàgines a esborrar (Números de pàgina) :
|
pageRemover.pagesToDelete=Pàgines a esborrar (Números de pàgina) :
|
||||||
pageRemover.submit=Esborra Pàgines
|
pageRemover.submit=Esborra Pàgines
|
||||||
|
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=Selecciona l'angle de gir (en múltiples de 90 graus):
|
|||||||
rotate.submit=Rota
|
rotate.submit=Rota
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=Divideix PDF
|
split.title=Divideix PDF
|
||||||
split.header=Divideix PDF
|
split.header=Divideix PDF
|
||||||
split.desc.1=Els números seleccionats són el número de pàgina en què voleu fer la divisió
|
split.desc.1=Els números seleccionats són el número de pàgina en què voleu fer la divisió
|
||||||
split.desc.2=Per tant, seleccionant 1,3,7-8 dividiria un document de 10 pàgines en 6 PDFS separats amb:
|
split.desc.2=Per tant, seleccionant 1,3,7-9 dividiria un document de 10 pàgines en 6 PDFS separats amb:
|
||||||
split.desc.3=Document #1: Pàgina 1
|
split.desc.3=Document #1: Pàgina 1
|
||||||
split.desc.4=Document #2: Pàgina 2 i 3
|
split.desc.4=Document #2: Pàgina 2 i 3
|
||||||
split.desc.5=Document #3: Pàgina 4, 5 i 6
|
split.desc.5=Document #3: Pàgina 4, 5, 6 i 7
|
||||||
split.desc.6=Document #4: Pàgina 7
|
split.desc.6=Document #4: Pàgina 8
|
||||||
split.desc.7=Document #5: Pàgina 8
|
split.desc.7=Document #5: Pàgina 9
|
||||||
split.desc.8=Document #6: Pàgina 9 i 10
|
split.desc.8=Document #6: Pàgina 10
|
||||||
split.splitPages=Introdueix pàgines per dividir-les:
|
split.splitPages=Introdueix pàgines per dividir-les:
|
||||||
split.submit=Divideix
|
split.submit=Divideix
|
||||||
|
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=Opacitat (0% - 100%):
|
|||||||
watermark.selectText.8=Watermark Type:
|
watermark.selectText.8=Watermark Type:
|
||||||
watermark.selectText.9=Watermark Image:
|
watermark.selectText.9=Watermark Image:
|
||||||
watermark.submit=Afegir Marca d'Aigua
|
watermark.submit=Afegir Marca d'Aigua
|
||||||
|
watermark.type.1=Text
|
||||||
|
watermark.type.2=Image
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ pdfToPDFA.title=PDF a PDF/A
|
|||||||
pdfToPDFA.header=PDF a PDF/A
|
pdfToPDFA.header=PDF a PDF/A
|
||||||
pdfToPDFA.credit=Utilitza OCRmyPDF per la conversió a PDF/A
|
pdfToPDFA.credit=Utilitza OCRmyPDF per la conversió a PDF/A
|
||||||
pdfToPDFA.submit=Converteix
|
pdfToPDFA.submit=Converteix
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=Converteix
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF a HTML
|
PDFToHTML.title=PDF a HTML
|
||||||
PDFToHTML.header=PDF a HTML
|
PDFToHTML.header=PDF a HTML
|
||||||
PDFToHTML.credit=Utilitza LibreOffice per a la conversió d'Arxius.
|
PDFToHTML.credit=Utilitza pdftohtml per a la conversió d'Arxius.
|
||||||
PDFToHTML.submit=Converteix
|
PDFToHTML.submit=Converteix
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=Choose page to extract table
|
|||||||
PDFToCSV.submit=Extracte
|
PDFToCSV.submit=Extracte
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=Split PDF by Size or Count
|
||||||
split-by-size-or-count.header=Split PDF by Size or Count
|
split-by-size-or-count.header=Split PDF by Size or Count
|
||||||
split-by-size-or-count.type.label=Select Split Type
|
split-by-size-or-count.type.label=Select Split Type
|
||||||
split-by-size-or-count.type.size=By Size
|
split-by-size-or-count.type.size=By Size
|
||||||
@@ -960,7 +1020,7 @@ split-by-sections.vertical.label=Vertical Divisions
|
|||||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||||
split-by-sections.submit=Split PDF
|
split-by-sections.submit=Split PDF
|
||||||
|
split-by-sections.merge=Merge Into One PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Licenses
|
||||||
@@ -971,3 +1031,16 @@ licenses.version=Version
|
|||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ pdfPrompt=PDF auswählen
|
|||||||
multiPdfPrompt=PDFs auswählen(2+)
|
multiPdfPrompt=PDFs auswählen(2+)
|
||||||
multiPdfDropPrompt=Wählen Sie alle gewünschten PDFs aus (oder ziehen Sie sie per Drag & Drop hierhin)
|
multiPdfDropPrompt=Wählen Sie alle gewünschten PDFs aus (oder ziehen Sie sie per Drag & Drop hierhin)
|
||||||
imgPrompt=Wählen Sie ein Bild
|
imgPrompt=Wählen Sie ein Bild
|
||||||
genericSubmit=Einreichen
|
genericSubmit=Absenden
|
||||||
processTimeWarning=Achtung: Abhängig von der Dateigröße kann dieser Prozess bis zu einer Minute dauern
|
processTimeWarning=Achtung: Abhängig von der Dateigröße kann dieser Prozess bis zu einer Minute dauern
|
||||||
pageOrderPrompt=Seitenreihenfolge (Geben Sie eine durch Komma getrennte Liste von Seitenzahlen ein):
|
pageOrderPrompt=Seitenreihenfolge (Geben Sie eine durch Komma getrennte Liste von Seitenzahlen ein):
|
||||||
pageSelectionPrompt=Benutzerdefinierte Seitenauswahl (Geben Sie eine durch Kommas getrennte Liste von Seitenzahlen 1,5,6 oder Funktionen wie 2n+1 ein):
|
pageSelectionPrompt=Benutzerdefinierte Seitenauswahl (Geben Sie eine durch Kommas getrennte Liste von Seitenzahlen 1,5,6 oder Funktionen wie 2n+1 ein):
|
||||||
@@ -17,10 +17,11 @@ true=Wahr
|
|||||||
false=Falsch
|
false=Falsch
|
||||||
unknown=Unbekannt
|
unknown=Unbekannt
|
||||||
save=Speichern
|
save=Speichern
|
||||||
|
saveToBrowser=Im Browser speichern
|
||||||
close=Schließen
|
close=Schließen
|
||||||
filesSelected=Dateien ausgewählt
|
filesSelected=Dateien ausgewählt
|
||||||
noFavourites=Keine Favoriten hinzugefügt
|
noFavourites=Keine Favoriten hinzugefügt
|
||||||
downloadComplete=Download Complete
|
downloadComplete=Download abgeschlossen
|
||||||
bored=Langeweile beim Warten?
|
bored=Langeweile beim Warten?
|
||||||
alphabet=Alphabet
|
alphabet=Alphabet
|
||||||
downloadPdf=PDF herunterladen
|
downloadPdf=PDF herunterladen
|
||||||
@@ -53,28 +54,44 @@ notAuthenticatedMessage=Benutzer nicht authentifiziert.
|
|||||||
userNotFoundMessage=Benutzer nicht gefunden.
|
userNotFoundMessage=Benutzer nicht gefunden.
|
||||||
incorrectPasswordMessage=Das Passwort ist falsch.
|
incorrectPasswordMessage=Das Passwort ist falsch.
|
||||||
usernameExistsMessage=Neuer Benutzername existiert bereits.
|
usernameExistsMessage=Neuer Benutzername existiert bereits.
|
||||||
|
invalidUsernameMessage=Ungültiger Benutzername. Der Benutzername darf nur Buchstaben und Zahlen enthalten.
|
||||||
|
deleteCurrentUserMessage=Der aktuell angemeldete Benutzer kann nicht gelöscht werden.
|
||||||
|
deleteUsernameExistsMessage=Der Benutzername existiert nicht und kann nicht gelöscht werden.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline-Menü (Alpha)
|
pipeline.header=Pipeline-Menü (Beta)
|
||||||
pipeline.uploadButton=Benutzerdefinierter Upload
|
pipeline.uploadButton=Benutzerdefinierter Upload
|
||||||
pipeline.configureButton=Konfigurieren
|
pipeline.configureButton=Konfigurieren
|
||||||
pipeline.defaultOption=Benutzerdefiniert
|
pipeline.defaultOption=Benutzerdefiniert
|
||||||
pipeline.submitButton=Speichern
|
pipeline.submitButton=Speichern
|
||||||
|
pipeline.help=Pipeline Help
|
||||||
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
######################
|
######################
|
||||||
pipelineOptions.header=Pipeline-Konfiguration
|
pipelineOptions.header=Pipeline-Konfiguration
|
||||||
pipelineOptions.pipelineNameLabel=Pipeline-Name
|
pipelineOptions.pipelineNameLabel=Pipeline-Name
|
||||||
pipelineOptions.saveSettings=Save Operation Settings
|
pipelineOptions.saveSettings=Operations-Einstellungen speichern
|
||||||
pipelineOptions.pipelineNamePrompt=Geben Sie hier den Namen der Pipeline ein
|
pipelineOptions.pipelineNamePrompt=Geben Sie hier den Namen der Pipeline ein
|
||||||
pipelineOptions.selectOperation=Vorgang auswählen
|
pipelineOptions.selectOperation=Vorgang auswählen
|
||||||
pipelineOptions.addOperationButton=Vorgang hinzufügen
|
pipelineOptions.addOperationButton=Vorgang hinzufügen
|
||||||
pipelineOptions.pipelineHeader=Pipeline:
|
pipelineOptions.pipelineHeader=Pipeline:
|
||||||
pipelineOptions.saveButton=Downloaden
|
pipelineOptions.saveButton=Herunterladen
|
||||||
pipelineOptions.validateButton=Validieren
|
pipelineOptions.validateButton=Validieren
|
||||||
|
|
||||||
|
|
||||||
@@ -86,7 +103,7 @@ pipelineOptions.validateButton=Validieren
|
|||||||
navbar.convert=Konvertieren
|
navbar.convert=Konvertieren
|
||||||
navbar.security=Sicherheit
|
navbar.security=Sicherheit
|
||||||
navbar.other=Anderes
|
navbar.other=Anderes
|
||||||
navbar.darkmode=Dark Mode
|
navbar.darkmode=Dunkler Modus
|
||||||
navbar.pageOps=Seitenoperationen
|
navbar.pageOps=Seitenoperationen
|
||||||
navbar.settings=Einstellungen
|
navbar.settings=Einstellungen
|
||||||
|
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=Kontoeinstellungen
|
|||||||
|
|
||||||
changeCreds.title=Anmeldeinformationen ändern
|
changeCreds.title=Anmeldeinformationen ändern
|
||||||
changeCreds.header=Aktualisieren Sie Ihre Kontodaten
|
changeCreds.header=Aktualisieren Sie Ihre Kontodaten
|
||||||
changeCreds.changeUserAndPassword=Sie verwenden Standard-Anmeldeinformationen. Bitte geben Sie ein neues Passwort (und ggf. einen Benutzernamen) ein.
|
changeCreds.changePassword=Sie verwenden die Standard-Zugangsdaten. Bitte geben Sie ein neues Passwort ein.
|
||||||
changeCreds.newUsername=Neuer Benutzername
|
changeCreds.newUsername=Neuer Benutzername
|
||||||
changeCreds.oldPassword=Aktuelles Passwort
|
changeCreds.oldPassword=Aktuelles Passwort
|
||||||
changeCreds.newPassword=Neues Passwort
|
changeCreds.newPassword=Neues Passwort
|
||||||
@@ -129,7 +146,7 @@ account.newPassword=Neues Passwort
|
|||||||
account.changePassword=Passwort ändern
|
account.changePassword=Passwort ändern
|
||||||
account.confirmNewPassword=Neues Passwort bestätigen
|
account.confirmNewPassword=Neues Passwort bestätigen
|
||||||
account.signOut=Abmelden
|
account.signOut=Abmelden
|
||||||
account.yourApiKey=Dein API Schlüssel
|
account.yourApiKey=Dein API-Schlüssel
|
||||||
account.syncTitle=Browsereinstellungen mit Konto synchronisieren
|
account.syncTitle=Browsereinstellungen mit Konto synchronisieren
|
||||||
account.settingsCompare=Einstellungen vergleichen:
|
account.settingsCompare=Einstellungen vergleichen:
|
||||||
account.property=Eigenschaft
|
account.property=Eigenschaft
|
||||||
@@ -140,15 +157,18 @@ account.syncToAccount=Synchronisiere Konto <- Browser
|
|||||||
|
|
||||||
adminUserSettings.title=Benutzerkontrolle
|
adminUserSettings.title=Benutzerkontrolle
|
||||||
adminUserSettings.header=Administrator-Benutzerkontrolle
|
adminUserSettings.header=Administrator-Benutzerkontrolle
|
||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Administrator
|
||||||
adminUserSettings.user=Benutzer
|
adminUserSettings.user=Benutzer
|
||||||
adminUserSettings.addUser=Neuen Benutzer hinzufügen
|
adminUserSettings.addUser=Neuen Benutzer hinzufügen
|
||||||
|
adminUserSettings.usernameInfo=Der Benutzername darf nur Buchstaben und Zahlen enthalten, keine Leerzeichen oder Sonderzeichen.
|
||||||
adminUserSettings.roles=Rollen
|
adminUserSettings.roles=Rollen
|
||||||
adminUserSettings.role=Rolle
|
adminUserSettings.role=Rolle
|
||||||
adminUserSettings.actions=Aktion
|
adminUserSettings.actions=Aktion
|
||||||
adminUserSettings.apiUser=Eingeschränkter API-Benutzer
|
adminUserSettings.apiUser=Eingeschränkter API-Benutzer
|
||||||
|
adminUserSettings.extraApiUser=Zusätzlicher eingeschränkter API-Benutzer
|
||||||
adminUserSettings.webOnlyUser=Nur Web-Benutzer
|
adminUserSettings.webOnlyUser=Nur Web-Benutzer
|
||||||
adminUserSettings.demoUser=Demo-Benutzer (Keine benutzerdefinierten Einstellungen)
|
adminUserSettings.demoUser=Demo-Benutzer (Keine benutzerdefinierten Einstellungen)
|
||||||
|
adminUserSettings.internalApiUser=Interner API-Benutzer
|
||||||
adminUserSettings.forceChange=Benutzer dazu zwingen, Benutzernamen/Passwort bei der Anmeldung zu ändern
|
adminUserSettings.forceChange=Benutzer dazu zwingen, Benutzernamen/Passwort bei der Anmeldung zu ändern
|
||||||
adminUserSettings.submit=Benutzer speichern
|
adminUserSettings.submit=Benutzer speichern
|
||||||
|
|
||||||
@@ -161,7 +181,7 @@ home.searchBar=Suche nach Funktionen...
|
|||||||
|
|
||||||
home.viewPdf.title=PDF anzeigen
|
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=view,read,annotate,text,image
|
viewPdf.tags=anzeigen,lesen,kommentieren,text,bild
|
||||||
|
|
||||||
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
|
||||||
@@ -169,88 +189,88 @@ multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side
|
|||||||
|
|
||||||
home.merge.title=Zusammenführen
|
home.merge.title=Zusammenführen
|
||||||
home.merge.desc=Mehrere PDF-Dateien zu einer einzigen zusammenführen.
|
home.merge.desc=Mehrere PDF-Dateien zu einer einzigen zusammenführen.
|
||||||
merge.tags=merge,Page operations,Back end,server side
|
merge.tags=zusammenführen,seitenvorgänge,back end,serverseite
|
||||||
|
|
||||||
home.split.title=Aufteilen
|
home.split.title=Aufteilen
|
||||||
home.split.desc=PDFs in mehrere Dokumente aufteilen.
|
home.split.desc=PDFs in mehrere Dokumente aufteilen.
|
||||||
split.tags=Page operations,divide,Multi Page,cut,server side
|
split.tags=seitenoperationen,teilen,mehrseitig,ausschneiden,serverseitig
|
||||||
|
|
||||||
home.rotate.title=Drehen
|
home.rotate.title=Drehen
|
||||||
home.rotate.desc=Drehen Sie Ihre PDFs ganz einfach.
|
home.rotate.desc=Drehen Sie Ihre PDFs ganz einfach.
|
||||||
rotate.tags=server side
|
rotate.tags=serverseitig
|
||||||
|
|
||||||
|
|
||||||
home.imageToPdf.title=Bild zu PDF
|
home.imageToPdf.title=Bild zu PDF
|
||||||
home.imageToPdf.desc=Konvertieren Sie ein Bild (PNG, JPEG, GIF) in ein PDF.
|
home.imageToPdf.desc=Konvertieren Sie ein Bild (PNG, JPEG, GIF) in ein PDF.
|
||||||
imageToPdf.tags=conversion,img,jpg,picture,photo
|
imageToPdf.tags=konvertierung,img,jpg,bild,foto
|
||||||
|
|
||||||
home.pdfToImage.title=PDF zu Bild
|
home.pdfToImage.title=PDF zu Bild
|
||||||
home.pdfToImage.desc=Konvertieren Sie ein PDF in ein Bild (PNG, JPEG, GIF).
|
home.pdfToImage.desc=Konvertieren Sie ein PDF in ein Bild (PNG, JPEG, GIF).
|
||||||
pdfToImage.tags=conversion,img,jpg,picture,photo
|
pdfToImage.tags=konvertierung,img,jpg,bild,foto
|
||||||
|
|
||||||
home.pdfOrganiser.title=Organisieren
|
home.pdfOrganiser.title=Organisieren
|
||||||
home.pdfOrganiser.desc=Seiten entfernen und Seitenreihenfolge ändern.
|
home.pdfOrganiser.desc=Seiten entfernen und Seitenreihenfolge ändern.
|
||||||
pdfOrganiser.tags=duplex,even,odd,sort,move
|
pdfOrganiser.tags=duplex,gerade,ungerade,sortieren,verschieben
|
||||||
|
|
||||||
|
|
||||||
home.addImage.title=Bild einfügen
|
home.addImage.title=Bild einfügen
|
||||||
home.addImage.desc=Fügt ein Bild an eine bestimmte Stelle im PDF ein (in Arbeit).
|
home.addImage.desc=Fügt ein Bild an eine bestimmte Stelle im PDF ein (in Arbeit).
|
||||||
addImage.tags=img,jpg,picture,photo
|
addImage.tags=img,jpg,bild,foto
|
||||||
|
|
||||||
home.watermark.title=Wasserzeichen hinzufügen
|
home.watermark.title=Wasserzeichen hinzufügen
|
||||||
home.watermark.desc=Fügen Sie ein eigenes Wasserzeichen zu Ihrem PDF hinzu.
|
home.watermark.desc=Fügen Sie ein eigenes Wasserzeichen zu Ihrem PDF hinzu.
|
||||||
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
watermark.tags=text,wiederholend,beschriftung,besitzen,urheberrecht,marke,img,jpg,bild,foto
|
||||||
|
|
||||||
home.permissions.title=Berechtigungen ändern
|
home.permissions.title=Berechtigungen ändern
|
||||||
home.permissions.desc=Die Berechtigungen für Ihr PDF-Dokument verändern.
|
home.permissions.desc=Die Berechtigungen für Ihr PDF-Dokument verändern.
|
||||||
permissions.tags=read,write,edit,print
|
permissions.tags=lesen,schreiben,bearbeiten,drucken
|
||||||
|
|
||||||
|
|
||||||
home.removePages.title=Entfernen
|
home.removePages.title=Entfernen
|
||||||
home.removePages.desc=Ungewollte Seiten aus dem PDF entfernen.
|
home.removePages.desc=Ungewollte Seiten aus dem PDF entfernen.
|
||||||
removePages.tags=Remove pages,delete pages
|
removePages.tags=seiten entfernen,seiten löschen
|
||||||
|
|
||||||
home.addPassword.title=Passwort hinzufügen
|
home.addPassword.title=Passwort hinzufügen
|
||||||
home.addPassword.desc=Das PDF mit einem Passwort verschlüsseln.
|
home.addPassword.desc=Das PDF mit einem Passwort verschlüsseln.
|
||||||
addPassword.tags=secure,security
|
addPassword.tags=sicher,sicherheit
|
||||||
|
|
||||||
home.removePassword.title=Passwort entfernen
|
home.removePassword.title=Passwort entfernen
|
||||||
home.removePassword.desc=Den Passwortschutz eines PDFs entfernen.
|
home.removePassword.desc=Den Passwortschutz eines PDFs entfernen.
|
||||||
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
removePassword.tags=sichern,entschlüsseln,sicherheit,passwort aufheben,passwort löschen
|
||||||
|
|
||||||
home.compressPdfs.title=Komprimieren
|
home.compressPdfs.title=Komprimieren
|
||||||
home.compressPdfs.desc=PDF komprimieren um die Dateigröße zu reduzieren.
|
home.compressPdfs.desc=PDF komprimieren um die Dateigröße zu reduzieren.
|
||||||
compressPdfs.tags=squish,small,tiny
|
compressPdfs.tags=komprimieren,verkleinern,minimieren
|
||||||
|
|
||||||
|
|
||||||
home.changeMetadata.title=Metadaten ändern
|
home.changeMetadata.title=Metadaten ändern
|
||||||
home.changeMetadata.desc=Ändern/Entfernen/Hinzufügen von Metadaten aus einem PDF-Dokument
|
home.changeMetadata.desc=Ändern/Entfernen/Hinzufügen von Metadaten aus einem PDF-Dokument
|
||||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
changeMetadata.tags==titel,autor,datum,erstellung,uhrzeit,herausgeber,produzent,statistiken
|
||||||
|
|
||||||
home.fileToPDF.title=Datei in PDF konvertieren
|
home.fileToPDF.title=Datei in PDF konvertieren
|
||||||
home.fileToPDF.desc=Konvertieren Sie nahezu jede Datei in PDF (DOCX, PNG, XLS, PPT, TXT und mehr)
|
home.fileToPDF.desc=Konvertieren Sie nahezu jede Datei in PDF (DOCX, PNG, XLS, PPT, TXT und mehr)
|
||||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
fileToPDF.tags=transformation,format,dokument,bild,folie,text,konvertierung,büro,dokumente,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=Führe OCR/Cleanup-Scans aus
|
home.ocr.title=Führe OCR/Cleanup-Scans aus
|
||||||
home.ocr.desc=Cleanup scannt und erkennt Text aus Bildern in einer PDF-Datei und fügt ihn erneut als Text hinzu.
|
home.ocr.desc=Cleanup scannt und erkennt Text aus Bildern in einer PDF-Datei und fügt ihn erneut als Text hinzu.
|
||||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
ocr.tags=erkennung,text,bild,scannen,lesen,identifizieren,erkennung,bearbeitbar
|
||||||
|
|
||||||
|
|
||||||
home.extractImages.title=Bilder extrahieren
|
home.extractImages.title=Bilder extrahieren
|
||||||
home.extractImages.desc=Extrahiert alle Bilder aus einer PDF-Datei und speichert sie als Zip-Archiv
|
home.extractImages.desc=Extrahiert alle Bilder aus einer PDF-Datei und speichert sie als Zip-Archiv
|
||||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
extractImages.tags=bild,foto,speichern,archivieren,zippen,erfassen,greifen
|
||||||
|
|
||||||
home.pdfToPDFA.title=PDF zu PDF/A konvertieren
|
home.pdfToPDFA.title=PDF zu PDF/A konvertieren
|
||||||
home.pdfToPDFA.desc=PDF zu PDF/A für Langzeitarchivierung konvertieren
|
home.pdfToPDFA.desc=PDF zu PDF/A für Langzeitarchivierung konvertieren
|
||||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
pdfToPDFA.tags=archiv,langfristig,standard,konvertierung,speicherung,aufbewahrung
|
||||||
|
|
||||||
home.PDFToWord.title=PDF zu Word
|
home.PDFToWord.title=PDF zu Word
|
||||||
home.PDFToWord.desc=PDF in Word-Formate konvertieren (DOC, DOCX und ODT)
|
home.PDFToWord.desc=PDF in Word-Formate konvertieren (DOC, DOCX und ODT)
|
||||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
PDFToWord.tags=doc,docx,odt,word,transformation,format,konvertierung,office,microsoft,docfile
|
||||||
|
|
||||||
home.PDFToPresentation.title=PDF zu Präsentation
|
home.PDFToPresentation.title=PDF zu Präsentation
|
||||||
home.PDFToPresentation.desc=PDF in Präsentationsformate konvertieren (PPT, PPTX und ODP)
|
home.PDFToPresentation.desc=PDF in Präsentationsformate konvertieren (PPT, PPTX und ODP)
|
||||||
PDFToPresentation.tags=slides,show,office,microsoft
|
PDFToPresentation.tags=folien,show,büro,microsoft
|
||||||
|
|
||||||
home.PDFToText.title=PDF in Text/RTF
|
home.PDFToText.title=PDF in Text/RTF
|
||||||
home.PDFToText.desc=PDF in Text- oder RTF-Format konvertieren
|
home.PDFToText.desc=PDF in Text- oder RTF-Format konvertieren
|
||||||
@@ -258,88 +278,88 @@ PDFToText.tags=richformat,richtextformat,rich text format
|
|||||||
|
|
||||||
home.PDFToHTML.title=PDF in HTML
|
home.PDFToHTML.title=PDF in HTML
|
||||||
home.PDFToHTML.desc=PDF in HTML-Format konvertieren
|
home.PDFToHTML.desc=PDF in HTML-Format konvertieren
|
||||||
PDFToHTML.tags=web content,browser friendly
|
PDFToHTML.tags=webinhalte,browserfreundlich
|
||||||
|
|
||||||
|
|
||||||
home.PDFToXML.title=PDF in XML
|
home.PDFToXML.title=PDF in XML
|
||||||
home.PDFToXML.desc=PDF in XML-Format konvertieren
|
home.PDFToXML.desc=PDF in XML-Format konvertieren
|
||||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
PDFToXML.tags=datenextraktion,strukturierter inhalt,interop,transformation,konvertierung
|
||||||
|
|
||||||
home.ScannerImageSplit.title=Gescannte Fotos erkennen/aufteilen
|
home.ScannerImageSplit.title=Gescannte Fotos erkennen/aufteilen
|
||||||
home.ScannerImageSplit.desc=Teilt mehrere Fotos innerhalb eines Fotos/PDF
|
home.ScannerImageSplit.desc=Teilt mehrere Fotos innerhalb eines Fotos/PDF
|
||||||
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
ScannerImageSplit.tags=separat,automatische erkennung,scans,mehrere fotos,organisieren
|
||||||
|
|
||||||
home.sign.title=Signieren
|
home.sign.title=Signieren
|
||||||
home.sign.desc=Fügt PDF-Signaturen durch Zeichnung, Text oder Bild hinzu
|
home.sign.desc=Fügt PDF-Signaturen durch Zeichnung, Text oder Bild hinzu
|
||||||
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
sign.tags=autorisieren,initialen,gezeichnete signatur,textzeichen,bildsignatur
|
||||||
|
|
||||||
home.flatten.title=Abflachen
|
home.flatten.title=Abflachen
|
||||||
home.flatten.desc=Alle interaktiven Elemente und Formulare aus einem PDF entfernen
|
home.flatten.desc=Alle interaktiven Elemente und Formulare aus einem PDF entfernen
|
||||||
flatten.tags=static,deactivate,non-interactive,streamline
|
flatten.tags=statisch,deaktivieren,nicht interaktiv,optimieren
|
||||||
|
|
||||||
home.repair.title=Reparatur
|
home.repair.title=Reparatur
|
||||||
home.repair.desc=Versucht, ein beschädigtes/kaputtes PDF zu reparieren
|
home.repair.desc=Versucht, ein beschädigtes/kaputtes PDF zu reparieren
|
||||||
repair.tags=fix,restore,correction,recover
|
repair.tags=reparieren,wiederherstellen,korrigieren,wiederherstellen
|
||||||
|
|
||||||
home.removeBlanks.title=Leere Seiten entfernen
|
home.removeBlanks.title=Leere Seiten entfernen
|
||||||
home.removeBlanks.desc=Erkennt und entfernt leere Seiten aus einem Dokument
|
home.removeBlanks.desc=Erkennt und entfernt leere Seiten aus einem Dokument
|
||||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
removeBlanks.tags=aufräumen,rationalisieren,nicht inhaltsreich,organisieren
|
||||||
|
|
||||||
home.removeAnnotations.title=Anmerkungen entfernen
|
home.removeAnnotations.title=Anmerkungen entfernen
|
||||||
home.removeAnnotations.desc=Entfernt alle Kommentare/Anmerkungen aus einem PDF
|
home.removeAnnotations.desc=Entfernt alle Kommentare/Anmerkungen aus einem PDF
|
||||||
removeAnnotations.tags=comments,highlight,notes,markup,remove
|
removeAnnotations.tags=kommentare,hervorheben,notizen,markieren,entfernen
|
||||||
|
|
||||||
home.compare.title=Vergleichen
|
home.compare.title=Vergleichen
|
||||||
home.compare.desc=Vergleicht und zeigt die Unterschiede zwischen zwei PDF-Dokumenten an
|
home.compare.desc=Vergleicht und zeigt die Unterschiede zwischen zwei PDF-Dokumenten an
|
||||||
compare.tags=differentiate,contrast,changes,analysis
|
compare.tags=differenzieren,kontrastieren,verändern,analysieren
|
||||||
|
|
||||||
home.certSign.title=Mit Zertifikat signieren
|
home.certSign.title=Mit Zertifikat signieren
|
||||||
home.certSign.desc=Ein PDF mit einem Zertifikat/Schlüssel (PEM/P12) signieren
|
home.certSign.desc=Ein PDF mit einem Zertifikat/Schlüssel (PEM/P12) signieren
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authentifizieren,pem,p12,offiziell,verschlüsseln
|
||||||
|
|
||||||
home.pageLayout.title=Mehrseitiges Layout
|
home.pageLayout.title=Mehrseitiges Layout
|
||||||
home.pageLayout.desc=Mehrere Seiten eines PDF zu einer Seite zusammenführen
|
home.pageLayout.desc=Mehrere Seiten eines PDF zu einer Seite zusammenführen
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=zusammenführen,zusammensetzen,einzelansicht,organisieren
|
||||||
|
|
||||||
home.scalePages.title=Seitengröße/Skalierung anpassen
|
home.scalePages.title=Seitengröße/Skalierung anpassen
|
||||||
home.scalePages.desc=Größe/Skalierung der Seite und/oder des Inhalts ändern
|
home.scalePages.desc=Größe/Skalierung der Seite und/oder des Inhalts ändern
|
||||||
scalePages.tags=resize,modify,dimension,adapt
|
scalePages.tags=größe ändern,ändern,dimensionieren,anpassen
|
||||||
|
|
||||||
home.pipeline.title=Pipeline (Fortgeschritten)
|
home.pipeline.title=Pipeline (Fortgeschritten)
|
||||||
home.pipeline.desc=Mehrere Aktionen auf ein PDF anwenden, definiert durch ein Pipeline Skript
|
home.pipeline.desc=Mehrere Aktionen auf ein PDF anwenden, definiert durch ein Pipeline Skript
|
||||||
pipeline.tags=automate,sequence,scripted,batch-process
|
pipeline.tags=automatisieren,sequenzieren,skriptgesteuert,batch prozess
|
||||||
|
|
||||||
home.add-page-numbers.title=Seitenzahlen hinzufügen
|
home.add-page-numbers.title=Seitenzahlen hinzufügen
|
||||||
home.add-page-numbers.desc=Hinzufügen von Seitenzahlen an einer bestimmten Stelle
|
home.add-page-numbers.desc=Hinzufügen von Seitenzahlen an einer bestimmten Stelle
|
||||||
add-page-numbers.tags=paginate,label,organize,index
|
add-page-numbers.tags=paginieren,beschriften,organisieren,indizieren
|
||||||
|
|
||||||
home.auto-rename.title=PDF automatisch umbenennen
|
home.auto-rename.title=PDF automatisch umbenennen
|
||||||
home.auto-rename.desc=PDF-Datei anhand von erkannten Kopfzeilen umbenennen
|
home.auto-rename.desc=PDF-Datei anhand von erkannten Kopfzeilen umbenennen
|
||||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
auto-rename.tags=automatisch erkennen,header basiert,organisieren,neu kennzeichnen
|
||||||
|
|
||||||
home.adjust-contrast.title=Farben/Kontrast anpassen
|
home.adjust-contrast.title=Farben/Kontrast anpassen
|
||||||
home.adjust-contrast.desc=Kontrast, Sättigung und Helligkeit einer PDF anpassen
|
home.adjust-contrast.desc=Kontrast, Sättigung und Helligkeit einer PDF anpassen
|
||||||
adjust-contrast.tags=color-correction,tune,modify,enhance
|
adjust-contrast.tags=farbkorrektur,abstimmung,änderung,verbesserung
|
||||||
|
|
||||||
home.crop.title=PDF zuschneiden
|
home.crop.title=PDF zuschneiden
|
||||||
home.crop.desc=PDF zuschneiden um die Größe zu verändern (Text bleibt erhalten!)
|
home.crop.desc=PDF zuschneiden um die Größe zu verändern (Text bleibt erhalten!)
|
||||||
crop.tags=trim,shrink,edit,shape
|
crop.tags=trimmen,verkleinern,bearbeiten,formen
|
||||||
|
|
||||||
home.autoSplitPDF.title=PDF automatisch teilen
|
home.autoSplitPDF.title=PDF automatisch teilen
|
||||||
home.autoSplitPDF.desc=Physisch gescannte PDF anhand von Splitter-Seiten und QR-Codes aufteilen
|
home.autoSplitPDF.desc=Physisch gescannte PDF anhand von Splitter-Seiten und QR-Codes aufteilen
|
||||||
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
autoSplitPDF.tags=qr basiert,trennen,segment scannen,organisieren
|
||||||
|
|
||||||
home.sanitizePdf.title=PDF Bereinigen
|
home.sanitizePdf.title=PDF Bereinigen
|
||||||
home.sanitizePdf.desc=Entfernen von Skripten und anderen Elementen aus PDF-Dateien
|
home.sanitizePdf.desc=Entfernen von Skripten und anderen Elementen aus PDF-Dateien
|
||||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
sanitizePdf.tags=sauber,sicher,sicher,bedrohungen entfernen
|
||||||
|
|
||||||
home.URLToPDF.title=URL/Website zu PDF
|
home.URLToPDF.title=URL/Website zu PDF
|
||||||
home.URLToPDF.desc=Konvertiert jede http(s)URL zu PDF
|
home.URLToPDF.desc=Konvertiert jede http(s)URL zu PDF
|
||||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
URLToPDF.tags=web capture,seite speichern,web to doc,archiv
|
||||||
|
|
||||||
home.HTMLToPDF.title=HTML zu PDF
|
home.HTMLToPDF.title=HTML zu PDF
|
||||||
home.HTMLToPDF.desc=Konvertiert jede HTML-Datei oder Zip-Archiv zu PDF
|
home.HTMLToPDF.desc=Konvertiert jede HTML-Datei oder Zip-Archiv zu PDF
|
||||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
HTMLToPDF.tags=markup,webinhalt,transformation,konvertierung
|
||||||
|
|
||||||
|
|
||||||
home.MarkdownToPDF.title=Markdown zu PDF
|
home.MarkdownToPDF.title=Markdown zu PDF
|
||||||
@@ -364,7 +384,7 @@ PdfToSinglePage.tags=einzelseite
|
|||||||
|
|
||||||
home.showJS.title=Javascript anzeigen
|
home.showJS.title=Javascript anzeigen
|
||||||
home.showJS.desc=Alle Javascript Funktionen in einer PDF anzeigen
|
home.showJS.desc=Alle Javascript Funktionen in einer PDF anzeigen
|
||||||
showJS.tags=JS
|
showJS.tags=js
|
||||||
|
|
||||||
home.autoRedact.title=Automatisch zensieren/schwärzen
|
home.autoRedact.title=Automatisch zensieren/schwärzen
|
||||||
home.autoRedact.desc=Automatisches Zensieren (Schwärzen) von Text in einer PDF-Datei basierend auf dem eingegebenen Text
|
home.autoRedact.desc=Automatisches Zensieren (Schwärzen) von Text in einer PDF-Datei basierend auf dem eingegebenen Text
|
||||||
@@ -390,7 +410,16 @@ split-by-sections.tags=abschnitte,teilen,bearbeiten
|
|||||||
|
|
||||||
home.AddStampRequest.title=Stempel zu PDF hinzufügen
|
home.AddStampRequest.title=Stempel zu PDF hinzufügen
|
||||||
home.AddStampRequest.desc=Fügen Sie an festgelegten Stellen Text oder Bildstempel hinzu
|
home.AddStampRequest.desc=Fügen Sie an festgelegten Stellen Text oder Bildstempel hinzu
|
||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=stempeln,bild hinzufügen,bild zentrieren,wasserzeichen,pdf,einbetten,anpassen
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF zum Buch
|
||||||
|
home.PDFToBook.desc=Konvertiert PDF mit Calibre in Buch-/Comic-Formate
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Buch als PDF
|
||||||
|
home.BookToPDF.desc=Konvertiert Buch-/Comic-Formate mithilfe von Calibre in PDF
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
@@ -400,11 +429,12 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Anmelden
|
login.title=Anmelden
|
||||||
|
login.header=Anmelden
|
||||||
login.signin=Anmelden
|
login.signin=Anmelden
|
||||||
login.rememberme=Angemeldet bleiben
|
login.rememberme=Angemeldet bleiben
|
||||||
login.invalid=Ungültiger Benutzername oder Passwort.
|
login.invalid=Benutzername oder Passwort ungültig.
|
||||||
login.locked=Ihr Konto wurde gesperrt.
|
login.locked=Ihr Konto wurde gesperrt.
|
||||||
login.signinTitle=Bitte melden Sie sich an
|
login.signinTitle=Bitte melden Sie sich an.
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=Zusammenfassen
|
|||||||
pageExtracter.title=Seiten extrahieren
|
pageExtracter.title=Seiten extrahieren
|
||||||
pageExtracter.header=Seiten extrahieren
|
pageExtracter.header=Seiten extrahieren
|
||||||
pageExtracter.submit=Extrahieren
|
pageExtracter.submit=Extrahieren
|
||||||
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -491,7 +522,7 @@ AddStampRequest.stampText=Stempeltext
|
|||||||
AddStampRequest.stampImage=Stampelbild
|
AddStampRequest.stampImage=Stampelbild
|
||||||
AddStampRequest.alphabet=Alphabet
|
AddStampRequest.alphabet=Alphabet
|
||||||
AddStampRequest.fontSize=Schriftart/Bildgröße
|
AddStampRequest.fontSize=Schriftart/Bildgröße
|
||||||
AddStampRequest.rotation=Rotation
|
AddStampRequest.rotation=Drehung
|
||||||
AddStampRequest.opacity=Deckkraft
|
AddStampRequest.opacity=Deckkraft
|
||||||
AddStampRequest.position=Position
|
AddStampRequest.position=Position
|
||||||
AddStampRequest.overrideX=X-Koordinate überschreiben
|
AddStampRequest.overrideX=X-Koordinate überschreiben
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=Dokument 1
|
|||||||
compare.document.2=Dokument 2
|
compare.document.2=Dokument 2
|
||||||
compare.submit=Vergleichen
|
compare.submit=Vergleichen
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Bücher und Comics zu PDF
|
||||||
|
BookToPDF.header=Buch zu PDF
|
||||||
|
BookToPDF.credit=Verwendet Calibre
|
||||||
|
BookToPDF.submit=Konvertieren
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF zu Buch
|
||||||
|
PDFToBook.header=PDF zu Buch
|
||||||
|
PDFToBook.selectText.1=Format
|
||||||
|
PDFToBook.credit=Verwendet Calibre
|
||||||
|
PDFToBook.submit=Konvertieren
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Signieren
|
sign.title=Signieren
|
||||||
@@ -727,11 +770,23 @@ merge.submit=Zusammenführen
|
|||||||
pdfOrganiser.title=Seiten anordnen
|
pdfOrganiser.title=Seiten anordnen
|
||||||
pdfOrganiser.header=PDF Seitenorganisation
|
pdfOrganiser.header=PDF Seitenorganisation
|
||||||
pdfOrganiser.submit=Seiten anordnen
|
pdfOrganiser.submit=Seiten anordnen
|
||||||
|
pdfOrganiser.mode=Mode
|
||||||
|
pdfOrganiser.mode.1=Custom Page Order
|
||||||
|
pdfOrganiser.mode.2=Reverse Order
|
||||||
|
pdfOrganiser.mode.3=Duplex Sort
|
||||||
|
pdfOrganiser.mode.4=Booklet Sort
|
||||||
|
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
||||||
|
pdfOrganiser.mode.6=Odd-Even Split
|
||||||
|
pdfOrganiser.mode.7=Remove First
|
||||||
|
pdfOrganiser.mode.8=Remove Last
|
||||||
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=PDF-Multitool
|
multiTool.title=PDF-Multitool
|
||||||
multiTool.header=PDF-Multitool
|
multiTool.header=PDF-Multitool
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=PDF anzeigen
|
viewPdf.title=PDF anzeigen
|
||||||
@@ -742,26 +797,27 @@ pageRemover.title=Seiten entfernen
|
|||||||
pageRemover.header=PDF Seiten entfernen
|
pageRemover.header=PDF Seiten entfernen
|
||||||
pageRemover.pagesToDelete=Seiten zu entfernen (geben Sie eine Kommagetrennte Liste der Seitenzahlen an):
|
pageRemover.pagesToDelete=Seiten zu entfernen (geben Sie eine Kommagetrennte Liste der Seitenzahlen an):
|
||||||
pageRemover.submit=Seiten löschen
|
pageRemover.submit=Seiten löschen
|
||||||
|
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
rotate.title=PDF drehen
|
rotate.title=PDF drehen
|
||||||
rotate.header=PDF drehen
|
rotate.header=PDF drehen
|
||||||
rotate.selectAngle=Wählen Sie den Winkel (in Vielfachen von 90 Grad):
|
rotate.selectAngle=Wählen Sie den Winkel (in Vielfachen von 90 Grad):
|
||||||
rotate.submit=Drehen
|
rotate.submit=Herunterladen
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=PDF aufteilen
|
split.title=PDF aufteilen
|
||||||
split.header=PDF aufteilen
|
split.header=PDF aufteilen
|
||||||
split.desc.1=Die Nummern, die Sie auswählen, sind die Seitenzahlen, an denen Sie aufteilen möchten.
|
split.desc.1=Die Nummern, die Sie auswählen, sind die Seitenzahlen, an denen Sie aufteilen möchten.
|
||||||
split.desc.2=So würde die Auswahl von 1,3,7-8 ein 10-seitiges Dokument in 6 separate PDFs aufteilen, mit:
|
split.desc.2=So würde die Auswahl von 1,3,7-9 ein 10-seitiges Dokument in 6 separate PDFs aufteilen, mit:
|
||||||
split.desc.3=Dokument #1: Seite 1
|
split.desc.3=Dokument #1: Seite 1
|
||||||
split.desc.4=Dokument #2: Seite 2 und 3
|
split.desc.4=Dokument #2: Seite 2 und 3
|
||||||
split.desc.5=Dokument #3: Seite 4, 5 und 6
|
split.desc.5=Dokument #3: Seite 4, 5, 6 und 7
|
||||||
split.desc.6=Dokument #4: Seite 7
|
split.desc.6=Dokument #4: Seite 8
|
||||||
split.desc.7=Dokument #5: Seite 8
|
split.desc.7=Dokument #5: Seite 9
|
||||||
split.desc.8=Dokument #6: Seite 9 und 10
|
split.desc.8=Dokument #6: Seite 10
|
||||||
split.splitPages=Geben Sie die Seiten an, an denen aufgeteilt werden soll:
|
split.splitPages=Geben Sie die Seiten an, an denen aufgeteilt werden soll:
|
||||||
split.submit=Aufteilen
|
split.submit=Aufteilen
|
||||||
|
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=Deckkraft (0% - 100 %):
|
|||||||
watermark.selectText.8=Wasserzeichen Typ:
|
watermark.selectText.8=Wasserzeichen Typ:
|
||||||
watermark.selectText.9=Wasserzeichen-Bild:
|
watermark.selectText.9=Wasserzeichen-Bild:
|
||||||
watermark.submit=Wasserzeichen hinzufügen
|
watermark.submit=Wasserzeichen hinzufügen
|
||||||
|
watermark.type.1=Text
|
||||||
|
watermark.type.2=Image
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ pdfToPDFA.title=PDF zu PDF/A
|
|||||||
pdfToPDFA.header=PDF zu PDF/A
|
pdfToPDFA.header=PDF zu PDF/A
|
||||||
pdfToPDFA.credit=Dieser Dienst verwendet OCRmyPDF für die PDF/A-Konvertierung
|
pdfToPDFA.credit=Dieser Dienst verwendet OCRmyPDF für die PDF/A-Konvertierung
|
||||||
pdfToPDFA.submit=Konvertieren
|
pdfToPDFA.submit=Konvertieren
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -907,15 +966,15 @@ PDFToText.submit=Konvertieren
|
|||||||
|
|
||||||
|
|
||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF in HTML
|
PDFToHTML.title=PDF zu HTML
|
||||||
PDFToHTML.header=PDF in HTML
|
PDFToHTML.header=PDF zu HTML
|
||||||
PDFToHTML.credit=Dieser Dienst verwendet LibreOffice für die Dateikonvertierung.
|
PDFToHTML.credit=Dieser Dienst verwendet pdftohtml für die Dateikonvertierung.
|
||||||
PDFToHTML.submit=Konvertieren
|
PDFToHTML.submit=Konvertieren
|
||||||
|
|
||||||
|
|
||||||
#PDFToXML
|
#PDFToXML
|
||||||
PDFToXML.title=PDF in XML
|
PDFToXML.title=PDF zu XML
|
||||||
PDFToXML.header=PDF in XML
|
PDFToXML.header=PDF zu XML
|
||||||
PDFToXML.credit=Dieser Dienst verwendet LibreOffice für die Dateikonvertierung.
|
PDFToXML.credit=Dieser Dienst verwendet LibreOffice für die Dateikonvertierung.
|
||||||
PDFToXML.submit=Konvertieren
|
PDFToXML.submit=Konvertieren
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=Seite mit der zu extrahierenden Tabelle wählen
|
|||||||
PDFToCSV.submit=Extrahieren
|
PDFToCSV.submit=Extrahieren
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=PDF nach Größe oder Anzahl teilen
|
||||||
split-by-size-or-count.header=PDF nach Größe oder Anzahl teilen
|
split-by-size-or-count.header=PDF nach Größe oder Anzahl teilen
|
||||||
split-by-size-or-count.type.label=Teil-Modus wählen
|
split-by-size-or-count.type.label=Teil-Modus wählen
|
||||||
split-by-size-or-count.type.size=Nach Größe
|
split-by-size-or-count.type.size=Nach Größe
|
||||||
@@ -960,7 +1020,7 @@ split-by-sections.vertical.label=Vertikale Teiler
|
|||||||
split-by-sections.horizontal.placeholder=Anzahl horizontaler Teiler eingeben
|
split-by-sections.horizontal.placeholder=Anzahl horizontaler Teiler eingeben
|
||||||
split-by-sections.vertical.placeholder=Anzahl vertikaler Teiler eingeben
|
split-by-sections.vertical.placeholder=Anzahl vertikaler Teiler eingeben
|
||||||
split-by-sections.submit=PDF teilen
|
split-by-sections.submit=PDF teilen
|
||||||
|
split-by-sections.merge=In eine PDF zusammenfügen
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Lizenzen
|
licenses.nav=Lizenzen
|
||||||
@@ -971,3 +1031,16 @@ licenses.version=Version
|
|||||||
licenses.license=Lizenz
|
licenses.license=Lizenz
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -17,6 +17,7 @@ true=True
|
|||||||
false=False
|
false=False
|
||||||
unknown=Unknown
|
unknown=Unknown
|
||||||
save=Save
|
save=Save
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=Close
|
close=Close
|
||||||
filesSelected=files selected
|
filesSelected=files selected
|
||||||
noFavourites=No favourites added
|
noFavourites=No favourites added
|
||||||
@@ -53,16 +54,32 @@ notAuthenticatedMessage=User not authenticated.
|
|||||||
userNotFoundMessage=User not found.
|
userNotFoundMessage=User not found.
|
||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Current password is incorrect.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=New Username already exists.
|
||||||
|
invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers.
|
||||||
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=Pipeline Menu (Beta)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=Upload Custom
|
||||||
pipeline.configureButton=Configure
|
pipeline.configureButton=Configure
|
||||||
pipeline.defaultOption=Custom
|
pipeline.defaultOption=Custom
|
||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
|
pipeline.help=Pipeline Help
|
||||||
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=Account Settings
|
|||||||
|
|
||||||
changeCreds.title=Change Credentials
|
changeCreds.title=Change Credentials
|
||||||
changeCreds.header=Update Your Account Details
|
changeCreds.header=Update Your Account Details
|
||||||
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted)
|
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
||||||
changeCreds.newUsername=New Username
|
changeCreds.newUsername=New Username
|
||||||
changeCreds.oldPassword=Current Password
|
changeCreds.oldPassword=Current Password
|
||||||
changeCreds.newPassword=New Password
|
changeCreds.newPassword=New Password
|
||||||
@@ -143,13 +160,16 @@ adminUserSettings.header=Admin User Control Settings
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=User
|
adminUserSettings.user=User
|
||||||
adminUserSettings.addUser=Add New User
|
adminUserSettings.addUser=Add New User
|
||||||
|
adminUserSettings.usernameInfo=Username must only contain letters and numbers, no spaces or special characters.
|
||||||
adminUserSettings.roles=Roles
|
adminUserSettings.roles=Roles
|
||||||
adminUserSettings.role=Role
|
adminUserSettings.role=Role
|
||||||
adminUserSettings.actions=Actions
|
adminUserSettings.actions=Actions
|
||||||
adminUserSettings.apiUser=Limited API User
|
adminUserSettings.apiUser=Limited API User
|
||||||
|
adminUserSettings.extraApiUser=Additional Limited API User
|
||||||
adminUserSettings.webOnlyUser=Web Only User
|
adminUserSettings.webOnlyUser=Web Only User
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=Demo User (No custom settings)
|
||||||
adminUserSettings.forceChange = Force user to change username/password on login
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
|
adminUserSettings.forceChange=Force user to change password on login
|
||||||
adminUserSettings.submit=Save User
|
adminUserSettings.submit=Save User
|
||||||
|
|
||||||
#############
|
#############
|
||||||
@@ -393,6 +413,15 @@ home.AddStampRequest.desc=Add text or add image stamps at set locations
|
|||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF to Book
|
||||||
|
home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf
|
||||||
|
|
||||||
|
home.BookToPDF.title=Book to PDF
|
||||||
|
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Sign in
|
login.title=Sign in
|
||||||
|
login.header=Sign in
|
||||||
login.signin=Sign in
|
login.signin=Sign in
|
||||||
login.rememberme=Remember me
|
login.rememberme=Remember me
|
||||||
login.invalid=Invalid username or password.
|
login.invalid=Invalid username or password.
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=Convert To Single Page
|
|||||||
pageExtracter.title=Extract Pages
|
pageExtracter.title=Extract Pages
|
||||||
pageExtracter.header=Extract Pages
|
pageExtracter.header=Extract Pages
|
||||||
pageExtracter.submit=Extract
|
pageExtracter.submit=Extract
|
||||||
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=Document 1
|
|||||||
compare.document.2=Document 2
|
compare.document.2=Document 2
|
||||||
compare.submit=Compare
|
compare.submit=Compare
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Books and Comics to PDF
|
||||||
|
BookToPDF.header=Book to PDF
|
||||||
|
BookToPDF.credit=Uses Calibre
|
||||||
|
BookToPDF.submit=Convert
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF to Book
|
||||||
|
PDFToBook.header=PDF to Book
|
||||||
|
PDFToBook.selectText.1=Format
|
||||||
|
PDFToBook.credit=Uses Calibre
|
||||||
|
PDFToBook.submit=Convert
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Sign
|
sign.title=Sign
|
||||||
@@ -727,11 +770,23 @@ merge.submit=Merge
|
|||||||
pdfOrganiser.title=Page Organiser
|
pdfOrganiser.title=Page Organiser
|
||||||
pdfOrganiser.header=PDF Page Organiser
|
pdfOrganiser.header=PDF Page Organiser
|
||||||
pdfOrganiser.submit=Rearrange Pages
|
pdfOrganiser.submit=Rearrange Pages
|
||||||
|
pdfOrganiser.mode=Mode
|
||||||
|
pdfOrganiser.mode.1=Custom Page Order
|
||||||
|
pdfOrganiser.mode.2=Reverse Order
|
||||||
|
pdfOrganiser.mode.3=Duplex Sort
|
||||||
|
pdfOrganiser.mode.4=Booklet Sort
|
||||||
|
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
||||||
|
pdfOrganiser.mode.6=Odd-Even Split
|
||||||
|
pdfOrganiser.mode.7=Remove First
|
||||||
|
pdfOrganiser.mode.8=Remove Last
|
||||||
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=PDF Multi Tool
|
multiTool.title=PDF Multi Tool
|
||||||
multiTool.header=PDF Multi Tool
|
multiTool.header=PDF Multi Tool
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=View PDF
|
viewPdf.title=View PDF
|
||||||
@@ -742,6 +797,7 @@ pageRemover.title=Page Remover
|
|||||||
pageRemover.header=PDF Page remover
|
pageRemover.header=PDF Page remover
|
||||||
pageRemover.pagesToDelete=Pages to delete (Enter a comma-separated list of page numbers) :
|
pageRemover.pagesToDelete=Pages to delete (Enter a comma-separated list of page numbers) :
|
||||||
pageRemover.submit=Delete Pages
|
pageRemover.submit=Delete Pages
|
||||||
|
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=Select rotation angle (in multiples of 90 degrees):
|
|||||||
rotate.submit=Rotate
|
rotate.submit=Rotate
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=Split PDF
|
split.title=Split PDF
|
||||||
split.header=Split PDF
|
split.header=Split PDF
|
||||||
split.desc.1=The numbers you select are the page number you wish to do a split on
|
split.desc.1=The numbers you select are the page number you wish to do a split on
|
||||||
split.desc.2=As such selecting 1,3,7-8 would split a 10 page document into 6 separate PDFS with:
|
split.desc.2=As such selecting 1,3,7-9 would split a 10 page document into 6 separate PDFS with:
|
||||||
split.desc.3=Document #1: Page 1
|
split.desc.3=Document #1: Page 1
|
||||||
split.desc.4=Document #2: Page 2 and 3
|
split.desc.4=Document #2: Page 2 and 3
|
||||||
split.desc.5=Document #3: Page 4, 5 and 6
|
split.desc.5=Document #3: Page 4, 5, 6 and 7
|
||||||
split.desc.6=Document #4: Page 7
|
split.desc.6=Document #4: Page 8
|
||||||
split.desc.7=Document #5: Page 8
|
split.desc.7=Document #5: Page 9
|
||||||
split.desc.8=Document #6: Page 9 and 10
|
split.desc.8=Document #6: Page 10
|
||||||
split.splitPages=Enter pages to split on:
|
split.splitPages=Enter pages to split on:
|
||||||
split.submit=Split
|
split.submit=Split
|
||||||
|
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=Opacity (0% - 100%):
|
|||||||
watermark.selectText.8=Watermark Type:
|
watermark.selectText.8=Watermark Type:
|
||||||
watermark.selectText.9=Watermark Image:
|
watermark.selectText.9=Watermark Image:
|
||||||
watermark.submit=Add Watermark
|
watermark.submit=Add Watermark
|
||||||
|
watermark.type.1=Text
|
||||||
|
watermark.type.2=Image
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ pdfToPDFA.title=PDF To PDF/A
|
|||||||
pdfToPDFA.header=PDF To PDF/A
|
pdfToPDFA.header=PDF To PDF/A
|
||||||
pdfToPDFA.credit=This service uses OCRmyPDF for PDF/A conversion
|
pdfToPDFA.credit=This service uses OCRmyPDF for PDF/A conversion
|
||||||
pdfToPDFA.submit=Convert
|
pdfToPDFA.submit=Convert
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=Convert
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF to HTML
|
PDFToHTML.title=PDF to HTML
|
||||||
PDFToHTML.header=PDF to HTML
|
PDFToHTML.header=PDF to HTML
|
||||||
PDFToHTML.credit=This service uses LibreOffice for file conversion.
|
PDFToHTML.credit=This service uses pdftohtml for file conversion.
|
||||||
PDFToHTML.submit=Convert
|
PDFToHTML.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=Choose page to extract table
|
|||||||
PDFToCSV.submit=Extract
|
PDFToCSV.submit=Extract
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=Split PDF by Size or Count
|
||||||
split-by-size-or-count.header=Split PDF by Size or Count
|
split-by-size-or-count.header=Split PDF by Size or Count
|
||||||
split-by-size-or-count.type.label=Select Split Type
|
split-by-size-or-count.type.label=Select Split Type
|
||||||
split-by-size-or-count.type.size=By Size
|
split-by-size-or-count.type.size=By Size
|
||||||
@@ -960,7 +1020,7 @@ split-by-sections.vertical.label=Vertical Divisions
|
|||||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||||
split-by-sections.submit=Split PDF
|
split-by-sections.submit=Split PDF
|
||||||
|
split-by-sections.merge=Merge Into One PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Licenses
|
||||||
@@ -971,3 +1031,16 @@ licenses.version=Version
|
|||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=True
|
|||||||
false=False
|
false=False
|
||||||
unknown=Unknown
|
unknown=Unknown
|
||||||
save=Save
|
save=Save
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=Close
|
close=Close
|
||||||
filesSelected=files selected
|
filesSelected=files selected
|
||||||
noFavourites=No favorites added
|
noFavourites=No favorites added
|
||||||
@@ -53,16 +54,32 @@ notAuthenticatedMessage=User not authenticated.
|
|||||||
userNotFoundMessage=User not found.
|
userNotFoundMessage=User not found.
|
||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Current password is incorrect.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=New Username already exists.
|
||||||
|
invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers.
|
||||||
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=Pipeline Menu (Beta)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=Upload Custom
|
||||||
pipeline.configureButton=Configure
|
pipeline.configureButton=Configure
|
||||||
pipeline.defaultOption=Custom
|
pipeline.defaultOption=Custom
|
||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
|
pipeline.help=Pipeline Help
|
||||||
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=Account Settings
|
|||||||
|
|
||||||
changeCreds.title=Change Credentials
|
changeCreds.title=Change Credentials
|
||||||
changeCreds.header=Update Your Account Details
|
changeCreds.header=Update Your Account Details
|
||||||
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted)
|
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
||||||
changeCreds.newUsername=New Username
|
changeCreds.newUsername=New Username
|
||||||
changeCreds.oldPassword=Current Password
|
changeCreds.oldPassword=Current Password
|
||||||
changeCreds.newPassword=New Password
|
changeCreds.newPassword=New Password
|
||||||
@@ -143,13 +160,16 @@ adminUserSettings.header=Admin User Control Settings
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=User
|
adminUserSettings.user=User
|
||||||
adminUserSettings.addUser=Add New User
|
adminUserSettings.addUser=Add New User
|
||||||
|
adminUserSettings.usernameInfo=Username must only contain letters and numbers, no spaces or special characters.
|
||||||
adminUserSettings.roles=Roles
|
adminUserSettings.roles=Roles
|
||||||
adminUserSettings.role=Role
|
adminUserSettings.role=Role
|
||||||
adminUserSettings.actions=Actions
|
adminUserSettings.actions=Actions
|
||||||
adminUserSettings.apiUser=Limited API User
|
adminUserSettings.apiUser=Limited API User
|
||||||
|
adminUserSettings.extraApiUser=Additional Limited API User
|
||||||
adminUserSettings.webOnlyUser=Web Only User
|
adminUserSettings.webOnlyUser=Web Only User
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=Demo User (No custom settings)
|
||||||
adminUserSettings.forceChange=Force user to change username/password on login
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
|
adminUserSettings.forceChange=Force user to change password on login
|
||||||
adminUserSettings.submit=Save User
|
adminUserSettings.submit=Save User
|
||||||
|
|
||||||
#############
|
#############
|
||||||
@@ -393,6 +413,15 @@ home.AddStampRequest.desc=Add text or add image stamps at set locations
|
|||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF to Book
|
||||||
|
home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Book to PDF
|
||||||
|
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Sign in
|
login.title=Sign in
|
||||||
|
login.header=Sign in
|
||||||
login.signin=Sign in
|
login.signin=Sign in
|
||||||
login.rememberme=Remember me
|
login.rememberme=Remember me
|
||||||
login.invalid=Invalid username or password.
|
login.invalid=Invalid username or password.
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=Convert To Single Page
|
|||||||
pageExtracter.title=Extract Pages
|
pageExtracter.title=Extract Pages
|
||||||
pageExtracter.header=Extract Pages
|
pageExtracter.header=Extract Pages
|
||||||
pageExtracter.submit=Extract
|
pageExtracter.submit=Extract
|
||||||
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=Document 1
|
|||||||
compare.document.2=Document 2
|
compare.document.2=Document 2
|
||||||
compare.submit=Compare
|
compare.submit=Compare
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Books and Comics to PDF
|
||||||
|
BookToPDF.header=Book to PDF
|
||||||
|
BookToPDF.credit=Uses Calibre
|
||||||
|
BookToPDF.submit=Convert
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF to Book
|
||||||
|
PDFToBook.header=PDF to Book
|
||||||
|
PDFToBook.selectText.1=Format
|
||||||
|
PDFToBook.credit=Uses Calibre
|
||||||
|
PDFToBook.submit=Convert
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Sign
|
sign.title=Sign
|
||||||
@@ -727,11 +770,23 @@ merge.submit=Merge
|
|||||||
pdfOrganiser.title=Page Organizer
|
pdfOrganiser.title=Page Organizer
|
||||||
pdfOrganiser.header=PDF Page Organizer
|
pdfOrganiser.header=PDF Page Organizer
|
||||||
pdfOrganiser.submit=Rearrange Pages
|
pdfOrganiser.submit=Rearrange Pages
|
||||||
|
pdfOrganiser.mode=Mode
|
||||||
|
pdfOrganiser.mode.1=Custom Page Order
|
||||||
|
pdfOrganiser.mode.2=Reverse Order
|
||||||
|
pdfOrganiser.mode.3=Duplex Sort
|
||||||
|
pdfOrganiser.mode.4=Booklet Sort
|
||||||
|
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
||||||
|
pdfOrganiser.mode.6=Odd-Even Split
|
||||||
|
pdfOrganiser.mode.7=Remove First
|
||||||
|
pdfOrganiser.mode.8=Remove Last
|
||||||
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=PDF Multi Tool
|
multiTool.title=PDF Multi Tool
|
||||||
multiTool.header=PDF Multi Tool
|
multiTool.header=PDF Multi Tool
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=View PDF
|
viewPdf.title=View PDF
|
||||||
@@ -742,6 +797,7 @@ pageRemover.title=Page Remover
|
|||||||
pageRemover.header=PDF Page remover
|
pageRemover.header=PDF Page remover
|
||||||
pageRemover.pagesToDelete=Pages to delete (Enter a comma-separated list of page numbers) :
|
pageRemover.pagesToDelete=Pages to delete (Enter a comma-separated list of page numbers) :
|
||||||
pageRemover.submit=Delete Pages
|
pageRemover.submit=Delete Pages
|
||||||
|
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=Select rotation angle (in multiples of 90 degrees):
|
|||||||
rotate.submit=Rotate
|
rotate.submit=Rotate
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=Split PDF
|
split.title=Split PDF
|
||||||
split.header=Split PDF
|
split.header=Split PDF
|
||||||
split.desc.1=The numbers you select are the page number you wish to do a split on
|
split.desc.1=The numbers you select are the page number you wish to do a split on
|
||||||
split.desc.2=As such selecting 1,3,7-8 would split a 10 page document into 6 separate PDFS with:
|
split.desc.2=As such selecting 1,3,7-9 would split a 10 page document into 6 separate PDFS with:
|
||||||
split.desc.3=Document #1: Page 1
|
split.desc.3=Document #1: Page 1
|
||||||
split.desc.4=Document #2: Page 2 and 3
|
split.desc.4=Document #2: Page 2 and 3
|
||||||
split.desc.5=Document #3: Page 4, 5 and 6
|
split.desc.5=Document #3: Page 4, 5, 6, 7
|
||||||
split.desc.6=Document #4: Page 7
|
split.desc.6=Document #4: Page 8
|
||||||
split.desc.7=Document #5: Page 8
|
split.desc.7=Document #5: Page 9
|
||||||
split.desc.8=Document #6: Page 9 and 10
|
split.desc.8=Document #6: Page 10
|
||||||
split.splitPages=Enter pages to split on:
|
split.splitPages=Enter pages to split on:
|
||||||
split.submit=Split
|
split.submit=Split
|
||||||
|
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=Opacity (0% - 100%):
|
|||||||
watermark.selectText.8=Watermark Type:
|
watermark.selectText.8=Watermark Type:
|
||||||
watermark.selectText.9=Watermark Image:
|
watermark.selectText.9=Watermark Image:
|
||||||
watermark.submit=Add Watermark
|
watermark.submit=Add Watermark
|
||||||
|
watermark.type.1=Text
|
||||||
|
watermark.type.2=Image
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ pdfToPDFA.title=PDF To PDF/A
|
|||||||
pdfToPDFA.header=PDF To PDF/A
|
pdfToPDFA.header=PDF To PDF/A
|
||||||
pdfToPDFA.credit=This service uses OCRmyPDF for PDF/A conversion
|
pdfToPDFA.credit=This service uses OCRmyPDF for PDF/A conversion
|
||||||
pdfToPDFA.submit=Convert
|
pdfToPDFA.submit=Convert
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=Convert
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF to HTML
|
PDFToHTML.title=PDF to HTML
|
||||||
PDFToHTML.header=PDF to HTML
|
PDFToHTML.header=PDF to HTML
|
||||||
PDFToHTML.credit=This service uses LibreOffice for file conversion.
|
PDFToHTML.credit=This service uses pdftohtml for file conversion.
|
||||||
PDFToHTML.submit=Convert
|
PDFToHTML.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=Choose page to extract table
|
|||||||
PDFToCSV.submit=Extract
|
PDFToCSV.submit=Extract
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=Split PDF by Size or Count
|
||||||
split-by-size-or-count.header=Split PDF by Size or Count
|
split-by-size-or-count.header=Split PDF by Size or Count
|
||||||
split-by-size-or-count.type.label=Select Split Type
|
split-by-size-or-count.type.label=Select Split Type
|
||||||
split-by-size-or-count.type.size=By Size
|
split-by-size-or-count.type.size=By Size
|
||||||
@@ -960,7 +1020,7 @@ split-by-sections.vertical.label=Vertical Divisions
|
|||||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||||
split-by-sections.submit=Split PDF
|
split-by-sections.submit=Split PDF
|
||||||
|
split-by-sections.merge=Merge Into One PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Licenses
|
||||||
@@ -971,3 +1031,16 @@ licenses.version=Version
|
|||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
@@ -17,10 +17,11 @@ true=Verdadero
|
|||||||
false=Falso
|
false=Falso
|
||||||
unknown=Desconocido
|
unknown=Desconocido
|
||||||
save=Guardar
|
save=Guardar
|
||||||
|
saveToBrowser=Guardar en el Navegador
|
||||||
close=Cerrar
|
close=Cerrar
|
||||||
filesSelected=archivos seleccionados
|
filesSelected=archivos seleccionados
|
||||||
noFavourites=No se agregaron favoritos
|
noFavourites=No se agregaron favoritos
|
||||||
downloadComplete=Download Complete
|
downloadComplete=Descarga finalizada
|
||||||
bored=¿Cansado de esperar?
|
bored=¿Cansado de esperar?
|
||||||
alphabet=Alfabeto
|
alphabet=Alfabeto
|
||||||
downloadPdf=Descargar PDF
|
downloadPdf=Descargar PDF
|
||||||
@@ -53,6 +54,20 @@ notAuthenticatedMessage=Usuario no autentificado.
|
|||||||
userNotFoundMessage=Usuario no encontrado.
|
userNotFoundMessage=Usuario no encontrado.
|
||||||
incorrectPasswordMessage=La contraseña actual no es correcta.
|
incorrectPasswordMessage=La contraseña actual no es correcta.
|
||||||
usernameExistsMessage=El nuevo nombre de usuario está en uso.
|
usernameExistsMessage=El nuevo nombre de usuario está en uso.
|
||||||
|
invalidUsernameMessage=Nombre de usuario no válido, El nombre de ususario debe contener únicamente números y caracteres alfabéticos.
|
||||||
|
deleteCurrentUserMessage=No puede eliminar el usuario que tiene la sesión actualmente en uso.
|
||||||
|
deleteUsernameExistsMessage=El usuario no existe y no puede eliminarse.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
@@ -63,6 +78,8 @@ pipeline.uploadButton=Cargar personalización
|
|||||||
pipeline.configureButton=Configurar
|
pipeline.configureButton=Configurar
|
||||||
pipeline.defaultOption=Personalizar
|
pipeline.defaultOption=Personalizar
|
||||||
pipeline.submitButton=Enviar
|
pipeline.submitButton=Enviar
|
||||||
|
pipeline.help=Pipeline Help
|
||||||
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=Configuración de la cuenta
|
|||||||
|
|
||||||
changeCreds.title=Cambiar Credenciales
|
changeCreds.title=Cambiar Credenciales
|
||||||
changeCreds.header=Actualice los detalles de su cuenta
|
changeCreds.header=Actualice los detalles de su cuenta
|
||||||
changeCreds.changeUserAndPassword=Está usando las credenciales por defecto. Por favor, introduzca una nueva contraseña (y usuario si lo desea)
|
changeCreds.changePassword=Está usando las credenciales de inicio de sesión por defecto. Por favor, introduzca una contraseña nueva
|
||||||
changeCreds.newUsername=Nuevo usuario
|
changeCreds.newUsername=Nuevo usuario
|
||||||
changeCreds.oldPassword=Contraseña actual
|
changeCreds.oldPassword=Contraseña actual
|
||||||
changeCreds.newPassword=Nueva contraseña
|
changeCreds.newPassword=Nueva contraseña
|
||||||
@@ -143,12 +160,15 @@ adminUserSettings.header=Configuración de control de usuario administrador
|
|||||||
adminUserSettings.admin=Administrador
|
adminUserSettings.admin=Administrador
|
||||||
adminUserSettings.user=Usuario
|
adminUserSettings.user=Usuario
|
||||||
adminUserSettings.addUser=Añadir Nuevo Usuario
|
adminUserSettings.addUser=Añadir Nuevo Usuario
|
||||||
|
adminUserSettings.usernameInfo=El nombrede usuario debe contener únicamente letras y números, no espacios ni caracteres especiales.
|
||||||
adminUserSettings.roles=Roles
|
adminUserSettings.roles=Roles
|
||||||
adminUserSettings.role=Rol
|
adminUserSettings.role=Rol
|
||||||
adminUserSettings.actions=Acciones
|
adminUserSettings.actions=Acciones
|
||||||
adminUserSettings.apiUser=Usuario limitado de API
|
adminUserSettings.apiUser=Usuario limitado de API
|
||||||
|
adminUserSettings.extraApiUser=Otro usuario limitado de API
|
||||||
adminUserSettings.webOnlyUser=Usuario solo web
|
adminUserSettings.webOnlyUser=Usuario solo web
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=Usuario Demo (Sin ajustes personalizados)
|
||||||
|
adminUserSettings.internalApiUser=Usuario interno de API
|
||||||
adminUserSettings.forceChange=Forzar usuario a cambiar usuario/contraseña en el acceso
|
adminUserSettings.forceChange=Forzar usuario a cambiar usuario/contraseña en el acceso
|
||||||
adminUserSettings.submit=Guardar Usuario
|
adminUserSettings.submit=Guardar Usuario
|
||||||
|
|
||||||
@@ -368,7 +388,7 @@ showJS.tags=JS
|
|||||||
|
|
||||||
home.autoRedact.title=Auto Redactar
|
home.autoRedact.title=Auto Redactar
|
||||||
home.autoRedact.desc=Redactar automáticamente (ocultar) texto en un PDF según el texto introducido
|
home.autoRedact.desc=Redactar automáticamente (ocultar) texto en un PDF según el texto introducido
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
autoRedact.tags=Redactar,Ocultar,ocultar,negro,subrayador,oculto
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF a CSV
|
home.tableExtraxt.title=PDF a CSV
|
||||||
home.tableExtraxt.desc=Extraer Tablas de un PDF convirtiéndolas a CSV
|
home.tableExtraxt.desc=Extraer Tablas de un PDF convirtiéndolas a CSV
|
||||||
@@ -388,9 +408,18 @@ home.split-by-sections.title=Dividir PDF por Secciones
|
|||||||
home.split-by-sections.desc=Dividir cada página de un PDF en secciones verticales y horizontales más pequeñas
|
home.split-by-sections.desc=Dividir cada página de un PDF en secciones verticales y horizontales más pequeñas
|
||||||
split-by-sections.tags=Dividir sección, Dividir, Personalizar
|
split-by-sections.tags=Dividir sección, Dividir, Personalizar
|
||||||
|
|
||||||
home.AddStampRequest.title=Add Stamp to PDF
|
home.AddStampRequest.title=Añadir Sello a PDF
|
||||||
home.AddStampRequest.desc=Add text or add image stamps at set locations
|
home.AddStampRequest.desc=Añadir texto o sello de imagen en ubicaciones específicas
|
||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Sello, Añadir imagen, centrar imagen, Marca de agua, PDF, Incrustar, Personalizar
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF a Libro
|
||||||
|
home.PDFToBook.desc=Convierte PDF a formatos de Libro/Cómic usando Calibre
|
||||||
|
PDFToBook.tags=Libro,Cómic,Calibre,Convertir,Manga,Amazon,Kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Libro a PDF
|
||||||
|
home.BookToPDF.desc=Convierte formatos de Libro/Cómic a PDF usando Calibre
|
||||||
|
BookToPDF.tags=Libro,Cómic,Calibre,Convertir,manga,Amazon,Kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Iniciar sesión
|
login.title=Iniciar sesión
|
||||||
|
login.header=Iniciar sesión
|
||||||
login.signin=Iniciar sesión
|
login.signin=Iniciar sesión
|
||||||
login.rememberme=Recordarme
|
login.rememberme=Recordarme
|
||||||
login.invalid=Nombre de usuario o contraseña erróneos.
|
login.invalid=Nombre de usuario o contraseña erróneos.
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=Convertir a página única
|
|||||||
pageExtracter.title=Extraer Páginas
|
pageExtracter.title=Extraer Páginas
|
||||||
pageExtracter.header=Extraer Páginas
|
pageExtracter.header=Extraer Páginas
|
||||||
pageExtracter.submit=Extraer
|
pageExtracter.submit=Extraer
|
||||||
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=Documento 1
|
|||||||
compare.document.2=Documento 2
|
compare.document.2=Documento 2
|
||||||
compare.submit=Comparar
|
compare.submit=Comparar
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Libros y Cómics a PDF
|
||||||
|
BookToPDF.header=Libro a PDF
|
||||||
|
BookToPDF.credit=Usa Calibre
|
||||||
|
BookToPDF.submit=Convertir
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF a Libro
|
||||||
|
PDFToBook.header=PDF a Libro
|
||||||
|
PDFToBook.selectText.1=Formato
|
||||||
|
PDFToBook.credit=Utiliza Calibre
|
||||||
|
PDFToBook.submit=Convertir
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Firmar
|
sign.title=Firmar
|
||||||
@@ -727,11 +770,23 @@ merge.submit=Unir
|
|||||||
pdfOrganiser.title=Organizador de páginas
|
pdfOrganiser.title=Organizador de páginas
|
||||||
pdfOrganiser.header=Organizador de páginas PDF
|
pdfOrganiser.header=Organizador de páginas PDF
|
||||||
pdfOrganiser.submit=Organizar páginas
|
pdfOrganiser.submit=Organizar páginas
|
||||||
|
pdfOrganiser.mode=Mode
|
||||||
|
pdfOrganiser.mode.1=Custom Page Order
|
||||||
|
pdfOrganiser.mode.2=Reverse Order
|
||||||
|
pdfOrganiser.mode.3=Duplex Sort
|
||||||
|
pdfOrganiser.mode.4=Booklet Sort
|
||||||
|
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
||||||
|
pdfOrganiser.mode.6=Odd-Even Split
|
||||||
|
pdfOrganiser.mode.7=Remove First
|
||||||
|
pdfOrganiser.mode.8=Remove Last
|
||||||
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=Multi-herramienta PDF
|
multiTool.title=Multi-herramienta PDF
|
||||||
multiTool.header=Multi-herramienta PDF
|
multiTool.header=Multi-herramienta PDF
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=Ver PDF
|
viewPdf.title=Ver PDF
|
||||||
@@ -742,6 +797,7 @@ pageRemover.title=Eliminador de páginas
|
|||||||
pageRemover.header=Eliminador de páginas PDF
|
pageRemover.header=Eliminador de páginas PDF
|
||||||
pageRemover.pagesToDelete=Páginas a eliminar (introducir una lista de números de página separados por coma):
|
pageRemover.pagesToDelete=Páginas a eliminar (introducir una lista de números de página separados por coma):
|
||||||
pageRemover.submit=Eliminar Páginas
|
pageRemover.submit=Eliminar Páginas
|
||||||
|
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=Seleccionar ángulo de rotación (en múltiplos de 90 grados)
|
|||||||
rotate.submit=Rotar
|
rotate.submit=Rotar
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=Dividir PDF
|
split.title=Dividir PDF
|
||||||
split.header=Dividir PDF
|
split.header=Dividir PDF
|
||||||
split.desc.1=Los números que seleccione son el número de página en el que desea hacer una división
|
split.desc.1=Los números que seleccione son el número de página en el que desea hacer una división
|
||||||
split.desc.2=Como tal, seleccionar 1,3,7-8 dividiría un documento de 10 páginas en 6 archivos PDF separados con:
|
split.desc.2=Como tal, seleccionar 1,3,7-9 dividiría un documento de 10 páginas en 6 archivos PDF separados con:
|
||||||
split.desc.3=Documento #1: Página 1
|
split.desc.3=Documento #1: Página 1
|
||||||
split.desc.4=Documento #2: Páginas 2 y 3
|
split.desc.4=Documento #2: Páginas 2 y 3
|
||||||
split.desc.5=Documento #3: Páginas 4, 5 y 6
|
split.desc.5=Documento #3: Páginas 4, 5, 6 y 7
|
||||||
split.desc.6=Documento #4: Página 7
|
split.desc.6=Documento #4: Página 8
|
||||||
split.desc.7=Documento #5: Página 8
|
split.desc.7=Documento #5: Página 9
|
||||||
split.desc.8=Documento #6: Páginas 9 y 10
|
split.desc.8=Documento #6: Páginas 10
|
||||||
split.splitPages=Introducir las páginas para dividir:
|
split.splitPages=Introducir las páginas para dividir:
|
||||||
split.submit=Dividir
|
split.submit=Dividir
|
||||||
|
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=Opacidad (0% - 100%):
|
|||||||
watermark.selectText.8=Tipo de marca de agua:
|
watermark.selectText.8=Tipo de marca de agua:
|
||||||
watermark.selectText.9=Imagen de marca de agua:
|
watermark.selectText.9=Imagen de marca de agua:
|
||||||
watermark.submit=Añadir marca de agua
|
watermark.submit=Añadir marca de agua
|
||||||
|
watermark.type.1=Text
|
||||||
|
watermark.type.2=Image
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ pdfToPDFA.title=PDF a PDF/A
|
|||||||
pdfToPDFA.header=PDF a PDF/A
|
pdfToPDFA.header=PDF a PDF/A
|
||||||
pdfToPDFA.credit=Este servicio usa OCRmyPDF para la conversión a PDF/A
|
pdfToPDFA.credit=Este servicio usa OCRmyPDF para la conversión a PDF/A
|
||||||
pdfToPDFA.submit=Convertir
|
pdfToPDFA.submit=Convertir
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=Convertir
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF a HTML
|
PDFToHTML.title=PDF a HTML
|
||||||
PDFToHTML.header=PDF a HTML
|
PDFToHTML.header=PDF a HTML
|
||||||
PDFToHTML.credit=Este servicio utiliza LibreOffice para la conversión de archivos
|
PDFToHTML.credit=Este servicio utiliza pdftohtml para la conversión de archivos
|
||||||
PDFToHTML.submit=Convertir
|
PDFToHTML.submit=Convertir
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=Elija una página para extraer la tabla
|
|||||||
PDFToCSV.submit=Extraer
|
PDFToCSV.submit=Extraer
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=Split PDF by Size or Count
|
||||||
split-by-size-or-count.header=Dividir PDF por tamaño o número
|
split-by-size-or-count.header=Dividir PDF por tamaño o número
|
||||||
split-by-size-or-count.type.label=Seleccionar tipo de división
|
split-by-size-or-count.type.label=Seleccionar tipo de división
|
||||||
split-by-size-or-count.type.size=Por tamaño
|
split-by-size-or-count.type.size=Por tamaño
|
||||||
@@ -960,7 +1020,7 @@ split-by-sections.vertical.label=Divisiones Verticales
|
|||||||
split-by-sections.horizontal.placeholder=Introduzca el número de divisiones horizontales
|
split-by-sections.horizontal.placeholder=Introduzca el número de divisiones horizontales
|
||||||
split-by-sections.vertical.placeholder=Introduzca el número de divisiones verticales
|
split-by-sections.vertical.placeholder=Introduzca el número de divisiones verticales
|
||||||
split-by-sections.submit=Dividir PDF
|
split-by-sections.submit=Dividir PDF
|
||||||
|
split-by-sections.merge=Unir en Un PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licencias
|
licenses.nav=Licencias
|
||||||
@@ -971,3 +1031,16 @@ licenses.version=Versión
|
|||||||
licenses.license=Licencia
|
licenses.license=Licencia
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=Egiazkoa
|
|||||||
false=Faltsua
|
false=Faltsua
|
||||||
unknown=Ezezaguna
|
unknown=Ezezaguna
|
||||||
save=Gorde
|
save=Gorde
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=Itxi
|
close=Itxi
|
||||||
filesSelected=Hautatutako fitxategiak
|
filesSelected=Hautatutako fitxategiak
|
||||||
noFavourites=Ez dira gogokoak gehitu
|
noFavourites=Ez dira gogokoak gehitu
|
||||||
@@ -53,16 +54,32 @@ notAuthenticatedMessage=User not authenticated.
|
|||||||
userNotFoundMessage=User not found.
|
userNotFoundMessage=User not found.
|
||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Current password is incorrect.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=New Username already exists.
|
||||||
|
invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers.
|
||||||
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=Pipeline Menu (Beta)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=Upload Custom
|
||||||
pipeline.configureButton=Configure
|
pipeline.configureButton=Configure
|
||||||
pipeline.defaultOption=Custom
|
pipeline.defaultOption=Custom
|
||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
|
pipeline.help=Pipeline Help
|
||||||
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=Kontuaren ezarpenak
|
|||||||
|
|
||||||
changeCreds.title=Change Credentials
|
changeCreds.title=Change Credentials
|
||||||
changeCreds.header=Update Your Account Details
|
changeCreds.header=Update Your Account Details
|
||||||
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted)
|
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
||||||
changeCreds.newUsername=New Username
|
changeCreds.newUsername=New Username
|
||||||
changeCreds.oldPassword=Current Password
|
changeCreds.oldPassword=Current Password
|
||||||
changeCreds.newPassword=New Password
|
changeCreds.newPassword=New Password
|
||||||
@@ -143,13 +160,16 @@ adminUserSettings.header=Admin Erabiltzailearen Ezarpenen Kontrolak
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=Erabiltzaile
|
adminUserSettings.user=Erabiltzaile
|
||||||
adminUserSettings.addUser=Erabiltzaile berria
|
adminUserSettings.addUser=Erabiltzaile berria
|
||||||
|
adminUserSettings.usernameInfo=Username must only contain letters and numbers, no spaces or special characters.
|
||||||
adminUserSettings.roles=Rolak
|
adminUserSettings.roles=Rolak
|
||||||
adminUserSettings.role=Rol
|
adminUserSettings.role=Rol
|
||||||
adminUserSettings.actions=Ekintzak
|
adminUserSettings.actions=Ekintzak
|
||||||
adminUserSettings.apiUser=APIren erabiltzaile mugatua
|
adminUserSettings.apiUser=APIren erabiltzaile mugatua
|
||||||
|
adminUserSettings.extraApiUser=Additional Limited API User
|
||||||
adminUserSettings.webOnlyUser=Web-erabiltzailea bakarrik
|
adminUserSettings.webOnlyUser=Web-erabiltzailea bakarrik
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=Demo User (No custom settings)
|
||||||
adminUserSettings.forceChange=Force user to change username/password on login
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
|
adminUserSettings.forceChange=Force user to change password on login
|
||||||
adminUserSettings.submit=Gorde Erabiltzailea
|
adminUserSettings.submit=Gorde Erabiltzailea
|
||||||
|
|
||||||
#############
|
#############
|
||||||
@@ -393,6 +413,15 @@ home.AddStampRequest.desc=Add text or add image stamps at set locations
|
|||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF to Book
|
||||||
|
home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Book to PDF
|
||||||
|
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Saioa hasi
|
login.title=Saioa hasi
|
||||||
|
login.header=Saioa hasi
|
||||||
login.signin=Saioa hasi
|
login.signin=Saioa hasi
|
||||||
login.rememberme=Oroitu nazazu
|
login.rememberme=Oroitu nazazu
|
||||||
login.invalid=Okerreko erabiltzaile izena edo pasahitza.
|
login.invalid=Okerreko erabiltzaile izena edo pasahitza.
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=Orrialde bakarrera bihurtu
|
|||||||
pageExtracter.title=Atera orriak
|
pageExtracter.title=Atera orriak
|
||||||
pageExtracter.header=Atera orriak
|
pageExtracter.header=Atera orriak
|
||||||
pageExtracter.submit=Atera
|
pageExtracter.submit=Atera
|
||||||
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=1. dokumentua
|
|||||||
compare.document.2=2. dokumentua
|
compare.document.2=2. dokumentua
|
||||||
compare.submit=Konparatu
|
compare.submit=Konparatu
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Books and Comics to PDF
|
||||||
|
BookToPDF.header=Book to PDF
|
||||||
|
BookToPDF.credit=Uses Calibre
|
||||||
|
BookToPDF.submit=Convert
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF to Book
|
||||||
|
PDFToBook.header=PDF to Book
|
||||||
|
PDFToBook.selectText.1=Format
|
||||||
|
PDFToBook.credit=Uses Calibre
|
||||||
|
PDFToBook.submit=Convert
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Sinatu
|
sign.title=Sinatu
|
||||||
@@ -727,11 +770,23 @@ merge.submit=Elkartu
|
|||||||
pdfOrganiser.title=Orrialdeen antolatzailea
|
pdfOrganiser.title=Orrialdeen antolatzailea
|
||||||
pdfOrganiser.header=PDF orrialdeen antolatzailea
|
pdfOrganiser.header=PDF orrialdeen antolatzailea
|
||||||
pdfOrganiser.submit=Antolatu orrialdeak
|
pdfOrganiser.submit=Antolatu orrialdeak
|
||||||
|
pdfOrganiser.mode=Mode
|
||||||
|
pdfOrganiser.mode.1=Custom Page Order
|
||||||
|
pdfOrganiser.mode.2=Reverse Order
|
||||||
|
pdfOrganiser.mode.3=Duplex Sort
|
||||||
|
pdfOrganiser.mode.4=Booklet Sort
|
||||||
|
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
||||||
|
pdfOrganiser.mode.6=Odd-Even Split
|
||||||
|
pdfOrganiser.mode.7=Remove First
|
||||||
|
pdfOrganiser.mode.8=Remove Last
|
||||||
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=PDF erabilera anitzeko tresna
|
multiTool.title=PDF erabilera anitzeko tresna
|
||||||
multiTool.header=PDF erabilera anitzeko tresna
|
multiTool.header=PDF erabilera anitzeko tresna
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=View PDF
|
viewPdf.title=View PDF
|
||||||
@@ -742,6 +797,7 @@ pageRemover.title=Orrialdeen ezabatzailea
|
|||||||
pageRemover.header=PDF orrialdeen ezabatzailea
|
pageRemover.header=PDF orrialdeen ezabatzailea
|
||||||
pageRemover.pagesToDelete=Ezabatu beharreko orrialdeak (sartu komaz bereizitako orrialde-zenbakien zerrenda):
|
pageRemover.pagesToDelete=Ezabatu beharreko orrialdeak (sartu komaz bereizitako orrialde-zenbakien zerrenda):
|
||||||
pageRemover.submit=Ezabatu orrialdeak
|
pageRemover.submit=Ezabatu orrialdeak
|
||||||
|
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=Hautatu errotazio-angelua (90 graduko multiploetan):
|
|||||||
rotate.submit=Biratu
|
rotate.submit=Biratu
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=Zatitu PDFa
|
split.title=Zatitu PDFa
|
||||||
split.header=Zatitu PDFa
|
split.header=Zatitu PDFa
|
||||||
split.desc.1=Hautatzen dituzun zenbakiak zatiketa egin nahi duzun orrialde-zenbakiak dira
|
split.desc.1=Hautatzen dituzun zenbakiak zatiketa egin nahi duzun orrialde-zenbakiak dira
|
||||||
split.desc.2=Beraz, 1,3,7-8 hautatzean 10 orrialdeko dokumentua zatituko luke 6 PDF fitxategi bereizituetan
|
split.desc.2=Beraz, 1,3,7-9 hautatzean 10 orrialdeko dokumentua zatituko luke 6 PDF fitxategi bereizituetan
|
||||||
split.desc.3=#1 Dokumentua: 1. orrialdea
|
split.desc.3=#1 Dokumentua: 1. orrialdea
|
||||||
split.desc.4=#2 Dokumentua: 2. eta 3. orrialdeak
|
split.desc.4=#2 Dokumentua: 2. eta 3. orrialdeak
|
||||||
split.desc.5=#3 Dokumentua: 4., 5. eta 6. orrialdeak
|
split.desc.5=#3 Dokumentua: 4., 5., 6. eta 7. orrialdeak
|
||||||
split.desc.6=#4 Dokumentua: 7. orrialdea
|
split.desc.6=#4 Dokumentua: 8. orrialdea
|
||||||
split.desc.7=#5 Dokumentua: 8. orrialdea
|
split.desc.7=#5 Dokumentua: 9. orrialdea
|
||||||
split.desc.8=#6 Dokumentua: 9. eta 10. orrialdeak
|
split.desc.8=#6 Dokumentua: 10. orrialdeak
|
||||||
split.splitPages=Sartu orrialdeak zatitzeko:
|
split.splitPages=Sartu orrialdeak zatitzeko:
|
||||||
split.submit=Zatitu
|
split.submit=Zatitu
|
||||||
|
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=Opakutasuna (0% - 100%):
|
|||||||
watermark.selectText.8=Watermark Type:
|
watermark.selectText.8=Watermark Type:
|
||||||
watermark.selectText.9=Watermark Image:
|
watermark.selectText.9=Watermark Image:
|
||||||
watermark.submit=Gehitu ur-marka
|
watermark.submit=Gehitu ur-marka
|
||||||
|
watermark.type.1=Text
|
||||||
|
watermark.type.2=Image
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ pdfToPDFA.title=PDFa PDF/A bihurtu
|
|||||||
pdfToPDFA.header=PDFa PDF/A bihurtu
|
pdfToPDFA.header=PDFa PDF/A bihurtu
|
||||||
pdfToPDFA.credit=Zerbitzu honek OCRmyPDF erabiltzen du PDFak PDF/A bihurtzeko
|
pdfToPDFA.credit=Zerbitzu honek OCRmyPDF erabiltzen du PDFak PDF/A bihurtzeko
|
||||||
pdfToPDFA.submit=Bihurtu
|
pdfToPDFA.submit=Bihurtu
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=Bihurtu
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDFa HTML bihurtu
|
PDFToHTML.title=PDFa HTML bihurtu
|
||||||
PDFToHTML.header=PDFa HTML bihurtu
|
PDFToHTML.header=PDFa HTML bihurtu
|
||||||
PDFToHTML.credit=Zerbitzu honek LibreOffice erabiltzen du fitxategiak bihurtzeko
|
PDFToHTML.credit=Zerbitzu honek pdftohtml erabiltzen du fitxategiak bihurtzeko
|
||||||
PDFToHTML.submit=Bihurtu
|
PDFToHTML.submit=Bihurtu
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=Choose page to extract table
|
|||||||
PDFToCSV.submit=Extracto
|
PDFToCSV.submit=Extracto
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=Split PDF by Size or Count
|
||||||
split-by-size-or-count.header=Split PDF by Size or Count
|
split-by-size-or-count.header=Split PDF by Size or Count
|
||||||
split-by-size-or-count.type.label=Select Split Type
|
split-by-size-or-count.type.label=Select Split Type
|
||||||
split-by-size-or-count.type.size=By Size
|
split-by-size-or-count.type.size=By Size
|
||||||
@@ -960,7 +1020,7 @@ split-by-sections.vertical.label=Vertical Divisions
|
|||||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||||
split-by-sections.submit=Split PDF
|
split-by-sections.submit=Split PDF
|
||||||
|
split-by-sections.merge=Merge Into One PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Licenses
|
||||||
@@ -971,3 +1031,16 @@ licenses.version=Version
|
|||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
@@ -9,19 +9,20 @@ multiPdfPrompt=Sélectionnez les PDF
|
|||||||
multiPdfDropPrompt=Sélectionnez (ou glissez-déposez) tous les PDF dont vous avez besoin
|
multiPdfDropPrompt=Sélectionnez (ou glissez-déposez) tous les PDF dont vous avez besoin
|
||||||
imgPrompt=Choisir une image
|
imgPrompt=Choisir une image
|
||||||
genericSubmit=Envoyer
|
genericSubmit=Envoyer
|
||||||
processTimeWarning=Attention, ce processus peut prendre jusqu\u2019à une minute en fonction de la taille du fichier.
|
processTimeWarning=Attention, ce processus peut prendre jusqu’à une minute en fonction de la taille du fichier.
|
||||||
pageOrderPrompt=Ordre des pages (entrez une liste de numéros de page séparés par des virgules ou des fonctions telles que 2n+1)\u00a0:
|
pageOrderPrompt=Ordre des pages (entrez une liste de numéros de page séparés par des virgules ou des fonctions telles que 2n+1) :
|
||||||
pageSelectionPrompt=Sélection des pages (entrez une liste de numéros de page séparés par des virgules ou des fonctions telles que 2n+1)\u00a0:
|
pageSelectionPrompt=Sélection des pages (entrez une liste de numéros de page séparés par des virgules ou des fonctions telles que 2n+1) :
|
||||||
goToPage=Aller
|
goToPage=Aller
|
||||||
true=Vrai
|
true=Vrai
|
||||||
false=Faux
|
false=Faux
|
||||||
unknown=Inconnu
|
unknown=Inconnu
|
||||||
save=Enregistrer
|
save=Enregistrer
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=Fermer
|
close=Fermer
|
||||||
filesSelected=fichiers sélectionnés
|
filesSelected=fichiers sélectionnés
|
||||||
noFavourites=Aucun favori ajouté
|
noFavourites=Aucun favori ajouté
|
||||||
downloadComplete=Téléchargement terminé
|
downloadComplete=Téléchargement terminé
|
||||||
bored=Ennuyé d\u2019attendre\u00a0?
|
bored=Ennuyé d’attendre ?
|
||||||
alphabet=Alphabet
|
alphabet=Alphabet
|
||||||
downloadPdf=Télécharger le PDF
|
downloadPdf=Télécharger le PDF
|
||||||
text=Texte
|
text=Texte
|
||||||
@@ -32,9 +33,9 @@ sizes.small=Petit
|
|||||||
sizes.medium=Moyen
|
sizes.medium=Moyen
|
||||||
sizes.large=Grand
|
sizes.large=Grand
|
||||||
sizes.x-large=Très grand
|
sizes.x-large=Très grand
|
||||||
error.pdfPassword=Le document PDF est protégé par un mot de passe et le mot de passe n\u2019a pas été fourni ou était incorrect
|
error.pdfPassword=Le document PDF est protégé par un mot de passe et le mot de passe n’a pas été fourni ou était incorrect
|
||||||
delete=Supprimer
|
delete=Supprimer
|
||||||
username=Nom d\u2019utilisateur
|
username=Nom d’utilisateur
|
||||||
password=Mot de passe
|
password=Mot de passe
|
||||||
welcome=Bienvenue
|
welcome=Bienvenue
|
||||||
property=Propriété
|
property=Propriété
|
||||||
@@ -43,26 +44,43 @@ white=Blanc
|
|||||||
red=Rouge
|
red=Rouge
|
||||||
green=Vert
|
green=Vert
|
||||||
blue=Bleu
|
blue=Bleu
|
||||||
custom=Personnalisé\u2026
|
custom=Personnalisé…
|
||||||
WorkInProgess=En cours de développement, merci de nous remonter les problèmes que vous pourriez constater!
|
WorkInProgess=En cours de développement, merci de nous remonter les problèmes que vous pourriez constater!
|
||||||
poweredBy=Propulsé par
|
poweredBy=Propulsé par
|
||||||
yes=Oui
|
yes=Oui
|
||||||
no=Non
|
no=Non
|
||||||
changedCredsMessage=Les identifiants ont été mis à jour\u00a0!
|
changedCredsMessage=Les identifiants ont été mis à jour !
|
||||||
notAuthenticatedMessage=Utilisateur non authentifié.
|
notAuthenticatedMessage=Utilisateur non authentifié.
|
||||||
userNotFoundMessage=Utilisateur non trouvé.
|
userNotFoundMessage=Utilisateur non trouvé.
|
||||||
incorrectPasswordMessage=Le mot de passe actuel est incorrect.
|
incorrectPasswordMessage=Le mot de passe actuel est incorrect.
|
||||||
usernameExistsMessage=Le nouveau nom d\u2019utilisateur existe déjà.
|
usernameExistsMessage=Le nouveau nom d’utilisateur existe déjà.
|
||||||
|
invalidUsernameMessage=Nom d’utilisateur invalide, le nom d’utilisateur ne peut contenir que des chiffres et des lettres.
|
||||||
|
deleteCurrentUserMessage=Impossible de supprimer l’utilisateur actuellement connecté.
|
||||||
|
deleteUsernameExistsMessage=Le nom d’utilisateur n’existe pas et ne peut pas être supprimé.
|
||||||
|
error=Erreur
|
||||||
|
oops=Oups !
|
||||||
|
help=Aide
|
||||||
|
goHomepage=Aller à la page d’accueil
|
||||||
|
joinDiscord=Rejoignez notre serveur Discord
|
||||||
|
seeDockerHub=Consulter le Docker Hub
|
||||||
|
visitGithub=Visiter le dépôt Github
|
||||||
|
donate=Faire un don
|
||||||
|
color=Couleur
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Menu Pipeline (Alpha)
|
pipeline.header=Menu Pipeline (Alpha)
|
||||||
pipeline.uploadButton=Télécharger une personnalisation
|
pipeline.uploadButton=Charger une personnalisation
|
||||||
pipeline.configureButton=Configurer
|
pipeline.configureButton=Configurer
|
||||||
pipeline.defaultOption=Personnaliser
|
pipeline.defaultOption=Personnaliser
|
||||||
pipeline.submitButton=Soumettre
|
pipeline.submitButton=Soumettre
|
||||||
|
pipeline.help=Pipeline Help
|
||||||
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -95,8 +113,8 @@ navbar.settings=Paramètres
|
|||||||
#############
|
#############
|
||||||
settings.title=Paramètres
|
settings.title=Paramètres
|
||||||
settings.update=Mise à jour disponible
|
settings.update=Mise à jour disponible
|
||||||
settings.appVersion=Version de l\u2019application\u00a0:
|
settings.appVersion=Version de l’application :
|
||||||
settings.downloadOption.title=Choisissez l\u2019option de téléchargement (pour les téléchargements à fichier unique non ZIP)\u00a0:
|
settings.downloadOption.title=Choisissez l’option de téléchargement (pour les téléchargements à fichier unique non ZIP) :
|
||||||
settings.downloadOption.1=Ouvrir dans la même fenêtre
|
settings.downloadOption.1=Ouvrir dans la même fenêtre
|
||||||
settings.downloadOption.2=Ouvrir dans une nouvelle fenêtre
|
settings.downloadOption.2=Ouvrir dans une nouvelle fenêtre
|
||||||
settings.downloadOption.3=Télécharger le fichier
|
settings.downloadOption.3=Télécharger le fichier
|
||||||
@@ -108,8 +126,8 @@ settings.accountSettings=Paramètres du compte
|
|||||||
|
|
||||||
changeCreds.title=Modifiez vos identifiants
|
changeCreds.title=Modifiez vos identifiants
|
||||||
changeCreds.header=Mettez à jour vos identifiants de connexion
|
changeCreds.header=Mettez à jour vos identifiants de connexion
|
||||||
changeCreds.changeUserAndPassword=Vous utilisez les identifiants de connexion par défaut. Veuillez entrer un nouveau mot de passe (et nom d\u2019utilisateur si vous le souhaitez)
|
changeCreds.changePassword=Vous utilisez les identifiants de connexion par défaut. Veuillez saisir un nouveau mot de passe
|
||||||
changeCreds.newUsername=Nouveau nom d\u2019utilisateur
|
changeCreds.newUsername=Nouveau nom d’utilisateur
|
||||||
changeCreds.oldPassword=Mot de passe actuel
|
changeCreds.oldPassword=Mot de passe actuel
|
||||||
changeCreds.newPassword=Nouveau mot de passe
|
changeCreds.newPassword=Nouveau mot de passe
|
||||||
changeCreds.confirmNewPassword=Confirmer le nouveau mot de passe
|
changeCreds.confirmNewPassword=Confirmer le nouveau mot de passe
|
||||||
@@ -119,10 +137,10 @@ changeCreds.submit=Soumettre les modifications
|
|||||||
|
|
||||||
account.title=Paramètres du compte
|
account.title=Paramètres du compte
|
||||||
account.accountSettings=Paramètres du compte
|
account.accountSettings=Paramètres du compte
|
||||||
account.adminSettings=Paramètres d\u2019administration \u2013 Voir et ajouter des utilisateurs
|
account.adminSettings=Paramètres d’administration – Voir et ajouter des utilisateurs
|
||||||
account.userControlSettings=Contrôle des paramètres des utilisateurs
|
account.userControlSettings=Contrôle des paramètres des utilisateurs
|
||||||
account.changeUsername=Modifier le nom d\u2019utilisateur
|
account.changeUsername=Modifier le nom d’utilisateur
|
||||||
account.newUsername=Nouveau nom d\u2019utilisateur
|
account.newUsername=Nouveau nom d’utilisateur
|
||||||
account.password=Mot de passe de confirmation
|
account.password=Mot de passe de confirmation
|
||||||
account.oldPassword=Ancien mot de passe
|
account.oldPassword=Ancien mot de passe
|
||||||
account.newPassword=Nouveau mot de passe
|
account.newPassword=Nouveau mot de passe
|
||||||
@@ -134,8 +152,8 @@ account.syncTitle=Synchroniser les paramètres du navigateur avec le compte
|
|||||||
account.settingsCompare=Comparaison des paramètres
|
account.settingsCompare=Comparaison des paramètres
|
||||||
account.property=Propriété
|
account.property=Propriété
|
||||||
account.webBrowserSettings=Paramètres du navigateur
|
account.webBrowserSettings=Paramètres du navigateur
|
||||||
account.syncToBrowser=Synchroniser\u00a0: Compte → Navigateur
|
account.syncToBrowser=Synchroniser : Compte → Navigateur
|
||||||
account.syncToAccount=Synchroniser\u00a0: Compte ← Navigateur
|
account.syncToAccount=Synchroniser : Compte ← Navigateur
|
||||||
|
|
||||||
|
|
||||||
adminUserSettings.title=Administration des paramètres des utilisateurs
|
adminUserSettings.title=Administration des paramètres des utilisateurs
|
||||||
@@ -143,13 +161,16 @@ adminUserSettings.header=Administration des paramètres des utilisateurs
|
|||||||
adminUserSettings.admin=Administateur
|
adminUserSettings.admin=Administateur
|
||||||
adminUserSettings.user=Utilisateur
|
adminUserSettings.user=Utilisateur
|
||||||
adminUserSettings.addUser=Ajouter un utilisateur
|
adminUserSettings.addUser=Ajouter un utilisateur
|
||||||
|
adminUserSettings.usernameInfo=Le nom d’utilisateur ne doit contenir que des lettres et des chiffres, sans espaces ni caractères spéciaux.
|
||||||
adminUserSettings.roles=Rôles
|
adminUserSettings.roles=Rôles
|
||||||
adminUserSettings.role=Rôle
|
adminUserSettings.role=Rôle
|
||||||
adminUserSettings.actions=Actions
|
adminUserSettings.actions=Actions
|
||||||
adminUserSettings.apiUser=Utilisateur API limité
|
adminUserSettings.apiUser=Utilisateur API limité
|
||||||
|
adminUserSettings.extraApiUser=Utilisateur limité supplémentaire de l’API
|
||||||
adminUserSettings.webOnlyUser=Utilisateur Web uniquement
|
adminUserSettings.webOnlyUser=Utilisateur Web uniquement
|
||||||
adminUserSettings.demoUser=Demo User (Paramètres par défaut)
|
adminUserSettings.demoUser=Demo User (Paramètres par défaut)
|
||||||
adminUserSettings.forceChange=Forcer l\u2019utilisateur à changer son nom d\u2019utilisateur/mot de passe lors de la connexion
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
|
adminUserSettings.forceChange=Forcer l’utilisateur à changer son nom d’utilisateur/mot de passe lors de la connexion
|
||||||
adminUserSettings.submit=Ajouter
|
adminUserSettings.submit=Ajouter
|
||||||
|
|
||||||
#############
|
#############
|
||||||
@@ -189,7 +210,7 @@ home.pdfToImage.desc=Convertissez un PDF en image (PNG, JPEG, GIF).
|
|||||||
pdfToImage.tags=conversion,img,jpg,image,photo
|
pdfToImage.tags=conversion,img,jpg,image,photo
|
||||||
|
|
||||||
home.pdfOrganiser.title=Organiser
|
home.pdfOrganiser.title=Organiser
|
||||||
home.pdfOrganiser.desc=Supprimez ou réorganisez les pages dans n\u2019importe quel ordre.
|
home.pdfOrganiser.desc=Supprimez ou réorganisez les pages dans n’importe quel ordre.
|
||||||
pdfOrganiser.tags=organiser,recto-verso,duplex,even,odd,sort,move
|
pdfOrganiser.tags=organiser,recto-verso,duplex,even,odd,sort,move
|
||||||
|
|
||||||
|
|
||||||
@@ -199,7 +220,7 @@ addImage.tags=img,jpg,image,photo
|
|||||||
|
|
||||||
home.watermark.title=Ajouter un filigrane
|
home.watermark.title=Ajouter un filigrane
|
||||||
home.watermark.desc=Ajoutez un filigrane personnalisé à votre PDF.
|
home.watermark.desc=Ajoutez un filigrane personnalisé à votre PDF.
|
||||||
watermark.tags=texte,filigrane,label,propriété,droit d\u2019auteur,marque déposée,img,jpg,image,photo,copyright,trademark
|
watermark.tags=texte,filigrane,label,propriété,droit d’auteur,marque déposée,img,jpg,image,photo,copyright,trademark
|
||||||
|
|
||||||
home.permissions.title=Modifier les permissions
|
home.permissions.title=Modifier les permissions
|
||||||
home.permissions.desc=Modifiez les permissions de votre PDF.
|
home.permissions.desc=Modifiez les permissions de votre PDF.
|
||||||
@@ -228,16 +249,16 @@ home.changeMetadata.desc=Modifiez, supprimez ou ajoutez des métadonnées à un
|
|||||||
changeMetadata.tags=métadonnées,titre,auteur,date,création,heure,éditeur,statistiques,title,author,date,creation,time,publisher,producer,stats,metadata
|
changeMetadata.tags=métadonnées,titre,auteur,date,création,heure,éditeur,statistiques,title,author,date,creation,time,publisher,producer,stats,metadata
|
||||||
|
|
||||||
home.fileToPDF.title=Fichier en PDF
|
home.fileToPDF.title=Fichier en PDF
|
||||||
home.fileToPDF.desc=Convertissez presque n\u2019importe quel fichiers en PDF (DOCX, PNG, XLS, PPT, TXT et plus).
|
home.fileToPDF.desc=Convertissez presque n’importe quel fichiers en PDF (DOCX, PNG, XLS, PPT, TXT et plus).
|
||||||
fileToPDF.tags=convertion,transformation,format,document,image,slide,texte,conversion,office,docs,word,excel,powerpoint
|
fileToPDF.tags=convertion,transformation,format,document,image,slide,texte,conversion,office,docs,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=OCR / Nettoyage des numérisations
|
home.ocr.title=OCR / Nettoyage des numérisations
|
||||||
home.ocr.desc=Utilisez l\u2019OCR pour analyser et détecter le texte des images d\u2019un PDF et le rajouter en temps que tel.
|
home.ocr.desc=Utilisez l’OCR pour analyser et détecter le texte des images d’un PDF et le rajouter en temps que tel.
|
||||||
ocr.tags=ocr,reconnaissance,texte,image,numérisation,scan,read,identify,detection,editable
|
ocr.tags=ocr,reconnaissance,texte,image,numérisation,scan,read,identify,detection,editable
|
||||||
|
|
||||||
|
|
||||||
home.extractImages.title=Extraire les images
|
home.extractImages.title=Extraire les images
|
||||||
home.extractImages.desc=Extrayez toutes les images d\u2019un PDF et enregistrez-les dans un ZIP.
|
home.extractImages.desc=Extrayez toutes les images d’un PDF et enregistrez-les dans un ZIP.
|
||||||
extractImages.tags=image,photo,save,archive,zip,capture,grab
|
extractImages.tags=image,photo,save,archive,zip,capture,grab
|
||||||
|
|
||||||
home.pdfToPDFA.title=PDF en PDF/A
|
home.pdfToPDFA.title=PDF en PDF/A
|
||||||
@@ -266,7 +287,7 @@ home.PDFToXML.desc=Convertissez un PDF au format XML.
|
|||||||
PDFToXML.tags=xml,extraction de données,contenu structuré,interopérabilité,data-extraction,structured-content,interop,transformation,convert
|
PDFToXML.tags=xml,extraction de données,contenu structuré,interopérabilité,data-extraction,structured-content,interop,transformation,convert
|
||||||
|
|
||||||
home.ScannerImageSplit.title=Diviser les photos numérisées
|
home.ScannerImageSplit.title=Diviser les photos numérisées
|
||||||
home.ScannerImageSplit.desc=Divisez plusieurs photos à partir d\u2019une photo ou d\u2019un PDF.
|
home.ScannerImageSplit.desc=Divisez plusieurs photos à partir d’une photo ou d’un PDF.
|
||||||
ScannerImageSplit.tags=diviser,détecter automatiquement,numériser,separate,auto-detect,scans,multi-photo,organize
|
ScannerImageSplit.tags=diviser,détecter automatiquement,numériser,separate,auto-detect,scans,multi-photo,organize
|
||||||
|
|
||||||
home.sign.title=Signer
|
home.sign.title=Signer
|
||||||
@@ -274,7 +295,7 @@ home.sign.desc=Ajoutez une signature au PDF avec un dessin, du texte ou une imag
|
|||||||
sign.tags=signer,authorize,initials,drawn-signature,text-sign,image-signature
|
sign.tags=signer,authorize,initials,drawn-signature,text-sign,image-signature
|
||||||
|
|
||||||
home.flatten.title=Rendre inerte
|
home.flatten.title=Rendre inerte
|
||||||
home.flatten.desc=Supprimez tous les éléments et formulaires interactifs d\u2019un PDF.
|
home.flatten.desc=Supprimez tous les éléments et formulaires interactifs d’un PDF.
|
||||||
flatten.tags=inerte,static,deactivate,non-interactive,streamline
|
flatten.tags=inerte,static,deactivate,non-interactive,streamline
|
||||||
|
|
||||||
home.repair.title=Réparer
|
home.repair.title=Réparer
|
||||||
@@ -282,11 +303,11 @@ home.repair.desc=Essayez de réparer un PDF corrompu ou cassé.
|
|||||||
repair.tags=réparer,restaurer,corriger,récupérer,fix,restore,correction,recover
|
repair.tags=réparer,restaurer,corriger,récupérer,fix,restore,correction,recover
|
||||||
|
|
||||||
home.removeBlanks.title=Supprimer les pages vierges
|
home.removeBlanks.title=Supprimer les pages vierges
|
||||||
home.removeBlanks.desc=Détectez et supprimez les pages vierges d\u2019un PDF.
|
home.removeBlanks.desc=Détectez et supprimez les pages vierges d’un PDF.
|
||||||
removeBlanks.tags=pages vierges,supprimer,nettoyer,cleanup,streamline,non-content,organize
|
removeBlanks.tags=pages vierges,supprimer,nettoyer,cleanup,streamline,non-content,organize
|
||||||
|
|
||||||
home.removeAnnotations.title=Supprimer les annotations
|
home.removeAnnotations.title=Supprimer les annotations
|
||||||
home.removeAnnotations.desc=Supprimer tous les commentaires/annotations d\u2019un PDF.
|
home.removeAnnotations.desc=Supprimer tous les commentaires/annotations d’un PDF.
|
||||||
removeAnnotations.tags=commentaires,supprimer,annotations,highlight,notes,markup,remove
|
removeAnnotations.tags=commentaires,supprimer,annotations,highlight,notes,markup,remove
|
||||||
|
|
||||||
home.compare.title=Comparer
|
home.compare.title=Comparer
|
||||||
@@ -298,11 +319,11 @@ home.certSign.desc=Signez un PDF avec un certificat ou une clé (PEM/P12).
|
|||||||
certSign.tags=signer,chiffrer,certificat,authenticate,PEM,P12,official,encrypt
|
certSign.tags=signer,chiffrer,certificat,authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
home.pageLayout.title=Fusionner des pages
|
home.pageLayout.title=Fusionner des pages
|
||||||
home.pageLayout.desc=Fusionnez plusieurs pages d\u2019un PDF en une seule.
|
home.pageLayout.desc=Fusionnez plusieurs pages d’un PDF en une seule.
|
||||||
pageLayout.tags=fusionner,merge,composite,single-view,organize
|
pageLayout.tags=fusionner,merge,composite,single-view,organize
|
||||||
|
|
||||||
home.scalePages.title=Ajuster l\u2019échelle ou la taille
|
home.scalePages.title=Ajuster l’échelle ou la taille
|
||||||
home.scalePages.desc=Modifiez la taille ou l\u2019échelle d\u2019une page et/ou de son contenu.
|
home.scalePages.desc=Modifiez la taille ou l’échelle d’une page et/ou de son contenu.
|
||||||
scalePages.tags=ajuster,redimensionner,resize,modify,dimension,adapt
|
scalePages.tags=ajuster,redimensionner,resize,modify,dimension,adapt
|
||||||
|
|
||||||
home.pipeline.title=Pipeline (avancé)
|
home.pipeline.title=Pipeline (avancé)
|
||||||
@@ -318,11 +339,11 @@ home.auto-rename.desc=Renommez automatiquement un fichier PDF en fonction de son
|
|||||||
auto-rename.tags=renommer,détection automatique,réétiqueter,auto-detect,header-based,organize,relabel
|
auto-rename.tags=renommer,détection automatique,réétiqueter,auto-detect,header-based,organize,relabel
|
||||||
|
|
||||||
home.adjust-contrast.title=Ajuster les couleurs
|
home.adjust-contrast.title=Ajuster les couleurs
|
||||||
home.adjust-contrast.desc=Ajustez le contraste, la saturation et la luminosité d\u2019un PDF.
|
home.adjust-contrast.desc=Ajustez le contraste, la saturation et la luminosité d’un PDF.
|
||||||
adjust-contrast.tags=ajuster,couleurs,amélioration,color-correction,tune,modify,enhance
|
adjust-contrast.tags=ajuster,couleurs,amélioration,color-correction,tune,modify,enhance
|
||||||
|
|
||||||
home.crop.title=Redimensionner
|
home.crop.title=Redimensionner
|
||||||
home.crop.desc=Redimmensionnez un PDF pour réduire sa taille (en conservant le texte\u00a0!).
|
home.crop.desc=Redimmensionnez un PDF pour réduire sa taille (en conservant le texte !).
|
||||||
crop.tags=redimensionner,trim,shrink,edit,shape
|
crop.tags=redimensionner,trim,shrink,edit,shape
|
||||||
|
|
||||||
home.autoSplitPDF.title=Séparer automatiquement les pages
|
home.autoSplitPDF.title=Séparer automatiquement les pages
|
||||||
@@ -334,16 +355,16 @@ home.sanitizePdf.desc=Supprimez les scripts et autres éléments des PDF.
|
|||||||
sanitizePdf.tags=assainir,sécurisé,clean,secure,safe,remove-threats
|
sanitizePdf.tags=assainir,sécurisé,clean,secure,safe,remove-threats
|
||||||
|
|
||||||
home.URLToPDF.title=URL en PDF
|
home.URLToPDF.title=URL en PDF
|
||||||
home.URLToPDF.desc=Convertissez n\u2019importe quelle URL http(s) en PDF.
|
home.URLToPDF.desc=Convertissez n’importe quelle URL http(s) en PDF.
|
||||||
URLToPDF.tags=pdf,contenu Web,save-page,web-to-doc,archive
|
URLToPDF.tags=pdf,contenu Web,save-page,web-to-doc,archive
|
||||||
|
|
||||||
home.HTMLToPDF.title=HTML en PDF
|
home.HTMLToPDF.title=HTML en PDF
|
||||||
home.HTMLToPDF.desc=Convertissez n\u2019importe quel fichier HTML ou ZIP en PDF.
|
home.HTMLToPDF.desc=Convertissez n’importe quel fichier HTML ou ZIP en PDF.
|
||||||
HTMLToPDF.tags=html,markup,contenu Web,transformation,convert
|
HTMLToPDF.tags=html,markup,contenu Web,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
home.MarkdownToPDF.title=Markdown en PDF
|
home.MarkdownToPDF.title=Markdown en PDF
|
||||||
home.MarkdownToPDF.desc=Convertissez n\u2019importe quel fichier Markdown en PDF.
|
home.MarkdownToPDF.desc=Convertissez n’importe quel fichier Markdown en PDF.
|
||||||
MarkdownToPDF.tags=markdown,markup,contenu Web,transformation,convert
|
MarkdownToPDF.tags=markdown,markup,contenu Web,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
@@ -367,11 +388,11 @@ home.showJS.desc=Recherche et affiche tout JavaScript injecté dans un PDF.
|
|||||||
showJS.tags=JS
|
showJS.tags=JS
|
||||||
|
|
||||||
home.autoRedact.title=Caviarder automatiquement
|
home.autoRedact.title=Caviarder automatiquement
|
||||||
home.autoRedact.desc=Caviardez automatiquement les informations sensibles d\u2019un PDF.
|
home.autoRedact.desc=Caviardez automatiquement les informations sensibles d’un PDF.
|
||||||
autoRedact.tags=caviarder,redact,auto
|
autoRedact.tags=caviarder,redact,auto
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF en CSV
|
home.tableExtraxt.title=PDF en CSV
|
||||||
home.tableExtraxt.desc=Extrait les tableaux d\u2019un PDF et les transforme en CSV.
|
home.tableExtraxt.desc=Extrait les tableaux d’un PDF et les transforme en CSV.
|
||||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||||
|
|
||||||
|
|
||||||
@@ -381,18 +402,27 @@ autoSizeSplitPDF.tags=pdf,split,document,organization
|
|||||||
|
|
||||||
|
|
||||||
home.overlay-pdfs.title=Incrustation de PDF
|
home.overlay-pdfs.title=Incrustation de PDF
|
||||||
home.overlay-pdfs.desc=Incrustation d\u2019un PDF sur un autre PDF.
|
home.overlay-pdfs.desc=Incrustation d’un PDF sur un autre PDF.
|
||||||
overlay-pdfs.tags=Overlay,incrustation
|
overlay-pdfs.tags=Overlay,incrustation
|
||||||
|
|
||||||
home.split-by-sections.title=Séparer un PDF en sections
|
home.split-by-sections.title=Séparer un PDF en sections
|
||||||
home.split-by-sections.desc=Diviser chaque page d\u2019un PDF en sections horizontales/verticales plus petites.
|
home.split-by-sections.desc=Diviser chaque page d’un PDF en sections horizontales/verticales plus petites.
|
||||||
split-by-sections.tags=Sections,Diviser,Section Split, Divide, Customize
|
split-by-sections.tags=Sections,Diviser,Section Split, Divide, Customize
|
||||||
|
|
||||||
home.AddStampRequest.title=Ajouter un tampon sur un PDF
|
home.AddStampRequest.title=Ajouter un tampon sur un PDF
|
||||||
home.AddStampRequest.desc=Ajouter un texte ou l\u2019image d\u2019un tampon à un emplacement défini.
|
home.AddStampRequest.desc=Ajouter un texte ou l’image d’un tampon à un emplacement défini.
|
||||||
AddStampRequest.tags=Tampon,Ajouter,Stamp,Add image,center image,Watermark,PDF,Embed,Customize
|
AddStampRequest.tags=Tampon,Ajouter,Stamp,Add image,center image,Watermark,PDF,Embed,Customize
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF to Book
|
||||||
|
home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Book to PDF
|
||||||
|
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,9 +430,10 @@ AddStampRequest.tags=Tampon,Ajouter,Stamp,Add image,center image,Watermark,PDF,E
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Connexion
|
login.title=Connexion
|
||||||
|
login.header=Connexion
|
||||||
login.signin=Connexion
|
login.signin=Connexion
|
||||||
login.rememberme=Se souvenir de moi
|
login.rememberme=Se souvenir de moi
|
||||||
login.invalid=Nom d\u2019utilisateur ou mot de passe invalide.
|
login.invalid=Nom d’utilisateur ou mot de passe invalide.
|
||||||
login.locked=Votre compte a été verrouillé.
|
login.locked=Votre compte a été verrouillé.
|
||||||
login.signinTitle=Veuillez vous connecter
|
login.signinTitle=Veuillez vous connecter
|
||||||
|
|
||||||
@@ -437,6 +468,7 @@ pdfToSinglePage.submit=Convertir en une seule page
|
|||||||
pageExtracter.title=Extraire des pages
|
pageExtracter.title=Extraire des pages
|
||||||
pageExtracter.header=Extraire des pages
|
pageExtracter.header=Extraire des pages
|
||||||
pageExtracter.submit=Extraire
|
pageExtracter.submit=Extraire
|
||||||
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -468,15 +500,15 @@ HTMLToPDF.header=HTML en PDF
|
|||||||
HTMLToPDF.help=Accepte les fichiers HTML et les ZIP contenant du HTML, du CSS, des images, etc. (requis).
|
HTMLToPDF.help=Accepte les fichiers HTML et les ZIP contenant du HTML, du CSS, des images, etc. (requis).
|
||||||
HTMLToPDF.submit=Convertir
|
HTMLToPDF.submit=Convertir
|
||||||
HTMLToPDF.credit=Utilise WeasyPrint.
|
HTMLToPDF.credit=Utilise WeasyPrint.
|
||||||
HTMLToPDF.zoom=Niveau de zoom pour l\u2019affichage du site web.
|
HTMLToPDF.zoom=Niveau de zoom pour l’affichage du site web.
|
||||||
HTMLToPDF.pageWidth=Largeur de la page en centimètres. (Vide par défaut)
|
HTMLToPDF.pageWidth=Largeur de la page en centimètres. (Vide par défaut)
|
||||||
HTMLToPDF.pageHeight=Hauteur de la page en centimètres. (Vide par défaut)
|
HTMLToPDF.pageHeight=Hauteur de la page en centimètres. (Vide par défaut)
|
||||||
HTMLToPDF.marginTop=Marge supérieure de la page en millimètres. (Vide par défaut)
|
HTMLToPDF.marginTop=Marge supérieure de la page en millimètres. (Vide par défaut)
|
||||||
HTMLToPDF.marginBottom=Marge inférieure de la page en millimètres. (Vide par défaut)
|
HTMLToPDF.marginBottom=Marge inférieure de la page en millimètres. (Vide par défaut)
|
||||||
HTMLToPDF.marginLeft=Marge gauche de la page en millimètres. (Vide par défaut)
|
HTMLToPDF.marginLeft=Marge gauche de la page en millimètres. (Vide par défaut)
|
||||||
HTMLToPDF.marginRight=Marge droite de la page en millimètres. (Vide par défaut)
|
HTMLToPDF.marginRight=Marge droite de la page en millimètres. (Vide par défaut)
|
||||||
HTMLToPDF.printBackground=Restituer l\u2019image de fond des sites web.
|
HTMLToPDF.printBackground=Restituer l’image de fond des sites web.
|
||||||
HTMLToPDF.defaultHeader=Activer l\u2019entête par défaut (Nom et numéro de page)
|
HTMLToPDF.defaultHeader=Activer l’entête par défaut (Nom et numéro de page)
|
||||||
HTMLToPDF.cssMediaType=Modifier le type de média CSS de la page.
|
HTMLToPDF.cssMediaType=Modifier le type de média CSS de la page.
|
||||||
HTMLToPDF.none=Aucun
|
HTMLToPDF.none=Aucun
|
||||||
HTMLToPDF.print=Imprimer
|
HTMLToPDF.print=Imprimer
|
||||||
@@ -554,9 +586,9 @@ autoSplitPDF.header=Séparer automatiquement les pages
|
|||||||
autoSplitPDF.description=Imprimez, insérez, numérisez, téléchargez et laissez-nous séparer automatiquement vos documents. Aucun travail de tri manuel nécessaire.
|
autoSplitPDF.description=Imprimez, insérez, numérisez, téléchargez et laissez-nous séparer automatiquement vos documents. Aucun travail de tri manuel nécessaire.
|
||||||
autoSplitPDF.selectText.1=Imprimez des feuilles de séparation ci-dessous (le mode noir et blanc convient).
|
autoSplitPDF.selectText.1=Imprimez des feuilles de séparation ci-dessous (le mode noir et blanc convient).
|
||||||
autoSplitPDF.selectText.2=Numérisez tous vos documents en une seule fois en insérant les feuilles intercalaires entre eux.
|
autoSplitPDF.selectText.2=Numérisez tous vos documents en une seule fois en insérant les feuilles intercalaires entre eux.
|
||||||
autoSplitPDF.selectText.3=Téléchargez le fichier PDF numérisé et laissez Stirling PDF s\u2019occuper du reste.
|
autoSplitPDF.selectText.3=Téléchargez le fichier PDF numérisé et laissez Stirling PDF s’occuper du reste.
|
||||||
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\u00a0:
|
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.dividerDownload1=Auto Splitter Divider (minimal).pdf
|
||||||
autoSplitPDF.dividerDownload2=Auto Splitter Divider (with instructions).pdf
|
autoSplitPDF.dividerDownload2=Auto Splitter Divider (with instructions).pdf
|
||||||
@@ -576,10 +608,10 @@ pageLayout.submit=Fusionner
|
|||||||
|
|
||||||
|
|
||||||
#scalePages
|
#scalePages
|
||||||
scalePages.title=Ajuster la taille ou l\u2019échelle
|
scalePages.title=Ajuster la taille ou l’échelle
|
||||||
scalePages.header=Ajuster la taille ou l\u2019échelle
|
scalePages.header=Ajuster la taille ou l’échelle
|
||||||
scalePages.pageSize=Taille d\u2019une page du document
|
scalePages.pageSize=Taille d’une page du document
|
||||||
scalePages.scaleFactor=Niveau de zoom (recadrage) d\u2019une page
|
scalePages.scaleFactor=Niveau de zoom (recadrage) d’une page
|
||||||
scalePages.submit=Ajuster
|
scalePages.submit=Ajuster
|
||||||
|
|
||||||
|
|
||||||
@@ -587,10 +619,10 @@ scalePages.submit=Ajuster
|
|||||||
certSign.title=Signer avec un certificat
|
certSign.title=Signer avec un certificat
|
||||||
certSign.header=Signer avec un certificat (Travail en cours)
|
certSign.header=Signer avec un certificat (Travail en cours)
|
||||||
certSign.selectPDF=PDF à signer
|
certSign.selectPDF=PDF à signer
|
||||||
certSign.jksNote=Note: Si votre type de certificat n\u2019est pas listé ci\u002Ddessous, merci de le convertir en fichier Java Keystore (.jks) en utilisant l\u2019outil en ligne de commande keytool. Puis choisissez l\u2019option Fichier .jks ci\u002Ddessous.
|
certSign.jksNote=Note: Si votre type de certificat n’est pas listé ci-dessous, merci de le convertir en fichier Java Keystore (.jks) en utilisant l’outil en ligne de commande keytool. Puis choisissez l’option Fichier .jks ci-dessous.
|
||||||
certSign.selectKey=Fichier de clé privée (format PKCS#8, peut être .pem ou .der)
|
certSign.selectKey=Fichier de clé privée (format PKCS#8, peut être .pem ou .der)
|
||||||
certSign.selectCert=Fichier de certificat (format X.509, peut être .pem ou .der)
|
certSign.selectCert=Fichier de certificat (format X.509, peut être .pem ou .der)
|
||||||
certSign.selectP12=Fichier keystore de clés PKCS#12 (.p12 ou .pfx) (facultatif, s\u2019il n\u2019est fourni, il doit contenir votre clé privée et votre certificat)
|
certSign.selectP12=Fichier keystore de clés PKCS#12 (.p12 ou .pfx) (facultatif, s’il n’est fourni, il doit contenir votre clé privée et votre certificat)
|
||||||
certSign.selectJKS=Sélectionner votre fichier Java Keystore File (.jks or .keystore):
|
certSign.selectJKS=Sélectionner votre fichier Java Keystore File (.jks or .keystore):
|
||||||
certSign.certType=Type de certificat
|
certSign.certType=Type de certificat
|
||||||
certSign.password=Mot de passe keystore ou clé privée le cas échéant
|
certSign.password=Mot de passe keystore ou clé privée le cas échéant
|
||||||
@@ -605,7 +637,7 @@ certSign.submit=Signer
|
|||||||
removeBlanks.title=Supprimer les pages vierges
|
removeBlanks.title=Supprimer les pages vierges
|
||||||
removeBlanks.header=Supprimer les pages vierges
|
removeBlanks.header=Supprimer les pages vierges
|
||||||
removeBlanks.threshold=Seuil de blancheur des pixels
|
removeBlanks.threshold=Seuil de blancheur des pixels
|
||||||
removeBlanks.thresholdDesc=Seuil pour déterminer à quel point un pixel blanc doit être blanc pour être classé comme «\u00a0blanc\u00a0» (0 = noir, 255 = blanc pur).
|
removeBlanks.thresholdDesc=Seuil pour déterminer à quel point un pixel blanc doit être blanc pour être classé comme « blanc » (0 = noir, 255 = blanc pur).
|
||||||
removeBlanks.whitePercent=Pourcentage de blanc
|
removeBlanks.whitePercent=Pourcentage de blanc
|
||||||
removeBlanks.whitePercentDesc=Pourcentage de la page qui doit contenir des pixels « blancs » à supprimer.
|
removeBlanks.whitePercentDesc=Pourcentage de la page qui doit contenir des pixels « blancs » à supprimer.
|
||||||
removeBlanks.submit=Supprimer les pages vierges
|
removeBlanks.submit=Supprimer les pages vierges
|
||||||
@@ -624,6 +656,18 @@ compare.document.1=Document 1
|
|||||||
compare.document.2=Document 2
|
compare.document.2=Document 2
|
||||||
compare.submit=Comparer
|
compare.submit=Comparer
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Books and Comics to PDF
|
||||||
|
BookToPDF.header=Book to PDF
|
||||||
|
BookToPDF.credit=Uses Calibre
|
||||||
|
BookToPDF.submit=Convert
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF to Book
|
||||||
|
PDFToBook.header=PDF to Book
|
||||||
|
PDFToBook.selectText.1=Format
|
||||||
|
PDFToBook.credit=Uses Calibre
|
||||||
|
PDFToBook.submit=Convert
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Signer
|
sign.title=Signer
|
||||||
@@ -649,15 +693,15 @@ flatten.submit=Rendre inerte
|
|||||||
|
|
||||||
#ScannerImageSplit
|
#ScannerImageSplit
|
||||||
ScannerImageSplit.selectText.1=Seuil de rotation
|
ScannerImageSplit.selectText.1=Seuil de rotation
|
||||||
ScannerImageSplit.selectText.2=Définit l\u2019angle absolu minimum requis pour la rotation de l\u2019image (par défaut\u00a0: 10).
|
ScannerImageSplit.selectText.2=Définit l’angle absolu minimum requis pour la rotation de l’image (par défaut : 10).
|
||||||
ScannerImageSplit.selectText.3=Tolérance
|
ScannerImageSplit.selectText.3=Tolérance
|
||||||
ScannerImageSplit.selectText.4=Détermine la plage de variation de couleur autour de la couleur d\u2019arrière-plan estimée (par défaut\u00a0: 20).
|
ScannerImageSplit.selectText.4=Détermine la plage de variation de couleur autour de la couleur d’arrière-plan estimée (par défaut : 20).
|
||||||
ScannerImageSplit.selectText.5=Surface minimale
|
ScannerImageSplit.selectText.5=Surface minimale
|
||||||
ScannerImageSplit.selectText.6=Définit la surface minimale pour une photo (par défaut\u00a0: 8\u202f000).
|
ScannerImageSplit.selectText.6=Définit la surface minimale pour une photo (par défaut : 8 000).
|
||||||
ScannerImageSplit.selectText.7=Surface de contour minimale
|
ScannerImageSplit.selectText.7=Surface de contour minimale
|
||||||
ScannerImageSplit.selectText.8=Définit la surface de contour minimale pour une photo (par défaut\u00a0: 500).
|
ScannerImageSplit.selectText.8=Définit la surface de contour minimale pour une photo (par défaut : 500).
|
||||||
ScannerImageSplit.selectText.9=Taille de la bordure
|
ScannerImageSplit.selectText.9=Taille de la bordure
|
||||||
ScannerImageSplit.selectText.10=Définit la taille de la bordure ajoutée et supprimée pour éviter les bordures blanches dans la sortie (par défaut\u00a0: 1).
|
ScannerImageSplit.selectText.10=Définit la taille de la bordure ajoutée et supprimée pour éviter les bordures blanches dans la sortie (par défaut : 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
@@ -666,24 +710,24 @@ ocr.header=OCR (Reconnaissance optique de caractères) / Nettoyage des numérisa
|
|||||||
ocr.selectText.1=Langues à détecter dans le PDF (celles listées sont celles actuellement détectées)
|
ocr.selectText.1=Langues à détecter dans le PDF (celles listées sont celles actuellement détectées)
|
||||||
ocr.selectText.2=Produire un fichier texte contenant le texte détecté à côté du PDF
|
ocr.selectText.2=Produire un fichier texte contenant le texte détecté à côté du PDF
|
||||||
ocr.selectText.3=Corriger les pages qui ont été numérisées à un angle oblique en les remettant en place
|
ocr.selectText.3=Corriger les pages qui ont été numérisées à un angle oblique en les remettant en place
|
||||||
ocr.selectText.4=Nettoyer la page afin qu\u2019il soit moins probable que l\u2019OCR trouve du texte dans le bruit de fond, sans modifier la sortie
|
ocr.selectText.4=Nettoyer la page afin qu’il soit moins probable que l’OCR trouve du texte dans le bruit de fond, sans modifier la sortie
|
||||||
ocr.selectText.5=Nettoyer la page afin qu\u2019il soit moins probable que l\u2019OCR trouve du texte dans le bruit de fond, en modifiant la sortie
|
ocr.selectText.5=Nettoyer la page afin qu’il soit moins probable que l’OCR trouve du texte dans le bruit de fond, en modifiant la sortie
|
||||||
ocr.selectText.6=Ignorer les pages contenant du texte interactif, n\u2019analyser que les pages qui sont des images
|
ocr.selectText.6=Ignorer les pages contenant du texte interactif, n’analyser que les pages qui sont des images
|
||||||
ocr.selectText.7=Forcer l\u2019OCR, analyser chaque page et supprimer tous les éléments de texte d\u2019origine
|
ocr.selectText.7=Forcer l’OCR, analyser chaque page et supprimer tous les éléments de texte d’origine
|
||||||
ocr.selectText.8=Normal (génère une erreur si le PDF contient du texte)
|
ocr.selectText.8=Normal (génère une erreur si le PDF contient du texte)
|
||||||
ocr.selectText.9=Paramètres additionnels
|
ocr.selectText.9=Paramètres additionnels
|
||||||
ocr.selectText.10=Mode OCR
|
ocr.selectText.10=Mode OCR
|
||||||
ocr.selectText.11=Supprimer les images après l\u2019OCR (Supprime TOUTES les images, utile uniquement si elles font partie de l\u2019étape de conversion)
|
ocr.selectText.11=Supprimer les images après l’OCR (Supprime TOUTES les images, utile uniquement si elles font partie de l’étape de conversion)
|
||||||
ocr.selectText.12=Type de rendu (avancé)
|
ocr.selectText.12=Type de rendu (avancé)
|
||||||
ocr.help=Veuillez lire cette documentation pour savoir comment utiliser l\u2019OCR pour d\u2019autres langues ou une utilisation hors Docker\u00a0:
|
ocr.help=Veuillez lire cette documentation pour savoir comment utiliser l’OCR pour d’autres langues ou une utilisation hors Docker :
|
||||||
ocr.credit=Ce service utilise OCRmyPDF et Tesseract pour l\u2019OCR.
|
ocr.credit=Ce service utilise OCRmyPDF et Tesseract pour l’OCR.
|
||||||
ocr.submit=Traiter
|
ocr.submit=Traiter
|
||||||
|
|
||||||
|
|
||||||
#extractImages
|
#extractImages
|
||||||
extractImages.title=Extraire les images
|
extractImages.title=Extraire les images
|
||||||
extractImages.header=Extraire les images
|
extractImages.header=Extraire les images
|
||||||
extractImages.selectText=Format d\u2019image dans lequel convertir les images extraites
|
extractImages.selectText=Format d’image dans lequel convertir les images extraites
|
||||||
extractImages.submit=Extraire
|
extractImages.submit=Extraire
|
||||||
|
|
||||||
|
|
||||||
@@ -697,20 +741,20 @@ fileToPDF.submit=Convertir
|
|||||||
|
|
||||||
#compress
|
#compress
|
||||||
compress.title=Compresser un PDF
|
compress.title=Compresser un PDF
|
||||||
compress.header=Compresser un PDF (lorsque c\u2019est possible!)
|
compress.header=Compresser un PDF (lorsque c’est possible!)
|
||||||
compress.credit=Ce service utilise Ghostscript pour la compression et l\u2019optimisation des PDF.
|
compress.credit=Ce service utilise Ghostscript pour la compression et l’optimisation des PDF.
|
||||||
compress.selectText.1=Mode manuel \u2013 de 1 à 4
|
compress.selectText.1=Mode manuel – de 1 à 4
|
||||||
compress.selectText.2=Niveau d\u2019optimisation
|
compress.selectText.2=Niveau d’optimisation
|
||||||
compress.selectText.3=4 (terrible pour les images textuelles)
|
compress.selectText.3=4 (terrible pour les images textuelles)
|
||||||
compress.selectText.4=Mode automatique \u2013 ajuste automatiquement la qualité pour obtenir le PDF à la taille exacte
|
compress.selectText.4=Mode automatique – ajuste automatiquement la qualité pour obtenir le PDF à la taille exacte
|
||||||
compress.selectText.5=Taille PDF attendue (par exemple, 25\u202fMB, 10,8\u202fMB, 25\u202fKB)
|
compress.selectText.5=Taille PDF attendue (par exemple, 25 MB, 10,8 MB, 25 KB)
|
||||||
compress.submit=Compresser
|
compress.submit=Compresser
|
||||||
|
|
||||||
|
|
||||||
#Add image
|
#Add image
|
||||||
addImage.title=Ajouter une image
|
addImage.title=Ajouter une image
|
||||||
addImage.header=Ajouter une image
|
addImage.header=Ajouter une image
|
||||||
addImage.everyPage=Toutes les pages\u00a0?
|
addImage.everyPage=Toutes les pages ?
|
||||||
addImage.upload=Télécharger une image
|
addImage.upload=Télécharger une image
|
||||||
addImage.submit=Ajouter une image
|
addImage.submit=Ajouter une image
|
||||||
|
|
||||||
@@ -727,11 +771,23 @@ merge.submit=Fusionner
|
|||||||
pdfOrganiser.title=Organiser
|
pdfOrganiser.title=Organiser
|
||||||
pdfOrganiser.header=Organiser les pages
|
pdfOrganiser.header=Organiser les pages
|
||||||
pdfOrganiser.submit=Organiser
|
pdfOrganiser.submit=Organiser
|
||||||
|
pdfOrganiser.mode=Mode
|
||||||
|
pdfOrganiser.mode.1=Custom Page Order
|
||||||
|
pdfOrganiser.mode.2=Reverse Order
|
||||||
|
pdfOrganiser.mode.3=Duplex Sort
|
||||||
|
pdfOrganiser.mode.4=Booklet Sort
|
||||||
|
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
||||||
|
pdfOrganiser.mode.6=Odd-Even Split
|
||||||
|
pdfOrganiser.mode.7=Remove First
|
||||||
|
pdfOrganiser.mode.8=Remove Last
|
||||||
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=Outil multifonction PDF
|
multiTool.title=Outil multifonction PDF
|
||||||
multiTool.header=Outil multifonction PDF
|
multiTool.header=Outil multifonction PDF
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=Visualiser un PDF
|
viewPdf.title=Visualiser un PDF
|
||||||
@@ -740,28 +796,29 @@ viewPdf.header=Visualiser un PDF
|
|||||||
#pageRemover
|
#pageRemover
|
||||||
pageRemover.title=Supprimer des pages
|
pageRemover.title=Supprimer des pages
|
||||||
pageRemover.header=Supprimer des pages
|
pageRemover.header=Supprimer des pages
|
||||||
pageRemover.pagesToDelete=Pages à supprimer (entrez une liste de numéros de pages séparés par des virgules)\u00a0:
|
pageRemover.pagesToDelete=Pages à supprimer (entrez une liste de numéros de pages séparés par des virgules) :
|
||||||
pageRemover.submit=Supprimer les pages
|
pageRemover.submit=Supprimer les pages
|
||||||
|
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
rotate.title=Pivoter
|
rotate.title=Pivoter
|
||||||
rotate.header=Pivoter
|
rotate.header=Pivoter
|
||||||
rotate.selectAngle=Angle de rotation (par multiples de 90\u202fdegrés)
|
rotate.selectAngle=Angle de rotation (par multiples de 90 degrés)
|
||||||
rotate.submit=Pivoter
|
rotate.submit=Pivoter
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=Diviser
|
split.title=Diviser
|
||||||
split.header=Diviser
|
split.header=Diviser
|
||||||
split.desc.1=Les numéros que vous sélectionnez sont le numéro de page sur lequel vous souhaitez faire une division
|
split.desc.1=Les numéros que vous sélectionnez sont le numéro de page sur lequel vous souhaitez faire une division
|
||||||
split.desc.2=Ainsi, la sélection de 1,3,7-8 diviserait un document de 10 pages en 6 PDF distincts avec\u00a0:
|
split.desc.2=Ainsi, la sélection de 1,3,7-9 diviserait un document de 10 pages en 6 PDF distincts avec :
|
||||||
split.desc.3=Document #1: Page 1
|
split.desc.3=Document #1: Page 1
|
||||||
split.desc.4=Document #2: Page 2 et 3
|
split.desc.4=Document #2: Page 2 et 3
|
||||||
split.desc.5=Document #3: Page 4, 5 et 6
|
split.desc.5=Document #3: Page 4, 5, 6 et 7
|
||||||
split.desc.6=Document #4: Page 7
|
split.desc.6=Document #4: Page 8
|
||||||
split.desc.7=Document #5: Page 8
|
split.desc.7=Document #5: Page 9
|
||||||
split.desc.8=Document #6: Page 9 et 10
|
split.desc.8=Document #6: Page 10
|
||||||
split.splitPages=Pages sur lesquelles diviser
|
split.splitPages=Pages sur lesquelles diviser
|
||||||
split.submit=Diviser
|
split.submit=Diviser
|
||||||
|
|
||||||
@@ -770,9 +827,9 @@ split.submit=Diviser
|
|||||||
imageToPDF.title=Image en PDF
|
imageToPDF.title=Image en PDF
|
||||||
imageToPDF.header=Image en PDF
|
imageToPDF.header=Image en PDF
|
||||||
imageToPDF.submit=Convertir
|
imageToPDF.submit=Convertir
|
||||||
imageToPDF.selectLabel=Options d\u2019ajustement de l\u2019image
|
imageToPDF.selectLabel=Options d’ajustement de l’image
|
||||||
imageToPDF.fillPage=Remplir la page
|
imageToPDF.fillPage=Remplir la page
|
||||||
imageToPDF.fitDocumentToImage=Ajuster la page à l\u2019image
|
imageToPDF.fitDocumentToImage=Ajuster la page à l’image
|
||||||
imageToPDF.maintainAspectRatio=Maintenir les proportions
|
imageToPDF.maintainAspectRatio=Maintenir les proportions
|
||||||
imageToPDF.selectText.2=Rotation automatique du PDF
|
imageToPDF.selectText.2=Rotation automatique du PDF
|
||||||
imageToPDF.selectText.3=Logique multi-fichiers (uniquement activée si vous travaillez avec plusieurs images)
|
imageToPDF.selectText.3=Logique multi-fichiers (uniquement activée si vous travaillez avec plusieurs images)
|
||||||
@@ -783,14 +840,14 @@ imageToPDF.selectText.5=Convertir en PDF séparés
|
|||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=Image en PDF
|
pdfToImage.title=Image en PDF
|
||||||
pdfToImage.header=Image en PDF
|
pdfToImage.header=Image en PDF
|
||||||
pdfToImage.selectText=Format d\u2019image
|
pdfToImage.selectText=Format d’image
|
||||||
pdfToImage.singleOrMultiple=Type de résultat
|
pdfToImage.singleOrMultiple=Type de résultat
|
||||||
pdfToImage.single=Une seule grande image
|
pdfToImage.single=Une seule grande image
|
||||||
pdfToImage.multi=Plusieurs images
|
pdfToImage.multi=Plusieurs images
|
||||||
pdfToImage.colorType=Type d\u2019impression
|
pdfToImage.colorType=Type d’impression
|
||||||
pdfToImage.color=Couleur
|
pdfToImage.color=Couleur
|
||||||
pdfToImage.grey=Niveaux de gris
|
pdfToImage.grey=Niveaux de gris
|
||||||
pdfToImage.blackwhite=Noir et blanc (peut engendrer une perte de données\u00a0!)
|
pdfToImage.blackwhite=Noir et blanc (peut engendrer une perte de données !)
|
||||||
pdfToImage.submit=Convertir
|
pdfToImage.submit=Convertir
|
||||||
|
|
||||||
|
|
||||||
@@ -798,21 +855,21 @@ pdfToImage.submit=Convertir
|
|||||||
addPassword.title=Ajouter un mot de passe
|
addPassword.title=Ajouter un mot de passe
|
||||||
addPassword.header=Ajouter un mot de passe
|
addPassword.header=Ajouter un mot de passe
|
||||||
addPassword.selectText.1=PDF à chiffrer
|
addPassword.selectText.1=PDF à chiffrer
|
||||||
addPassword.selectText.2=Mot de passe de l\u2019utilisateur
|
addPassword.selectText.2=Mot de passe de l’utilisateur
|
||||||
addPassword.selectText.3=Longueur de la clé de chiffrement
|
addPassword.selectText.3=Longueur de la clé de chiffrement
|
||||||
addPassword.selectText.4=Les valeurs plus élevées sont plus fortes, mais les valeurs plus faibles ont une meilleure compatibilité.
|
addPassword.selectText.4=Les valeurs plus élevées sont plus fortes, mais les valeurs plus faibles ont une meilleure compatibilité.
|
||||||
addPassword.selectText.5=Autorisations à définir (utilisation recommandée avec le mot de passe du propriétaire)
|
addPassword.selectText.5=Autorisations à définir (utilisation recommandée avec le mot de passe du propriétaire)
|
||||||
addPassword.selectText.6=Empêcher l\u2019assemblage du document
|
addPassword.selectText.6=Empêcher l’assemblage du document
|
||||||
addPassword.selectText.7=Empêcher l\u2019extraction de contenu
|
addPassword.selectText.7=Empêcher l’extraction de contenu
|
||||||
addPassword.selectText.8=Empêcher l\u2019extraction pour l\u2019accessibilité
|
addPassword.selectText.8=Empêcher l’extraction pour l’accessibilité
|
||||||
addPassword.selectText.9=Empêcher de remplir les formulaires
|
addPassword.selectText.9=Empêcher de remplir les formulaires
|
||||||
addPassword.selectText.10=Empêcher la modification
|
addPassword.selectText.10=Empêcher la modification
|
||||||
addPassword.selectText.11=Empêcher la modification des annotations
|
addPassword.selectText.11=Empêcher la modification des annotations
|
||||||
addPassword.selectText.12=Empêcher l\u2019impression
|
addPassword.selectText.12=Empêcher l’impression
|
||||||
addPassword.selectText.13=Empêcher l\u2019impression des différents formats
|
addPassword.selectText.13=Empêcher l’impression des différents formats
|
||||||
addPassword.selectText.14=Mot de passe du propriétaire
|
addPassword.selectText.14=Mot de passe du propriétaire
|
||||||
addPassword.selectText.15=Restreint ce qui peut être fait avec le document une fois qu\u2019il est ouvert (non pris en charge par tous les lecteurs).
|
addPassword.selectText.15=Restreint ce qui peut être fait avec le document une fois qu’il est ouvert (non pris en charge par tous les lecteurs).
|
||||||
addPassword.selectText.16=Restreint l\u2019ouverture du document lui-même.
|
addPassword.selectText.16=Restreint l’ouverture du document lui-même.
|
||||||
addPassword.submit=Chiffrer
|
addPassword.submit=Chiffrer
|
||||||
|
|
||||||
|
|
||||||
@@ -829,6 +886,8 @@ watermark.selectText.7=Opacité (de 0% à 100%)
|
|||||||
watermark.selectText.8=Type de filigrane
|
watermark.selectText.8=Type de filigrane
|
||||||
watermark.selectText.9=Image du filigrane
|
watermark.selectText.9=Image du filigrane
|
||||||
watermark.submit=Ajouter un filigrane
|
watermark.submit=Ajouter un filigrane
|
||||||
|
watermark.type.1=Text
|
||||||
|
watermark.type.2=Image
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -837,14 +896,14 @@ permissions.header=Modifier les permissions
|
|||||||
permissions.warning=Attention, pour que ces permissions soient immuables il est recommandé de les paramétrer avec un mot de passe via la page Ajouter un mot de passe.
|
permissions.warning=Attention, pour que ces permissions soient immuables il est recommandé de les paramétrer avec un mot de passe via la page Ajouter un mot de passe.
|
||||||
permissions.selectText.1=Sélectionnez le PDF
|
permissions.selectText.1=Sélectionnez le PDF
|
||||||
permissions.selectText.2=Permissions à définir
|
permissions.selectText.2=Permissions à définir
|
||||||
permissions.selectText.3=Empêcher l\u2019assemblage du document
|
permissions.selectText.3=Empêcher l’assemblage du document
|
||||||
permissions.selectText.4=Empêcher l\u2019extraction de contenu
|
permissions.selectText.4=Empêcher l’extraction de contenu
|
||||||
permissions.selectText.5=Empêcher l\u2019extraction pour l\u2019accessibilité
|
permissions.selectText.5=Empêcher l’extraction pour l’accessibilité
|
||||||
permissions.selectText.6=Empêcher de remplir les formulaires
|
permissions.selectText.6=Empêcher de remplir les formulaires
|
||||||
permissions.selectText.7=Empêcher la modification
|
permissions.selectText.7=Empêcher la modification
|
||||||
permissions.selectText.8=Empêcher la modification des annotations
|
permissions.selectText.8=Empêcher la modification des annotations
|
||||||
permissions.selectText.9=Empêcher l\u2019impression
|
permissions.selectText.9=Empêcher l’impression
|
||||||
permissions.selectText.10=Empêcher l\u2019impression des différents formats
|
permissions.selectText.10=Empêcher l’impression des différents formats
|
||||||
permissions.submit=Modifier
|
permissions.submit=Modifier
|
||||||
|
|
||||||
|
|
||||||
@@ -880,6 +939,7 @@ pdfToPDFA.title=PDF en PDF/A
|
|||||||
pdfToPDFA.header=PDF en PDF/A
|
pdfToPDFA.header=PDF en PDF/A
|
||||||
pdfToPDFA.credit=Ce service utilise OCRmyPDF pour la conversion en PDF/A.
|
pdfToPDFA.credit=Ce service utilise OCRmyPDF pour la conversion en PDF/A.
|
||||||
pdfToPDFA.submit=Convertir
|
pdfToPDFA.submit=Convertir
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +969,7 @@ PDFToText.submit=Convertir
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF en HTML
|
PDFToHTML.title=PDF en HTML
|
||||||
PDFToHTML.header=PDF en HTML
|
PDFToHTML.header=PDF en HTML
|
||||||
PDFToHTML.credit=Ce service utilise LibreOffice pour la conversion de fichiers.
|
PDFToHTML.credit=Ce service utilise pdftohtml pour la conversion de fichiers.
|
||||||
PDFToHTML.submit=Convertir
|
PDFToHTML.submit=Convertir
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +986,7 @@ PDFToCSV.prompt=Choisir la page pour en extraire le tableau
|
|||||||
PDFToCSV.submit=Extrait
|
PDFToCSV.submit=Extrait
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=Séparer le PDF par taille ou par nombre
|
||||||
split-by-size-or-count.header=Séparer le PDF par taille ou par nombre
|
split-by-size-or-count.header=Séparer le PDF par taille ou par nombre
|
||||||
split-by-size-or-count.type.label=Sélectionner le type de division
|
split-by-size-or-count.type.label=Sélectionner le type de division
|
||||||
split-by-size-or-count.type.size=Par taille
|
split-by-size-or-count.type.size=Par taille
|
||||||
@@ -940,13 +1001,13 @@ split-by-size-or-count.submit=Séparer
|
|||||||
overlay-pdfs.header=Incrustation de PDF
|
overlay-pdfs.header=Incrustation de PDF
|
||||||
overlay-pdfs.baseFile.label=Sélectionner le fichier PDF de base
|
overlay-pdfs.baseFile.label=Sélectionner le fichier PDF de base
|
||||||
overlay-pdfs.overlayFiles.label=Sélectionner les fichiers PDF à superposer
|
overlay-pdfs.overlayFiles.label=Sélectionner les fichiers PDF à superposer
|
||||||
overlay-pdfs.mode.label=Sélectionner le mode d\u2019incrustation
|
overlay-pdfs.mode.label=Sélectionner le mode d’incrustation
|
||||||
overlay-pdfs.mode.sequential=Superposition séquentielle
|
overlay-pdfs.mode.sequential=Superposition séquentielle
|
||||||
overlay-pdfs.mode.interleaved=Superposition entrelacée
|
overlay-pdfs.mode.interleaved=Superposition entrelacée
|
||||||
overlay-pdfs.mode.fixedRepeat=Superposition à répétition fixe
|
overlay-pdfs.mode.fixedRepeat=Superposition à répétition fixe
|
||||||
overlay-pdfs.counts.label=Nombre de superpositions (pour le mode de répétition fixe)
|
overlay-pdfs.counts.label=Nombre de superpositions (pour le mode de répétition fixe)
|
||||||
overlay-pdfs.counts.placeholder=Compteurs (séparés par des virgules, exemple : 2,3,1)
|
overlay-pdfs.counts.placeholder=Compteurs (séparés par des virgules, exemple : 2,3,1)
|
||||||
overlay-pdfs.position.label=Définir la position de l\u2019incrustation
|
overlay-pdfs.position.label=Définir la position de l’incrustation
|
||||||
overlay-pdfs.position.foreground=Premier plan
|
overlay-pdfs.position.foreground=Premier plan
|
||||||
overlay-pdfs.position.background=Arrière-plan
|
overlay-pdfs.position.background=Arrière-plan
|
||||||
overlay-pdfs.submit=Soumettre
|
overlay-pdfs.submit=Soumettre
|
||||||
@@ -960,7 +1021,7 @@ split-by-sections.vertical.label=Divisions verticales
|
|||||||
split-by-sections.horizontal.placeholder=Saisir le nombre de divisions horizontales
|
split-by-sections.horizontal.placeholder=Saisir le nombre de divisions horizontales
|
||||||
split-by-sections.vertical.placeholder=Entrer le nombre de divisions verticales
|
split-by-sections.vertical.placeholder=Entrer le nombre de divisions verticales
|
||||||
split-by-sections.submit=Diviser le PDF
|
split-by-sections.submit=Diviser le PDF
|
||||||
|
split-by-sections.merge=Fusionner en un seul PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licences
|
licenses.nav=Licences
|
||||||
@@ -971,3 +1032,16 @@ licenses.version=Version
|
|||||||
licenses.license=Licence
|
licenses.license=Licence
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Désolé pour ce problème !
|
||||||
|
error.needHelp=Besoin d’aide / Vous avez trouvé un problème ?
|
||||||
|
error.contactTip=Si vous avez encore des problèmes, n’hésitez pas à nous contacter pour obtenir de l’aide. Vous pouvez soumettre un ticket sur notre page GitHub ou nous contacter via Discord :
|
||||||
|
error.404.head=404 - Page non trouvée | oups on s’est foiré !
|
||||||
|
error.404.1=Nous ne parvenons pas à trouver la page que vous recherchez.
|
||||||
|
error.404.2=Quelque chose n’a pas fonctionné
|
||||||
|
error.github=Créer un ticket sur GitHub
|
||||||
|
error.showStack=Afficher la Stack Trace
|
||||||
|
error.copyStack=Copier la Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Créer un ticket
|
||||||
|
error.discordSubmit=Discord - Poster un message de demande d’assistance
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=सही
|
|||||||
false=गलत
|
false=गलत
|
||||||
unknown=अज्ञात
|
unknown=अज्ञात
|
||||||
save=सहेजें
|
save=सहेजें
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=बंद करें
|
close=बंद करें
|
||||||
filesSelected=फ़ाइलें चयनित हैं
|
filesSelected=फ़ाइलें चयनित हैं
|
||||||
noFavourites=कोई पसंदीदा जोड़ा नहीं गया है
|
noFavourites=कोई पसंदीदा जोड़ा नहीं गया है
|
||||||
@@ -53,16 +54,32 @@ notAuthenticatedMessage=उपयोगकर्ता प्रमाणित
|
|||||||
userNotFoundMessage=उपयोगकर्ता नहीं मिला।
|
userNotFoundMessage=उपयोगकर्ता नहीं मिला।
|
||||||
incorrectPasswordMessage=वर्तमान पासवर्ड गलत है।
|
incorrectPasswordMessage=वर्तमान पासवर्ड गलत है।
|
||||||
usernameExistsMessage=नया उपयोगकर्ता नाम पहले से मौजूद है।
|
usernameExistsMessage=नया उपयोगकर्ता नाम पहले से मौजूद है।
|
||||||
|
invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers.
|
||||||
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=Pipeline Menu (Beta)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=Upload Custom
|
||||||
pipeline.configureButton=Configure
|
pipeline.configureButton=Configure
|
||||||
pipeline.defaultOption=Custom
|
pipeline.defaultOption=Custom
|
||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
|
pipeline.help=Pipeline Help
|
||||||
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=खाता सेटिंग्स
|
|||||||
|
|
||||||
changeCreds.title=क्रेडेंशियल बदलें
|
changeCreds.title=क्रेडेंशियल बदलें
|
||||||
changeCreds.header=अपना खाता विवरण अपडेट करें
|
changeCreds.header=अपना खाता विवरण अपडेट करें
|
||||||
changeCreds.changeUserAndPassword=आप डिफ़ॉल्ट लॉगिन क्रेडेंशियल का उपयोग कर रहे हैं। कृपया एक नया पासवर्ड दर्ज करें (और यदि चाहें तो उपयोगकर्ता नाम)
|
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
||||||
changeCreds.newUsername=नया उपयोगकर्ता नाम
|
changeCreds.newUsername=नया उपयोगकर्ता नाम
|
||||||
changeCreds.oldPassword=वर्तमान पासवर्ड
|
changeCreds.oldPassword=वर्तमान पासवर्ड
|
||||||
changeCreds.newPassword=नया पासवर्ड
|
changeCreds.newPassword=नया पासवर्ड
|
||||||
@@ -143,12 +160,15 @@ adminUserSettings.header=व्यवस्थापक उपयोगकर्
|
|||||||
adminUserSettings.admin=व्यवस्थापक
|
adminUserSettings.admin=व्यवस्थापक
|
||||||
adminUserSettings.user=उपयोगकर्ता
|
adminUserSettings.user=उपयोगकर्ता
|
||||||
adminUserSettings.addUser=नया उपयोगकर्ता जोड़ें
|
adminUserSettings.addUser=नया उपयोगकर्ता जोड़ें
|
||||||
|
adminUserSettings.usernameInfo=Username must only contain letters and numbers, no spaces or special characters.
|
||||||
adminUserSettings.roles=रोल्स
|
adminUserSettings.roles=रोल्स
|
||||||
adminUserSettings.role=रोल
|
adminUserSettings.role=रोल
|
||||||
adminUserSettings.actions=क्रियाएँ
|
adminUserSettings.actions=क्रियाएँ
|
||||||
adminUserSettings.apiUser=सीमित API उपयोगकर्ता
|
adminUserSettings.apiUser=सीमित API उपयोगकर्ता
|
||||||
|
adminUserSettings.extraApiUser=Additional Limited API User
|
||||||
adminUserSettings.webOnlyUser=केवल वेब उपयोगकर्ता
|
adminUserSettings.webOnlyUser=केवल वेब उपयोगकर्ता
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=Demo User (No custom settings)
|
||||||
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
adminUserSettings.forceChange=उपयोगकर्ता को लॉगिन पर उपयोगकर्ता नाम/पासवर्ड बदलने के लिए मजबूर करें
|
adminUserSettings.forceChange=उपयोगकर्ता को लॉगिन पर उपयोगकर्ता नाम/पासवर्ड बदलने के लिए मजबूर करें
|
||||||
adminUserSettings.submit=उपयोगकर्ता को सहेजें
|
adminUserSettings.submit=उपयोगकर्ता को सहेजें
|
||||||
|
|
||||||
@@ -393,6 +413,15 @@ home.AddStampRequest.desc=Add text or add image stamps at set locations
|
|||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF to Book
|
||||||
|
home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Book to PDF
|
||||||
|
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=साइन इन करें
|
login.title=साइन इन करें
|
||||||
|
login.header=साइन इन करें
|
||||||
login.signin=साइन इन करें
|
login.signin=साइन इन करें
|
||||||
login.rememberme=मुझे याद रखें
|
login.rememberme=मुझे याद रखें
|
||||||
login.invalid=अमान्य उपयोगकर्ता नाम या पासवर्ड।
|
login.invalid=अमान्य उपयोगकर्ता नाम या पासवर्ड।
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=एकल पृष्ठ में परिवर्त
|
|||||||
pageExtracter.title=पृष्ठों को निकालें
|
pageExtracter.title=पृष्ठों को निकालें
|
||||||
pageExtracter.header=पृष्ठों को निकालें
|
pageExtracter.header=पृष्ठों को निकालें
|
||||||
pageExtracter.submit=निकालें
|
pageExtracter.submit=निकालें
|
||||||
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=दस्तावेज़ 1
|
|||||||
compare.document.2=दस्तावेज़ 2
|
compare.document.2=दस्तावेज़ 2
|
||||||
compare.submit=तुलना करें
|
compare.submit=तुलना करें
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Books and Comics to PDF
|
||||||
|
BookToPDF.header=Book to PDF
|
||||||
|
BookToPDF.credit=Uses Calibre
|
||||||
|
BookToPDF.submit=Convert
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF to Book
|
||||||
|
PDFToBook.header=PDF to Book
|
||||||
|
PDFToBook.selectText.1=Format
|
||||||
|
PDFToBook.credit=Uses Calibre
|
||||||
|
PDFToBook.submit=Convert
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=हस्ताक्षर
|
sign.title=हस्ताक्षर
|
||||||
@@ -727,11 +770,23 @@ merge.submit=मर्ज करें
|
|||||||
pdfOrganiser.title=पेज व्यवस्थापक
|
pdfOrganiser.title=पेज व्यवस्थापक
|
||||||
pdfOrganiser.header=PDF पेज व्यवस्थापक
|
pdfOrganiser.header=PDF पेज व्यवस्थापक
|
||||||
pdfOrganiser.submit=पृष्ठों को पुनः व्यवस्थित करें
|
pdfOrganiser.submit=पृष्ठों को पुनः व्यवस्थित करें
|
||||||
|
pdfOrganiser.mode=Mode
|
||||||
|
pdfOrganiser.mode.1=Custom Page Order
|
||||||
|
pdfOrganiser.mode.2=Reverse Order
|
||||||
|
pdfOrganiser.mode.3=Duplex Sort
|
||||||
|
pdfOrganiser.mode.4=Booklet Sort
|
||||||
|
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
||||||
|
pdfOrganiser.mode.6=Odd-Even Split
|
||||||
|
pdfOrganiser.mode.7=Remove First
|
||||||
|
pdfOrganiser.mode.8=Remove Last
|
||||||
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=पीडीएफ मल्टी टूल
|
multiTool.title=पीडीएफ मल्टी टूल
|
||||||
multiTool.header=पीडीएफ मल्टी टूल
|
multiTool.header=पीडीएफ मल्टी टूल
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=पीडीएफ देखें
|
viewPdf.title=पीडीएफ देखें
|
||||||
@@ -742,6 +797,7 @@ pageRemover.title=पेज हटाने वाला
|
|||||||
pageRemover.header=पीडीएफ पेज हटाने वाला
|
pageRemover.header=पीडीएफ पेज हटाने वाला
|
||||||
pageRemover.pagesToDelete=हटाने के पेज (पृष्ठ संख्याओं की व्यवस्था के लिए एक कॉमा से अलग संख्याओं की सूची दर्ज करें):
|
pageRemover.pagesToDelete=हटाने के पेज (पृष्ठ संख्याओं की व्यवस्था के लिए एक कॉमा से अलग संख्याओं की सूची दर्ज करें):
|
||||||
pageRemover.submit=पेज हटाएं
|
pageRemover.submit=पेज हटाएं
|
||||||
|
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=चुनें घुमाने का कोण (90 ड
|
|||||||
rotate.submit=घुमाएं
|
rotate.submit=घुमाएं
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=पीडीएफ को विभाजित करें
|
split.title=पीडीएफ को विभाजित करें
|
||||||
split.header=पीडीएफ को विभाजित करें
|
split.header=पीडीएफ को विभाजित करें
|
||||||
split.desc.1=जिन नंबरों को आप चुनते हैं, वे पृष्ठ संख्या होती हैं जिन पर आप विभाजन करना चाहते हैं।
|
split.desc.1=जिन नंबरों को आप चुनते हैं, वे पृष्ठ संख्या होती हैं जिन पर आप विभाजन करना चाहते हैं।
|
||||||
split.desc.2=इसलिए, 1,3,7-8 का चयन करना एक 10 पृष्ठों के दस्तावेज़ को 6 अलग-अलग पीडीएफ में विभाजित करेगा जैसे:
|
split.desc.2=इसलिए, 1,3,7-9 का चयन करना एक 10 पृष्ठों के दस्तावेज़ को 6 अलग-अलग पीडीएफ में विभाजित करेगा जैसे:
|
||||||
split.desc.3=दस्तावेज़ #1: पृष्ठ 1
|
split.desc.3=दस्तावेज़ #1: पृष्ठ 1
|
||||||
split.desc.4=दस्तावेज़ #2: पृष्ठ 2 और 3
|
split.desc.4=दस्तावेज़ #2: पृष्ठ 2 और 3
|
||||||
split.desc.5=दस्तावेज़ #3: पृष्ठ 4, 5 और 6
|
split.desc.5=दस्तावेज़ #3: पृष्ठ 4, 5, 6 और 7
|
||||||
split.desc.6=दस्तावेज़ #4: पृष्ठ 7
|
split.desc.6=दस्तावेज़ #4: पृष्ठ 7
|
||||||
split.desc.7=दस्तावेज़ #5: पृष्ठ 8
|
split.desc.7=दस्तावेज़ #5: पृष्ठ 8
|
||||||
split.desc.8=दस्तावेज़ #6: पृष्ठ 9 और 10
|
split.desc.8=दस्तावेज़ #6: पृष्ठ 10
|
||||||
split.splitPages=विभाजन करने के लिए पृष्ठ दर्ज करें:
|
split.splitPages=विभाजन करने के लिए पृष्ठ दर्ज करें:
|
||||||
split.submit=विभाजित करें
|
split.submit=विभाजित करें
|
||||||
|
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=अपारदर्शिता (0% - 100%):
|
|||||||
watermark.selectText.8=वॉटरमार्क प्रकार:
|
watermark.selectText.8=वॉटरमार्क प्रकार:
|
||||||
watermark.selectText.9=वॉटरमार्क छवि:
|
watermark.selectText.9=वॉटरमार्क छवि:
|
||||||
watermark.submit=वॉटरमार्क जोड़ें
|
watermark.submit=वॉटरमार्क जोड़ें
|
||||||
|
watermark.type.1=Text
|
||||||
|
watermark.type.2=Image
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ pdfToPDFA.title=PDF से PDF/A में
|
|||||||
pdfToPDFA.header=PDF से PDF/A में
|
pdfToPDFA.header=PDF से PDF/A में
|
||||||
pdfToPDFA.credit=इस सेवा में PDF/A परिवर्तन के लिए OCRmyPDF का उपयोग किया जाता है।
|
pdfToPDFA.credit=इस सेवा में PDF/A परिवर्तन के लिए OCRmyPDF का उपयोग किया जाता है।
|
||||||
pdfToPDFA.submit=परिवर्तित करें
|
pdfToPDFA.submit=परिवर्तित करें
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=परिवर्तित करें
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF से HTML
|
PDFToHTML.title=PDF से HTML
|
||||||
PDFToHTML.header=PDF से HTML
|
PDFToHTML.header=PDF से HTML
|
||||||
PDFToHTML.credit=यह सेवा फ़ाइल परिवर्तन के लिए LibreOffice का उपयोग करती है।
|
PDFToHTML.credit=यह सेवा फ़ाइल परिवर्तन के लिए pdftohtml का उपयोग करती है।
|
||||||
PDFToHTML.submit=परिवर्तित करें
|
PDFToHTML.submit=परिवर्तित करें
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=टेबल निकालने के लिए पृष्
|
|||||||
PDFToCSV.submit=निकालें
|
PDFToCSV.submit=निकालें
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=आकार या गणना द्वारा PDF को विभाजित करें
|
||||||
split-by-size-or-count.header=आकार या गणना द्वारा PDF को विभाजित करें
|
split-by-size-or-count.header=आकार या गणना द्वारा PDF को विभाजित करें
|
||||||
split-by-size-or-count.type.label=स्प्लिट प्रकार चुनें
|
split-by-size-or-count.type.label=स्प्लिट प्रकार चुनें
|
||||||
split-by-size-or-count.type.size=आकार द्वारा
|
split-by-size-or-count.type.size=आकार द्वारा
|
||||||
@@ -960,7 +1020,7 @@ split-by-sections.vertical.label=लंबवत विभाजन
|
|||||||
split-by-sections.horizontal.placeholder=क्षैतिज विभाजन की संख्या दर्ज करें
|
split-by-sections.horizontal.placeholder=क्षैतिज विभाजन की संख्या दर्ज करें
|
||||||
split-by-sections.vertical.placeholder=लंबवत विभाजन की संख्या दर्ज करें
|
split-by-sections.vertical.placeholder=लंबवत विभाजन की संख्या दर्ज करें
|
||||||
split-by-sections.submit=PDF को विभाजित करें
|
split-by-sections.submit=PDF को विभाजित करें
|
||||||
|
split-by-sections.merge=Merge Into One PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Licenses
|
||||||
@@ -971,3 +1031,16 @@ licenses.version=Version
|
|||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=Igaz
|
|||||||
false=Hamis
|
false=Hamis
|
||||||
unknown=Ismeretlen
|
unknown=Ismeretlen
|
||||||
save=Mentés
|
save=Mentés
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=Bezárás
|
close=Bezárás
|
||||||
filesSelected=kiválasztott fájlok
|
filesSelected=kiválasztott fájlok
|
||||||
noFavourites=Nincs hozzáadva kedvenc
|
noFavourites=Nincs hozzáadva kedvenc
|
||||||
@@ -53,16 +54,32 @@ notAuthenticatedMessage=Felhasználó nincs hitelesítve.
|
|||||||
userNotFoundMessage=A felhasználó nem található.
|
userNotFoundMessage=A felhasználó nem található.
|
||||||
incorrectPasswordMessage=A jelenlegi jelszó helytelen.
|
incorrectPasswordMessage=A jelenlegi jelszó helytelen.
|
||||||
usernameExistsMessage=Az új felhasználónév már létezik.
|
usernameExistsMessage=Az új felhasználónév már létezik.
|
||||||
|
invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers.
|
||||||
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=Pipeline Menu (Beta)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=Upload Custom
|
||||||
pipeline.configureButton=Configure
|
pipeline.configureButton=Configure
|
||||||
pipeline.defaultOption=Custom
|
pipeline.defaultOption=Custom
|
||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
|
pipeline.help=Pipeline Help
|
||||||
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=Fiókbeállítások
|
|||||||
|
|
||||||
changeCreds.title=Hitelesítés megváltoztatása
|
changeCreds.title=Hitelesítés megváltoztatása
|
||||||
changeCreds.header=Frissítse fiókadatait
|
changeCreds.header=Frissítse fiókadatait
|
||||||
changeCreds.changeUserAndPassword=Alapértelmezett bejelentkezési adatokat használ. Adjon meg egy új jelszót (és felhasználónevet, ha szeretné)
|
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
||||||
changeCreds.newUsername=Új felhasználónév
|
changeCreds.newUsername=Új felhasználónév
|
||||||
changeCreds.oldPassword=Jelenlegi jelszó
|
changeCreds.oldPassword=Jelenlegi jelszó
|
||||||
changeCreds.newPassword=Új jelszó
|
changeCreds.newPassword=Új jelszó
|
||||||
@@ -143,12 +160,15 @@ adminUserSettings.header=Adminisztrátori Felhasználói Vezérlési Beállítá
|
|||||||
adminUserSettings.admin=Adminisztrátor
|
adminUserSettings.admin=Adminisztrátor
|
||||||
adminUserSettings.user=Felhasználó
|
adminUserSettings.user=Felhasználó
|
||||||
adminUserSettings.addUser=Új felhasználó hozzáadása
|
adminUserSettings.addUser=Új felhasználó hozzáadása
|
||||||
|
adminUserSettings.usernameInfo=Username must only contain letters and numbers, no spaces or special characters.
|
||||||
adminUserSettings.roles=Szerepek
|
adminUserSettings.roles=Szerepek
|
||||||
adminUserSettings.role=Szerep
|
adminUserSettings.role=Szerep
|
||||||
adminUserSettings.actions=Műveletek
|
adminUserSettings.actions=Műveletek
|
||||||
adminUserSettings.apiUser=Korlátozott API-felhasználó
|
adminUserSettings.apiUser=Korlátozott API-felhasználó
|
||||||
|
adminUserSettings.extraApiUser=Additional Limited API User
|
||||||
adminUserSettings.webOnlyUser=Csak webes felhasználó
|
adminUserSettings.webOnlyUser=Csak webes felhasználó
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=Demo User (No custom settings)
|
||||||
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
adminUserSettings.forceChange=Kényszerítse a felhasználót a felhasználónév/jelszó megváltoztatására bejelentkezéskor
|
adminUserSettings.forceChange=Kényszerítse a felhasználót a felhasználónév/jelszó megváltoztatására bejelentkezéskor
|
||||||
adminUserSettings.submit=Felhasználó mentése
|
adminUserSettings.submit=Felhasználó mentése
|
||||||
|
|
||||||
@@ -393,6 +413,15 @@ home.AddStampRequest.desc=Add text or add image stamps at set locations
|
|||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF to Book
|
||||||
|
home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Book to PDF
|
||||||
|
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Bejelentkezés
|
login.title=Bejelentkezés
|
||||||
|
login.header=Bejelentkezés
|
||||||
login.signin=Bejelentkezés
|
login.signin=Bejelentkezés
|
||||||
login.rememberme=Emlékezz rám
|
login.rememberme=Emlékezz rám
|
||||||
login.invalid=Érvénytelen felhasználónév vagy jelszó!
|
login.invalid=Érvénytelen felhasználónév vagy jelszó!
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=Átalakítás egyetlen oldallá
|
|||||||
pageExtracter.title=Oldalak kinyerése
|
pageExtracter.title=Oldalak kinyerése
|
||||||
pageExtracter.header=Oldalak kinyerése
|
pageExtracter.header=Oldalak kinyerése
|
||||||
pageExtracter.submit=Kinyerés
|
pageExtracter.submit=Kinyerés
|
||||||
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=Dokumentum 1
|
|||||||
compare.document.2=Dokumentum 2
|
compare.document.2=Dokumentum 2
|
||||||
compare.submit=Összehasonlítás
|
compare.submit=Összehasonlítás
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Books and Comics to PDF
|
||||||
|
BookToPDF.header=Book to PDF
|
||||||
|
BookToPDF.credit=Uses Calibre
|
||||||
|
BookToPDF.submit=Convert
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF to Book
|
||||||
|
PDFToBook.header=PDF to Book
|
||||||
|
PDFToBook.selectText.1=Format
|
||||||
|
PDFToBook.credit=Uses Calibre
|
||||||
|
PDFToBook.submit=Convert
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Aláírás
|
sign.title=Aláírás
|
||||||
@@ -727,11 +770,23 @@ merge.submit=Összevonás
|
|||||||
pdfOrganiser.title=Oldalszervező
|
pdfOrganiser.title=Oldalszervező
|
||||||
pdfOrganiser.header=PDF Oldalszervező
|
pdfOrganiser.header=PDF Oldalszervező
|
||||||
pdfOrganiser.submit=Oldalak átrendezése
|
pdfOrganiser.submit=Oldalak átrendezése
|
||||||
|
pdfOrganiser.mode=Mode
|
||||||
|
pdfOrganiser.mode.1=Custom Page Order
|
||||||
|
pdfOrganiser.mode.2=Reverse Order
|
||||||
|
pdfOrganiser.mode.3=Duplex Sort
|
||||||
|
pdfOrganiser.mode.4=Booklet Sort
|
||||||
|
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
||||||
|
pdfOrganiser.mode.6=Odd-Even Split
|
||||||
|
pdfOrganiser.mode.7=Remove First
|
||||||
|
pdfOrganiser.mode.8=Remove Last
|
||||||
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=PDF többfunkciós eszköz
|
multiTool.title=PDF többfunkciós eszköz
|
||||||
multiTool.header=PDF többfunkciós eszköz
|
multiTool.header=PDF többfunkciós eszköz
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=PDF megtekintése
|
viewPdf.title=PDF megtekintése
|
||||||
@@ -742,6 +797,7 @@ pageRemover.title=Oldaltörlő
|
|||||||
pageRemover.header=PDF oldaltörlő
|
pageRemover.header=PDF oldaltörlő
|
||||||
pageRemover.pagesToDelete=Törlendő oldalak (adja meg az oldalszámok vesszővel elválasztott listáját):
|
pageRemover.pagesToDelete=Törlendő oldalak (adja meg az oldalszámok vesszővel elválasztott listáját):
|
||||||
pageRemover.submit=Oldalak törlése
|
pageRemover.submit=Oldalak törlése
|
||||||
|
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=Válassza ki a forgatási szöget (90 fok egész számú töb
|
|||||||
rotate.submit=Forgatás
|
rotate.submit=Forgatás
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=PDF szétválasztás
|
split.title=PDF szétválasztás
|
||||||
split.header=PDF szétválasztás
|
split.header=PDF szétválasztás
|
||||||
split.desc.1=A kiválasztott számok a szétválasztani kívánt oldalszámok
|
split.desc.1=A kiválasztott számok a szétválasztani kívánt oldalszámok
|
||||||
split.desc.2=Például az 1,3,7-8 kiválasztása egy 10 oldalas dokumentumot 6 különálló PDF-fé szétválaszt
|
split.desc.2=Például az 1,3,7-9 kiválasztása egy 10 oldalas dokumentumot 6 különálló PDF-fé szétválaszt
|
||||||
split.desc.3=Dokumentum #1: Oldal 1
|
split.desc.3=Dokumentum #1: Oldal 1
|
||||||
split.desc.4=Dokumentum #2: Oldal 2 és 3
|
split.desc.4=Dokumentum #2: Oldal 2 és 3
|
||||||
split.desc.5=Dokumentum #3: Oldal 4, 5 és 6
|
split.desc.5=Dokumentum #3: Oldal 4, 5, 6 és 7
|
||||||
split.desc.6=Dokumentum #4: Oldal 7
|
split.desc.6=Dokumentum #4: Oldal 8
|
||||||
split.desc.7=Dokumentum #5: Oldal 8
|
split.desc.7=Dokumentum #5: Oldal 9
|
||||||
split.desc.8=Dokumentum #6: Oldal 9 és 10
|
split.desc.8=Dokumentum #6: Oldal 10
|
||||||
split.splitPages=Adja meg az oldalakat, amelyekre szét akarja választani:
|
split.splitPages=Adja meg az oldalakat, amelyekre szét akarja választani:
|
||||||
split.submit=Szétválasztás
|
split.submit=Szétválasztás
|
||||||
|
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=Átlátszóság (0% - 100%):
|
|||||||
watermark.selectText.8=Vízjel típusa:
|
watermark.selectText.8=Vízjel típusa:
|
||||||
watermark.selectText.9=Vízjel képe:
|
watermark.selectText.9=Vízjel képe:
|
||||||
watermark.submit=Vízjel hozzáadása
|
watermark.submit=Vízjel hozzáadása
|
||||||
|
watermark.type.1=Text
|
||||||
|
watermark.type.2=Image
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ pdfToPDFA.title=PDF >> PDF/A
|
|||||||
pdfToPDFA.header=PDF >> PDF/A
|
pdfToPDFA.header=PDF >> PDF/A
|
||||||
pdfToPDFA.credit=Ez a szolgáltatás az OCRmyPDF-t használja a PDF/A konverzióhoz
|
pdfToPDFA.credit=Ez a szolgáltatás az OCRmyPDF-t használja a PDF/A konverzióhoz
|
||||||
pdfToPDFA.submit=Konvertálás
|
pdfToPDFA.submit=Konvertálás
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=Konvertálás
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF >> HTML
|
PDFToHTML.title=PDF >> HTML
|
||||||
PDFToHTML.header=PDF >> HTML
|
PDFToHTML.header=PDF >> HTML
|
||||||
PDFToHTML.credit=Ez a szolgáltatás a LibreOffice-t használja a fájlkonverzióhoz.
|
PDFToHTML.credit=Ez a szolgáltatás a pdftohtml-t használja a fájlkonverzióhoz.
|
||||||
PDFToHTML.submit=Konvertálás
|
PDFToHTML.submit=Konvertálás
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=Válassza ki az oldalt a táblázat kinyeréséhez
|
|||||||
PDFToCSV.submit=Kinyerés
|
PDFToCSV.submit=Kinyerés
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=PDF felosztása méret vagy oldalszám alapján
|
||||||
split-by-size-or-count.header=PDF felosztása méret vagy oldalszám alapján
|
split-by-size-or-count.header=PDF felosztása méret vagy oldalszám alapján
|
||||||
split-by-size-or-count.type.label=Válassza ki a felosztás típusát
|
split-by-size-or-count.type.label=Válassza ki a felosztás típusát
|
||||||
split-by-size-or-count.type.size=Méret alapján
|
split-by-size-or-count.type.size=Méret alapján
|
||||||
@@ -960,7 +1020,7 @@ split-by-sections.vertical.label=Vízszintes szakaszok
|
|||||||
split-by-sections.horizontal.placeholder=Adja meg a vízszintes szakaszok számát
|
split-by-sections.horizontal.placeholder=Adja meg a vízszintes szakaszok számát
|
||||||
split-by-sections.vertical.placeholder=Adja meg a függőleges szakaszok számát
|
split-by-sections.vertical.placeholder=Adja meg a függőleges szakaszok számát
|
||||||
split-by-sections.submit=Felosztás
|
split-by-sections.submit=Felosztás
|
||||||
|
split-by-sections.merge=Merge Into One PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Licenses
|
||||||
@@ -971,3 +1031,16 @@ licenses.version=Version
|
|||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=Benar
|
|||||||
false=Salah
|
false=Salah
|
||||||
unknown=Tidak diketahui
|
unknown=Tidak diketahui
|
||||||
save=Simpan
|
save=Simpan
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=Tutup
|
close=Tutup
|
||||||
filesSelected=berkas dipilih
|
filesSelected=berkas dipilih
|
||||||
noFavourites=Tidak ada favorit yang ditambahkan
|
noFavourites=Tidak ada favorit yang ditambahkan
|
||||||
@@ -53,16 +54,32 @@ notAuthenticatedMessage=Pengguna tidak ter-autentikasi.
|
|||||||
userNotFoundMessage=Pengguna tidak ditemukan.
|
userNotFoundMessage=Pengguna tidak ditemukan.
|
||||||
incorrectPasswordMessage=Kata sandi saat ini salah.
|
incorrectPasswordMessage=Kata sandi saat ini salah.
|
||||||
usernameExistsMessage=Nama pengguna baru sudah ada.
|
usernameExistsMessage=Nama pengguna baru sudah ada.
|
||||||
|
invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers.
|
||||||
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=Pipeline Menu (Beta)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=Upload Custom
|
||||||
pipeline.configureButton=Configure
|
pipeline.configureButton=Configure
|
||||||
pipeline.defaultOption=Custom
|
pipeline.defaultOption=Custom
|
||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
|
pipeline.help=Pipeline Help
|
||||||
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=Pengaturan Akun
|
|||||||
|
|
||||||
changeCreds.title=Ubah Kredensial
|
changeCreds.title=Ubah Kredensial
|
||||||
changeCreds.header=Perbarui Detail Akun Anda
|
changeCreds.header=Perbarui Detail Akun Anda
|
||||||
changeCreds.changeUserAndPassword=Anda menggunakan kredensial masuk default. Masukkan kata sandi baru (dan nama pengguna jika diinginkan)
|
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
||||||
changeCreds.newUsername=Nama Pengguna Baru
|
changeCreds.newUsername=Nama Pengguna Baru
|
||||||
changeCreds.oldPassword=Kata Sandi Saat Ini
|
changeCreds.oldPassword=Kata Sandi Saat Ini
|
||||||
changeCreds.newPassword=Kata Sandi Baru
|
changeCreds.newPassword=Kata Sandi Baru
|
||||||
@@ -143,12 +160,15 @@ adminUserSettings.header=Pengaturan Kontrol Admin
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=Pengguna
|
adminUserSettings.user=Pengguna
|
||||||
adminUserSettings.addUser=Tambahkan Pengguna Baru
|
adminUserSettings.addUser=Tambahkan Pengguna Baru
|
||||||
|
adminUserSettings.usernameInfo=Username must only contain letters and numbers, no spaces or special characters.
|
||||||
adminUserSettings.roles=Peran
|
adminUserSettings.roles=Peran
|
||||||
adminUserSettings.role=Peran
|
adminUserSettings.role=Peran
|
||||||
adminUserSettings.actions=Tindakan
|
adminUserSettings.actions=Tindakan
|
||||||
adminUserSettings.apiUser=Pengguna API Terbatas
|
adminUserSettings.apiUser=Pengguna API Terbatas
|
||||||
|
adminUserSettings.extraApiUser=Additional Limited API User
|
||||||
adminUserSettings.webOnlyUser=Pengguna Khusus Web
|
adminUserSettings.webOnlyUser=Pengguna Khusus Web
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=Demo User (No custom settings)
|
||||||
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
adminUserSettings.forceChange=Memaksa pengguna untuk mengubah nama pengguna/kata sandi saat masuk
|
adminUserSettings.forceChange=Memaksa pengguna untuk mengubah nama pengguna/kata sandi saat masuk
|
||||||
adminUserSettings.submit=Simpan Pengguna
|
adminUserSettings.submit=Simpan Pengguna
|
||||||
|
|
||||||
@@ -393,6 +413,15 @@ home.AddStampRequest.desc=Add text or add image stamps at set locations
|
|||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF to Book
|
||||||
|
home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Book to PDF
|
||||||
|
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Masuk
|
login.title=Masuk
|
||||||
|
login.header=Masuk
|
||||||
login.signin=Masuk
|
login.signin=Masuk
|
||||||
login.rememberme=Ingat saya
|
login.rememberme=Ingat saya
|
||||||
login.invalid=Nama pengguna atau kata sandi tidak valid.
|
login.invalid=Nama pengguna atau kata sandi tidak valid.
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=Konversi ke Halaman Tunggal
|
|||||||
pageExtracter.title=Ekstrak Halaman
|
pageExtracter.title=Ekstrak Halaman
|
||||||
pageExtracter.header=Ekstrak Halaman
|
pageExtracter.header=Ekstrak Halaman
|
||||||
pageExtracter.submit=Ekstrak
|
pageExtracter.submit=Ekstrak
|
||||||
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=Dokumen 1
|
|||||||
compare.document.2=Dokumen 2
|
compare.document.2=Dokumen 2
|
||||||
compare.submit=Bandingkan
|
compare.submit=Bandingkan
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Books and Comics to PDF
|
||||||
|
BookToPDF.header=Book to PDF
|
||||||
|
BookToPDF.credit=Uses Calibre
|
||||||
|
BookToPDF.submit=Convert
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF to Book
|
||||||
|
PDFToBook.header=PDF to Book
|
||||||
|
PDFToBook.selectText.1=Format
|
||||||
|
PDFToBook.credit=Uses Calibre
|
||||||
|
PDFToBook.submit=Convert
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Tanda
|
sign.title=Tanda
|
||||||
@@ -727,11 +770,23 @@ merge.submit=Gabungkan
|
|||||||
pdfOrganiser.title=Pengaturan Halaman
|
pdfOrganiser.title=Pengaturan Halaman
|
||||||
pdfOrganiser.header=Pengaturan Halaman PDF
|
pdfOrganiser.header=Pengaturan Halaman PDF
|
||||||
pdfOrganiser.submit=Susun ulang halaman
|
pdfOrganiser.submit=Susun ulang halaman
|
||||||
|
pdfOrganiser.mode=Mode
|
||||||
|
pdfOrganiser.mode.1=Custom Page Order
|
||||||
|
pdfOrganiser.mode.2=Reverse Order
|
||||||
|
pdfOrganiser.mode.3=Duplex Sort
|
||||||
|
pdfOrganiser.mode.4=Booklet Sort
|
||||||
|
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
||||||
|
pdfOrganiser.mode.6=Odd-Even Split
|
||||||
|
pdfOrganiser.mode.7=Remove First
|
||||||
|
pdfOrganiser.mode.8=Remove Last
|
||||||
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=Alat Multi PDF
|
multiTool.title=Alat Multi PDF
|
||||||
multiTool.header=Alat Multi PDF
|
multiTool.header=Alat Multi PDF
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=Lihat PDF
|
viewPdf.title=Lihat PDF
|
||||||
@@ -742,6 +797,7 @@ pageRemover.title=Penghapus Halaman
|
|||||||
pageRemover.header=Penghapus Halaman PDF
|
pageRemover.header=Penghapus Halaman PDF
|
||||||
pageRemover.pagesToDelete=Halaman yang akan dihapus (Masukkan daftar nomor halaman yang dipisahkan dengan koma) :
|
pageRemover.pagesToDelete=Halaman yang akan dihapus (Masukkan daftar nomor halaman yang dipisahkan dengan koma) :
|
||||||
pageRemover.submit=Hapus Halaman
|
pageRemover.submit=Hapus Halaman
|
||||||
|
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=Pilih sudut rotasi (dalam kelipatan 90 derajat):
|
|||||||
rotate.submit=Rotasi
|
rotate.submit=Rotasi
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=Membagi PDF
|
split.title=Membagi PDF
|
||||||
split.header=Membagi PDF
|
split.header=Membagi PDF
|
||||||
split.desc.1=Angka yang Anda pilih adalah nomor halaman yang ingin Anda pisahkan
|
split.desc.1=Angka yang Anda pilih adalah nomor halaman yang ingin Anda pisahkan
|
||||||
split.desc.2=Dengan demikian, memilih 1,3,7-8 akan membagi dokumen 10 halaman menjadi 6 PDF terpisah:
|
split.desc.2=Dengan demikian, memilih 1,3,7-9 akan membagi dokumen 10 halaman menjadi 6 PDF terpisah:
|
||||||
split.desc.3=Dokumen #1: Halaman 1
|
split.desc.3=Dokumen #1: Halaman 1
|
||||||
split.desc.4=Dokumen #2: Halaman 2 dan 3
|
split.desc.4=Dokumen #2: Halaman 2 dan 3
|
||||||
split.desc.5=Dokumen #3: Halaman 4, 5 dan 6
|
split.desc.5=Dokumen #3: Halaman 4, 5, 6 dan 7
|
||||||
split.desc.6=Dokumen #4: Halaman 7
|
split.desc.6=Dokumen #4: Halaman 8
|
||||||
split.desc.7=Dokumen #5: Halaman 8
|
split.desc.7=Dokumen #5: Halaman 9
|
||||||
split.desc.8=Dokumen #6: Halaman 9 dan 10
|
split.desc.8=Dokumen #6: Halaman 10
|
||||||
split.splitPages=Masukkan halaman yang akan dipisah:
|
split.splitPages=Masukkan halaman yang akan dipisah:
|
||||||
split.submit=Pisahkan
|
split.submit=Pisahkan
|
||||||
|
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=Opacity (0% - 100%):
|
|||||||
watermark.selectText.8=Tipe Watermark:
|
watermark.selectText.8=Tipe Watermark:
|
||||||
watermark.selectText.9=Gambar Watermark:
|
watermark.selectText.9=Gambar Watermark:
|
||||||
watermark.submit=Tambahkan Watermark
|
watermark.submit=Tambahkan Watermark
|
||||||
|
watermark.type.1=Text
|
||||||
|
watermark.type.2=Image
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ pdfToPDFA.title=PDF Ke PDF/A
|
|||||||
pdfToPDFA.header=PDF ke PDF/A
|
pdfToPDFA.header=PDF ke PDF/A
|
||||||
pdfToPDFA.credit=Layanan ini menggunakan OCRmyPDF untuk konversi PDF/A.
|
pdfToPDFA.credit=Layanan ini menggunakan OCRmyPDF untuk konversi PDF/A.
|
||||||
pdfToPDFA.submit=Konversi
|
pdfToPDFA.submit=Konversi
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=Konversi
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF Ke HTML
|
PDFToHTML.title=PDF Ke HTML
|
||||||
PDFToHTML.header=PDF ke HTML
|
PDFToHTML.header=PDF ke HTML
|
||||||
PDFToHTML.credit=Layanan ini menggunakan LibreOffice untuk konversi berkas.
|
PDFToHTML.credit=Layanan ini menggunakan pdftohtml untuk konversi berkas.
|
||||||
PDFToHTML.submit=Konversi
|
PDFToHTML.submit=Konversi
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=Pilih halaman untuk mengambil tabel
|
|||||||
PDFToCSV.submit=Ektraksi
|
PDFToCSV.submit=Ektraksi
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=Pisahkan PDF berdasarkan ukuran atau jumlah
|
||||||
split-by-size-or-count.header=Pisahkan PDF berdasarkan ukuran atau jumlah
|
split-by-size-or-count.header=Pisahkan PDF berdasarkan ukuran atau jumlah
|
||||||
split-by-size-or-count.type.label=Pilih Tipe Split
|
split-by-size-or-count.type.label=Pilih Tipe Split
|
||||||
split-by-size-or-count.type.size=Berdasarkan Ukuran
|
split-by-size-or-count.type.size=Berdasarkan Ukuran
|
||||||
@@ -960,7 +1020,7 @@ split-by-sections.vertical.label=Pembagian Vertikal
|
|||||||
split-by-sections.horizontal.placeholder=Input angka untuk pembagian horizontal
|
split-by-sections.horizontal.placeholder=Input angka untuk pembagian horizontal
|
||||||
split-by-sections.vertical.placeholder=Input angka untuk pembagian vertikal
|
split-by-sections.vertical.placeholder=Input angka untuk pembagian vertikal
|
||||||
split-by-sections.submit=Pisahkan PDF
|
split-by-sections.submit=Pisahkan PDF
|
||||||
|
split-by-sections.merge=Merge Into One PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Licenses
|
||||||
@@ -971,3 +1031,16 @@ licenses.version=Version
|
|||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
@@ -17,10 +17,11 @@ true=Vero
|
|||||||
false=Falso
|
false=Falso
|
||||||
unknown=Sconosciuto
|
unknown=Sconosciuto
|
||||||
save=Salva
|
save=Salva
|
||||||
|
saveToBrowser=Salva nel browser
|
||||||
close=Chiudi
|
close=Chiudi
|
||||||
filesSelected=file selezionati
|
filesSelected=file selezionati
|
||||||
noFavourites=Nessun preferito
|
noFavourites=Nessun preferito
|
||||||
downloadComplete=Download Complete
|
downloadComplete=Download completo
|
||||||
bored=Stanco di aspettare?
|
bored=Stanco di aspettare?
|
||||||
alphabet=Alfabeto
|
alphabet=Alfabeto
|
||||||
downloadPdf=Scarica PDF
|
downloadPdf=Scarica PDF
|
||||||
@@ -53,17 +54,32 @@ notAuthenticatedMessage=Utente non autenticato.
|
|||||||
userNotFoundMessage=Utente non trovato.
|
userNotFoundMessage=Utente non trovato.
|
||||||
incorrectPasswordMessage=La password attuale non è corretta.
|
incorrectPasswordMessage=La password attuale non è corretta.
|
||||||
usernameExistsMessage=Il nuovo nome utente esiste già.
|
usernameExistsMessage=Il nuovo nome utente esiste già.
|
||||||
|
invalidUsernameMessage=Nome utente non valido, il nome utente deve contenere solo caratteri alfabetici e numeri.
|
||||||
|
deleteCurrentUserMessage=Impossibile eliminare l'utente attualmente connesso.
|
||||||
|
deleteUsernameExistsMessage=Il nome utente non esiste e non può essere eliminato.
|
||||||
|
error=Errore
|
||||||
|
oops=Oops!
|
||||||
|
help=Aiuto
|
||||||
|
goHomepage=Vai alla Homepage
|
||||||
|
joinDiscord=Unisciti al nostro server Discord
|
||||||
|
seeDockerHub=Vedi DockerHub
|
||||||
|
visitGithub=Visita il repository Github
|
||||||
|
donate=Donazione
|
||||||
|
color=Colore
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=Menù pipeline (Beta)
|
||||||
pipeline.uploadButton=Caricamento personalizzato
|
pipeline.uploadButton=Caricamento personalizzato
|
||||||
pipeline.configureButton=Configura
|
pipeline.configureButton=Configura
|
||||||
pipeline.defaultOption=Personalizzato
|
pipeline.defaultOption=Personalizzato
|
||||||
pipeline.submitButton=Invia
|
pipeline.submitButton=Invia
|
||||||
|
pipeline.help=Aiuto sulla pipeline
|
||||||
|
pipeline.scanHelp=Aiuto per la scansione delle cartelle
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
######################
|
######################
|
||||||
@@ -108,11 +124,11 @@ settings.accountSettings=Impostazioni Account
|
|||||||
|
|
||||||
changeCreds.title=Cambia credenziali
|
changeCreds.title=Cambia credenziali
|
||||||
changeCreds.header=Aggiorna i dettagli del tuo account
|
changeCreds.header=Aggiorna i dettagli del tuo account
|
||||||
changeCreds.changeUserAndPassword=Stai utilizzando le credenziali di accesso predefinite. Inserisci una nuova password (e un nome utente se lo desideri)
|
changeCreds.changePassword=Stai utilizzando le credenziali di accesso predefinite. Inserisci una nuova password
|
||||||
changeCreds.newUsername=Nuovo nome utente
|
changeCreds.newUsername=Nuovo nome utente
|
||||||
changeCreds.oldPassword=Password attuale
|
changeCreds.oldPassword=Password attuale
|
||||||
changeCreds.newPassword=Nuova Password
|
changeCreds.newPassword=Nuova Password
|
||||||
changeCreds.confirmNewPassword=Conferma Nuova Password
|
changeCreds.confirmNewPassword=Conferma nuova Password
|
||||||
changeCreds.submit=Invia modifiche
|
changeCreds.submit=Invia modifiche
|
||||||
|
|
||||||
|
|
||||||
@@ -143,12 +159,15 @@ adminUserSettings.header=Impostazioni di controllo utente amministratore
|
|||||||
adminUserSettings.admin=Amministratore
|
adminUserSettings.admin=Amministratore
|
||||||
adminUserSettings.user=Utente
|
adminUserSettings.user=Utente
|
||||||
adminUserSettings.addUser=Aggiungi un nuovo Utente
|
adminUserSettings.addUser=Aggiungi un nuovo Utente
|
||||||
|
adminUserSettings.usernameInfo=Il nome utente deve contenere solo lettere e numeri, senza spazi o caratteri speciali.
|
||||||
adminUserSettings.roles=Ruoli
|
adminUserSettings.roles=Ruoli
|
||||||
adminUserSettings.role=Ruolo
|
adminUserSettings.role=Ruolo
|
||||||
adminUserSettings.actions=Azioni
|
adminUserSettings.actions=Azioni
|
||||||
adminUserSettings.apiUser=Utente API limitato
|
adminUserSettings.apiUser=Utente API limitato
|
||||||
|
adminUserSettings.extraApiUser=API utente limitato aggiuntivo
|
||||||
adminUserSettings.webOnlyUser=Utente solo Web
|
adminUserSettings.webOnlyUser=Utente solo Web
|
||||||
adminUserSettings.demoUser=Utente demo (nessuna impostazione personalizzata)
|
adminUserSettings.demoUser=Utente demo (nessuna impostazione personalizzata)
|
||||||
|
adminUserSettings.internalApiUser=API utente interna
|
||||||
adminUserSettings.forceChange=Forza l'utente a cambiare nome username/password all'accesso
|
adminUserSettings.forceChange=Forza l'utente a cambiare nome username/password all'accesso
|
||||||
adminUserSettings.submit=Salva utente
|
adminUserSettings.submit=Salva utente
|
||||||
|
|
||||||
@@ -169,7 +188,7 @@ multiTool.tags=Strumento multiplo,operazione multipla,interfaccia utente,trascin
|
|||||||
|
|
||||||
home.merge.title=Unisci
|
home.merge.title=Unisci
|
||||||
home.merge.desc=Unisci facilmente più PDF in uno.
|
home.merge.desc=Unisci facilmente più PDF in uno.
|
||||||
merge.tags=unione, operazioni sulla pagina, back end, lato server
|
merge.tags=unione,operazioni sulla pagina,back end,lato server
|
||||||
|
|
||||||
home.split.title=Dividi
|
home.split.title=Dividi
|
||||||
home.split.desc=Dividi un singolo PDF in più documenti.
|
home.split.desc=Dividi un singolo PDF in più documenti.
|
||||||
@@ -238,7 +257,7 @@ ocr.tags=riconoscimento,testo,immagine,scansione,lettura,identificazione,rilevam
|
|||||||
|
|
||||||
home.extractImages.title=Estrai immagini
|
home.extractImages.title=Estrai immagini
|
||||||
home.extractImages.desc=Estrai tutte le immagini da un PDF e salvale come zip.
|
home.extractImages.desc=Estrai tutte le immagini da un PDF e salvale come zip.
|
||||||
extractImages.tags=immagine,photo,save,archive,zip,capture,grab
|
extractImages.tags=immagine,foto,salva,archivio,zip,catturare,prendere
|
||||||
|
|
||||||
home.pdfToPDFA.title=Converti in PDF/A
|
home.pdfToPDFA.title=Converti in PDF/A
|
||||||
home.pdfToPDFA.desc=Converti un PDF nel formato PDF/A per archiviazione a lungo termine.
|
home.pdfToPDFA.desc=Converti un PDF nel formato PDF/A per archiviazione a lungo termine.
|
||||||
@@ -368,7 +387,7 @@ showJS.tags=JS
|
|||||||
|
|
||||||
home.autoRedact.title=Redazione automatica
|
home.autoRedact.title=Redazione automatica
|
||||||
home.autoRedact.desc=Redige automaticamente (oscura) il testo in un PDF in base al testo immesso
|
home.autoRedact.desc=Redige automaticamente (oscura) il testo in un PDF in base al testo immesso
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
autoRedact.tags=Redigere,nascondere,oscurare,nero,pennarello,nascosto
|
||||||
|
|
||||||
home.tableExtraxt.title=Da PDF a CSV
|
home.tableExtraxt.title=Da PDF a CSV
|
||||||
home.tableExtraxt.desc=Estrae tabelle da un PDF convertendolo in CSV
|
home.tableExtraxt.desc=Estrae tabelle da un PDF convertendolo in CSV
|
||||||
@@ -386,11 +405,20 @@ overlay-pdfs.tags=Svrapponi
|
|||||||
|
|
||||||
home.split-by-sections.title=Dividi PDF per sezioni
|
home.split-by-sections.title=Dividi PDF per sezioni
|
||||||
home.split-by-sections.desc=Dividi ciascuna pagina di un PDF in sezioni orizzontali e verticali più piccole
|
home.split-by-sections.desc=Dividi ciascuna pagina di un PDF in sezioni orizzontali e verticali più piccole
|
||||||
split-by-sections.tags=Dividi sezione, dividi, personalizza
|
split-by-sections.tags=Dividi sezione,dividi,personalizza
|
||||||
|
|
||||||
home.AddStampRequest.title=Aggiungi timbro al PDF
|
home.AddStampRequest.title=Aggiungi timbro al PDF
|
||||||
home.AddStampRequest.desc=Aggiungi testo o aggiungi timbri immagine nelle posizioni prestabilite
|
home.AddStampRequest.desc=Aggiungi testo o aggiungi timbri immagine nelle posizioni prestabilite
|
||||||
AddStampRequest.tags=Timbro, Aggiungi immagine, Centra immagine, Filigrana, PDF, Incorpora, Personalizza
|
AddStampRequest.tags=Timbro,Aggiungi immagine,Centra immagine,Filigrana,PDF,Incorpora,Personalizza
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF in libro
|
||||||
|
home.PDFToBook.desc=Converte PDF in formati libro/fumetto utilizzando Calibre
|
||||||
|
PDFToBook.tags=Libro,fumetto,calibre,conversione,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Libro in PDF
|
||||||
|
home.BookToPDF.desc=Converte i formati di libri/fumetti in PDF utilizzando Calibre
|
||||||
|
BookToPDF.tags=Libro,fumetto,calibre,conversione,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
@@ -400,6 +428,7 @@ AddStampRequest.tags=Timbro, Aggiungi immagine, Centra immagine, Filigrana, PDF,
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Accedi
|
login.title=Accedi
|
||||||
|
login.header=Accedi
|
||||||
login.signin=Accedi
|
login.signin=Accedi
|
||||||
login.rememberme=Ricordami
|
login.rememberme=Ricordami
|
||||||
login.invalid=Nome utente o password errati.
|
login.invalid=Nome utente o password errati.
|
||||||
@@ -437,6 +466,7 @@ pdfToSinglePage.submit=Converti in pagina singola
|
|||||||
pageExtracter.title=Estrai pagine
|
pageExtracter.title=Estrai pagine
|
||||||
pageExtracter.header=Estrai pagine
|
pageExtracter.header=Estrai pagine
|
||||||
pageExtracter.submit=Estrai
|
pageExtracter.submit=Estrai
|
||||||
|
pageExtracter.placeholder=(es. 1,2,8 o 4,7,12-16 o 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -624,6 +654,18 @@ compare.document.1=Documento 1
|
|||||||
compare.document.2=Documento 2
|
compare.document.2=Documento 2
|
||||||
compare.submit=Compara
|
compare.submit=Compara
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Libri e fumetti in PDF
|
||||||
|
BookToPDF.header=Libro in PDF
|
||||||
|
BookToPDF.credit=Utilizza Calibre
|
||||||
|
BookToPDF.submit=Converti
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF in libro
|
||||||
|
PDFToBook.header=PDF in libro
|
||||||
|
PDFToBook.selectText.1=Formato
|
||||||
|
PDFToBook.credit=Utilizzo Calibre
|
||||||
|
PDFToBook.submit=Converti
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Firma
|
sign.title=Firma
|
||||||
@@ -727,11 +769,23 @@ merge.submit=Unisci
|
|||||||
pdfOrganiser.title=Organizza pagine
|
pdfOrganiser.title=Organizza pagine
|
||||||
pdfOrganiser.header=Organizza le pagine di un PDF
|
pdfOrganiser.header=Organizza le pagine di un PDF
|
||||||
pdfOrganiser.submit=Riordina pagine
|
pdfOrganiser.submit=Riordina pagine
|
||||||
|
pdfOrganiser.mode=Modalità
|
||||||
|
pdfOrganiser.mode.1=Ordine delle pagine personalizzato
|
||||||
|
pdfOrganiser.mode.2=Ordine inverso
|
||||||
|
pdfOrganiser.mode.3=Ordinamento fronte-retro
|
||||||
|
pdfOrganiser.mode.4=Ordinamento a libretto
|
||||||
|
pdfOrganiser.mode.5=Ordinamento libretto con cucitura laterale
|
||||||
|
pdfOrganiser.mode.6=Divisione pari-dispari
|
||||||
|
pdfOrganiser.mode.7=Rimuovi prima
|
||||||
|
pdfOrganiser.mode.8=Rimuovi ultima
|
||||||
|
pdfOrganiser.mode.9=Rimuovi la prima e l'ultima
|
||||||
|
pdfOrganiser.placeholder=(ad es. 1,3,2 o 4-8,2,10-12 o 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=Multifunzione PDF
|
multiTool.title=Multifunzione PDF
|
||||||
multiTool.header=Multifunzione PDF
|
multiTool.header=Multifunzione PDF
|
||||||
|
multiTool.uploadPrompts=Caricare il PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=Visualizza PDF
|
viewPdf.title=Visualizza PDF
|
||||||
@@ -742,6 +796,7 @@ pageRemover.title=Rimuovi pagine
|
|||||||
pageRemover.header=Rimuovi pagine da un PDF
|
pageRemover.header=Rimuovi pagine da un PDF
|
||||||
pageRemover.pagesToDelete=Pagine da eliminare (inserisci una lista di numeri separati da virgola):
|
pageRemover.pagesToDelete=Pagine da eliminare (inserisci una lista di numeri separati da virgola):
|
||||||
pageRemover.submit=Rimuovi pagine
|
pageRemover.submit=Rimuovi pagine
|
||||||
|
pageRemover.placeholder=(es. 1,2,6 o 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +806,17 @@ rotate.selectAngle=Scegli angolo di rotazione (in multipli di 90 gradi):
|
|||||||
rotate.submit=Ruota
|
rotate.submit=Ruota
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=Dividi PDF
|
split.title=Dividi PDF
|
||||||
split.header=Dividi PDF
|
split.header=Dividi PDF
|
||||||
split.desc.1=I numeri che scegli sono le pagine a cui desideri dividere il documento
|
split.desc.1=I numeri che scegli sono le pagine a cui desideri dividere il documento
|
||||||
split.desc.2=Per esempio inserendo 1,3,7-8 separeresti un documento di 10 pagine in 6 diversi PDF con:
|
split.desc.2=Per esempio inserendo 1,3,7-9 separeresti un documento di 10 pagine in 6 diversi PDF con:
|
||||||
split.desc.3=Documento #1: Pagina 1
|
split.desc.3=Documento #1: Pagina 1
|
||||||
split.desc.4=Documento #2: Pagine 2 e 3
|
split.desc.4=Documento #2: Pagine 2 e 3
|
||||||
split.desc.5=Documento #3: Pagine 4, 5 e 6
|
split.desc.5=Documento #3: Pagine 4, 5, 6 e 7
|
||||||
split.desc.6=Documento #4: Pagina 7
|
split.desc.6=Documento #4: Pagina 8
|
||||||
split.desc.7=Documento #5: Pagina 8
|
split.desc.7=Documento #5: Pagina 9
|
||||||
split.desc.8=Documento #6: Pagine 9 e 10
|
split.desc.8=Documento #6: Pagine 10
|
||||||
split.splitPages=Inserisci pagine a cui dividere:
|
split.splitPages=Inserisci pagine a cui dividere:
|
||||||
split.submit=Dividi
|
split.submit=Dividi
|
||||||
|
|
||||||
@@ -829,6 +884,8 @@ watermark.selectText.7=Opacità (0% - 100%):
|
|||||||
watermark.selectText.8=Tipo di filigrana:
|
watermark.selectText.8=Tipo di filigrana:
|
||||||
watermark.selectText.9=Immagine filigrana:
|
watermark.selectText.9=Immagine filigrana:
|
||||||
watermark.submit=Aggiungi Filigrana
|
watermark.submit=Aggiungi Filigrana
|
||||||
|
watermark.type.1=Testo
|
||||||
|
watermark.type.2=Immagine
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -869,10 +926,10 @@ changeMetadata.keywords=Parole chiave:
|
|||||||
changeMetadata.modDate=Data di modifica (yyyy/MM/dd HH:mm:ss):
|
changeMetadata.modDate=Data di modifica (yyyy/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=Produttore:
|
changeMetadata.producer=Produttore:
|
||||||
changeMetadata.subject=Oggetto:
|
changeMetadata.subject=Oggetto:
|
||||||
changeMetadata.trapped=Trapped:
|
changeMetadata.trapped=Recuperato:
|
||||||
changeMetadata.selectText.4=Altre proprietà:
|
changeMetadata.selectText.4=Altre proprietà:
|
||||||
changeMetadata.selectText.5=Aggiungi proprietà personalizzata:
|
changeMetadata.selectText.5=Aggiungi proprietà personalizzata:
|
||||||
changeMetadata.submit=Cambia Proprietà
|
changeMetadata.submit=Cambia proprietà
|
||||||
|
|
||||||
|
|
||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
@@ -880,6 +937,7 @@ 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 OCRmyPDF per la conversione in PDF/A.
|
pdfToPDFA.credit=Questo servizio utilizza OCRmyPDF per la conversione in PDF/A.
|
||||||
pdfToPDFA.submit=Converti
|
pdfToPDFA.submit=Converti
|
||||||
|
pdfToPDFA.tip=Attualmente non funziona per più input contemporaneamente
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +967,7 @@ PDFToText.submit=Converti
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=Da PDF a HTML
|
PDFToHTML.title=Da PDF a HTML
|
||||||
PDFToHTML.header=Da PDF a HTML
|
PDFToHTML.header=Da PDF a HTML
|
||||||
PDFToHTML.credit=Questo servizio utilizza LibreOffice per la conversione.
|
PDFToHTML.credit=Questo servizio utilizza pdftohtml per la conversione.
|
||||||
PDFToHTML.submit=Converti
|
PDFToHTML.submit=Converti
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +984,7 @@ PDFToCSV.prompt=Scegli la pagina per estrarre la tabella
|
|||||||
PDFToCSV.submit=Estrai
|
PDFToCSV.submit=Estrai
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=Dividi il PDF per dimensione o numero
|
||||||
split-by-size-or-count.header=Dividi il PDF per dimensione o numero
|
split-by-size-or-count.header=Dividi il PDF per dimensione o numero
|
||||||
split-by-size-or-count.type.label=Seleziona il tipo di divisione
|
split-by-size-or-count.type.label=Seleziona il tipo di divisione
|
||||||
split-by-size-or-count.type.size=Per dimensione
|
split-by-size-or-count.type.size=Per dimensione
|
||||||
@@ -960,7 +1019,7 @@ split-by-sections.vertical.label=Divisioni verticali
|
|||||||
split-by-sections.horizontal.placeholder=Inserire il numero di divisioni orizzontali
|
split-by-sections.horizontal.placeholder=Inserire il numero di divisioni orizzontali
|
||||||
split-by-sections.vertical.placeholder=Inserire il numero di divisioni verticali
|
split-by-sections.vertical.placeholder=Inserire il numero di divisioni verticali
|
||||||
split-by-sections.submit=Dividi PDF
|
split-by-sections.submit=Dividi PDF
|
||||||
|
split-by-sections.merge=Unisci in un unico PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenze
|
licenses.nav=Licenze
|
||||||
@@ -971,3 +1030,16 @@ licenses.version=Versione
|
|||||||
licenses.license=Licenza
|
licenses.license=Licenza
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Ci scusiamo per il problema!
|
||||||
|
error.needHelp=Hai bisogno di aiuto / trovato un problema?
|
||||||
|
error.contactTip=Se i problemi persistono, non esitare a contattarci per chiedere aiuto. Puoi inviare un ticket sulla nostra pagina GitHub o contattarci tramite Discord:
|
||||||
|
error.404.head=404 - Pagina non trovata | Spiacenti, siamo inciampati nel codice!
|
||||||
|
error.404.1=Non riusciamo a trovare la pagina che stai cercando.
|
||||||
|
error.404.2=Qualcosa è andato storto
|
||||||
|
error.github=Invia un ticket su GitHub
|
||||||
|
error.showStack=Mostra traccia dello stack
|
||||||
|
error.copyStack=Copia traccia dello stack
|
||||||
|
error.githubSubmit=GitHub: invia un ticket
|
||||||
|
error.discordSubmit=Discord: invia post di supporto
|
||||||
|
|
||||||
|
|||||||
@@ -11,18 +11,19 @@ imgPrompt=画像を選択
|
|||||||
genericSubmit=送信
|
genericSubmit=送信
|
||||||
processTimeWarning=警告:この処理はファイルサイズによって1分程度かかることがあります
|
processTimeWarning=警告:この処理はファイルサイズによって1分程度かかることがあります
|
||||||
pageOrderPrompt=ページ順序 (ページ番号をカンマ区切り又は2n+1のような関数で入力):
|
pageOrderPrompt=ページ順序 (ページ番号をカンマ区切り又は2n+1のような関数で入力):
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
pageSelectionPrompt=カスタムページ選択(ページ番号1、5、6または2n + 1などの関数のコンマ区切りリストを入力します):
|
||||||
goToPage=移動
|
goToPage=移動
|
||||||
true=True
|
true=真
|
||||||
false=False
|
false=偽
|
||||||
unknown=不明
|
unknown=不明
|
||||||
save=保存
|
save=保存
|
||||||
|
saveToBrowser=ブラウザへ保存
|
||||||
close=閉じる
|
close=閉じる
|
||||||
filesSelected=選択されたファイル
|
filesSelected=選択されたファイル
|
||||||
noFavourites=お気に入りはありません
|
noFavourites=お気に入りはありません
|
||||||
downloadComplete=Download Complete
|
downloadComplete=ダウンロード完了
|
||||||
bored=待ち時間が退屈
|
bored=待ち時間が退屈
|
||||||
alphabet=\u30A2\u30EB\u30D5\u30A1\u30D9\u30C3\u30C8
|
alphabet=アルファベット
|
||||||
downloadPdf=PDFをダウンロード
|
downloadPdf=PDFをダウンロード
|
||||||
text=テキスト
|
text=テキスト
|
||||||
font=フォント
|
font=フォント
|
||||||
@@ -44,25 +45,41 @@ red=赤
|
|||||||
green=緑
|
green=緑
|
||||||
blue=青
|
blue=青
|
||||||
custom=カスタム...
|
custom=カスタム...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=作業中です。動作しないまたはバグがある可能性があります。問題があれば報告してください!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=はい
|
||||||
no=No
|
no=いいえ
|
||||||
changedCredsMessage=資格情報が変更されました!
|
changedCredsMessage=資格情報が変更されました!
|
||||||
notAuthenticatedMessage=ユーザーが認証されていません。
|
notAuthenticatedMessage=ユーザーが認証されていません。
|
||||||
userNotFoundMessage=ユーザーが見つかりません。
|
userNotFoundMessage=ユーザーが見つかりません。
|
||||||
incorrectPasswordMessage=現在のパスワードが正しくありません。
|
incorrectPasswordMessage=現在のパスワードが正しくありません。
|
||||||
usernameExistsMessage=新しいユーザー名はすでに存在します。
|
usernameExistsMessage=新しいユーザー名はすでに存在します。
|
||||||
|
invalidUsernameMessage=ユーザー名が無効です。ユーザー名にはアルファベットと数字のみを使用してください。
|
||||||
|
deleteCurrentUserMessage=現在ログインしているユーザーは削除できません。
|
||||||
|
deleteUsernameExistsMessage=そのユーザー名は存在しないため削除できません。
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=パイプラインメニュー (Alpha)
|
pipeline.header=パイプラインメニュー (Alpha)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=カスタムのアップロード
|
||||||
pipeline.configureButton=設定
|
pipeline.configureButton=設定
|
||||||
pipeline.defaultOption=カスタム
|
pipeline.defaultOption=カスタム
|
||||||
pipeline.submitButton=送信
|
pipeline.submitButton=送信
|
||||||
|
pipeline.help=パイプラインのヘルプ
|
||||||
|
pipeline.scanHelp=フォルダ スキャンのヘルプ
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -71,7 +88,7 @@ pipelineOptions.header=パイプライン設定
|
|||||||
pipelineOptions.pipelineNameLabel=パイプライン名
|
pipelineOptions.pipelineNameLabel=パイプライン名
|
||||||
pipelineOptions.saveSettings=動作設定の保存
|
pipelineOptions.saveSettings=動作設定の保存
|
||||||
pipelineOptions.pipelineNamePrompt=ここにパイプライン名を入力
|
pipelineOptions.pipelineNamePrompt=ここにパイプライン名を入力
|
||||||
pipelineOptions.selectOperation=Select Operation
|
pipelineOptions.selectOperation=動作の選択
|
||||||
pipelineOptions.addOperationButton=動作の追加
|
pipelineOptions.addOperationButton=動作の追加
|
||||||
pipelineOptions.pipelineHeader=パイプライン:
|
pipelineOptions.pipelineHeader=パイプライン:
|
||||||
pipelineOptions.saveButton=ダウンロード
|
pipelineOptions.saveButton=ダウンロード
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=アカウント設定
|
|||||||
|
|
||||||
changeCreds.title=資格情報の変更
|
changeCreds.title=資格情報の変更
|
||||||
changeCreds.header=アカウントの詳細を更新する
|
changeCreds.header=アカウントの詳細を更新する
|
||||||
changeCreds.changeUserAndPassword=デフォルトのログイン認証情報を使用しています。新しいパスワード (必要に応じてユーザー名も) を入力してください
|
changeCreds.changePassword=デフォルトのログイン認証情報を使用しています。新しいパスワードを入力してください
|
||||||
changeCreds.newUsername=新しいユーザー名
|
changeCreds.newUsername=新しいユーザー名
|
||||||
changeCreds.oldPassword=現在のパスワード
|
changeCreds.oldPassword=現在のパスワード
|
||||||
changeCreds.newPassword=新しいパスワード
|
changeCreds.newPassword=新しいパスワード
|
||||||
@@ -143,12 +160,15 @@ adminUserSettings.header=管理者ユーザー制御設定
|
|||||||
adminUserSettings.admin=管理者
|
adminUserSettings.admin=管理者
|
||||||
adminUserSettings.user=ユーザー
|
adminUserSettings.user=ユーザー
|
||||||
adminUserSettings.addUser=新しいユーザを追加
|
adminUserSettings.addUser=新しいユーザを追加
|
||||||
|
adminUserSettings.usernameInfo=ユーザー名には文字と数字のみが使用でき、スペースや特殊文字は使用できません。
|
||||||
adminUserSettings.roles=役割
|
adminUserSettings.roles=役割
|
||||||
adminUserSettings.role=役割
|
adminUserSettings.role=役割
|
||||||
adminUserSettings.actions=アクション
|
adminUserSettings.actions=アクション
|
||||||
adminUserSettings.apiUser=限定されたAPIユーザー
|
adminUserSettings.apiUser=限定されたAPIユーザー
|
||||||
|
adminUserSettings.extraApiUser=追加の制限付きAPIユーザー
|
||||||
adminUserSettings.webOnlyUser=ウェブ専用ユーザー
|
adminUserSettings.webOnlyUser=ウェブ専用ユーザー
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=デモユーザー (カスタム設定なし)
|
||||||
|
adminUserSettings.internalApiUser=内部APIユーザー
|
||||||
adminUserSettings.forceChange=ログイン時にユーザー名/パスワードを強制的に変更する
|
adminUserSettings.forceChange=ログイン時にユーザー名/パスワードを強制的に変更する
|
||||||
adminUserSettings.submit=ユーザーの保存
|
adminUserSettings.submit=ユーザーの保存
|
||||||
|
|
||||||
@@ -159,7 +179,7 @@ home.desc=PDFのあらゆるニーズに対応するローカルホスティン
|
|||||||
home.searchBar=機能検索...
|
home.searchBar=機能検索...
|
||||||
|
|
||||||
|
|
||||||
home.viewPdf.title=View PDF
|
home.viewPdf.title=PDFを表示
|
||||||
home.viewPdf.desc=表示、注釈、テキストや画像の追加
|
home.viewPdf.desc=表示、注釈、テキストや画像の追加
|
||||||
viewPdf.tags=view,read,annotate,text,image
|
viewPdf.tags=view,read,annotate,text,image
|
||||||
|
|
||||||
@@ -388,11 +408,20 @@ home.split-by-sections.title=PDFをセクションで分割
|
|||||||
home.split-by-sections.desc=PDFの各ページを縦横に分割します。
|
home.split-by-sections.desc=PDFの各ページを縦横に分割します。
|
||||||
split-by-sections.tags=Section Split, Divide, Customize
|
split-by-sections.tags=Section Split, Divide, Customize
|
||||||
|
|
||||||
home.AddStampRequest.title=Add Stamp to PDF
|
home.AddStampRequest.title=PDFにスタンプを追加
|
||||||
home.AddStampRequest.desc=Add text or add image stamps at set locations
|
home.AddStampRequest.desc=設定した位置にテキストや画像のスタンプを追加できます
|
||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDFを書籍に変換
|
||||||
|
home.PDFToBook.desc=calibreを使用してPDFを書籍/コミック形式に変換します
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=PDFを書籍に変換
|
||||||
|
home.BookToPDF.desc=calibreを使用してPDFを書籍/コミック形式に変換します
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=サインイン
|
login.title=サインイン
|
||||||
|
login.header=サインイン
|
||||||
login.signin=サインイン
|
login.signin=サインイン
|
||||||
login.rememberme=サインイン状態を記憶する
|
login.rememberme=サインイン状態を記憶する
|
||||||
login.invalid=ユーザー名かパスワードが無効です。
|
login.invalid=ユーザー名かパスワードが無効です。
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=単一ページに変換
|
|||||||
pageExtracter.title=ページの抽出
|
pageExtracter.title=ページの抽出
|
||||||
pageExtracter.header=ページの抽出
|
pageExtracter.header=ページの抽出
|
||||||
pageExtracter.submit=抽出
|
pageExtracter.submit=抽出
|
||||||
|
pageExtracter.placeholder=(例:1,2,8、4,7,12-16、2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -468,37 +499,37 @@ HTMLToPDF.header=HTMLをPDFに変換
|
|||||||
HTMLToPDF.help=HTMLファイルと必要なhtml/css/画像などを含むZIPを受け入れます
|
HTMLToPDF.help=HTMLファイルと必要なhtml/css/画像などを含むZIPを受け入れます
|
||||||
HTMLToPDF.submit=変換
|
HTMLToPDF.submit=変換
|
||||||
HTMLToPDF.credit=WeasyPrintを使用
|
HTMLToPDF.credit=WeasyPrintを使用
|
||||||
HTMLToPDF.zoom=Zoom level for displaying the website.
|
HTMLToPDF.zoom=Webサイトを表示するためのズームレベル。
|
||||||
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
|
HTMLToPDF.pageWidth=ページ幅 (cm)。 (デフォルトでは空白)
|
||||||
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
|
HTMLToPDF.pageHeight=ページ高さ (cm)。 (デフォルトでは空白)
|
||||||
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginTop=ページ上の余白 (mm)。 (デフォルトでは空白)
|
||||||
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginBottom=ページ下の余白 (mm)。 (デフォルトでは空白)
|
||||||
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginLeft=ページ左の余白 (mm)。 (デフォルトでは空白)
|
||||||
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginRight=ページ右の余白 (mm)。 (デフォルトでは空白)
|
||||||
HTMLToPDF.printBackground=Render the background of websites.
|
HTMLToPDF.printBackground=Webサイトの背景をレンダリングします。
|
||||||
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
|
HTMLToPDF.defaultHeader=デフォルトのヘッダー (名前とページ番号) を有効にする
|
||||||
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
|
HTMLToPDF.cssMediaType=ページのCSSメディアタイプを変更します。
|
||||||
HTMLToPDF.none=None
|
HTMLToPDF.none=なし
|
||||||
HTMLToPDF.print=Print
|
HTMLToPDF.print=印刷
|
||||||
HTMLToPDF.screen=Screen
|
HTMLToPDF.screen=画面
|
||||||
|
|
||||||
|
|
||||||
#AddStampRequest
|
#AddStampRequest
|
||||||
AddStampRequest.header=Stamp PDF
|
AddStampRequest.header=PDFにスタンプを押す
|
||||||
AddStampRequest.title=Stamp PDF
|
AddStampRequest.title=PDFにスタンプを押す
|
||||||
AddStampRequest.stampType=Stamp Type
|
AddStampRequest.stampType=スタンプの種類
|
||||||
AddStampRequest.stampText=Stamp Text
|
AddStampRequest.stampText=スタンプする文章
|
||||||
AddStampRequest.stampImage=Stamp Image
|
AddStampRequest.stampImage=スタンプする画像
|
||||||
AddStampRequest.alphabet=Alphabet
|
AddStampRequest.alphabet=文字
|
||||||
AddStampRequest.fontSize=Font/Image Size
|
AddStampRequest.fontSize=フォント/画像 サイズ
|
||||||
AddStampRequest.rotation=Rotation
|
AddStampRequest.rotation=回転
|
||||||
AddStampRequest.opacity=Opacity
|
AddStampRequest.opacity=不透明度
|
||||||
AddStampRequest.position=Position
|
AddStampRequest.position=位置
|
||||||
AddStampRequest.overrideX=Override X Coordinate
|
AddStampRequest.overrideX=X座標のオーバーライド
|
||||||
AddStampRequest.overrideY=Override Y Coordinate
|
AddStampRequest.overrideY=Y座標のオーバーライド
|
||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=余白のカスタム
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=文字色のカスタム
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=送信
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
@@ -523,7 +554,7 @@ addPageNumbers.selectText.5=番号をつけるページ
|
|||||||
addPageNumbers.selectText.6=カスタムテキスト
|
addPageNumbers.selectText.6=カスタムテキスト
|
||||||
addPageNumbers.customTextDesc=カスタムテキスト
|
addPageNumbers.customTextDesc=カスタムテキスト
|
||||||
addPageNumbers.numberPagesDesc=番号をつけるページ、デフォルトは'all'、 1-5 や 2,5,9 など
|
addPageNumbers.numberPagesDesc=番号をつけるページ、デフォルトは'all'、 1-5 や 2,5,9 など
|
||||||
addPageNumbers.customNumberDesc=デフォルトは{n}、'{n} / {total} ページ'、'テキスト-{n}'、'{filename}-{n}など
|
addPageNumbers.customNumberDesc=デフォルトは{n}、'{n} / {total} ページ'、'テキスト-{n}'、'{filename}-{n}など'
|
||||||
addPageNumbers.submit=ページ番号の追加
|
addPageNumbers.submit=ページ番号の追加
|
||||||
|
|
||||||
|
|
||||||
@@ -571,7 +602,7 @@ pipeline.title=パイプライン
|
|||||||
pageLayout.title=マルチページレイアウト
|
pageLayout.title=マルチページレイアウト
|
||||||
pageLayout.header=マルチページレイアウト
|
pageLayout.header=マルチページレイアウト
|
||||||
pageLayout.pagesPerSheet=1枚あたりのページ数:
|
pageLayout.pagesPerSheet=1枚あたりのページ数:
|
||||||
pageLayout.addBorder=Add Borders
|
pageLayout.addBorder=境界線を追加
|
||||||
pageLayout.submit=送信
|
pageLayout.submit=送信
|
||||||
|
|
||||||
|
|
||||||
@@ -587,11 +618,11 @@ scalePages.submit=送信
|
|||||||
certSign.title=証明書による署名
|
certSign.title=証明書による署名
|
||||||
certSign.header=証明書を使用してPDFに署名します。 (制作中)
|
certSign.header=証明書を使用してPDFに署名します。 (制作中)
|
||||||
certSign.selectPDF=署名するPDFファイルを選択:
|
certSign.selectPDF=署名するPDFファイルを選択:
|
||||||
certSign.jksNote=Note: If your certificate type is not listed below, please convert it to a Java Keystore (.jks) file using the keytool command line tool. Then, choose the .jks file option below.
|
certSign.jksNote=注: 証明書のタイプが以下にリストされていない場合は、keytoolコマンドラインツールを使用して証明書をJavaキーストア(.jks)ファイルに変換してください。次に以下の.jksファイル オプションを選択します。
|
||||||
certSign.selectKey=秘密キーファイルを選択 (PKCS#8形式、.pemまたは.der) :
|
certSign.selectKey=秘密キーファイルを選択 (PKCS#8形式、.pemまたは.der) :
|
||||||
certSign.selectCert=証明書ファイルを選択 (X.509形式、.pemまたは.der) :
|
certSign.selectCert=証明書ファイルを選択 (X.509形式、.pemまたは.der) :
|
||||||
certSign.selectP12=PKCS#12キーストアファイルを選択 (.p12または.pfx) (オプション。指定する場合は秘密キーと証明書が含まれている必要があります。):
|
certSign.selectP12=PKCS#12キーストアファイルを選択 (.p12または.pfx) (オプション。指定する場合は秘密キーと証明書が含まれている必要があります。):
|
||||||
certSign.selectJKS=Select Your Java Keystore File (.jks or .keystore):
|
certSign.selectJKS=Javaキーストアファイルを選択 (.jks or .keystore):
|
||||||
certSign.certType=証明書の種類
|
certSign.certType=証明書の種類
|
||||||
certSign.password=キーストアまたは秘密キーのパスワードを入力 (ある場合) :
|
certSign.password=キーストアまたは秘密キーのパスワードを入力 (ある場合) :
|
||||||
certSign.showSig=署名を表示
|
certSign.showSig=署名を表示
|
||||||
@@ -614,7 +645,7 @@ removeBlanks.submit=空白ページの削除
|
|||||||
#removeAnnotations
|
#removeAnnotations
|
||||||
removeAnnotations.title=注釈の削除
|
removeAnnotations.title=注釈の削除
|
||||||
removeAnnotations.header=注釈の削除
|
removeAnnotations.header=注釈の削除
|
||||||
removeAnnotations.submit=Remove
|
removeAnnotations.submit=削除
|
||||||
|
|
||||||
|
|
||||||
#compare
|
#compare
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=ドキュメント 1
|
|||||||
compare.document.2=ドキュメント 2
|
compare.document.2=ドキュメント 2
|
||||||
compare.submit=比較
|
compare.submit=比較
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=書籍やコミックをPDFに変換
|
||||||
|
BookToPDF.header=書籍をPDFに変換
|
||||||
|
BookToPDF.credit=calibreを使用
|
||||||
|
BookToPDF.submit=変換
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=書籍をPDFに変換
|
||||||
|
PDFToBook.header=書籍をPDFに変換
|
||||||
|
PDFToBook.selectText.1=フォーマット
|
||||||
|
PDFToBook.credit=calibreを使用
|
||||||
|
PDFToBook.submit=変換
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=署名
|
sign.title=署名
|
||||||
@@ -727,21 +770,34 @@ merge.submit=結合
|
|||||||
pdfOrganiser.title=整理
|
pdfOrganiser.title=整理
|
||||||
pdfOrganiser.header=PDFページの整理
|
pdfOrganiser.header=PDFページの整理
|
||||||
pdfOrganiser.submit=ページの整理
|
pdfOrganiser.submit=ページの整理
|
||||||
|
pdfOrganiser.mode=モード
|
||||||
|
pdfOrganiser.mode.1=カスタムページ順序
|
||||||
|
pdfOrganiser.mode.2=逆順
|
||||||
|
pdfOrganiser.mode.3=デュプレックスソート
|
||||||
|
pdfOrganiser.mode.4=小冊子ソート
|
||||||
|
pdfOrganiser.mode.5=サイドステッチ小冊子ソート
|
||||||
|
pdfOrganiser.mode.6=奇数-偶数分割
|
||||||
|
pdfOrganiser.mode.7=最初に削除
|
||||||
|
pdfOrganiser.mode.8=最後を削除
|
||||||
|
pdfOrganiser.mode.9=最初と最後を削除
|
||||||
|
pdfOrganiser.placeholder=(例:1,3,2または4-8,2,10-12または2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=PDFマルチツール
|
multiTool.title=PDFマルチツール
|
||||||
multiTool.header=PDFマルチツール
|
multiTool.header=PDFマルチツール
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=View PDF
|
viewPdf.title=PDFを表示
|
||||||
viewPdf.header=View PDF
|
viewPdf.header=PDFを表示
|
||||||
|
|
||||||
#pageRemover
|
#pageRemover
|
||||||
pageRemover.title=ページ削除
|
pageRemover.title=ページ削除
|
||||||
pageRemover.header=PDFページ削除
|
pageRemover.header=PDFページ削除
|
||||||
pageRemover.pagesToDelete=削除するページ (ページ番号のカンマ区切りリストを入力してください):
|
pageRemover.pagesToDelete=削除するページ (ページ番号のカンマ区切りリストを入力してください):
|
||||||
pageRemover.submit=ページ削除
|
pageRemover.submit=ページ削除
|
||||||
|
pageRemover.placeholder=(例:1,2,6または1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=回転角度を選択 (90度の倍数):
|
|||||||
rotate.submit=回転
|
rotate.submit=回転
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=PDFの分割
|
split.title=PDFの分割
|
||||||
split.header=PDFの分割
|
split.header=PDFの分割
|
||||||
split.desc.1=選択する番号は分割するページ番号です。
|
split.desc.1=選択する番号は分割するページ番号です。
|
||||||
split.desc.2=したがって、1,3,7-8を選択すると、10ページのドキュメントが以下のように6つのPDFに分割されることになります。
|
split.desc.2=したがって、1,3,7-9を選択すると、10ページのドキュメントが以下のように6つのPDFに分割されることになります。
|
||||||
split.desc.3=ドキュメント #1: ページ 1
|
split.desc.3=ドキュメント #1: ページ 1
|
||||||
split.desc.4=ドキュメント #2: ページ 2, 3
|
split.desc.4=ドキュメント #2: ページ 2, 3
|
||||||
split.desc.5=ドキュメント #3: ページ 4, 5, 6
|
split.desc.5=ドキュメント #3: ページ 4, 5, 6, 7
|
||||||
split.desc.6=ドキュメント #4: ページ 7
|
split.desc.6=ドキュメント #4: ページ 8
|
||||||
split.desc.7=ドキュメント #5: ページ 8
|
split.desc.7=ドキュメント #5: ページ 9
|
||||||
split.desc.8=ドキュメント #6: ページ 9, 10
|
split.desc.8=ドキュメント #6: ページ 10
|
||||||
split.splitPages=分割するページ番号を入力:
|
split.splitPages=分割するページ番号を入力:
|
||||||
split.submit=分割
|
split.submit=分割
|
||||||
|
|
||||||
@@ -826,9 +882,11 @@ watermark.selectText.4=回転 (0-360):
|
|||||||
watermark.selectText.5=幅スペース (各透かし間の水平方向のスペース):
|
watermark.selectText.5=幅スペース (各透かし間の水平方向のスペース):
|
||||||
watermark.selectText.6=高さスペース (各透かし間の垂直方向のスペース):
|
watermark.selectText.6=高さスペース (各透かし間の垂直方向のスペース):
|
||||||
watermark.selectText.7=不透明度 (0% - 100%):
|
watermark.selectText.7=不透明度 (0% - 100%):
|
||||||
watermark.selectText.8=Watermark Type:
|
watermark.selectText.8=透かしの種類:
|
||||||
watermark.selectText.9=Watermark Image:
|
watermark.selectText.9=透かしの画像:
|
||||||
watermark.submit=透かしを追加
|
watermark.submit=透かしを追加
|
||||||
|
watermark.type.1=テキスト
|
||||||
|
watermark.type.2=画像
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ pdfToPDFA.title=PDFをPDF/Aに変換
|
|||||||
pdfToPDFA.header=PDFをPDF/Aに変換
|
pdfToPDFA.header=PDFをPDF/Aに変換
|
||||||
pdfToPDFA.credit=本サービスはPDF/Aの変換にOCRmyPDFを使用しています。
|
pdfToPDFA.credit=本サービスはPDF/Aの変換にOCRmyPDFを使用しています。
|
||||||
pdfToPDFA.submit=変換
|
pdfToPDFA.submit=変換
|
||||||
|
pdfToPDFA.tip=現在、一度に複数の入力に対して機能しません
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=変換
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDFをHTMLに変換
|
PDFToHTML.title=PDFをHTMLに変換
|
||||||
PDFToHTML.header=PDFをHTMLに変換
|
PDFToHTML.header=PDFをHTMLに変換
|
||||||
PDFToHTML.credit=本サービスはファイル変換にLibreOfficeを使用しています。
|
PDFToHTML.credit=本サービスはファイル変換にpdftohtmlを使用しています。
|
||||||
PDFToHTML.submit=変換
|
PDFToHTML.submit=変換
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=表を抽出するページを選択
|
|||||||
PDFToCSV.submit=変換
|
PDFToCSV.submit=変換
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=サイズまたは数で分割
|
||||||
split-by-size-or-count.header=サイズまたは数で分割
|
split-by-size-or-count.header=サイズまたは数で分割
|
||||||
split-by-size-or-count.type.label=分割タイプの選択
|
split-by-size-or-count.type.label=分割タイプの選択
|
||||||
split-by-size-or-count.type.size=サイズ
|
split-by-size-or-count.type.size=サイズ
|
||||||
@@ -960,7 +1020,7 @@ split-by-sections.vertical.label=垂直方向
|
|||||||
split-by-sections.horizontal.placeholder=水平方向の分割数を選択
|
split-by-sections.horizontal.placeholder=水平方向の分割数を選択
|
||||||
split-by-sections.vertical.placeholder=垂直方向の分割数を選択
|
split-by-sections.vertical.placeholder=垂直方向の分割数を選択
|
||||||
split-by-sections.submit=分割
|
split-by-sections.submit=分割
|
||||||
|
split-by-sections.merge=1 つの PDF に結合するかどうか
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=ライセンス
|
licenses.nav=ライセンス
|
||||||
@@ -971,3 +1031,16 @@ licenses.version=バージョン
|
|||||||
licenses.license=ライセンス
|
licenses.license=ライセンス
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
@@ -11,71 +11,88 @@ imgPrompt=이미지 선택
|
|||||||
genericSubmit=확인
|
genericSubmit=확인
|
||||||
processTimeWarning=경고: 파일 크기에 따라 1분 정도 소요될 수 있습니다
|
processTimeWarning=경고: 파일 크기에 따라 1분 정도 소요될 수 있습니다
|
||||||
pageOrderPrompt=페이지 순서(쉼표로 구분된 페이지 번호 목록 입력):
|
pageOrderPrompt=페이지 순서(쉼표로 구분된 페이지 번호 목록 입력):
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
pageSelectionPrompt=사용자 지정 페이지 선택(페이지 번호 1,5,6 또는 2n+1과 같은 기능을 쉼표로 구분하여 목록 입력):
|
||||||
goToPage=이동
|
goToPage=이동
|
||||||
true=참
|
true=참
|
||||||
false=거짓
|
false=거짓
|
||||||
unknown=알 수 없음
|
unknown=알 수 없음
|
||||||
save=저장
|
save=저장
|
||||||
|
saveToBrowser=브라우저에 저장
|
||||||
close=닫기
|
close=닫기
|
||||||
filesSelected=개 파일 선택됨
|
filesSelected=개 파일 선택됨
|
||||||
noFavourites=즐겨찾기 없음
|
noFavourites=즐겨찾기 없음
|
||||||
downloadComplete=Download Complete
|
downloadComplete=다운로드 완료
|
||||||
bored=기다리는 게 지루하신가요?
|
bored=기다리는 게 지루하신가요?
|
||||||
alphabet=\uC54C\uD30C\uBCB3
|
alphabet=알파벳
|
||||||
downloadPdf=PDF 다운로드
|
downloadPdf=PDF 다운로드
|
||||||
text=텍스트
|
text=텍스트
|
||||||
font=폰트
|
font=폰트
|
||||||
selectFillter=-- 선택 --
|
selectFillter=-- 선택 --
|
||||||
pageNum=페이지 번호
|
pageNum=페이지 번호
|
||||||
sizes.small=Small
|
sizes.small=작은 크기
|
||||||
sizes.medium=Medium
|
sizes.medium=중간 사이즈
|
||||||
sizes.large=Large
|
sizes.large=큰 사이즈
|
||||||
sizes.x-large=X-Large
|
sizes.x-large=초대형 사이즈
|
||||||
error.pdfPassword=이 PDF는 비밀번호로 보호되어 있으며, 비밀번호를 입력하지 않았거나, 입력된 비밀번호가 올바르지 않습니다.
|
error.pdfPassword=이 PDF는 비밀번호로 보호되어 있으며, 비밀번호를 입력하지 않았거나, 입력된 비밀번호가 올바르지 않습니다.
|
||||||
delete=삭제
|
delete=삭제
|
||||||
username=사용자명
|
username=사용자명
|
||||||
password=비밀번호
|
password=비밀번호
|
||||||
welcome=환영합니다.
|
welcome=환영합니다.
|
||||||
property=Property
|
property=재산
|
||||||
black=Black
|
black=검정
|
||||||
white=White
|
white=하얀
|
||||||
red=Red
|
red=빨강
|
||||||
green=Green
|
green=녹색
|
||||||
blue=Blue
|
blue=파랑
|
||||||
custom=Custom...
|
custom=관습...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=작업 진행 중, 작동하지 않거나 버그가 있을 수 있음, 문제가 있으면 보고하십시오!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=예
|
||||||
no=No
|
no=아니요
|
||||||
changedCredsMessage=계정 정보 변경 성공!
|
changedCredsMessage=계정 정보 변경 성공!
|
||||||
notAuthenticatedMessage=User not authenticated.
|
notAuthenticatedMessage=사용자가 인증되지 않았습니다.
|
||||||
userNotFoundMessage=사용자를 찾을 수 없습니다.
|
userNotFoundMessage=사용자를 찾을 수 없습니다.
|
||||||
incorrectPasswordMessage=현재 비밀번호가 틀립니다.
|
incorrectPasswordMessage=현재 비밀번호가 틀립니다.
|
||||||
usernameExistsMessage=새 사용자명이 이미 존재합니다.
|
usernameExistsMessage=새 사용자명이 이미 존재합니다.
|
||||||
|
invalidUsernameMessage=사용자 이름이 잘못되었습니다. 사용자 이름에는 알파벳 문자와 숫자만 포함되어야 합니다.
|
||||||
|
deleteCurrentUserMessage=현재 로그인한 사용자를 삭제할 수 없습니다.
|
||||||
|
deleteUsernameExistsMessage=사용자 이름이 존재하지 않으며 삭제할 수 없습니다.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=파이프라인 메뉴 (Beta)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=사용자 지정 업로드
|
||||||
pipeline.configureButton=Configure
|
pipeline.configureButton=구성
|
||||||
pipeline.defaultOption=Custom
|
pipeline.defaultOption=관습
|
||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=전송
|
||||||
|
pipeline.help=파이프라인 도움말
|
||||||
|
pipeline.scanHelp=폴더 스캔 도움말
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
######################
|
######################
|
||||||
pipelineOptions.header=Pipeline Configuration
|
pipelineOptions.header=파이프라인 구성
|
||||||
pipelineOptions.pipelineNameLabel=Pipeline Name
|
pipelineOptions.pipelineNameLabel=파이프라인 이름
|
||||||
pipelineOptions.saveSettings=Save Operation Settings
|
pipelineOptions.saveSettings=작업 설정 저장
|
||||||
pipelineOptions.pipelineNamePrompt=Enter pipeline name here
|
pipelineOptions.pipelineNamePrompt=여기에 파이프라인 이름을 입력합니다.
|
||||||
pipelineOptions.selectOperation=Select Operation
|
pipelineOptions.selectOperation=작업 선택
|
||||||
pipelineOptions.addOperationButton=Add operation
|
pipelineOptions.addOperationButton=작업 추가
|
||||||
pipelineOptions.pipelineHeader=Pipeline:
|
pipelineOptions.pipelineHeader=파이프라인:
|
||||||
pipelineOptions.saveButton=Download
|
pipelineOptions.saveButton=다운로드
|
||||||
pipelineOptions.validateButton=Validate
|
pipelineOptions.validateButton=확인
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=계정 설정
|
|||||||
|
|
||||||
changeCreds.title=계정 정보 변경
|
changeCreds.title=계정 정보 변경
|
||||||
changeCreds.header=계정 정보 업데이트
|
changeCreds.header=계정 정보 업데이트
|
||||||
changeCreds.changeUserAndPassword=기본 제공된 로그인 정보를 사용하고 있습니다. 새 비밀번호를 입력합니다. (필요하다면 사용자명을 변경할 수 있습니다.)
|
changeCreds.changePassword=기본 로그인 자격 증명을 사용하고 있습니다. 새 비밀번호를 입력해 주세요.
|
||||||
changeCreds.newUsername=새 사용자명
|
changeCreds.newUsername=새 사용자명
|
||||||
changeCreds.oldPassword=현재 비밀번호
|
changeCreds.oldPassword=현재 비밀번호
|
||||||
changeCreds.newPassword=새 비밀번호
|
changeCreds.newPassword=새 비밀번호
|
||||||
@@ -120,20 +137,20 @@ changeCreds.submit=변경
|
|||||||
account.title=계정 설정
|
account.title=계정 설정
|
||||||
account.accountSettings=계정 설정
|
account.accountSettings=계정 설정
|
||||||
account.adminSettings=관리자 설정 - 사용자 추가 및 확인
|
account.adminSettings=관리자 설정 - 사용자 추가 및 확인
|
||||||
account.userControlSettings=User Control Settings
|
account.userControlSettings=사용자 컨트롤 설정
|
||||||
account.changeUsername=사용자명 변경
|
account.changeUsername=사용자명 변경
|
||||||
account.newUsername=새 사용자 이름
|
account.newUsername=새 사용자 이름
|
||||||
account.password=Confirmation Password
|
account.password=확인 비밀번호
|
||||||
account.oldPassword=이전 비밀번호
|
account.oldPassword=이전 비밀번호
|
||||||
account.newPassword=새 비밀번호
|
account.newPassword=새 비밀번호
|
||||||
account.changePassword=비밀번호 변경
|
account.changePassword=비밀번호 변경
|
||||||
account.confirmNewPassword=새 비밀번호 확인
|
account.confirmNewPassword=새 비밀번호 확인
|
||||||
account.signOut=로그아웃
|
account.signOut=로그아웃
|
||||||
account.yourApiKey=API 키
|
account.yourApiKey=API 키
|
||||||
account.syncTitle=Sync browser settings with Account
|
account.syncTitle=브라우저 설정을 계정과 동기화
|
||||||
account.settingsCompare=Settings Comparison:
|
account.settingsCompare=설정 비교:
|
||||||
account.property=Property
|
account.property=재산
|
||||||
account.webBrowserSettings=Web Browser Setting
|
account.webBrowserSettings=웹 브라우저 설정
|
||||||
account.syncToBrowser=계정 -> 브라우저로 동기화
|
account.syncToBrowser=계정 -> 브라우저로 동기화
|
||||||
account.syncToAccount=브라우저 -> 계정으로 동기화
|
account.syncToAccount=브라우저 -> 계정으로 동기화
|
||||||
|
|
||||||
@@ -143,12 +160,15 @@ adminUserSettings.header=사용자 관리
|
|||||||
adminUserSettings.admin=관리자
|
adminUserSettings.admin=관리자
|
||||||
adminUserSettings.user=사용자
|
adminUserSettings.user=사용자
|
||||||
adminUserSettings.addUser=새 사용자 추가
|
adminUserSettings.addUser=새 사용자 추가
|
||||||
|
adminUserSettings.usernameInfo=사용자 이름은 문자와 숫자만 포함해야 하며 공백이나 특수 문자는 포함할 수 없습니다.
|
||||||
adminUserSettings.roles=역할
|
adminUserSettings.roles=역할
|
||||||
adminUserSettings.role=역할
|
adminUserSettings.role=역할
|
||||||
adminUserSettings.actions=동작
|
adminUserSettings.actions=동작
|
||||||
adminUserSettings.apiUser=제한된 API 사용
|
adminUserSettings.apiUser=제한된 API 사용
|
||||||
|
adminUserSettings.extraApiUser=제한된 API 사용자 추가
|
||||||
adminUserSettings.webOnlyUser=웹 사용만 허용
|
adminUserSettings.webOnlyUser=웹 사용만 허용
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=데모 사용자(사용자 지정 설정 없음)
|
||||||
|
adminUserSettings.internalApiUser=내부 API 사용자
|
||||||
adminUserSettings.forceChange=다음 로그인 때 사용자명과 비밀번호를 변경하도록 강제
|
adminUserSettings.forceChange=다음 로그인 때 사용자명과 비밀번호를 변경하도록 강제
|
||||||
adminUserSettings.submit=사용자 저장
|
adminUserSettings.submit=사용자 저장
|
||||||
|
|
||||||
@@ -180,11 +200,11 @@ home.rotate.desc=PDF 페이지를 회전합니다.
|
|||||||
rotate.tags=server side
|
rotate.tags=server side
|
||||||
|
|
||||||
|
|
||||||
home.imageToPdf.title=Image to PDF
|
home.imageToPdf.title=이미지를 PDF로
|
||||||
home.imageToPdf.desc=이미지(PNG, JPEG, GIF)를 PDF 문서로 변환합니다.
|
home.imageToPdf.desc=이미지(PNG, JPEG, GIF)를 PDF 문서로 변환합니다.
|
||||||
imageToPdf.tags=conversion,img,jpg,picture,photo
|
imageToPdf.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfToImage.title=PDF to Image
|
home.pdfToImage.title=PDF를 이미지로
|
||||||
home.pdfToImage.desc=PDF 문서을 이미지(PNG, JPEG, GIF)로 변환합니다.
|
home.pdfToImage.desc=PDF 문서을 이미지(PNG, JPEG, GIF)로 변환합니다.
|
||||||
pdfToImage.tags=conversion,img,jpg,picture,photo
|
pdfToImage.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
@@ -240,15 +260,15 @@ home.extractImages.title=이미지 추출
|
|||||||
home.extractImages.desc=PDF에서 모든 이미지를 추출하여 zip으로 저장합니다.
|
home.extractImages.desc=PDF에서 모든 이미지를 추출하여 zip으로 저장합니다.
|
||||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
||||||
|
|
||||||
home.pdfToPDFA.title=PDF to PDF/A
|
home.pdfToPDFA.title=PDF를 PDF/A로 변환
|
||||||
home.pdfToPDFA.desc=장기 보관을 위해 PDF 문서를 PDF/A 문서로 변환합니다.
|
home.pdfToPDFA.desc=장기 보관을 위해 PDF 문서를 PDF/A 문서로 변환합니다.
|
||||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
||||||
|
|
||||||
home.PDFToWord.title=PDF to Word
|
home.PDFToWord.title=PDF를 Word로
|
||||||
home.PDFToWord.desc=PDF 문서를 Word 형식으로 변환합니다. (DOC, DOCX, ODT)
|
home.PDFToWord.desc=PDF 문서를 Word 형식으로 변환합니다. (DOC, DOCX, ODT)
|
||||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
||||||
|
|
||||||
home.PDFToPresentation.title=PDF to Presentation
|
home.PDFToPresentation.title=PDF를 프리젠테이션으로
|
||||||
home.PDFToPresentation.desc=PDF 문서를 프리젠테이션 형식으로 변환합니다. (PPT, PPTX, ODP)
|
home.PDFToPresentation.desc=PDF 문서를 프리젠테이션 형식으로 변환합니다. (PPT, PPTX, ODP)
|
||||||
PDFToPresentation.tags=slides,show,office,microsoft
|
PDFToPresentation.tags=slides,show,office,microsoft
|
||||||
|
|
||||||
@@ -256,12 +276,12 @@ home.PDFToText.title=PDF to 텍스트/RTF
|
|||||||
home.PDFToText.desc=PDF 문서를 텍스트 또는 RTF 형식으로 변환합니다.
|
home.PDFToText.desc=PDF 문서를 텍스트 또는 RTF 형식으로 변환합니다.
|
||||||
PDFToText.tags=richformat,richtextformat,rich text format
|
PDFToText.tags=richformat,richtextformat,rich text format
|
||||||
|
|
||||||
home.PDFToHTML.title=PDF to HTML
|
home.PDFToHTML.title=PDF를 HTML로
|
||||||
home.PDFToHTML.desc=PDF 문서를 HTML 형식으로 변환합니다.
|
home.PDFToHTML.desc=PDF 문서를 HTML 형식으로 변환합니다.
|
||||||
PDFToHTML.tags=web content,browser friendly
|
PDFToHTML.tags=web content,browser friendly
|
||||||
|
|
||||||
|
|
||||||
home.PDFToXML.title=PDF to XML
|
home.PDFToXML.title=PDF를 XML로 변환
|
||||||
home.PDFToXML.desc=PDF 문서를 XML 형식으로 변환합니다.
|
home.PDFToXML.desc=PDF 문서를 XML 형식으로 변환합니다.
|
||||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
||||||
|
|
||||||
@@ -285,8 +305,8 @@ home.removeBlanks.title=빈 페이지 제거
|
|||||||
home.removeBlanks.desc=PDF 문서에서 빈 페이지를 감지하고 제거합니다.
|
home.removeBlanks.desc=PDF 문서에서 빈 페이지를 감지하고 제거합니다.
|
||||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
removeBlanks.tags=cleanup,streamline,non-content,organize
|
||||||
|
|
||||||
home.removeAnnotations.title=Remove Annotations
|
home.removeAnnotations.title=주석 제거
|
||||||
home.removeAnnotations.desc=Removes all comments/annotations from a PDF
|
home.removeAnnotations.desc=PDF에서 모든 주석/주석을 제거합니다.
|
||||||
removeAnnotations.tags=comments,highlight,notes,markup,remove
|
removeAnnotations.tags=comments,highlight,notes,markup,remove
|
||||||
|
|
||||||
home.compare.title=비교
|
home.compare.title=비교
|
||||||
@@ -333,16 +353,16 @@ home.sanitizePdf.title=정제
|
|||||||
home.sanitizePdf.desc=PDF 문서에서 스크립트와 같은 요소들을 제거합니다.
|
home.sanitizePdf.desc=PDF 문서에서 스크립트와 같은 요소들을 제거합니다.
|
||||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
sanitizePdf.tags=clean,secure,safe,remove-threats
|
||||||
|
|
||||||
home.URLToPDF.title=URL/Website To PDF
|
home.URLToPDF.title=URL/웹사이트를 PDF로
|
||||||
home.URLToPDF.desc=http(s) 웹사이트를 PDF 문서로 변환합니다.
|
home.URLToPDF.desc=http(s) 웹사이트를 PDF 문서로 변환합니다.
|
||||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
||||||
|
|
||||||
home.HTMLToPDF.title=HTML to PDF
|
home.HTMLToPDF.title=HTML에서 PDF로
|
||||||
home.HTMLToPDF.desc=HTML 파일, 또는 ZIP 파일을 PDF로 변환합니다.
|
home.HTMLToPDF.desc=HTML 파일, 또는 ZIP 파일을 PDF로 변환합니다.
|
||||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
HTMLToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
home.MarkdownToPDF.title=Markdown to PDF
|
home.MarkdownToPDF.title=Markdown에서 PDF로
|
||||||
home.MarkdownToPDF.desc=마크다운 파일을 PDF 문서로 변환합니다.
|
home.MarkdownToPDF.desc=마크다운 파일을 PDF 문서로 변환합니다.
|
||||||
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
@@ -370,29 +390,38 @@ home.autoRedact.title=자동 검열
|
|||||||
home.autoRedact.desc=PDF 문서에서 입력된 텍스트들을 자동으로 검열(모자이크)합니다.
|
home.autoRedact.desc=PDF 문서에서 입력된 텍스트들을 자동으로 검열(모자이크)합니다.
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF에서 CSV로
|
||||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
home.tableExtraxt.desc=PDF에서 표를 추출하여 CSV로 변환
|
||||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||||
|
|
||||||
|
|
||||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
home.autoSizeSplitPDF.title=크기/개수로 자동 분할
|
||||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
home.autoSizeSplitPDF.desc=단일 PDF를 크기, 페이지 수 또는 문서 수에 따라 여러 문서로 분할
|
||||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||||
|
|
||||||
|
|
||||||
home.overlay-pdfs.title=Overlay PDFs
|
home.overlay-pdfs.title=PDF 오버레이
|
||||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
home.overlay-pdfs.desc=PDF를 다른 PDF 위에 오버레이
|
||||||
overlay-pdfs.tags=Overlay
|
overlay-pdfs.tags=Overlay
|
||||||
|
|
||||||
home.split-by-sections.title=Split PDF by Sections
|
home.split-by-sections.title=섹션별로 PDF 분할
|
||||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
home.split-by-sections.desc=PDF의 각 페이지를 더 작은 가로와 세로 구역으로 나눕니다
|
||||||
split-by-sections.tags=Section Split, Divide, Customize
|
split-by-sections.tags=Section Split, Divide, Customize
|
||||||
|
|
||||||
home.AddStampRequest.title=Add Stamp to PDF
|
home.AddStampRequest.title=PDF에 스탬프 추가
|
||||||
home.AddStampRequest.desc=Add text or add image stamps at set locations
|
home.AddStampRequest.desc=설정된 위치에 텍스트 추가 또는 이미지 스탬프 추가
|
||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF를 책으로
|
||||||
|
home.PDFToBook.desc=구경을 사용하여 PDF를 책/만화 형식으로 변환
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=책을 PDF로
|
||||||
|
home.BookToPDF.desc=구경을 사용하여 책/만화 형식을 PDF로 변환
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=로그인
|
login.title=로그인
|
||||||
|
login.header=로그인
|
||||||
login.signin=로그인
|
login.signin=로그인
|
||||||
login.rememberme=로그인 유지
|
login.rememberme=로그인 유지
|
||||||
login.invalid=사용자 이름이나 비밀번호가 틀립니다.
|
login.invalid=사용자 이름이나 비밀번호가 틀립니다.
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=단일 페이지로 통합
|
|||||||
pageExtracter.title=페이지 추출
|
pageExtracter.title=페이지 추출
|
||||||
pageExtracter.header=페이지 추출
|
pageExtracter.header=페이지 추출
|
||||||
pageExtracter.submit=추출
|
pageExtracter.submit=추출
|
||||||
|
pageExtracter.placeholder=(예: 1,2,8 또는 4,7,12-16 또는 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -447,7 +478,7 @@ getPdfInfo.downloadJson=JSON으로 다운로드
|
|||||||
|
|
||||||
|
|
||||||
#markdown-to-pdf
|
#markdown-to-pdf
|
||||||
MarkdownToPDF.title=Markdown To PDF
|
MarkdownToPDF.title=Markdown에서 PDF로
|
||||||
MarkdownToPDF.header=Markdown 문서를 PDF 문서로 변환
|
MarkdownToPDF.header=Markdown 문서를 PDF 문서로 변환
|
||||||
MarkdownToPDF.submit=변환
|
MarkdownToPDF.submit=변환
|
||||||
MarkdownToPDF.help=변환중
|
MarkdownToPDF.help=변환중
|
||||||
@@ -456,49 +487,49 @@ MarkdownToPDF.credit=이 기능은 WeasyPrint를 사용합니다.
|
|||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL을 PDF로
|
||||||
URLToPDF.header=URL을 PDF 문서로 변환
|
URLToPDF.header=URL을 PDF 문서로 변환
|
||||||
URLToPDF.submit=변환
|
URLToPDF.submit=변환
|
||||||
URLToPDF.credit=이 기능은 WeasyPrint를 사용합니다.
|
URLToPDF.credit=이 기능은 WeasyPrint를 사용합니다.
|
||||||
|
|
||||||
|
|
||||||
#html-to-pdf
|
#html-to-pdf
|
||||||
HTMLToPDF.title=HTML To PDF
|
HTMLToPDF.title=HTML을 PDF로
|
||||||
HTMLToPDF.header=HTML 파일을 PDF 문서로 변환
|
HTMLToPDF.header=HTML 파일을 PDF 문서로 변환
|
||||||
HTMLToPDF.help=HTML 파일, 또는 html/css/이미지 등을 포함한 ZIP 파일을 받습니다.
|
HTMLToPDF.help=HTML 파일, 또는 html/css/이미지 등을 포함한 ZIP 파일을 받습니다.
|
||||||
HTMLToPDF.submit=변환
|
HTMLToPDF.submit=변환
|
||||||
HTMLToPDF.credit=이 기능은 WeasyPrint를 사용합니다.
|
HTMLToPDF.credit=이 기능은 WeasyPrint를 사용합니다.
|
||||||
HTMLToPDF.zoom=Zoom level for displaying the website.
|
HTMLToPDF.zoom=웹 사이트를 표시하기 위한 확대/축소 수준입니다.
|
||||||
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
|
HTMLToPDF.pageWidth=센티미터 단위의 페이지 너비입니다. (기본값은 비어 있음)
|
||||||
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
|
HTMLToPDF.pageHeight=페이지 높이(센티미터)입니다. (기본값은 비어 있음)
|
||||||
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginTop=페이지의 위쪽 여백(밀리미터)입니다. (기본값은 비어 있음)
|
||||||
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginBottom=페이지의 아래쪽 여백(밀리미터)입니다. (기본값은 비어 있음)
|
||||||
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginLeft=페이지의 왼쪽 여백(밀리미터)입니다. (기본값은 비어 있음)
|
||||||
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginRight=페이지의 오른쪽 여백(밀리미터)입니다. (기본값은 비어 있음)
|
||||||
HTMLToPDF.printBackground=Render the background of websites.
|
HTMLToPDF.printBackground=웹 사이트의 배경을 렌더링합니다.
|
||||||
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
|
HTMLToPDF.defaultHeader=기본 헤더 활성화(이름 및 페이지 번호)
|
||||||
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
|
HTMLToPDF.cssMediaType=페이지의 CSS 미디어 유형을 변경합니다.
|
||||||
HTMLToPDF.none=None
|
HTMLToPDF.none=없음
|
||||||
HTMLToPDF.print=Print
|
HTMLToPDF.print=인쇄하다
|
||||||
HTMLToPDF.screen=Screen
|
HTMLToPDF.screen=화면
|
||||||
|
|
||||||
|
|
||||||
#AddStampRequest
|
#AddStampRequest
|
||||||
AddStampRequest.header=Stamp PDF
|
AddStampRequest.header=스탬프 PDF
|
||||||
AddStampRequest.title=Stamp PDF
|
AddStampRequest.title=스탬프 PDF
|
||||||
AddStampRequest.stampType=Stamp Type
|
AddStampRequest.stampType=스탬프 유형
|
||||||
AddStampRequest.stampText=Stamp Text
|
AddStampRequest.stampText=스탬프 텍스트
|
||||||
AddStampRequest.stampImage=Stamp Image
|
AddStampRequest.stampImage=스탬프 이미지
|
||||||
AddStampRequest.alphabet=Alphabet
|
AddStampRequest.alphabet=알파벳
|
||||||
AddStampRequest.fontSize=Font/Image Size
|
AddStampRequest.fontSize=글꼴/이미지 크기
|
||||||
AddStampRequest.rotation=Rotation
|
AddStampRequest.rotation=회전
|
||||||
AddStampRequest.opacity=Opacity
|
AddStampRequest.opacity=불투명도
|
||||||
AddStampRequest.position=Position
|
AddStampRequest.position=위치
|
||||||
AddStampRequest.overrideX=Override X Coordinate
|
AddStampRequest.overrideX=X 좌표 재정의
|
||||||
AddStampRequest.overrideY=Override Y Coordinate
|
AddStampRequest.overrideY=Y 좌표 재정의
|
||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=맞춤 마진
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=사용자 정의 텍스트 색상
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=전송
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
@@ -587,11 +618,11 @@ scalePages.submit=제출
|
|||||||
certSign.title=인증서로 서명
|
certSign.title=인증서로 서명
|
||||||
certSign.header=인증서로 PDF 문서에 서명 (개발 중)
|
certSign.header=인증서로 PDF 문서에 서명 (개발 중)
|
||||||
certSign.selectPDF=서명할 PDF 문서를 선택합니다:
|
certSign.selectPDF=서명할 PDF 문서를 선택합니다:
|
||||||
certSign.jksNote=Note: If your certificate type is not listed below, please convert it to a Java Keystore (.jks) file using the keytool command line tool. Then, choose the .jks file option below.
|
certSign.jksNote=참고: 인증서 유형이 아래에 나열되지 않은 경우 keytool 명령줄 도구를 사용하여 Java 키 저장소(.jks) 파일로 변환하십시오. 그런 다음 아래의 .jks 파일 옵션을 선택합니다.
|
||||||
certSign.selectKey=개인 키 파일을 선택합니다 (PKCS#8 형식, .pem 또는 .der):
|
certSign.selectKey=개인 키 파일을 선택합니다 (PKCS#8 형식, .pem 또는 .der):
|
||||||
certSign.selectCert=인증서 파일을 선택합니다 (X.509 형식, .pem 또는 .der):
|
certSign.selectCert=인증서 파일을 선택합니다 (X.509 형식, .pem 또는 .der):
|
||||||
certSign.selectP12=PKCS#12 키 저장소 파일을 선택합니다 (.p12 or .pfx) (선택 사항, 선택할 경우, 개인 키와 인증서를 포함하고 있어야 합니다):
|
certSign.selectP12=PKCS#12 키 저장소 파일을 선택합니다 (.p12 or .pfx) (선택 사항, 선택할 경우, 개인 키와 인증서를 포함하고 있어야 합니다):
|
||||||
certSign.selectJKS=Select Your Java Keystore File (.jks or .keystore):
|
certSign.selectJKS=Java 키 저장소 파일(.jks 또는 .keystore)을 선택합니다.
|
||||||
certSign.certType=인증서 유형
|
certSign.certType=인증서 유형
|
||||||
certSign.password=키 저장소 또는 개인 키 비밀번호를 입력합니다 (있는 경우):
|
certSign.password=키 저장소 또는 개인 키 비밀번호를 입력합니다 (있는 경우):
|
||||||
certSign.showSig=서명 보기
|
certSign.showSig=서명 보기
|
||||||
@@ -612,9 +643,9 @@ removeBlanks.submit=빈 페이지 제거
|
|||||||
|
|
||||||
|
|
||||||
#removeAnnotations
|
#removeAnnotations
|
||||||
removeAnnotations.title=Remove Annotations
|
removeAnnotations.title=주석 제거
|
||||||
removeAnnotations.header=Remove Annotations
|
removeAnnotations.header=주석 제거
|
||||||
removeAnnotations.submit=Remove
|
removeAnnotations.submit=제거하다
|
||||||
|
|
||||||
|
|
||||||
#compare
|
#compare
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=문서 1
|
|||||||
compare.document.2=문서 2
|
compare.document.2=문서 2
|
||||||
compare.submit=비교
|
compare.submit=비교
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=책과 만화를 PDF로
|
||||||
|
BookToPDF.header=책을 PDF로
|
||||||
|
BookToPDF.credit=이 서비스는 파일 변환을 위해 Calibre 사용합니다.
|
||||||
|
BookToPDF.submit=변환
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF를 책으로
|
||||||
|
PDFToBook.header=PDF를 책으로
|
||||||
|
PDFToBook.selectText.1=판
|
||||||
|
PDFToBook.credit=이 서비스는 파일 변환을 위해 Calibre 사용합니다.
|
||||||
|
PDFToBook.submit=변환
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=서명
|
sign.title=서명
|
||||||
@@ -718,8 +761,8 @@ addImage.submit=이미지 추가
|
|||||||
#merge
|
#merge
|
||||||
merge.title=병합
|
merge.title=병합
|
||||||
merge.header=여러 개의 PDF 병합 (2개 이상)
|
merge.header=여러 개의 PDF 병합 (2개 이상)
|
||||||
merge.sortByName=Sort by name
|
merge.sortByName=이름순 정렬
|
||||||
merge.sortByDate=Sort by date
|
merge.sortByDate=날짜순 정렬
|
||||||
merge.submit=병합
|
merge.submit=병합
|
||||||
|
|
||||||
|
|
||||||
@@ -727,11 +770,23 @@ merge.submit=병합
|
|||||||
pdfOrganiser.title=페이지 정렬
|
pdfOrganiser.title=페이지 정렬
|
||||||
pdfOrganiser.header=PDF 페이지 정렬
|
pdfOrganiser.header=PDF 페이지 정렬
|
||||||
pdfOrganiser.submit=페이지 재정렬
|
pdfOrganiser.submit=페이지 재정렬
|
||||||
|
pdfOrganiser.mode=모드
|
||||||
|
pdfOrganiser.mode.1=사용자 지정 페이지 순서
|
||||||
|
pdfOrganiser.mode.2=역순
|
||||||
|
pdfOrganiser.mode.3=양면 정렬(Duplex Sort)
|
||||||
|
pdfOrganiser.mode.4=소책자 정렬
|
||||||
|
pdfOrganiser.mode.5=사이드 스티치 소책자 정렬
|
||||||
|
pdfOrganiser.mode.6=홀수-짝수 분할
|
||||||
|
pdfOrganiser.mode.7=첫 번째 항목 삭제
|
||||||
|
pdfOrganiser.mode.8=마지막 항목 제거
|
||||||
|
pdfOrganiser.mode.9=첫 번째와 마지막 제거
|
||||||
|
pdfOrganiser.placeholder=(예: 1,3,2 또는 4-8,2,10-12 또는 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=PDF 멀티툴
|
multiTool.title=PDF 멀티툴
|
||||||
multiTool.header=PDF 멀티툴
|
multiTool.header=PDF 멀티툴
|
||||||
|
multiTool.uploadPrompts=PDF를 업로드하십시오
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=PDF 뷰어
|
viewPdf.title=PDF 뷰어
|
||||||
@@ -742,6 +797,7 @@ pageRemover.title=페이지 제거
|
|||||||
pageRemover.header=PDF 페이지 제거
|
pageRemover.header=PDF 페이지 제거
|
||||||
pageRemover.pagesToDelete=제거할 페이지 (쉼표로 구분된 페이지 번호 입력):
|
pageRemover.pagesToDelete=제거할 페이지 (쉼표로 구분된 페이지 번호 입력):
|
||||||
pageRemover.submit=페이지 제거
|
pageRemover.submit=페이지 제거
|
||||||
|
pageRemover.placeholder=(예: 1,2,6 또는 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,23 +807,23 @@ rotate.selectAngle=회전 각도 선택 (90도의 배수로):
|
|||||||
rotate.submit=회전
|
rotate.submit=회전
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=PDF 분할
|
split.title=PDF 분할
|
||||||
split.header=PDF 분할
|
split.header=PDF 분할
|
||||||
split.desc.1=입력한 번호는 분할할 페이지의 번호입니다.
|
split.desc.1=입력한 번호는 분할할 페이지의 번호입니다.
|
||||||
split.desc.2=예를 들어, 1,3,7-8을 입력하면 10페이지 문서를 아래와 같이 6개의 별도의 PDF 문서로 분할하게 됩니다.
|
split.desc.2=예를 들어, 1,3,7-9을 입력하면 10페이지 문서를 아래와 같이 6개의 별도의 PDF 문서로 분할하게 됩니다.
|
||||||
split.desc.3=문서 #1: 페이지 1
|
split.desc.3=문서 #1: 페이지 1
|
||||||
split.desc.4=문서 #2: 페이지 2, 3
|
split.desc.4=문서 #2: 페이지 2, 3
|
||||||
split.desc.5=문서 #3: 페이지 4, 5, 6
|
split.desc.5=문서 #3: 페이지 4, 5, 6, 7
|
||||||
split.desc.6=문서 #4: 페이지 7
|
split.desc.6=문서 #4: 페이지 8
|
||||||
split.desc.7=문서 #5: 페이지 8
|
split.desc.7=문서 #5: 페이지 9
|
||||||
split.desc.8=문서 #6: 페이지 9, 10
|
split.desc.8=문서 #6: 페이지 10
|
||||||
split.splitPages=분할할 페이지 입력:
|
split.splitPages=분할할 페이지 입력:
|
||||||
split.submit=분할
|
split.submit=분할
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#merge
|
||||||
imageToPDF.title=Image to PDF
|
imageToPDF.title=이미지를 PDF로
|
||||||
imageToPDF.header=이미지를 PDF로 변환
|
imageToPDF.header=이미지를 PDF로 변환
|
||||||
imageToPDF.submit=변환
|
imageToPDF.submit=변환
|
||||||
imageToPDF.selectLabel=이미지 맞춤 방법
|
imageToPDF.selectLabel=이미지 맞춤 방법
|
||||||
@@ -781,7 +837,7 @@ imageToPDF.selectText.5=별도의 PDF로 변환
|
|||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF to Image
|
pdfToImage.title=PDF를 이미지로
|
||||||
pdfToImage.header=PDF 문서를 이미지로 변환
|
pdfToImage.header=PDF 문서를 이미지로 변환
|
||||||
pdfToImage.selectText=이미지 형식
|
pdfToImage.selectText=이미지 형식
|
||||||
pdfToImage.singleOrMultiple=이미지 결과 유형
|
pdfToImage.singleOrMultiple=이미지 결과 유형
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=투명도 (0% - 100%):
|
|||||||
watermark.selectText.8=워터마크 유형:
|
watermark.selectText.8=워터마크 유형:
|
||||||
watermark.selectText.9=워터마크 이미지:
|
watermark.selectText.9=워터마크 이미지:
|
||||||
watermark.submit=워터마크 추가
|
watermark.submit=워터마크 추가
|
||||||
|
watermark.type.1=텍스트
|
||||||
|
watermark.type.2=이미지
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -876,14 +934,15 @@ changeMetadata.submit=변경
|
|||||||
|
|
||||||
|
|
||||||
#pdfToPDFA
|
#pdfToPDFA
|
||||||
pdfToPDFA.title=PDF To PDF/A
|
pdfToPDFA.title=PDF를 PDF/A로
|
||||||
pdfToPDFA.header=PDF 문서를 PDF/A로 변환
|
pdfToPDFA.header=PDF 문서를 PDF/A로 변환
|
||||||
pdfToPDFA.credit=이 서비스는 PDF/A 변환을 위해 OCRmyPDF 문서를 사용합니다.
|
pdfToPDFA.credit=이 서비스는 PDF/A 변환을 위해 OCRmyPDF 문서를 사용합니다.
|
||||||
pdfToPDFA.submit=변환
|
pdfToPDFA.submit=변환
|
||||||
|
pdfToPDFA.tip=현재 한 번에 여러 입력에 대해 작동하지 않습니다.
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
PDFToWord.title=PDF to Word
|
PDFToWord.title=PDF를 Word로
|
||||||
PDFToWord.header=PDF 문서를 Word 문서로 변환
|
PDFToWord.header=PDF 문서를 Word 문서로 변환
|
||||||
PDFToWord.selectText.1=출력 파일 형식
|
PDFToWord.selectText.1=출력 파일 형식
|
||||||
PDFToWord.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다.
|
PDFToWord.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다.
|
||||||
@@ -891,7 +950,7 @@ PDFToWord.submit=변환
|
|||||||
|
|
||||||
|
|
||||||
#PDFToPresentation
|
#PDFToPresentation
|
||||||
PDFToPresentation.title=PDF to Presentation
|
PDFToPresentation.title=PDF를 프리젠테이션으로
|
||||||
PDFToPresentation.header=PDF 문서를 프레젠테이션으로 변환
|
PDFToPresentation.header=PDF 문서를 프레젠테이션으로 변환
|
||||||
PDFToPresentation.selectText.1=출력 파일 형식
|
PDFToPresentation.selectText.1=출력 파일 형식
|
||||||
PDFToPresentation.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다.
|
PDFToPresentation.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다.
|
||||||
@@ -899,7 +958,7 @@ PDFToPresentation.submit=변환
|
|||||||
|
|
||||||
|
|
||||||
#PDFToText
|
#PDFToText
|
||||||
PDFToText.title=PDF to RTF
|
PDFToText.title=PDF에서 RTF로
|
||||||
PDFToText.header=PDF 문서를 RTF(서식 있는 텍스트 문서)로 변환
|
PDFToText.header=PDF 문서를 RTF(서식 있는 텍스트 문서)로 변환
|
||||||
PDFToText.selectText.1=출력 파일 형식
|
PDFToText.selectText.1=출력 파일 형식
|
||||||
PDFToText.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다.
|
PDFToText.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다.
|
||||||
@@ -907,67 +966,81 @@ PDFToText.submit=변환
|
|||||||
|
|
||||||
|
|
||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF to HTML
|
PDFToHTML.title=PDF를 HTML로
|
||||||
PDFToHTML.header=PDF 문서를 HTML로 변환
|
PDFToHTML.header=PDF 문서를 HTML로 변환
|
||||||
PDFToHTML.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다.
|
PDFToHTML.credit=이 서비스는 파일 변환을 위해 pdftohtml를 사용합니다.
|
||||||
PDFToHTML.submit=변환
|
PDFToHTML.submit=변환
|
||||||
|
|
||||||
|
|
||||||
#PDFToXML
|
#PDFToXML
|
||||||
PDFToXML.title=PDF to XML
|
PDFToXML.title=PDF를 XML로 변환
|
||||||
PDFToXML.header=PDF 문서를 XML로 변환
|
PDFToXML.header=PDF 문서를 XML로 변환
|
||||||
PDFToXML.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다.
|
PDFToXML.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다.
|
||||||
PDFToXML.submit=변환
|
PDFToXML.submit=변환
|
||||||
|
|
||||||
#PDFToCSV
|
#PDFToCSV
|
||||||
PDFToCSV.title=PDF? CSV?
|
PDFToCSV.title=PDF에서 CSV로
|
||||||
PDFToCSV.header=PDF? CSV?
|
PDFToCSV.header=PDF에서 CSV로
|
||||||
PDFToCSV.prompt=Choose page to extract table
|
PDFToCSV.prompt=테이블을 추출할 페이지 선택
|
||||||
PDFToCSV.submit=??
|
PDFToCSV.submit=추출물
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
split-by-size-or-count.header=Split PDF by Size or Count
|
split-by-size-or-count.title=크기 또는 개수로 PDF 분할
|
||||||
split-by-size-or-count.type.label=Select Split Type
|
split-by-size-or-count.header=크기 또는 개수로 PDF 분할
|
||||||
split-by-size-or-count.type.size=By Size
|
split-by-size-or-count.type.label=분할 유형 선택
|
||||||
split-by-size-or-count.type.pageCount=By Page Count
|
split-by-size-or-count.type.size=크기별
|
||||||
split-by-size-or-count.type.docCount=By Document Count
|
split-by-size-or-count.type.pageCount=페이지 수별
|
||||||
split-by-size-or-count.value.label=Enter Value
|
split-by-size-or-count.type.docCount=문서 수 기준
|
||||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
split-by-size-or-count.value.label=값 입력
|
||||||
split-by-size-or-count.submit=Submit
|
split-by-size-or-count.value.placeholder=크기(예: 2MB 또는 3KB) 또는 개수(예: 5)를 입력합니다.
|
||||||
|
split-by-size-or-count.submit=전송
|
||||||
|
|
||||||
|
|
||||||
#overlay-pdfs
|
#overlay-pdfs
|
||||||
overlay-pdfs.header=Overlay PDF Files
|
overlay-pdfs.header=PDF 파일 오버레이
|
||||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
overlay-pdfs.baseFile.label=기본 PDF 파일 선택
|
||||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
overlay-pdfs.overlayFiles.label=오버레이 PDF 파일 선택
|
||||||
overlay-pdfs.mode.label=Select Overlay Mode
|
overlay-pdfs.mode.label=오버레이 모드 선택
|
||||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
overlay-pdfs.mode.sequential=순차 오버레이
|
||||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
overlay-pdfs.mode.interleaved=인터리브 오버레이
|
||||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
overlay-pdfs.mode.fixedRepeat=고정 반복 오버레이
|
||||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
overlay-pdfs.counts.label=오버레이 카운트(고정 반복 모드의 경우)
|
||||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
overlay-pdfs.counts.placeholder=쉼표로 구분된 개수를 입력합니다(예: 2,3,1).
|
||||||
overlay-pdfs.position.label=Select Overlay Position
|
overlay-pdfs.position.label=오버레이 위치 선택
|
||||||
overlay-pdfs.position.foreground=Foreground
|
overlay-pdfs.position.foreground=전경
|
||||||
overlay-pdfs.position.background=Background
|
overlay-pdfs.position.background=배경
|
||||||
overlay-pdfs.submit=Submit
|
overlay-pdfs.submit=전송
|
||||||
|
|
||||||
|
|
||||||
#split-by-sections
|
#split-by-sections
|
||||||
split-by-sections.title=Split PDF by Sections
|
split-by-sections.title=섹션별로 PDF 분할
|
||||||
split-by-sections.header=Split PDF into Sections
|
split-by-sections.header=PDF를 섹션으로 분할
|
||||||
split-by-sections.horizontal.label=Horizontal Divisions
|
split-by-sections.horizontal.label=수평 분할
|
||||||
split-by-sections.vertical.label=Vertical Divisions
|
split-by-sections.vertical.label=수직 분할
|
||||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
split-by-sections.horizontal.placeholder=수평 분할 수를 입력합니다
|
||||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
split-by-sections.vertical.placeholder=수직 분할 수를 입력합니다
|
||||||
split-by-sections.submit=Split PDF
|
split-by-sections.submit=PDF 분할
|
||||||
|
split-by-sections.merge=하나의 PDF로 병합
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=라이센스
|
||||||
licenses.title=3rd Party Licenses
|
licenses.title=제3자 라이선스
|
||||||
licenses.header=3rd Party Licenses
|
licenses.header=제3자 라이선스
|
||||||
licenses.module=Module
|
licenses.module=모듈
|
||||||
licenses.version=Version
|
licenses.version=버전
|
||||||
licenses.license=License
|
licenses.license=라이센스
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=Waar
|
|||||||
false=Onwaar
|
false=Onwaar
|
||||||
unknown=Onbekend
|
unknown=Onbekend
|
||||||
save=Opslaan
|
save=Opslaan
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=Sluiten
|
close=Sluiten
|
||||||
filesSelected=Bestanden geselecteerd
|
filesSelected=Bestanden geselecteerd
|
||||||
noFavourites=Geen favorieten toegevoegd
|
noFavourites=Geen favorieten toegevoegd
|
||||||
@@ -53,6 +54,20 @@ notAuthenticatedMessage=Gebruiker niet ingelogd.
|
|||||||
userNotFoundMessage=Gebruiker niet gevonden.
|
userNotFoundMessage=Gebruiker niet gevonden.
|
||||||
incorrectPasswordMessage=Huidige wachtwoord is onjuist.
|
incorrectPasswordMessage=Huidige wachtwoord is onjuist.
|
||||||
usernameExistsMessage=Nieuwe gebruikersnaam bestaat al.
|
usernameExistsMessage=Nieuwe gebruikersnaam bestaat al.
|
||||||
|
invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers.
|
||||||
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
@@ -63,6 +78,8 @@ pipeline.uploadButton=Aangepast uploaden
|
|||||||
pipeline.configureButton=Configureren
|
pipeline.configureButton=Configureren
|
||||||
pipeline.defaultOption=Aangepast
|
pipeline.defaultOption=Aangepast
|
||||||
pipeline.submitButton=Opslaan
|
pipeline.submitButton=Opslaan
|
||||||
|
pipeline.help=Pipeline Help
|
||||||
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=Account instellingen
|
|||||||
|
|
||||||
changeCreds.title=Inloggegevens wijzigen
|
changeCreds.title=Inloggegevens wijzigen
|
||||||
changeCreds.header=Werk je accountgegevens bij
|
changeCreds.header=Werk je accountgegevens bij
|
||||||
changeCreds.changeUserAndPassword=Je gebruikt de standaard inloggegevens. Voer een nieuw wachtwoord in (en eventueel een gebruikersnaam)
|
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
||||||
changeCreds.newUsername=Nieuwe gebruikersnaam
|
changeCreds.newUsername=Nieuwe gebruikersnaam
|
||||||
changeCreds.oldPassword=Huidige wachtwoord
|
changeCreds.oldPassword=Huidige wachtwoord
|
||||||
changeCreds.newPassword=Nieuw wachtwoord
|
changeCreds.newPassword=Nieuw wachtwoord
|
||||||
@@ -143,12 +160,15 @@ adminUserSettings.header=Beheer gebruikers
|
|||||||
adminUserSettings.admin=Beheerder
|
adminUserSettings.admin=Beheerder
|
||||||
adminUserSettings.user=Gebruiker
|
adminUserSettings.user=Gebruiker
|
||||||
adminUserSettings.addUser=Voeg nieuwe gebruiker toe
|
adminUserSettings.addUser=Voeg nieuwe gebruiker toe
|
||||||
|
adminUserSettings.usernameInfo=Username must only contain letters and numbers, no spaces or special characters.
|
||||||
adminUserSettings.roles=Rollen
|
adminUserSettings.roles=Rollen
|
||||||
adminUserSettings.role=Rol
|
adminUserSettings.role=Rol
|
||||||
adminUserSettings.actions=Acties
|
adminUserSettings.actions=Acties
|
||||||
adminUserSettings.apiUser=Beperkte API gebruiker
|
adminUserSettings.apiUser=Beperkte API gebruiker
|
||||||
|
adminUserSettings.extraApiUser=Additional Limited API User
|
||||||
adminUserSettings.webOnlyUser=Alleen web gebruiker
|
adminUserSettings.webOnlyUser=Alleen web gebruiker
|
||||||
adminUserSettings.demoUser=Demogebruiker (geen aangepaste instellingen)
|
adminUserSettings.demoUser=Demogebruiker (geen aangepaste instellingen)
|
||||||
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
adminUserSettings.forceChange=Forceer gebruiker om gebruikersnaam/wachtwoord te wijzigen bij inloggen
|
adminUserSettings.forceChange=Forceer gebruiker om gebruikersnaam/wachtwoord te wijzigen bij inloggen
|
||||||
adminUserSettings.submit=Gebruiker opslaan
|
adminUserSettings.submit=Gebruiker opslaan
|
||||||
|
|
||||||
@@ -393,6 +413,15 @@ home.AddStampRequest.desc=Voeg tekst of afbeeldingsstempels toe op vaste locatie
|
|||||||
AddStampRequest.tags=Stempel, Afbeelding toevoegen, afbeelding centreren, watermerk, PDF, Insluiten, Aanpassen
|
AddStampRequest.tags=Stempel, Afbeelding toevoegen, afbeelding centreren, watermerk, PDF, Insluiten, Aanpassen
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF to Book
|
||||||
|
home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Book to PDF
|
||||||
|
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stempel, Afbeelding toevoegen, afbeelding centreren, waterm
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Inloggen
|
login.title=Inloggen
|
||||||
|
login.header=Inloggen
|
||||||
login.signin=Inloggen
|
login.signin=Inloggen
|
||||||
login.rememberme=Onthoud mij
|
login.rememberme=Onthoud mij
|
||||||
login.invalid=Ongeldige gebruikersnaam of wachtwoord.
|
login.invalid=Ongeldige gebruikersnaam of wachtwoord.
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=Converteren naar enkele pagina
|
|||||||
pageExtracter.title=Pagina's extraheren
|
pageExtracter.title=Pagina's extraheren
|
||||||
pageExtracter.header=Pagina's extraheren
|
pageExtracter.header=Pagina's extraheren
|
||||||
pageExtracter.submit=Extraheren
|
pageExtracter.submit=Extraheren
|
||||||
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=Document 1
|
|||||||
compare.document.2=Document 2
|
compare.document.2=Document 2
|
||||||
compare.submit=Vergelijken
|
compare.submit=Vergelijken
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Books and Comics to PDF
|
||||||
|
BookToPDF.header=Book to PDF
|
||||||
|
BookToPDF.credit=Uses Calibre
|
||||||
|
BookToPDF.submit=Convert
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF to Book
|
||||||
|
PDFToBook.header=PDF to Book
|
||||||
|
PDFToBook.selectText.1=Format
|
||||||
|
PDFToBook.credit=Uses Calibre
|
||||||
|
PDFToBook.submit=Convert
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Ondertekenen
|
sign.title=Ondertekenen
|
||||||
@@ -727,11 +770,23 @@ merge.submit=Samenvoegen
|
|||||||
pdfOrganiser.title=Pagina organisator
|
pdfOrganiser.title=Pagina organisator
|
||||||
pdfOrganiser.header=PDF pagina organisator
|
pdfOrganiser.header=PDF pagina organisator
|
||||||
pdfOrganiser.submit=Pagina's herschikken
|
pdfOrganiser.submit=Pagina's herschikken
|
||||||
|
pdfOrganiser.mode=Mode
|
||||||
|
pdfOrganiser.mode.1=Custom Page Order
|
||||||
|
pdfOrganiser.mode.2=Reverse Order
|
||||||
|
pdfOrganiser.mode.3=Duplex Sort
|
||||||
|
pdfOrganiser.mode.4=Booklet Sort
|
||||||
|
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
||||||
|
pdfOrganiser.mode.6=Odd-Even Split
|
||||||
|
pdfOrganiser.mode.7=Remove First
|
||||||
|
pdfOrganiser.mode.8=Remove Last
|
||||||
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=PDF Multitool
|
multiTool.title=PDF Multitool
|
||||||
multiTool.header=PDF Multitool
|
multiTool.header=PDF Multitool
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=PDF bekijken
|
viewPdf.title=PDF bekijken
|
||||||
@@ -742,6 +797,7 @@ pageRemover.title=Pagina verwijderaar
|
|||||||
pageRemover.header=PDF pagina verwijderaar
|
pageRemover.header=PDF pagina verwijderaar
|
||||||
pageRemover.pagesToDelete=Te verwijderen pagina's (Voer een door komma's gescheiden lijst met paginanummers in):
|
pageRemover.pagesToDelete=Te verwijderen pagina's (Voer een door komma's gescheiden lijst met paginanummers in):
|
||||||
pageRemover.submit=Pagina's verwijderen
|
pageRemover.submit=Pagina's verwijderen
|
||||||
|
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=Selecteer rotatiehoek (in veelvouden van 90 graden):
|
|||||||
rotate.submit=Roteren
|
rotate.submit=Roteren
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=PDF splitsen
|
split.title=PDF splitsen
|
||||||
split.header=PDF splitsen
|
split.header=PDF splitsen
|
||||||
split.desc.1=De nummers die je kiest zijn de paginanummers waarop je een splitsing wilt uitvoeren
|
split.desc.1=De nummers die je kiest zijn de paginanummers waarop je een splitsing wilt uitvoeren
|
||||||
split.desc.2=Als zodanig selecteren van 1,3,7-8 zou een 10 pagina's tellend document splitsen in 6 aparte PDF's met:
|
split.desc.2=Als zodanig selecteren van 1,3,7-9 zou een 10 pagina's tellend document splitsen in 6 aparte PDF's met:
|
||||||
split.desc.3=Document #1: Pagina 1
|
split.desc.3=Document #1: Pagina 1
|
||||||
split.desc.4=Document #2: Pagina 2 en 3
|
split.desc.4=Document #2: Pagina 2 en 3
|
||||||
split.desc.5=Document #3: Pagina 4, 5 en 6
|
split.desc.5=Document #3: Pagina 4, 5, 6 en 7
|
||||||
split.desc.6=Document #4: Pagina 7
|
split.desc.6=Document #4: Pagina 8
|
||||||
split.desc.7=Document #5: Pagina 8
|
split.desc.7=Document #5: Pagina 9
|
||||||
split.desc.8=Document #6: Pagina 9 en 10
|
split.desc.8=Document #6: Pagina 10
|
||||||
split.splitPages=Voer pagina's in om op te splitsen:
|
split.splitPages=Voer pagina's in om op te splitsen:
|
||||||
split.submit=Splitsen
|
split.submit=Splitsen
|
||||||
|
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=Transparantie (0% - 100%):
|
|||||||
watermark.selectText.8=Type watermerk:
|
watermark.selectText.8=Type watermerk:
|
||||||
watermark.selectText.9=Watermerk afbeelding:
|
watermark.selectText.9=Watermerk afbeelding:
|
||||||
watermark.submit=Watermerk toevoegen
|
watermark.submit=Watermerk toevoegen
|
||||||
|
watermark.type.1=Text
|
||||||
|
watermark.type.2=Image
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ pdfToPDFA.title=PDF naar PDF/A
|
|||||||
pdfToPDFA.header=PDF naar PDF/A
|
pdfToPDFA.header=PDF naar PDF/A
|
||||||
pdfToPDFA.credit=Deze service gebruikt OCRmyPDF voor PDF/A-conversie
|
pdfToPDFA.credit=Deze service gebruikt OCRmyPDF voor PDF/A-conversie
|
||||||
pdfToPDFA.submit=Converteren
|
pdfToPDFA.submit=Converteren
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=Converteren
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF naar HTML
|
PDFToHTML.title=PDF naar HTML
|
||||||
PDFToHTML.header=PDF naar HTML
|
PDFToHTML.header=PDF naar HTML
|
||||||
PDFToHTML.credit=Deze service gebruikt LibreOffice voor bestandsconversie.
|
PDFToHTML.credit=Deze service gebruikt pdftohtml voor bestandsconversie.
|
||||||
PDFToHTML.submit=Converteren
|
PDFToHTML.submit=Converteren
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=Kies pagina om tabel te extraheren
|
|||||||
PDFToCSV.submit=Extraheren
|
PDFToCSV.submit=Extraheren
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=PDF splitsen op grootte of aantal
|
||||||
split-by-size-or-count.header=PDF splitsen op grootte of aantal
|
split-by-size-or-count.header=PDF splitsen op grootte of aantal
|
||||||
split-by-size-or-count.type.label=Selecteer splits type
|
split-by-size-or-count.type.label=Selecteer splits type
|
||||||
split-by-size-or-count.type.size=Op grootte
|
split-by-size-or-count.type.size=Op grootte
|
||||||
@@ -960,7 +1020,7 @@ split-by-sections.vertical.label=Verticale secties
|
|||||||
split-by-sections.horizontal.placeholder=Voer het aantal horizontale secties in
|
split-by-sections.horizontal.placeholder=Voer het aantal horizontale secties in
|
||||||
split-by-sections.vertical.placeholder=Voer het aantal verticale secties in
|
split-by-sections.vertical.placeholder=Voer het aantal verticale secties in
|
||||||
split-by-sections.submit=PDF splitsen
|
split-by-sections.submit=PDF splitsen
|
||||||
|
split-by-sections.merge=Merge Into One PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenties
|
licenses.nav=Licenties
|
||||||
@@ -971,3 +1031,16 @@ licenses.version=Versie
|
|||||||
licenses.license=Licentie
|
licenses.license=Licentie
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=Tak
|
|||||||
false=Nie
|
false=Nie
|
||||||
unknown=Nieznany
|
unknown=Nieznany
|
||||||
save=Zapisz
|
save=Zapisz
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=Zamknij
|
close=Zamknij
|
||||||
filesSelected=wybrane pliki
|
filesSelected=wybrane pliki
|
||||||
noFavourites=Nie dodano ulubionych
|
noFavourites=Nie dodano ulubionych
|
||||||
@@ -53,16 +54,32 @@ notAuthenticatedMessage=User not authenticated.
|
|||||||
userNotFoundMessage=User not found.
|
userNotFoundMessage=User not found.
|
||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Current password is incorrect.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=New Username already exists.
|
||||||
|
invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers.
|
||||||
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=Pipeline Menu (Beta)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=Upload Custom
|
||||||
pipeline.configureButton=Configure
|
pipeline.configureButton=Configure
|
||||||
pipeline.defaultOption=Custom
|
pipeline.defaultOption=Custom
|
||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
|
pipeline.help=Pipeline Help
|
||||||
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=Account Settings
|
|||||||
|
|
||||||
changeCreds.title=Change Credentials
|
changeCreds.title=Change Credentials
|
||||||
changeCreds.header=Update Your Account Details
|
changeCreds.header=Update Your Account Details
|
||||||
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted)
|
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
||||||
changeCreds.newUsername=New Username
|
changeCreds.newUsername=New Username
|
||||||
changeCreds.oldPassword=Current Password
|
changeCreds.oldPassword=Current Password
|
||||||
changeCreds.newPassword=New Password
|
changeCreds.newPassword=New Password
|
||||||
@@ -143,13 +160,16 @@ adminUserSettings.header=Admin User Control Settings
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=User
|
adminUserSettings.user=User
|
||||||
adminUserSettings.addUser=Add New User
|
adminUserSettings.addUser=Add New User
|
||||||
|
adminUserSettings.usernameInfo=Username must only contain letters and numbers, no spaces or special characters.
|
||||||
adminUserSettings.roles=Roles
|
adminUserSettings.roles=Roles
|
||||||
adminUserSettings.role=Role
|
adminUserSettings.role=Role
|
||||||
adminUserSettings.actions=Actions
|
adminUserSettings.actions=Actions
|
||||||
adminUserSettings.apiUser=Limited API User
|
adminUserSettings.apiUser=Limited API User
|
||||||
|
adminUserSettings.extraApiUser=Additional Limited API User
|
||||||
adminUserSettings.webOnlyUser=Web Only User
|
adminUserSettings.webOnlyUser=Web Only User
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=Demo User (No custom settings)
|
||||||
adminUserSettings.forceChange=Force user to change username/password on login
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
|
adminUserSettings.forceChange=Force user to change password on login
|
||||||
adminUserSettings.submit=Save User
|
adminUserSettings.submit=Save User
|
||||||
|
|
||||||
#############
|
#############
|
||||||
@@ -393,6 +413,15 @@ home.AddStampRequest.desc=Add text or add image stamps at set locations
|
|||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF to Book
|
||||||
|
home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Book to PDF
|
||||||
|
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Sign in
|
login.title=Sign in
|
||||||
|
login.header=Sign in
|
||||||
login.signin=Sign in
|
login.signin=Sign in
|
||||||
login.rememberme=Remember me
|
login.rememberme=Remember me
|
||||||
login.invalid=Invalid username or password.
|
login.invalid=Invalid username or password.
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=Convert To Single Page
|
|||||||
pageExtracter.title=Extract Pages
|
pageExtracter.title=Extract Pages
|
||||||
pageExtracter.header=Extract Pages
|
pageExtracter.header=Extract Pages
|
||||||
pageExtracter.submit=Extract
|
pageExtracter.submit=Extract
|
||||||
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=Dokument 1
|
|||||||
compare.document.2=Dokument 2
|
compare.document.2=Dokument 2
|
||||||
compare.submit=Porównaj
|
compare.submit=Porównaj
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Books and Comics to PDF
|
||||||
|
BookToPDF.header=Book to PDF
|
||||||
|
BookToPDF.credit=Uses Calibre
|
||||||
|
BookToPDF.submit=Convert
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF to Book
|
||||||
|
PDFToBook.header=PDF to Book
|
||||||
|
PDFToBook.selectText.1=Format
|
||||||
|
PDFToBook.credit=Uses Calibre
|
||||||
|
PDFToBook.submit=Convert
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Podpis
|
sign.title=Podpis
|
||||||
@@ -727,11 +770,23 @@ merge.submit=Połącz
|
|||||||
pdfOrganiser.title=Kolejność stron
|
pdfOrganiser.title=Kolejność stron
|
||||||
pdfOrganiser.header=Kolejność stron PDF
|
pdfOrganiser.header=Kolejność stron PDF
|
||||||
pdfOrganiser.submit=Zmień kolejność stron
|
pdfOrganiser.submit=Zmień kolejność stron
|
||||||
|
pdfOrganiser.mode=Mode
|
||||||
|
pdfOrganiser.mode.1=Custom Page Order
|
||||||
|
pdfOrganiser.mode.2=Reverse Order
|
||||||
|
pdfOrganiser.mode.3=Duplex Sort
|
||||||
|
pdfOrganiser.mode.4=Booklet Sort
|
||||||
|
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
||||||
|
pdfOrganiser.mode.6=Odd-Even Split
|
||||||
|
pdfOrganiser.mode.7=Remove First
|
||||||
|
pdfOrganiser.mode.8=Remove Last
|
||||||
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=Multi narzędzie PDF
|
multiTool.title=Multi narzędzie PDF
|
||||||
multiTool.header=Multi narzędzie PDF
|
multiTool.header=Multi narzędzie PDF
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=View PDF
|
viewPdf.title=View PDF
|
||||||
@@ -742,6 +797,7 @@ pageRemover.title=Narzędzie do usuwania stron
|
|||||||
pageRemover.header=Narzędzie do usuwania stron w dokumentach PDF
|
pageRemover.header=Narzędzie do usuwania stron w dokumentach PDF
|
||||||
pageRemover.pagesToDelete=Strony do usunięcia (wprowadź listę numerów stron oddzielonych przecinkami):
|
pageRemover.pagesToDelete=Strony do usunięcia (wprowadź listę numerów stron oddzielonych przecinkami):
|
||||||
pageRemover.submit=Usuń strony
|
pageRemover.submit=Usuń strony
|
||||||
|
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=Wybierz kąt obrotu (domyślnie 90 stopni):
|
|||||||
rotate.submit=Obróć
|
rotate.submit=Obróć
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=Podziel dokument PDF
|
split.title=Podziel dokument PDF
|
||||||
split.header=Podziel dokument PDF
|
split.header=Podziel dokument PDF
|
||||||
split.desc.1=Wybrane numery to numery stron, na których chcesz dokonać podziału
|
split.desc.1=Wybrane numery to numery stron, na których chcesz dokonać podziału
|
||||||
split.desc.2=Np. taki wybór 1,3,7-8 podzieliłby 10-stronicowy dokument na 6 oddzielnych plików PDF z:
|
split.desc.2=Np. taki wybór 1,3,7-9 podzieliłby 10-stronicowy dokument na 6 oddzielnych plików PDF z:
|
||||||
split.desc.3=Dokument #1: Strona 1
|
split.desc.3=Dokument #1: Strona 1
|
||||||
split.desc.4=Dokument #2: Strona 2 i 3
|
split.desc.4=Dokument #2: Strona 2 i 3
|
||||||
split.desc.5=Dokument #3: Strona 4, 5 i 6
|
split.desc.5=Dokument #3: Strona 4, 5, 6 i 7
|
||||||
split.desc.6=Dokument #4: Strona 7
|
split.desc.6=Dokument #4: Strona 8
|
||||||
split.desc.7=Dokument #5: Strona 8
|
split.desc.7=Dokument #5: Strona 9
|
||||||
split.desc.8=Dokument #6: Strona 9 i 10
|
split.desc.8=Dokument #6: Strona 10
|
||||||
split.splitPages=Wprowadź strony do podziału na:
|
split.splitPages=Wprowadź strony do podziału na:
|
||||||
split.submit=Podziel
|
split.submit=Podziel
|
||||||
|
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=Nieprzezroczystość (0% - 100%):
|
|||||||
watermark.selectText.8=Watermark Type:
|
watermark.selectText.8=Watermark Type:
|
||||||
watermark.selectText.9=Watermark Image:
|
watermark.selectText.9=Watermark Image:
|
||||||
watermark.submit=Dodaj znak wodny
|
watermark.submit=Dodaj znak wodny
|
||||||
|
watermark.type.1=Text
|
||||||
|
watermark.type.2=Image
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ 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 OCRmyPDF do konwersji PDF/A
|
pdfToPDFA.credit=Ta usługa używa OCRmyPDF do konwersji PDF/A
|
||||||
pdfToPDFA.submit=Konwertuj
|
pdfToPDFA.submit=Konwertuj
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=Konwertuj
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF na HTML
|
PDFToHTML.title=PDF na HTML
|
||||||
PDFToHTML.header=PDF na HTML
|
PDFToHTML.header=PDF na HTML
|
||||||
PDFToHTML.credit=Ta usługa używa LibreOffice do konwersji plików.
|
PDFToHTML.credit=Ta usługa używa pdftohtml do konwersji plików.
|
||||||
PDFToHTML.submit=Konwertuj
|
PDFToHTML.submit=Konwertuj
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=Choose page to extract table
|
|||||||
PDFToCSV.submit=Wyci?g
|
PDFToCSV.submit=Wyci?g
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=Split PDF by Size or Count
|
||||||
split-by-size-or-count.header=Split PDF by Size or Count
|
split-by-size-or-count.header=Split PDF by Size or Count
|
||||||
split-by-size-or-count.type.label=Select Split Type
|
split-by-size-or-count.type.label=Select Split Type
|
||||||
split-by-size-or-count.type.size=By Size
|
split-by-size-or-count.type.size=By Size
|
||||||
@@ -960,7 +1020,7 @@ split-by-sections.vertical.label=Vertical Divisions
|
|||||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||||
split-by-sections.submit=Split PDF
|
split-by-sections.submit=Split PDF
|
||||||
|
split-by-sections.merge=Merge Into One PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Licenses
|
||||||
@@ -971,3 +1031,16 @@ licenses.version=Version
|
|||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=Verdadeiro
|
|||||||
false=Falso
|
false=Falso
|
||||||
unknown=Desconhecido
|
unknown=Desconhecido
|
||||||
save=Salvar
|
save=Salvar
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=Fechar
|
close=Fechar
|
||||||
filesSelected=arquivos selecionados
|
filesSelected=arquivos selecionados
|
||||||
noFavourites=Nenhum favorito adicionado
|
noFavourites=Nenhum favorito adicionado
|
||||||
@@ -53,16 +54,32 @@ notAuthenticatedMessage=User not authenticated.
|
|||||||
userNotFoundMessage=User not found.
|
userNotFoundMessage=User not found.
|
||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Current password is incorrect.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=New Username already exists.
|
||||||
|
invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers.
|
||||||
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=Pipeline Menu (Beta)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=Upload Custom
|
||||||
pipeline.configureButton=Configure
|
pipeline.configureButton=Configure
|
||||||
pipeline.defaultOption=Custom
|
pipeline.defaultOption=Custom
|
||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
|
pipeline.help=Pipeline Help
|
||||||
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=Account Settings
|
|||||||
|
|
||||||
changeCreds.title=Change Credentials
|
changeCreds.title=Change Credentials
|
||||||
changeCreds.header=Update Your Account Details
|
changeCreds.header=Update Your Account Details
|
||||||
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted)
|
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
||||||
changeCreds.newUsername=New Username
|
changeCreds.newUsername=New Username
|
||||||
changeCreds.oldPassword=Current Password
|
changeCreds.oldPassword=Current Password
|
||||||
changeCreds.newPassword=New Password
|
changeCreds.newPassword=New Password
|
||||||
@@ -143,13 +160,16 @@ adminUserSettings.header=Admin User Control Settings
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=User
|
adminUserSettings.user=User
|
||||||
adminUserSettings.addUser=Add New User
|
adminUserSettings.addUser=Add New User
|
||||||
|
adminUserSettings.usernameInfo=Username must only contain letters and numbers, no spaces or special characters.
|
||||||
adminUserSettings.roles=Roles
|
adminUserSettings.roles=Roles
|
||||||
adminUserSettings.role=Role
|
adminUserSettings.role=Role
|
||||||
adminUserSettings.actions=Actions
|
adminUserSettings.actions=Actions
|
||||||
adminUserSettings.apiUser=Limited API User
|
adminUserSettings.apiUser=Limited API User
|
||||||
|
adminUserSettings.extraApiUser=Additional Limited API User
|
||||||
adminUserSettings.webOnlyUser=Web Only User
|
adminUserSettings.webOnlyUser=Web Only User
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=Demo User (No custom settings)
|
||||||
adminUserSettings.forceChange=Force user to change username/password on login
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
|
adminUserSettings.forceChange=Force user to change password on login
|
||||||
adminUserSettings.submit=Save User
|
adminUserSettings.submit=Save User
|
||||||
|
|
||||||
#############
|
#############
|
||||||
@@ -393,6 +413,15 @@ home.AddStampRequest.desc=Add text or add image stamps at set locations
|
|||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF to Book
|
||||||
|
home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Book to PDF
|
||||||
|
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Sign in
|
login.title=Sign in
|
||||||
|
login.header=Sign in
|
||||||
login.signin=Sign in
|
login.signin=Sign in
|
||||||
login.rememberme=Remember me
|
login.rememberme=Remember me
|
||||||
login.invalid=Invalid username or password.
|
login.invalid=Invalid username or password.
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=Converter para Página Única
|
|||||||
pageExtracter.title=Extrair Páginas
|
pageExtracter.title=Extrair Páginas
|
||||||
pageExtracter.header=Extrair Páginas
|
pageExtracter.header=Extrair Páginas
|
||||||
pageExtracter.submit=Extrair
|
pageExtracter.submit=Extrair
|
||||||
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=Documento 1
|
|||||||
compare.document.2=Documento 2
|
compare.document.2=Documento 2
|
||||||
compare.submit=Comparar
|
compare.submit=Comparar
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Books and Comics to PDF
|
||||||
|
BookToPDF.header=Book to PDF
|
||||||
|
BookToPDF.credit=Uses Calibre
|
||||||
|
BookToPDF.submit=Convert
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF to Book
|
||||||
|
PDFToBook.header=PDF to Book
|
||||||
|
PDFToBook.selectText.1=Format
|
||||||
|
PDFToBook.credit=Uses Calibre
|
||||||
|
PDFToBook.submit=Convert
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Assinar
|
sign.title=Assinar
|
||||||
@@ -727,11 +770,23 @@ merge.submit=Mesclar
|
|||||||
pdfOrganiser.title=Organizador de Páginas
|
pdfOrganiser.title=Organizador de Páginas
|
||||||
pdfOrganiser.header=Organizador de Páginas PDF
|
pdfOrganiser.header=Organizador de Páginas PDF
|
||||||
pdfOrganiser.submit=Reorganizar Páginas
|
pdfOrganiser.submit=Reorganizar Páginas
|
||||||
|
pdfOrganiser.mode=Mode
|
||||||
|
pdfOrganiser.mode.1=Custom Page Order
|
||||||
|
pdfOrganiser.mode.2=Reverse Order
|
||||||
|
pdfOrganiser.mode.3=Duplex Sort
|
||||||
|
pdfOrganiser.mode.4=Booklet Sort
|
||||||
|
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
||||||
|
pdfOrganiser.mode.6=Odd-Even Split
|
||||||
|
pdfOrganiser.mode.7=Remove First
|
||||||
|
pdfOrganiser.mode.8=Remove Last
|
||||||
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=Multiferramenta de PDF
|
multiTool.title=Multiferramenta de PDF
|
||||||
multiTool.header=Multiferramenta de PDF
|
multiTool.header=Multiferramenta de PDF
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=View PDF
|
viewPdf.title=View PDF
|
||||||
@@ -742,6 +797,7 @@ pageRemover.title=Remover Página
|
|||||||
pageRemover.header=Remover Páginas do PDF
|
pageRemover.header=Remover Páginas do PDF
|
||||||
pageRemover.pagesToDelete=Páginas a serem excluídas (insira uma lista separada por vírgulas de números de página):
|
pageRemover.pagesToDelete=Páginas a serem excluídas (insira uma lista separada por vírgulas de números de página):
|
||||||
pageRemover.submit=Excluir Páginas
|
pageRemover.submit=Excluir Páginas
|
||||||
|
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=Selecione o ângulo de rotação (múltiplos de 90 graus):
|
|||||||
rotate.submit=Girar
|
rotate.submit=Girar
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=Dividir PDF
|
split.title=Dividir PDF
|
||||||
split.header=Dividir PDF
|
split.header=Dividir PDF
|
||||||
split.desc.1=Os números selecionados correspondem às páginas onde você deseja fazer a divisão.
|
split.desc.1=Os números selecionados correspondem às páginas onde você deseja fazer a divisão.
|
||||||
split.desc.2=Por exemplo, selecionar 1,3,7-8 dividirá um documento de 10 páginas em 6 PDFs separados da seguinte forma:
|
split.desc.2=Por exemplo, selecionar 1,3,7-9 dividirá um documento de 10 páginas em 6 PDFs separados da seguinte forma:
|
||||||
split.desc.3=Documento Nº1: Página 1
|
split.desc.3=Documento Nº1: Página 1
|
||||||
split.desc.4=Documento Nº2: Páginas 2 e 3
|
split.desc.4=Documento Nº2: Páginas 2 e 3
|
||||||
split.desc.5=Documento Nº3: Páginas 4, 5 e 6
|
split.desc.5=Documento Nº3: Páginas 4, 5, 6 e 7
|
||||||
split.desc.6=Documento Nº4: Página 7
|
split.desc.6=Documento Nº4: Página 8
|
||||||
split.desc.7=Documento Nº5: Página 8
|
split.desc.7=Documento Nº5: Página 9
|
||||||
split.desc.8=Documento Nº6: Páginas 9 e 10
|
split.desc.8=Documento Nº6: Páginas 10
|
||||||
split.splitPages=Digite as páginas para a divisão:
|
split.splitPages=Digite as páginas para a divisão:
|
||||||
split.submit=Dividir
|
split.submit=Dividir
|
||||||
|
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=Opacidade (0% - 100%)
|
|||||||
watermark.selectText.8=Tipo de Marca d'Água
|
watermark.selectText.8=Tipo de Marca d'Água
|
||||||
watermark.selectText.9=Imagem da Marca d'Água
|
watermark.selectText.9=Imagem da Marca d'Água
|
||||||
watermark.submit=Adicionar Marca d'Água
|
watermark.submit=Adicionar Marca d'Água
|
||||||
|
watermark.type.1=Text
|
||||||
|
watermark.type.2=Image
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ pdfToPDFA.title=PDF para PDF/A
|
|||||||
pdfToPDFA.header=PDF para PDF/A
|
pdfToPDFA.header=PDF para PDF/A
|
||||||
pdfToPDFA.credit=Este serviço usa OCRmyPDF para Conversão de PDF/A
|
pdfToPDFA.credit=Este serviço usa OCRmyPDF para Conversão de PDF/A
|
||||||
pdfToPDFA.submit=Converter
|
pdfToPDFA.submit=Converter
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=Converter
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF para HTML
|
PDFToHTML.title=PDF para HTML
|
||||||
PDFToHTML.header=PDF para HTML
|
PDFToHTML.header=PDF para HTML
|
||||||
PDFToHTML.credit=Este serviço usa o LibreOffice para Conversão de Arquivos.
|
PDFToHTML.credit=Este serviço usa o pdftohtml para Conversão de Arquivos.
|
||||||
PDFToHTML.submit=Converter
|
PDFToHTML.submit=Converter
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=Choose page to extract table
|
|||||||
PDFToCSV.submit=Eztenna
|
PDFToCSV.submit=Eztenna
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=Split PDF by Size or Count
|
||||||
split-by-size-or-count.header=Split PDF by Size or Count
|
split-by-size-or-count.header=Split PDF by Size or Count
|
||||||
split-by-size-or-count.type.label=Select Split Type
|
split-by-size-or-count.type.label=Select Split Type
|
||||||
split-by-size-or-count.type.size=By Size
|
split-by-size-or-count.type.size=By Size
|
||||||
@@ -960,7 +1020,7 @@ split-by-sections.vertical.label=Vertical Divisions
|
|||||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||||
split-by-sections.submit=Split PDF
|
split-by-sections.submit=Split PDF
|
||||||
|
split-by-sections.merge=Merge Into One PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Licenses
|
||||||
@@ -971,3 +1031,16 @@ licenses.version=Version
|
|||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
1046
src/main/resources/messages_pt_PT.properties
Normal file
1046
src/main/resources/messages_pt_PT.properties
Normal file
File diff suppressed because it is too large
Load Diff
@@ -17,6 +17,7 @@ true=Adevărat
|
|||||||
false=Fals
|
false=Fals
|
||||||
unknown=Necunoscut
|
unknown=Necunoscut
|
||||||
save=Salvează
|
save=Salvează
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=Închide
|
close=Închide
|
||||||
filesSelected=fișiere selectate
|
filesSelected=fișiere selectate
|
||||||
noFavourites=Niciun favorit adăugat
|
noFavourites=Niciun favorit adăugat
|
||||||
@@ -53,16 +54,32 @@ notAuthenticatedMessage=User not authenticated.
|
|||||||
userNotFoundMessage=User not found.
|
userNotFoundMessage=User not found.
|
||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Current password is incorrect.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=New Username already exists.
|
||||||
|
invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers.
|
||||||
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=Pipeline Menu (Beta)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=Upload Custom
|
||||||
pipeline.configureButton=Configure
|
pipeline.configureButton=Configure
|
||||||
pipeline.defaultOption=Custom
|
pipeline.defaultOption=Custom
|
||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
|
pipeline.help=Pipeline Help
|
||||||
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=Account Settings
|
|||||||
|
|
||||||
changeCreds.title=Change Credentials
|
changeCreds.title=Change Credentials
|
||||||
changeCreds.header=Update Your Account Details
|
changeCreds.header=Update Your Account Details
|
||||||
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted)
|
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
||||||
changeCreds.newUsername=New Username
|
changeCreds.newUsername=New Username
|
||||||
changeCreds.oldPassword=Current Password
|
changeCreds.oldPassword=Current Password
|
||||||
changeCreds.newPassword=New Password
|
changeCreds.newPassword=New Password
|
||||||
@@ -143,13 +160,16 @@ adminUserSettings.header=Admin User Control Settings
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=User
|
adminUserSettings.user=User
|
||||||
adminUserSettings.addUser=Add New User
|
adminUserSettings.addUser=Add New User
|
||||||
|
adminUserSettings.usernameInfo=Username must only contain letters and numbers, no spaces or special characters.
|
||||||
adminUserSettings.roles=Roles
|
adminUserSettings.roles=Roles
|
||||||
adminUserSettings.role=Role
|
adminUserSettings.role=Role
|
||||||
adminUserSettings.actions=Actions
|
adminUserSettings.actions=Actions
|
||||||
adminUserSettings.apiUser=Limited API User
|
adminUserSettings.apiUser=Limited API User
|
||||||
|
adminUserSettings.extraApiUser=Additional Limited API User
|
||||||
adminUserSettings.webOnlyUser=Web Only User
|
adminUserSettings.webOnlyUser=Web Only User
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=Demo User (No custom settings)
|
||||||
adminUserSettings.forceChange=Force user to change username/password on login
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
|
adminUserSettings.forceChange=Force user to change password on login
|
||||||
adminUserSettings.submit=Save User
|
adminUserSettings.submit=Save User
|
||||||
|
|
||||||
#############
|
#############
|
||||||
@@ -393,6 +413,15 @@ home.AddStampRequest.desc=Add text or add image stamps at set locations
|
|||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF to Book
|
||||||
|
home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Book to PDF
|
||||||
|
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Sign in
|
login.title=Sign in
|
||||||
|
login.header=Sign in
|
||||||
login.signin=Sign in
|
login.signin=Sign in
|
||||||
login.rememberme=Remember me
|
login.rememberme=Remember me
|
||||||
login.invalid=Invalid username or password.
|
login.invalid=Invalid username or password.
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=Convert To Single Page
|
|||||||
pageExtracter.title=Extract Pages
|
pageExtracter.title=Extract Pages
|
||||||
pageExtracter.header=Extract Pages
|
pageExtracter.header=Extract Pages
|
||||||
pageExtracter.submit=Extract
|
pageExtracter.submit=Extract
|
||||||
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=Document 1
|
|||||||
compare.document.2=Document 2
|
compare.document.2=Document 2
|
||||||
compare.submit=Compară
|
compare.submit=Compară
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Books and Comics to PDF
|
||||||
|
BookToPDF.header=Book to PDF
|
||||||
|
BookToPDF.credit=Uses Calibre
|
||||||
|
BookToPDF.submit=Convert
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF to Book
|
||||||
|
PDFToBook.header=PDF to Book
|
||||||
|
PDFToBook.selectText.1=Format
|
||||||
|
PDFToBook.credit=Uses Calibre
|
||||||
|
PDFToBook.submit=Convert
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Semnează
|
sign.title=Semnează
|
||||||
@@ -727,11 +770,23 @@ merge.submit=Unire
|
|||||||
pdfOrganiser.title=Organizator de pagini
|
pdfOrganiser.title=Organizator de pagini
|
||||||
pdfOrganiser.header=Organizator de pagini PDF
|
pdfOrganiser.header=Organizator de pagini PDF
|
||||||
pdfOrganiser.submit=Rearanjați paginile
|
pdfOrganiser.submit=Rearanjați paginile
|
||||||
|
pdfOrganiser.mode=Mode
|
||||||
|
pdfOrganiser.mode.1=Custom Page Order
|
||||||
|
pdfOrganiser.mode.2=Reverse Order
|
||||||
|
pdfOrganiser.mode.3=Duplex Sort
|
||||||
|
pdfOrganiser.mode.4=Booklet Sort
|
||||||
|
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
||||||
|
pdfOrganiser.mode.6=Odd-Even Split
|
||||||
|
pdfOrganiser.mode.7=Remove First
|
||||||
|
pdfOrganiser.mode.8=Remove Last
|
||||||
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=Instrument PDF multiplu
|
multiTool.title=Instrument PDF multiplu
|
||||||
multiTool.header=Instrument PDF multiplu
|
multiTool.header=Instrument PDF multiplu
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=View PDF
|
viewPdf.title=View PDF
|
||||||
@@ -742,6 +797,7 @@ pageRemover.title=Înlăturare pagini
|
|||||||
pageRemover.header=Înlăturare pagini din PDF
|
pageRemover.header=Înlăturare pagini din PDF
|
||||||
pageRemover.pagesToDelete=Pagini de șters (Introduceți o listă de numere de pagini separate prin virgulă):
|
pageRemover.pagesToDelete=Pagini de șters (Introduceți o listă de numere de pagini separate prin virgulă):
|
||||||
pageRemover.submit=Ștergere pagini
|
pageRemover.submit=Ștergere pagini
|
||||||
|
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=Selectați un unghi de rotație (în multiplicate de 90 de gr
|
|||||||
rotate.submit=Rotește
|
rotate.submit=Rotește
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=Împarte PDF
|
split.title=Împarte PDF
|
||||||
split.header=Împarte PDF
|
split.header=Împarte PDF
|
||||||
split.desc.1=Numerele pe care le selectați reprezintă numărul paginii pe care doriți să o împărțiți
|
split.desc.1=Numerele pe care le selectați reprezintă numărul paginii pe care doriți să o împărțiți
|
||||||
split.desc.2=Prin urmare, selectând 1,3,7-8, un document cu 10 pagini va fi împărțit în 6 PDF-uri separate, astfel:
|
split.desc.2=Prin urmare, selectând 1,3,7-9, un document cu 10 pagini va fi împărțit în 6 PDF-uri separate, astfel:
|
||||||
split.desc.3=Documentul #1: Pagina 1
|
split.desc.3=Documentul #1: Pagina 1
|
||||||
split.desc.4=Documentul #2: Paginile 2 și 3
|
split.desc.4=Documentul #2: Paginile 2 și 3
|
||||||
split.desc.5=Documentul #3: Paginile 4, 5 și 6
|
split.desc.5=Documentul #3: Paginile 4, 5, 6 și 7
|
||||||
split.desc.6=Documentul #4: Pagina 7
|
split.desc.6=Documentul #4: Pagina 8
|
||||||
split.desc.7=Documentul #5: Pagina 8
|
split.desc.7=Documentul #5: Pagina 9
|
||||||
split.desc.8=Documentul #6: Paginile 9 și 10
|
split.desc.8=Documentul #6: Pagina 10
|
||||||
split.splitPages=Introduceți paginile pe care să le împărțiți:
|
split.splitPages=Introduceți paginile pe care să le împărțiți:
|
||||||
split.submit=Împarte
|
split.submit=Împarte
|
||||||
|
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=Opacitate (0% - 100%):
|
|||||||
watermark.selectText.8=Watermark Type:
|
watermark.selectText.8=Watermark Type:
|
||||||
watermark.selectText.9=Watermark Image:
|
watermark.selectText.9=Watermark Image:
|
||||||
watermark.submit=Adăugați Filigran
|
watermark.submit=Adăugați Filigran
|
||||||
|
watermark.type.1=Text
|
||||||
|
watermark.type.2=Image
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ 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ă OCRmyPDF pentru conversia în PDF/A
|
pdfToPDFA.credit=Acest serviciu utilizează OCRmyPDF pentru conversia în PDF/A
|
||||||
pdfToPDFA.submit=Convert
|
pdfToPDFA.submit=Convert
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=Convert
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF către HTML
|
PDFToHTML.title=PDF către HTML
|
||||||
PDFToHTML.header=PDF către HTML
|
PDFToHTML.header=PDF către HTML
|
||||||
PDFToHTML.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului.
|
PDFToHTML.credit=Acest serviciu utilizează pdftohtml pentru conversia fișierului.
|
||||||
PDFToHTML.submit=Convert
|
PDFToHTML.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=Choose page to extract table
|
|||||||
PDFToCSV.submit=Extrage
|
PDFToCSV.submit=Extrage
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=Split PDF by Size or Count
|
||||||
split-by-size-or-count.header=Split PDF by Size or Count
|
split-by-size-or-count.header=Split PDF by Size or Count
|
||||||
split-by-size-or-count.type.label=Select Split Type
|
split-by-size-or-count.type.label=Select Split Type
|
||||||
split-by-size-or-count.type.size=By Size
|
split-by-size-or-count.type.size=By Size
|
||||||
@@ -960,7 +1020,7 @@ split-by-sections.vertical.label=Vertical Divisions
|
|||||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||||
split-by-sections.submit=Split PDF
|
split-by-sections.submit=Split PDF
|
||||||
|
split-by-sections.merge=Merge Into One PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Licenses
|
||||||
@@ -971,3 +1031,16 @@ licenses.version=Version
|
|||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
@@ -11,16 +11,17 @@ imgPrompt=Выберите картинку(и)
|
|||||||
genericSubmit=Отправить
|
genericSubmit=Отправить
|
||||||
processTimeWarning=Внимание: Этот процесс может занять до минуты в зависимости от размера файла.
|
processTimeWarning=Внимание: Этот процесс может занять до минуты в зависимости от размера файла.
|
||||||
pageOrderPrompt=Порядок страниц (введите список номеров страниц через запятую):
|
pageOrderPrompt=Порядок страниц (введите список номеров страниц через запятую):
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
pageSelectionPrompt=Пользовательский выбор страницы (введите разделенный запятыми список номеров страниц 1,5,6 или функции типа 2n+1) :
|
||||||
goToPage=Вперед
|
goToPage=Вперед
|
||||||
true=Истина
|
true=Истина
|
||||||
false=Ложь
|
false=Ложь
|
||||||
unknown=Неизвестно
|
unknown=Неизвестно
|
||||||
save=Сохранить
|
save=Сохранить
|
||||||
|
saveToBrowser=Сохранить в браузере
|
||||||
close=Закрыть
|
close=Закрыть
|
||||||
filesSelected=файлов выбрано
|
filesSelected=файлов выбрано
|
||||||
noFavourites=Нет избранного
|
noFavourites=Нет избранного
|
||||||
downloadComplete=Download Complete
|
downloadComplete=Загрузка завершена
|
||||||
bored=Скучно ждать?
|
bored=Скучно ждать?
|
||||||
alphabet=Алфавит
|
alphabet=Алфавит
|
||||||
downloadPdf=Скачать PDF
|
downloadPdf=Скачать PDF
|
||||||
@@ -28,54 +29,70 @@ text=Текст
|
|||||||
font=Шрифт
|
font=Шрифт
|
||||||
selectFillter=-- Выбрать --
|
selectFillter=-- Выбрать --
|
||||||
pageNum=номер страницы
|
pageNum=номер страницы
|
||||||
sizes.small=Small
|
sizes.small=Маленький
|
||||||
sizes.medium=Medium
|
sizes.medium=Середина
|
||||||
sizes.large=Large
|
sizes.large=Большой
|
||||||
sizes.x-large=X-Large
|
sizes.x-large=очень большой
|
||||||
error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect
|
error.pdfPassword=Документ PDF имеет пароль, и пароль не был предоставлен или был неверным
|
||||||
delete=Delete
|
delete=Удалить
|
||||||
username=Username
|
username=Имя пользователя
|
||||||
password=Password
|
password=Пароль
|
||||||
welcome=Welcome
|
welcome=Добро пожаловать
|
||||||
property=Property
|
property=Свойство
|
||||||
black=Black
|
black=Чёрный
|
||||||
white=White
|
white=Белый
|
||||||
red=Red
|
red=Красный
|
||||||
green=Green
|
green=Зеленый
|
||||||
blue=Blue
|
blue=Синий
|
||||||
custom=Custom...
|
custom=Обычай...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Работа продолжается, может не работать или глючить, пожалуйста, сообщайте о любых проблемах!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Да
|
||||||
no=No
|
no=Нет
|
||||||
changedCredsMessage=Credentials changed!
|
changedCredsMessage=Учетные данные изменены!
|
||||||
notAuthenticatedMessage=User not authenticated.
|
notAuthenticatedMessage=Пользователь не прошел проверку подлинности.
|
||||||
userNotFoundMessage=User not found.
|
userNotFoundMessage=Пользователь не найден.
|
||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Текущий пароль неверен.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=Новое имя пользователя уже существует.
|
||||||
|
invalidUsernameMessage=Недопустимое имя пользователя, Имя пользователя должно содержать только буквы алфавита и цифры.
|
||||||
|
deleteCurrentUserMessage=Невозможно удалить пользователя, вошедшего в систему.
|
||||||
|
deleteUsernameExistsMessage=Имя пользователя не существует и не может быть удалено.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=Меню конвейерной обработки (Бета)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=Загрузить Пользовательский
|
||||||
pipeline.configureButton=Configure
|
pipeline.configureButton=Настройка
|
||||||
pipeline.defaultOption=Custom
|
pipeline.defaultOption=Пользовательский
|
||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Отправить
|
||||||
|
pipeline.help=Справка по конвейерной обработке
|
||||||
|
pipeline.scanHelp=Справка по сканированию папок
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
######################
|
######################
|
||||||
pipelineOptions.header=Pipeline Configuration
|
pipelineOptions.header=Настройка конвейерной обработки
|
||||||
pipelineOptions.pipelineNameLabel=Pipeline Name
|
pipelineOptions.pipelineNameLabel=Название конвейера
|
||||||
pipelineOptions.saveSettings=Save Operation Settings
|
pipelineOptions.saveSettings=Сохранить настройки операции
|
||||||
pipelineOptions.pipelineNamePrompt=Enter pipeline name here
|
pipelineOptions.pipelineNamePrompt=Введите имя конвейера здесь
|
||||||
pipelineOptions.selectOperation=Select Operation
|
pipelineOptions.selectOperation=Выбрать операцию
|
||||||
pipelineOptions.addOperationButton=Add operation
|
pipelineOptions.addOperationButton=Добавить операцию
|
||||||
pipelineOptions.pipelineHeader=Pipeline:
|
pipelineOptions.pipelineHeader=Конвейер:
|
||||||
pipelineOptions.saveButton=Download
|
pipelineOptions.saveButton=Скачать
|
||||||
pipelineOptions.validateButton=Validate
|
pipelineOptions.validateButton=Проверить
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -101,66 +118,69 @@ settings.downloadOption.1=Открыть в том же окне
|
|||||||
settings.downloadOption.2=Открыть в новом окне
|
settings.downloadOption.2=Открыть в новом окне
|
||||||
settings.downloadOption.3=Загрузить файл
|
settings.downloadOption.3=Загрузить файл
|
||||||
settings.zipThreshold=Zip-файлы, когда количество загруженных файлов превышает
|
settings.zipThreshold=Zip-файлы, когда количество загруженных файлов превышает
|
||||||
settings.signOut=Sign Out
|
settings.signOut=Выйти
|
||||||
settings.accountSettings=Account Settings
|
settings.accountSettings=Настройки аккаунта
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
changeCreds.title=Change Credentials
|
changeCreds.title=Изменить учетные данные
|
||||||
changeCreds.header=Update Your Account Details
|
changeCreds.header=Обновите данные вашей учетной записи
|
||||||
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted)
|
changeCreds.changePassword=Вы используете предустановленные учетные данные для входа. Пожалуйста, введите новый пароль
|
||||||
changeCreds.newUsername=New Username
|
changeCreds.newUsername=Новое имя пользователя
|
||||||
changeCreds.oldPassword=Current Password
|
changeCreds.oldPassword=Текущий пароль
|
||||||
changeCreds.newPassword=New Password
|
changeCreds.newPassword=Новый пароль
|
||||||
changeCreds.confirmNewPassword=Confirm New Password
|
changeCreds.confirmNewPassword=Подтвердите новый пароль
|
||||||
changeCreds.submit=Submit Changes
|
changeCreds.submit=Отправить изменения
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
account.title=Account Settings
|
account.title=Настройки аккаунта
|
||||||
account.accountSettings=Account Settings
|
account.accountSettings=Настройки аккаунта
|
||||||
account.adminSettings=Admin Settings - View and Add Users
|
account.adminSettings=Настройки администратора - Просмотр и добавление пользователей
|
||||||
account.userControlSettings=User Control Settings
|
account.userControlSettings=Настройки контроля пользователя
|
||||||
account.changeUsername=Change Username
|
account.changeUsername=Изменить имя пользователя
|
||||||
account.newUsername=New Username
|
account.newUsername=Новое имя пользователя
|
||||||
account.password=Confirmation Password
|
account.password=Подтверждение пароля
|
||||||
account.oldPassword=Old password
|
account.oldPassword=Старый пароль
|
||||||
account.newPassword=New Password
|
account.newPassword=Новый пароль
|
||||||
account.changePassword=Change Password
|
account.changePassword=Изменить пароль
|
||||||
account.confirmNewPassword=Confirm New Password
|
account.confirmNewPassword=Подтвердите новый пароль
|
||||||
account.signOut=Sign Out
|
account.signOut=Выйти
|
||||||
account.yourApiKey=Your API Key
|
account.yourApiKey=Ваш API-ключ
|
||||||
account.syncTitle=Sync browser settings with Account
|
account.syncTitle=Синхронизировать настройки браузера с учетной записью
|
||||||
account.settingsCompare=Settings Comparison:
|
account.settingsCompare=Сравнение настроек:
|
||||||
account.property=Property
|
account.property=Свойство
|
||||||
account.webBrowserSettings=Web Browser Setting
|
account.webBrowserSettings=Настройка веб-браузера
|
||||||
account.syncToBrowser=Sync Account -> Browser
|
account.syncToBrowser=Синхронизировать учетную запись -> Браузер
|
||||||
account.syncToAccount=Sync Account <- Browser
|
account.syncToAccount=Синхронизировать учетную запись <- Браузер
|
||||||
|
|
||||||
|
|
||||||
adminUserSettings.title=User Control Settings
|
adminUserSettings.title=Настройки контроля пользователя
|
||||||
adminUserSettings.header=Admin User Control Settings
|
adminUserSettings.header=Настройки контроля пользователя администратора
|
||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Администратор
|
||||||
adminUserSettings.user=User
|
adminUserSettings.user=Пользователь
|
||||||
adminUserSettings.addUser=Add New User
|
adminUserSettings.addUser=Добавить нового пользователя
|
||||||
adminUserSettings.roles=Roles
|
adminUserSettings.usernameInfo=Имя пользователя должно содержать только буквы и цифры, без пробелов и специальных символов.
|
||||||
adminUserSettings.role=Role
|
adminUserSettings.roles=Роли
|
||||||
adminUserSettings.actions=Actions
|
adminUserSettings.role=Роль
|
||||||
adminUserSettings.apiUser=Limited API User
|
adminUserSettings.actions=Действия
|
||||||
adminUserSettings.webOnlyUser=Web Only User
|
adminUserSettings.apiUser=Ограниченный пользователь API
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.extraApiUser=Дополнительный ограниченный пользователь API
|
||||||
adminUserSettings.forceChange=Force user to change username/password on login
|
adminUserSettings.webOnlyUser=Только веб-пользователь
|
||||||
adminUserSettings.submit=Save User
|
adminUserSettings.demoUser=Демо-пользователь (без настраиваемых параметров)
|
||||||
|
adminUserSettings.internalApiUser=Внутренний пользователь API
|
||||||
|
adminUserSettings.forceChange=Просить пользователя изменить пароль при входе в систему
|
||||||
|
adminUserSettings.submit=Сохранить пользователя
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# HOME-PAGE #
|
# HOME-PAGE #
|
||||||
#############
|
#############
|
||||||
home.desc=Ваш локальный универсальный магазин для всех ваших потребностей в PDF.
|
home.desc=Ваш локальный универсальный магазин для всех ваших потребностей в PDF.
|
||||||
home.searchBar=Search for features...
|
home.searchBar=Поиск функций...
|
||||||
|
|
||||||
|
|
||||||
home.viewPdf.title=View PDF
|
home.viewPdf.title=Просмотр PDF
|
||||||
home.viewPdf.desc=View, annotate, add text or images
|
home.viewPdf.desc=Просмотр, аннотация, добавление текста или изображений
|
||||||
viewPdf.tags=view,read,annotate,text,image
|
viewPdf.tags=view,read,annotate,text,image
|
||||||
|
|
||||||
home.multiTool.title=Мультиинструмент PDF
|
home.multiTool.title=Мультиинструмент PDF
|
||||||
@@ -366,58 +386,68 @@ home.showJS.title=Показать Javascript
|
|||||||
home.showJS.desc=Ищет и отображает любой JS, внедренный в PDF-файл.
|
home.showJS.desc=Ищет и отображает любой JS, внедренный в PDF-файл.
|
||||||
showJS.tags=JS
|
showJS.tags=JS
|
||||||
|
|
||||||
home.autoRedact.title=Auto Redact
|
home.autoRedact.title=Автоматическое редактирование
|
||||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
home.autoRedact.desc=Автоматическое затемнение (чернение) текста в PDF на основе входного текста
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF в CSV
|
||||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
home.tableExtraxt.desc=Извлекает таблицы из PDF и преобразует их в CSV
|
||||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||||
|
|
||||||
|
|
||||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
home.autoSizeSplitPDF.title=Автоматическое разделение по размеру/количеству
|
||||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
home.autoSizeSplitPDF.desc=Разделяет один PDF на несколько документов на основе размера, количества страниц или количества документов
|
||||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||||
|
|
||||||
|
|
||||||
home.overlay-pdfs.title=Overlay PDFs
|
home.overlay-pdfs.title=Наложение PDF
|
||||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
home.overlay-pdfs.desc=Наложение одного PDF поверх другого PDF
|
||||||
overlay-pdfs.tags=Overlay
|
overlay-pdfs.tags=Overlay
|
||||||
|
|
||||||
home.split-by-sections.title=Split PDF by Sections
|
home.split-by-sections.title=Разделение PDF по секциям
|
||||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
home.split-by-sections.desc=Разделение каждой страницы PDF на более мелкие горизонтальные и вертикальные секции
|
||||||
split-by-sections.tags=Section Split, Divide, Customize
|
split-by-sections.tags=Section Split, Divide, Customize
|
||||||
|
|
||||||
home.AddStampRequest.title=Add Stamp to PDF
|
home.AddStampRequest.title=Добавить печать на PDF
|
||||||
home.AddStampRequest.desc=Add text or add image stamps at set locations
|
home.AddStampRequest.desc=Добавление текстовой или изображенческой печати в заданные места
|
||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF в книгу/комикс
|
||||||
|
home.PDFToBook.desc=Конвертирует PDF в формат книги/комикса с помощью calibre
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Книга в PDF
|
||||||
|
home.BookToPDF.desc=Конвертирует форматы книги/комикса в PDF с помощью calibre
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
# #
|
# #
|
||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Sign in
|
login.title=Вход
|
||||||
login.signin=Sign in
|
login.header=Вход
|
||||||
login.rememberme=Remember me
|
login.signin=Войти
|
||||||
login.invalid=Invalid username or password.
|
login.rememberme=Запомнить меня
|
||||||
login.locked=Your account has been locked.
|
login.invalid=Недействительное имя пользователя или пароль.
|
||||||
login.signinTitle=Please sign in
|
login.locked=Ваша учетная запись заблокирована.
|
||||||
|
login.signinTitle=Пожалуйста, войдите
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
autoRedact.title=Auto Redact
|
autoRedact.title=Автоматическое редактирование
|
||||||
autoRedact.header=Auto Redact
|
autoRedact.header=Автоматическое редактирование
|
||||||
autoRedact.colorLabel=Colour
|
autoRedact.colorLabel=Цвет
|
||||||
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
autoRedact.textsToRedactLabel=Текст для сокрытия (каждая строка отдельно)
|
||||||
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
autoRedact.textsToRedactPlaceholder=например \nКонфиденциально \nСовершенно секретно
|
||||||
autoRedact.useRegexLabel=Use Regex
|
autoRedact.useRegexLabel=Использовать регулярные выражения
|
||||||
autoRedact.wholeWordSearchLabel=Whole Word Search
|
autoRedact.wholeWordSearchLabel=Поиск целых слов
|
||||||
autoRedact.customPaddingLabel=Custom Extra Padding
|
autoRedact.customPaddingLabel=Дополнительное отступление по настраиваемому значению
|
||||||
autoRedact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box)
|
autoRedact.convertPDFToImageLabel=Преобразовать PDF в изображение PDF (используется для удаления текста за рамкой)
|
||||||
autoRedact.submitButton=Submit
|
autoRedact.submitButton=Отправить
|
||||||
|
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=Преобразовать в одну страницу
|
|||||||
pageExtracter.title=Извлечь страницы
|
pageExtracter.title=Извлечь страницы
|
||||||
pageExtracter.header=Извлечь страницы
|
pageExtracter.header=Извлечь страницы
|
||||||
pageExtracter.submit=Извлечь
|
pageExtracter.submit=Извлечь
|
||||||
|
pageExtracter.placeholder=(например 1,2,8 или 4,7,12-16 или 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -468,37 +499,37 @@ HTMLToPDF.header=HTML в PDF
|
|||||||
HTMLToPDF.help=Принимает файлы HTML и ZIP-файлы, содержащие html/css/изображения и т. д.
|
HTMLToPDF.help=Принимает файлы HTML и ZIP-файлы, содержащие html/css/изображения и т. д.
|
||||||
HTMLToPDF.submit=Конвертировать
|
HTMLToPDF.submit=Конвертировать
|
||||||
HTMLToPDF.credit=Использует WeasyPrint
|
HTMLToPDF.credit=Использует WeasyPrint
|
||||||
HTMLToPDF.zoom=Zoom level for displaying the website.
|
HTMLToPDF.zoom=Уровень масштабирования для отображения веб-сайта.
|
||||||
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
|
HTMLToPDF.pageWidth=Ширина страницы в сантиметрах. (Пусто - по умолчанию)
|
||||||
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
|
HTMLToPDF.pageHeight=Высота страницы в сантиметрах. (Пусто - по умолчанию)
|
||||||
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginTop=Верхний отступ страницы в миллиметрах. (Пусто - по умолчанию)
|
||||||
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginBottom=Нижний отступ страницы в миллиметрах. (Пусто - по умолчанию)
|
||||||
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginLeft=Левый отступ страницы в миллиметрах. (Пусто - по умолчанию)
|
||||||
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginRight=Правый отступ страницы в миллиметрах. (Пусто - по умолчанию)
|
||||||
HTMLToPDF.printBackground=Render the background of websites.
|
HTMLToPDF.printBackground=Визуализировать фон веб-сайтов.
|
||||||
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
|
HTMLToPDF.defaultHeader=Включить заголовок по умолчанию (Имя и номер страницы)
|
||||||
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
|
HTMLToPDF.cssMediaType=Изменить тип медиа CSS страницы.
|
||||||
HTMLToPDF.none=None
|
HTMLToPDF.none=Нет
|
||||||
HTMLToPDF.print=Print
|
HTMLToPDF.print=Печать
|
||||||
HTMLToPDF.screen=Screen
|
HTMLToPDF.screen=Экран
|
||||||
|
|
||||||
|
|
||||||
#AddStampRequest
|
#AddStampRequest
|
||||||
AddStampRequest.header=Stamp PDF
|
AddStampRequest.header=Штамповать PDF
|
||||||
AddStampRequest.title=Stamp PDF
|
AddStampRequest.title=Штамповать PDF
|
||||||
AddStampRequest.stampType=Stamp Type
|
AddStampRequest.stampType=Тип штампа
|
||||||
AddStampRequest.stampText=Stamp Text
|
AddStampRequest.stampText=Текст штампа
|
||||||
AddStampRequest.stampImage=Stamp Image
|
AddStampRequest.stampImage=Изображение штампа
|
||||||
AddStampRequest.alphabet=Alphabet
|
AddStampRequest.alphabet=Алфавит
|
||||||
AddStampRequest.fontSize=Font/Image Size
|
AddStampRequest.fontSize=Размер шрифта/изображения
|
||||||
AddStampRequest.rotation=Rotation
|
AddStampRequest.rotation=Поворот
|
||||||
AddStampRequest.opacity=Opacity
|
AddStampRequest.opacity=Прозрачность
|
||||||
AddStampRequest.position=Position
|
AddStampRequest.position=Позиция
|
||||||
AddStampRequest.overrideX=Override X Coordinate
|
AddStampRequest.overrideX=Переопределить координату X
|
||||||
AddStampRequest.overrideY=Override Y Coordinate
|
AddStampRequest.overrideY=Переопределить координату Y
|
||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Настроенный отступ
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Настроенный цвет текста
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Отправить
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
@@ -521,9 +552,9 @@ addPageNumbers.selectText.3=Позиция
|
|||||||
addPageNumbers.selectText.4=Стартовый номер
|
addPageNumbers.selectText.4=Стартовый номер
|
||||||
addPageNumbers.selectText.5=Страницы для нумерации
|
addPageNumbers.selectText.5=Страницы для нумерации
|
||||||
addPageNumbers.selectText.6=Свой текст
|
addPageNumbers.selectText.6=Свой текст
|
||||||
addPageNumbers.customTextDesc=Custom Text
|
addPageNumbers.customTextDesc=Пользовательский текст
|
||||||
addPageNumbers.numberPagesDesc=Which pages to number, default 'all', also accepts 1-5 or 2,5,9 etc
|
addPageNumbers.numberPagesDesc=Какие страницы нумеровать, по умолчанию 'все', также принимает 1-5 или 2,5,9 и т.д.
|
||||||
addPageNumbers.customNumberDesc=Defaults to {n}, also accepts 'Page {n} of {total}', 'Text-{n}', '{filename}-{n}
|
addPageNumbers.customNumberDesc=По умолчанию {n}, также можно использовать 'Страница {n} из {total}', 'Текст-{n}', '{filename}-{n}'
|
||||||
addPageNumbers.submit=Добавить номера страниц
|
addPageNumbers.submit=Добавить номера страниц
|
||||||
|
|
||||||
|
|
||||||
@@ -564,14 +595,14 @@ autoSplitPDF.submit=Отравить
|
|||||||
|
|
||||||
|
|
||||||
#pipeline
|
#pipeline
|
||||||
pipeline.title=Pipeline
|
pipeline.title=Пайплайн
|
||||||
|
|
||||||
|
|
||||||
#pageLayout
|
#pageLayout
|
||||||
pageLayout.title=Многостраничный макет
|
pageLayout.title=Многостраничный макет
|
||||||
pageLayout.header=Многостраничный макет
|
pageLayout.header=Многостраничный макет
|
||||||
pageLayout.pagesPerSheet=Страниц на одном листе:
|
pageLayout.pagesPerSheet=Страниц на одном листе:
|
||||||
pageLayout.addBorder=Add Borders
|
pageLayout.addBorder=Добавить границы
|
||||||
pageLayout.submit=Отправить
|
pageLayout.submit=Отправить
|
||||||
|
|
||||||
|
|
||||||
@@ -587,11 +618,11 @@ scalePages.submit=Отправить
|
|||||||
certSign.title=Подписание сертификата
|
certSign.title=Подписание сертификата
|
||||||
certSign.header=Подпишите PDF своим сертификатом (работа в процессе)
|
certSign.header=Подпишите PDF своим сертификатом (работа в процессе)
|
||||||
certSign.selectPDF=Выберите файл PDF для подписи:
|
certSign.selectPDF=Выберите файл PDF для подписи:
|
||||||
certSign.jksNote=Note: If your certificate type is not listed below, please convert it to a Java Keystore (.jks) file using the keytool command line tool. Then, choose the .jks file option below.
|
certSign.jksNote=Примечание: Если ваш тип сертификата не указан ниже, пожалуйста, преобразуйте его в файл хранилища Java Keystore (.jks), используя утилиту командной строки keytool. Затем выберите опцию .jks файла ниже.
|
||||||
certSign.selectKey=Выберите файл закрытого ключа (формат PKCS#8, может быть .pem или .der):
|
certSign.selectKey=Выберите файл закрытого ключа (формат PKCS#8, может быть .pem или .der):
|
||||||
certSign.selectCert=Выберите файл сертификата (формат X.509, может быть .pem или .der):
|
certSign.selectCert=Выберите файл сертификата (формат X.509, может быть .pem или .der):
|
||||||
certSign.selectP12=Выберите файл хранилища ключей PKCS#12 (.p12 или .pfx) (необязательно, если он предоставлен, он должен содержать ваш закрытый ключ и сертификат):
|
certSign.selectP12=Выберите файл хранилища ключей PKCS#12 (.p12 или .pfx) (необязательно, если он предоставлен, он должен содержать ваш закрытый ключ и сертификат):
|
||||||
certSign.selectJKS=Select Your Java Keystore File (.jks or .keystore):
|
certSign.selectJKS=Выберите файл хранилища Java Keystore (.jks или .keystore):
|
||||||
certSign.certType=Тип сертификата
|
certSign.certType=Тип сертификата
|
||||||
certSign.password=Введите пароль от хранилища ключей или личного ключа (если есть):
|
certSign.password=Введите пароль от хранилища ключей или личного ключа (если есть):
|
||||||
certSign.showSig=Показать подпись
|
certSign.showSig=Показать подпись
|
||||||
@@ -612,9 +643,9 @@ removeBlanks.submit=Удалить Пустые
|
|||||||
|
|
||||||
|
|
||||||
#removeAnnotations
|
#removeAnnotations
|
||||||
removeAnnotations.title=Remove Annotations
|
removeAnnotations.title=Удалить аннотации
|
||||||
removeAnnotations.header=Remove Annotations
|
removeAnnotations.header=Удалить аннотации
|
||||||
removeAnnotations.submit=Remove
|
removeAnnotations.submit=Удалить
|
||||||
|
|
||||||
|
|
||||||
#compare
|
#compare
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=Документ 1
|
|||||||
compare.document.2=Документ 2
|
compare.document.2=Документ 2
|
||||||
compare.submit=Сравнить
|
compare.submit=Сравнить
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Книги и комиксы в PDF
|
||||||
|
BookToPDF.header=Конвертировать книгу в PDF
|
||||||
|
BookToPDF.credit=Используется Calibre
|
||||||
|
BookToPDF.submit=Конвертировать
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF в книгу
|
||||||
|
PDFToBook.header=PDF в книгу
|
||||||
|
PDFToBook.selectText.1=Формат
|
||||||
|
PDFToBook.credit=Используется Calibre
|
||||||
|
PDFToBook.submit=Конвертировать
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Подпись
|
sign.title=Подпись
|
||||||
@@ -718,8 +761,8 @@ addImage.submit=Добавить изображение
|
|||||||
#merge
|
#merge
|
||||||
merge.title=Объединить
|
merge.title=Объединить
|
||||||
merge.header=Объединение нескольких PDF-файлов (2+)
|
merge.header=Объединение нескольких PDF-файлов (2+)
|
||||||
merge.sortByName=Sort by name
|
merge.sortByName=Сортировка по имени
|
||||||
merge.sortByDate=Sort by date
|
merge.sortByDate=Сортировка по дате
|
||||||
merge.submit=Объединить
|
merge.submit=Объединить
|
||||||
|
|
||||||
|
|
||||||
@@ -727,21 +770,34 @@ merge.submit=Объединить
|
|||||||
pdfOrganiser.title=Организатор страниц
|
pdfOrganiser.title=Организатор страниц
|
||||||
pdfOrganiser.header=Организатор PDF-страниц
|
pdfOrganiser.header=Организатор PDF-страниц
|
||||||
pdfOrganiser.submit=Переупорядочить страницы
|
pdfOrganiser.submit=Переупорядочить страницы
|
||||||
|
pdfOrganiser.mode=Режим
|
||||||
|
pdfOrganiser.mode.1=Пользовательский порядок страниц
|
||||||
|
pdfOrganiser.mode.2=Обратный порядок
|
||||||
|
pdfOrganiser.mode.3=Сортировка дуплекса
|
||||||
|
pdfOrganiser.mode.4=Сортировка брошюры
|
||||||
|
pdfOrganiser.mode.5=Сортировка брошюры со стежкой по боковой стороне
|
||||||
|
pdfOrganiser.mode.6=Разделение на чётные и нечётные страницы
|
||||||
|
pdfOrganiser.mode.7=Удалить первую
|
||||||
|
pdfOrganiser.mode.8=Удалить последнюю
|
||||||
|
pdfOrganiser.mode.9=Удалить первую и последнюю
|
||||||
|
pdfOrganiser.placeholder=(например, 1,3,2 или 4-8,2,10-12 или 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=Мультиинструмент PDF
|
multiTool.title=Мультиинструмент PDF
|
||||||
multiTool.header=Мультиинструмент PDF
|
multiTool.header=Мультиинструмент PDF
|
||||||
|
multiTool.uploadPrompts=Пожалуйста, загрузите PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=View PDF
|
viewPdf.title=Просмотреть PDF
|
||||||
viewPdf.header=View PDF
|
viewPdf.header=Просмотреть PDF
|
||||||
|
|
||||||
#pageRemover
|
#pageRemover
|
||||||
pageRemover.title=Удаление страниц
|
pageRemover.title=Удаление страниц
|
||||||
pageRemover.header=Удаление PDF-страниц
|
pageRemover.header=Удаление PDF-страниц
|
||||||
pageRemover.pagesToDelete=Страницы для удаления (введите список номеров страниц через запятую):
|
pageRemover.pagesToDelete=Страницы для удаления (введите список номеров страниц через запятую):
|
||||||
pageRemover.submit=Удалить страницы
|
pageRemover.submit=Удалить страницы
|
||||||
|
pageRemover.placeholder=(например, 1,2,6 или 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=Выберите угол поворота (кратный 90
|
|||||||
rotate.submit=Повернуть
|
rotate.submit=Повернуть
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=Разделить PDF
|
split.title=Разделить PDF
|
||||||
split.header=Разделить PDF
|
split.header=Разделить PDF
|
||||||
split.desc.1=Выбранные вами числа — это номера страниц, на которых вы хотите сделать разделение.
|
split.desc.1=Выбранные вами числа — это номера страниц, на которых вы хотите сделать разделение.
|
||||||
split.desc.2=Таким образом, выбор 1,3,7-8 разделит 10-страничный документ на 6 отдельных PDF-файлов с:
|
split.desc.2=Таким образом, выбор 1,3,7-9 разделит 10-страничный документ на 6 отдельных PDF-файлов с:
|
||||||
split.desc.3=Документ #1: Page 1
|
split.desc.3=Документ #1: Страница 1
|
||||||
split.desc.4=Документ #2: Page 2 and 3
|
split.desc.4=Документ #2: Страница 2 и 3
|
||||||
split.desc.5=Документ #3: Page 4, 5 and 6
|
split.desc.5=Документ #3: Страница 4, 5, 6 aиnd 7
|
||||||
split.desc.6=Документ #4: Page 7
|
split.desc.6=Документ #4: Страница 8
|
||||||
split.desc.7=Документ #5: Page 8
|
split.desc.7=Документ #5: Страница 9
|
||||||
split.desc.8=Документ #6: Page 9 and 10
|
split.desc.8=Документ #6: Страница 10
|
||||||
split.splitPages=Введите страницы для разделения:
|
split.splitPages=Введите страницы для разделения:
|
||||||
split.submit=Разделить
|
split.submit=Разделить
|
||||||
|
|
||||||
@@ -770,10 +826,10 @@ split.submit=Разделить
|
|||||||
imageToPDF.title=Изображение в PDF
|
imageToPDF.title=Изображение в PDF
|
||||||
imageToPDF.header=Изображение в PDF
|
imageToPDF.header=Изображение в PDF
|
||||||
imageToPDF.submit=Конвертировать
|
imageToPDF.submit=Конвертировать
|
||||||
imageToPDF.selectLabel=Image Fit Options
|
imageToPDF.selectLabel=Выберите режим отображения изображения
|
||||||
imageToPDF.fillPage=Fill Page
|
imageToPDF.fillPage=Заполнение страницы
|
||||||
imageToPDF.fitDocumentToImage=Fit Page to Image
|
imageToPDF.fitDocumentToImage=Подогнать документ под изображение
|
||||||
imageToPDF.maintainAspectRatio=Maintain Aspect Ratios
|
imageToPDF.maintainAspectRatio=Сохранить пропорции
|
||||||
imageToPDF.selectText.2=Автоматический поворот PDF
|
imageToPDF.selectText.2=Автоматический поворот PDF
|
||||||
imageToPDF.selectText.3=Многофайловая логика (включена только при работе с несколькими изображениями)
|
imageToPDF.selectText.3=Многофайловая логика (включена только при работе с несколькими изображениями)
|
||||||
imageToPDF.selectText.4=Объединить в один PDF
|
imageToPDF.selectText.4=Объединить в один PDF
|
||||||
@@ -810,9 +866,9 @@ addPassword.selectText.10=Предотвратить модификацию
|
|||||||
addPassword.selectText.11=Запретить модификацию аннотаций
|
addPassword.selectText.11=Запретить модификацию аннотаций
|
||||||
addPassword.selectText.12=Запретить печать
|
addPassword.selectText.12=Запретить печать
|
||||||
addPassword.selectText.13=Запретить печать разных форматов
|
addPassword.selectText.13=Запретить печать разных форматов
|
||||||
addPassword.selectText.14=Owner Password
|
addPassword.selectText.14=Владельческий пароль
|
||||||
addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers)
|
addPassword.selectText.15=Ограничивает то, что можно сделать с документом после его открытия (не поддерживается всеми программами чтения)
|
||||||
addPassword.selectText.16=Restricts the opening of the document itself
|
addPassword.selectText.16=Ограничивает открытие самого документа
|
||||||
addPassword.submit=Шифровать
|
addPassword.submit=Шифровать
|
||||||
|
|
||||||
|
|
||||||
@@ -826,9 +882,11 @@ watermark.selectText.4=Поворот (0-360):
|
|||||||
watermark.selectText.5=widthSpacer (пробел между каждым водяным знаком по горизонтали):
|
watermark.selectText.5=widthSpacer (пробел между каждым водяным знаком по горизонтали):
|
||||||
watermark.selectText.6=heightSpacer (пробел между каждым водяным знаком по вертикали):
|
watermark.selectText.6=heightSpacer (пробел между каждым водяным знаком по вертикали):
|
||||||
watermark.selectText.7=Непрозрачность (0% - 100%):
|
watermark.selectText.7=Непрозрачность (0% - 100%):
|
||||||
watermark.selectText.8=Watermark Type:
|
watermark.selectText.8=Тип водяного знака:
|
||||||
watermark.selectText.9=Watermark Image:
|
watermark.selectText.9=Изображение водяного знака:
|
||||||
watermark.submit=Добавить водяной знак
|
watermark.submit=Добавить водяной знак
|
||||||
|
watermark.type.1=Текст
|
||||||
|
watermark.type.2=Изображение
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ pdfToPDFA.title=PDF в PDF/A
|
|||||||
pdfToPDFA.header=PDF в PDF/A
|
pdfToPDFA.header=PDF в PDF/A
|
||||||
pdfToPDFA.credit=Этот сервис использует OCRmyPDF для преобразования PDF/A
|
pdfToPDFA.credit=Этот сервис использует OCRmyPDF для преобразования PDF/A
|
||||||
pdfToPDFA.submit=Конвертировать
|
pdfToPDFA.submit=Конвертировать
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=Конвертировать
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF в HTML
|
PDFToHTML.title=PDF в HTML
|
||||||
PDFToHTML.header=PDF в HTML
|
PDFToHTML.header=PDF в HTML
|
||||||
PDFToHTML.credit=Этот сервис использует LibreOffice для преобразования файлов.
|
PDFToHTML.credit=Этот сервис использует pdftohtml для преобразования файлов.
|
||||||
PDFToHTML.submit=Конвертировать
|
PDFToHTML.submit=Конвертировать
|
||||||
|
|
||||||
|
|
||||||
@@ -920,54 +979,68 @@ PDFToXML.credit=Этот сервис использует LibreOffice для п
|
|||||||
PDFToXML.submit=Конвертировать
|
PDFToXML.submit=Конвертировать
|
||||||
|
|
||||||
#PDFToCSV
|
#PDFToCSV
|
||||||
PDFToCSV.title=PDF ? CSV
|
PDFToCSV.title=PDF в CSV
|
||||||
PDFToCSV.header=PDF ? CSV
|
PDFToCSV.header=PDF в CSV
|
||||||
PDFToCSV.prompt=Choose page to extract table
|
PDFToCSV.prompt=Выберите страницу для извлечения таблицы
|
||||||
PDFToCSV.submit=???????
|
PDFToCSV.submit=Извлечь
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
split-by-size-or-count.header=Split PDF by Size or Count
|
split-by-size-or-count.title=Разделить PDF по размеру или количеству
|
||||||
split-by-size-or-count.type.label=Select Split Type
|
split-by-size-or-count.header=Разделить PDF по размеру или количеству
|
||||||
split-by-size-or-count.type.size=By Size
|
split-by-size-or-count.type.label=Выберите тип разделения
|
||||||
split-by-size-or-count.type.pageCount=By Page Count
|
split-by-size-or-count.type.size=По размеру
|
||||||
split-by-size-or-count.type.docCount=By Document Count
|
split-by-size-or-count.type.pageCount=По количеству страниц
|
||||||
split-by-size-or-count.value.label=Enter Value
|
split-by-size-or-count.type.docCount=По количеству документов
|
||||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
split-by-size-or-count.value.label=Введите значение
|
||||||
split-by-size-or-count.submit=Submit
|
split-by-size-or-count.value.placeholder=Введите размер (например, 2MB или 3KB) или количество (например, 5)
|
||||||
|
split-by-size-or-count.submit=Отправить
|
||||||
|
|
||||||
|
|
||||||
#overlay-pdfs
|
#overlay-pdfs
|
||||||
overlay-pdfs.header=Overlay PDF Files
|
overlay-pdfs.header=Наложение файлов PDF
|
||||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
overlay-pdfs.baseFile.label=Выберите основной файл PDF
|
||||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
overlay-pdfs.overlayFiles.label=Выберите налагаемые файлы PDF
|
||||||
overlay-pdfs.mode.label=Select Overlay Mode
|
overlay-pdfs.mode.label=Выберите режим наложения
|
||||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
overlay-pdfs.mode.sequential=Последовательное наложение
|
||||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
overlay-pdfs.mode.interleaved=Перекрестное наложение
|
||||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
overlay-pdfs.mode.fixedRepeat=Наложение с фиксированным повторением
|
||||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
overlay-pdfs.counts.label=Количество наложений (для режима с фиксированным повторением)
|
||||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
overlay-pdfs.counts.placeholder=Введите через запятую количество повторений (например, 2,3,1)
|
||||||
overlay-pdfs.position.label=Select Overlay Position
|
overlay-pdfs.position.label=Выберите позицию наложения
|
||||||
overlay-pdfs.position.foreground=Foreground
|
overlay-pdfs.position.foreground=Поверх основного
|
||||||
overlay-pdfs.position.background=Background
|
overlay-pdfs.position.background=Позади основного
|
||||||
overlay-pdfs.submit=Submit
|
overlay-pdfs.submit=Отправить
|
||||||
|
|
||||||
|
|
||||||
#split-by-sections
|
#split-by-sections
|
||||||
split-by-sections.title=Split PDF by Sections
|
split-by-sections.title=Разделить PDF по разделам
|
||||||
split-by-sections.header=Split PDF into Sections
|
split-by-sections.header=Разделить PDF на секции
|
||||||
split-by-sections.horizontal.label=Horizontal Divisions
|
split-by-sections.horizontal.label=Горизонтальное деление
|
||||||
split-by-sections.vertical.label=Vertical Divisions
|
split-by-sections.vertical.label=Вертикальное деление
|
||||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
split-by-sections.horizontal.placeholder=Введите количество горизонтальных разделов
|
||||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
split-by-sections.vertical.placeholder=Введите количество вертикальных разделов
|
||||||
split-by-sections.submit=Split PDF
|
split-by-sections.submit=Разделить PDF
|
||||||
|
split-by-sections.merge=Объединить в один PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Лицензии
|
||||||
licenses.title=3rd Party Licenses
|
licenses.title=Лицензии от третьих сторон
|
||||||
licenses.header=3rd Party Licenses
|
licenses.header=Лицензии от третьих сторон
|
||||||
licenses.module=Module
|
licenses.module=Модуль
|
||||||
licenses.version=Version
|
licenses.version=Версия
|
||||||
licenses.license=License
|
licenses.license=Лицензия
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=Tačno
|
|||||||
false=Netačno
|
false=Netačno
|
||||||
unknown=Nepoznato
|
unknown=Nepoznato
|
||||||
save=Sačuvaj
|
save=Sačuvaj
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=Zatvori
|
close=Zatvori
|
||||||
filesSelected=odabrani fajlovi
|
filesSelected=odabrani fajlovi
|
||||||
noFavourites=Nema dodatih favorita
|
noFavourites=Nema dodatih favorita
|
||||||
@@ -53,6 +54,20 @@ notAuthenticatedMessage=Korisnik nije autentifikovan.
|
|||||||
userNotFoundMessage=Korisnik nije pronađen.
|
userNotFoundMessage=Korisnik nije pronađen.
|
||||||
incorrectPasswordMessage=Trenutna šifra je netačna.
|
incorrectPasswordMessage=Trenutna šifra je netačna.
|
||||||
usernameExistsMessage=Novi korisnik već postoji
|
usernameExistsMessage=Novi korisnik već postoji
|
||||||
|
invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers.
|
||||||
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
@@ -63,6 +78,8 @@ pipeline.uploadButton=Postavi prilagođeno
|
|||||||
pipeline.configureButton=Konfiguriši
|
pipeline.configureButton=Konfiguriši
|
||||||
pipeline.defaultOption=Prilagođeno
|
pipeline.defaultOption=Prilagođeno
|
||||||
pipeline.submitButton=Pošalji
|
pipeline.submitButton=Pošalji
|
||||||
|
pipeline.help=Pipeline Help
|
||||||
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=Podešavanja naloga
|
|||||||
|
|
||||||
changeCreds.title=Promeni pristupne podatke
|
changeCreds.title=Promeni pristupne podatke
|
||||||
changeCreds.header=Ažurirajte detalje svog naloga
|
changeCreds.header=Ažurirajte detalje svog naloga
|
||||||
changeCreds.changeUserAndPassword=Koristite podrazumevane prijavne podatke. Unesite novu lozinku (i korisničko ime ako želite)
|
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
||||||
changeCreds.newUsername=Novo korisničko ime
|
changeCreds.newUsername=Novo korisničko ime
|
||||||
changeCreds.oldPassword=Trenutna lozinka
|
changeCreds.oldPassword=Trenutna lozinka
|
||||||
changeCreds.newPassword=Nova lozinka
|
changeCreds.newPassword=Nova lozinka
|
||||||
@@ -143,12 +160,15 @@ adminUserSettings.header=Podešavanja kontrole korisnika za administratora
|
|||||||
adminUserSettings.admin=Administrator
|
adminUserSettings.admin=Administrator
|
||||||
adminUserSettings.user=Korisnik
|
adminUserSettings.user=Korisnik
|
||||||
adminUserSettings.addUser=Dodaj novog korisnika
|
adminUserSettings.addUser=Dodaj novog korisnika
|
||||||
|
adminUserSettings.usernameInfo=Username must only contain letters and numbers, no spaces or special characters.
|
||||||
adminUserSettings.roles=Uloge
|
adminUserSettings.roles=Uloge
|
||||||
adminUserSettings.role=Uloga
|
adminUserSettings.role=Uloga
|
||||||
adminUserSettings.actions=Akcije
|
adminUserSettings.actions=Akcije
|
||||||
adminUserSettings.apiUser=Korisnik s ograničenim API pristupom
|
adminUserSettings.apiUser=Korisnik s ograničenim API pristupom
|
||||||
|
adminUserSettings.extraApiUser=Additional Limited API User
|
||||||
adminUserSettings.webOnlyUser=Korisnik samo za web
|
adminUserSettings.webOnlyUser=Korisnik samo za web
|
||||||
adminUserSettings.demoUser=Demo korisnik (Bez prilagođenih podešavanja)
|
adminUserSettings.demoUser=Demo korisnik (Bez prilagođenih podešavanja)
|
||||||
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
adminUserSettings.forceChange=Prisili korisnika da promeni korisničko ime/lozinku pri prijavi
|
adminUserSettings.forceChange=Prisili korisnika da promeni korisničko ime/lozinku pri prijavi
|
||||||
adminUserSettings.submit=Sačuvaj korisnika
|
adminUserSettings.submit=Sačuvaj korisnika
|
||||||
|
|
||||||
@@ -393,6 +413,15 @@ home.AddStampRequest.desc=Add text or add image stamps at set locations
|
|||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF to Book
|
||||||
|
home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Book to PDF
|
||||||
|
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Prijavite se
|
login.title=Prijavite se
|
||||||
|
login.header=Prijavite se
|
||||||
login.signin=Prijavite se
|
login.signin=Prijavite se
|
||||||
login.rememberme=Zapamti me
|
login.rememberme=Zapamti me
|
||||||
login.invalid=Neispravno korisničko ime ili lozinka.
|
login.invalid=Neispravno korisničko ime ili lozinka.
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=Konvertuj u Jednu Stranicu
|
|||||||
pageExtracter.title=Izdvajanje stranica
|
pageExtracter.title=Izdvajanje stranica
|
||||||
pageExtracter.header=Izdvajanje stranica
|
pageExtracter.header=Izdvajanje stranica
|
||||||
pageExtracter.submit=Izdvoji
|
pageExtracter.submit=Izdvoji
|
||||||
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=Dokument 1
|
|||||||
compare.document.2=Dokument 2
|
compare.document.2=Dokument 2
|
||||||
compare.submit=Uporedi
|
compare.submit=Uporedi
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Books and Comics to PDF
|
||||||
|
BookToPDF.header=Book to PDF
|
||||||
|
BookToPDF.credit=Uses Calibre
|
||||||
|
BookToPDF.submit=Convert
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF to Book
|
||||||
|
PDFToBook.header=PDF to Book
|
||||||
|
PDFToBook.selectText.1=Format
|
||||||
|
PDFToBook.credit=Uses Calibre
|
||||||
|
PDFToBook.submit=Convert
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Potpiši
|
sign.title=Potpiši
|
||||||
@@ -727,11 +770,23 @@ merge.submit=Spajanje
|
|||||||
pdfOrganiser.title=Organizator stranica
|
pdfOrganiser.title=Organizator stranica
|
||||||
pdfOrganiser.header=Organizator stranica u PDF-u
|
pdfOrganiser.header=Organizator stranica u PDF-u
|
||||||
pdfOrganiser.submit=Preuredi stranice
|
pdfOrganiser.submit=Preuredi stranice
|
||||||
|
pdfOrganiser.mode=Mode
|
||||||
|
pdfOrganiser.mode.1=Custom Page Order
|
||||||
|
pdfOrganiser.mode.2=Reverse Order
|
||||||
|
pdfOrganiser.mode.3=Duplex Sort
|
||||||
|
pdfOrganiser.mode.4=Booklet Sort
|
||||||
|
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
||||||
|
pdfOrganiser.mode.6=Odd-Even Split
|
||||||
|
pdfOrganiser.mode.7=Remove First
|
||||||
|
pdfOrganiser.mode.8=Remove Last
|
||||||
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=PDF Multi Alatka
|
multiTool.title=PDF Multi Alatka
|
||||||
multiTool.header=PDF Multi Alatka
|
multiTool.header=PDF Multi Alatka
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=Prikaz
|
viewPdf.title=Prikaz
|
||||||
@@ -742,6 +797,7 @@ pageRemover.title=Uklanjanje stranica
|
|||||||
pageRemover.header=Uklanjanje stranica iz PDF-a
|
pageRemover.header=Uklanjanje stranica iz PDF-a
|
||||||
pageRemover.pagesToDelete=Stranice za brisanje (Unesite listu brojeva stranica odvojenih zarezima) :
|
pageRemover.pagesToDelete=Stranice za brisanje (Unesite listu brojeva stranica odvojenih zarezima) :
|
||||||
pageRemover.submit=Obriši stranice
|
pageRemover.submit=Obriši stranice
|
||||||
|
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=Izaberite ugao rotacije (u višestrukim od 90 stepeni):
|
|||||||
rotate.submit=Rotiraj
|
rotate.submit=Rotiraj
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=Razdvajanje PDF-a
|
split.title=Razdvajanje PDF-a
|
||||||
split.header=Razdvajanje PDF-a
|
split.header=Razdvajanje PDF-a
|
||||||
split.desc.1=Brojevi koje izaberete predstavljaju brojeve stranica na kojima želite napraviti razdvajanje
|
split.desc.1=Brojevi koje izaberete predstavljaju brojeve stranica na kojima želite napraviti razdvajanje
|
||||||
split.desc.2=Na primer, izbor 1,3,7-8 bi razdvojio dokument od 10 stranica u 6 odvojenih PDF-a sa:
|
split.desc.2=Na primer, izbor 1,3,7-9 bi razdvojio dokument od 10 stranica u 6 odvojenih PDF-a sa:
|
||||||
split.desc.3=Dokument #1: Stranica 1
|
split.desc.3=Dokument #1: Stranica 1
|
||||||
split.desc.4=Dokument #2: Stranice 2 i 3
|
split.desc.4=Dokument #2: Stranice 2 i 3
|
||||||
split.desc.5=Dokument #3: Stranice 4, 5 i 6
|
split.desc.5=Dokument #3: Stranice 4, 5, 6 i 7
|
||||||
split.desc.6=Dokument #4: Stranica 7
|
split.desc.6=Dokument #4: Stranica 8
|
||||||
split.desc.7=Dokument #5: Stranica 8
|
split.desc.7=Dokument #5: Stranica 9
|
||||||
split.desc.8=Dokument #6: Stranice 9 i 10
|
split.desc.8=Dokument #6: Stranice 10
|
||||||
split.splitPages=Unesite stranice za razdvajanje:
|
split.splitPages=Unesite stranice za razdvajanje:
|
||||||
split.submit=Razdvoji
|
split.submit=Razdvoji
|
||||||
|
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=Opačitost (0% - 100%):
|
|||||||
watermark.selectText.8=Tip vodenog žiga:
|
watermark.selectText.8=Tip vodenog žiga:
|
||||||
watermark.selectText.9=Slika vodenog žiga:
|
watermark.selectText.9=Slika vodenog žiga:
|
||||||
watermark.submit=Dodaj vodeni žig
|
watermark.submit=Dodaj vodeni žig
|
||||||
|
watermark.type.1=Text
|
||||||
|
watermark.type.2=Image
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ pdfToPDFA.title=PDF u PDF/A
|
|||||||
pdfToPDFA.header=PDF u PDF/A
|
pdfToPDFA.header=PDF u PDF/A
|
||||||
pdfToPDFA.credit=Ova usluga koristi OCRmyPDF za konverziju u PDF/A format
|
pdfToPDFA.credit=Ova usluga koristi OCRmyPDF za konverziju u PDF/A format
|
||||||
pdfToPDFA.submit=Konvertuj
|
pdfToPDFA.submit=Konvertuj
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=Konvertuj
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF u HTML
|
PDFToHTML.title=PDF u HTML
|
||||||
PDFToHTML.header=PDF u HTML
|
PDFToHTML.header=PDF u HTML
|
||||||
PDFToHTML.credit=Ova usluga koristi LibreOffice za konverziju fajlova.
|
PDFToHTML.credit=Ova usluga koristi pdftohtml za konverziju fajlova.
|
||||||
PDFToHTML.submit=Konvertuj
|
PDFToHTML.submit=Konvertuj
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=Izaberite stranicu za ekstrakciju tabele
|
|||||||
PDFToCSV.submit=Izvuci
|
PDFToCSV.submit=Izvuci
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=Razdvoji PDF po veličini ili broju
|
||||||
split-by-size-or-count.header=Razdvoji PDF po veličini ili broju
|
split-by-size-or-count.header=Razdvoji PDF po veličini ili broju
|
||||||
split-by-size-or-count.type.label=Izaberite tip razdvajanja
|
split-by-size-or-count.type.label=Izaberite tip razdvajanja
|
||||||
split-by-size-or-count.type.size=Po veličini
|
split-by-size-or-count.type.size=Po veličini
|
||||||
@@ -960,7 +1020,7 @@ split-by-sections.vertical.label=Vertikalne podele
|
|||||||
split-by-sections.horizontal.placeholder=Unesite broj horizontalnih podele
|
split-by-sections.horizontal.placeholder=Unesite broj horizontalnih podele
|
||||||
split-by-sections.vertical.placeholder=Unesite broj vertikalnih podele
|
split-by-sections.vertical.placeholder=Unesite broj vertikalnih podele
|
||||||
split-by-sections.submit=Razdvoji PDF
|
split-by-sections.submit=Razdvoji PDF
|
||||||
|
split-by-sections.merge=Merge Into One PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Licenses
|
||||||
@@ -971,3 +1031,16 @@ licenses.version=Version
|
|||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=True
|
|||||||
false=Falskt
|
false=Falskt
|
||||||
unknown=Okänt
|
unknown=Okänt
|
||||||
save=Spara
|
save=Spara
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=Stäng
|
close=Stäng
|
||||||
filesSelected=filer valda
|
filesSelected=filer valda
|
||||||
noFavourites=Inga favoriter har lagts till
|
noFavourites=Inga favoriter har lagts till
|
||||||
@@ -53,16 +54,32 @@ notAuthenticatedMessage=User not authenticated.
|
|||||||
userNotFoundMessage=User not found.
|
userNotFoundMessage=User not found.
|
||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Current password is incorrect.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=New Username already exists.
|
||||||
|
invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers.
|
||||||
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=Pipeline Menu (Beta)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=Upload Custom
|
||||||
pipeline.configureButton=Configure
|
pipeline.configureButton=Configure
|
||||||
pipeline.defaultOption=Custom
|
pipeline.defaultOption=Custom
|
||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
|
pipeline.help=Pipeline Help
|
||||||
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=Account Settings
|
|||||||
|
|
||||||
changeCreds.title=Change Credentials
|
changeCreds.title=Change Credentials
|
||||||
changeCreds.header=Update Your Account Details
|
changeCreds.header=Update Your Account Details
|
||||||
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted)
|
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
||||||
changeCreds.newUsername=New Username
|
changeCreds.newUsername=New Username
|
||||||
changeCreds.oldPassword=Current Password
|
changeCreds.oldPassword=Current Password
|
||||||
changeCreds.newPassword=New Password
|
changeCreds.newPassword=New Password
|
||||||
@@ -143,13 +160,16 @@ adminUserSettings.header=Admin User Control Settings
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=User
|
adminUserSettings.user=User
|
||||||
adminUserSettings.addUser=Add New User
|
adminUserSettings.addUser=Add New User
|
||||||
|
adminUserSettings.usernameInfo=Username must only contain letters and numbers, no spaces or special characters.
|
||||||
adminUserSettings.roles=Roles
|
adminUserSettings.roles=Roles
|
||||||
adminUserSettings.role=Role
|
adminUserSettings.role=Role
|
||||||
adminUserSettings.actions=Actions
|
adminUserSettings.actions=Actions
|
||||||
adminUserSettings.apiUser=Limited API User
|
adminUserSettings.apiUser=Limited API User
|
||||||
|
adminUserSettings.extraApiUser=Additional Limited API User
|
||||||
adminUserSettings.webOnlyUser=Web Only User
|
adminUserSettings.webOnlyUser=Web Only User
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=Demo User (No custom settings)
|
||||||
adminUserSettings.forceChange=Force user to change username/password on login
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
|
adminUserSettings.forceChange=Force user to change password on login
|
||||||
adminUserSettings.submit=Save User
|
adminUserSettings.submit=Save User
|
||||||
|
|
||||||
#############
|
#############
|
||||||
@@ -393,6 +413,15 @@ home.AddStampRequest.desc=Add text or add image stamps at set locations
|
|||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF to Book
|
||||||
|
home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
|
||||||
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=Book to PDF
|
||||||
|
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
|
||||||
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Sign in
|
login.title=Sign in
|
||||||
|
login.header=Sign in
|
||||||
login.signin=Sign in
|
login.signin=Sign in
|
||||||
login.rememberme=Remember me
|
login.rememberme=Remember me
|
||||||
login.invalid=Invalid username or password.
|
login.invalid=Invalid username or password.
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=Convert To Single Page
|
|||||||
pageExtracter.title=Extract Pages
|
pageExtracter.title=Extract Pages
|
||||||
pageExtracter.header=Extract Pages
|
pageExtracter.header=Extract Pages
|
||||||
pageExtracter.submit=Extract
|
pageExtracter.submit=Extract
|
||||||
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=Dokument 1
|
|||||||
compare.document.2=Dokument 2
|
compare.document.2=Dokument 2
|
||||||
compare.submit=Jämför
|
compare.submit=Jämför
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Books and Comics to PDF
|
||||||
|
BookToPDF.header=Book to PDF
|
||||||
|
BookToPDF.credit=Uses Calibre
|
||||||
|
BookToPDF.submit=Convert
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF to Book
|
||||||
|
PDFToBook.header=PDF to Book
|
||||||
|
PDFToBook.selectText.1=Format
|
||||||
|
PDFToBook.credit=Uses Calibre
|
||||||
|
PDFToBook.submit=Convert
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Signera
|
sign.title=Signera
|
||||||
@@ -727,11 +770,23 @@ merge.submit=Slå samman
|
|||||||
pdfOrganiser.title=Sidorganisatör
|
pdfOrganiser.title=Sidorganisatör
|
||||||
pdfOrganiser.header=PDF-sidorganisatör
|
pdfOrganiser.header=PDF-sidorganisatör
|
||||||
pdfOrganiser.submit=Ordna om sidor
|
pdfOrganiser.submit=Ordna om sidor
|
||||||
|
pdfOrganiser.mode=Mode
|
||||||
|
pdfOrganiser.mode.1=Custom Page Order
|
||||||
|
pdfOrganiser.mode.2=Reverse Order
|
||||||
|
pdfOrganiser.mode.3=Duplex Sort
|
||||||
|
pdfOrganiser.mode.4=Booklet Sort
|
||||||
|
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
||||||
|
pdfOrganiser.mode.6=Odd-Even Split
|
||||||
|
pdfOrganiser.mode.7=Remove First
|
||||||
|
pdfOrganiser.mode.8=Remove Last
|
||||||
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=PDF-multiverktyg
|
multiTool.title=PDF-multiverktyg
|
||||||
multiTool.header=PDF Multi-verktyg
|
multiTool.header=PDF Multi-verktyg
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=View PDF
|
viewPdf.title=View PDF
|
||||||
@@ -742,6 +797,7 @@ pageRemover.title=Sidborttagare
|
|||||||
pageRemover.header=PDF Sidborttagning
|
pageRemover.header=PDF Sidborttagning
|
||||||
pageRemover.pagesToDelete=Sidor att radera (Ange en kommaseparerad lista med sidnummer) :
|
pageRemover.pagesToDelete=Sidor att radera (Ange en kommaseparerad lista med sidnummer) :
|
||||||
pageRemover.submit=Ta bort sidor
|
pageRemover.submit=Ta bort sidor
|
||||||
|
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=Välj rotationsvinkel (i multipler av 90 grader):
|
|||||||
rotate.submit=Rotera
|
rotate.submit=Rotera
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=Dela upp PDF
|
split.title=Dela upp PDF
|
||||||
split.header=Dela upp PDF
|
split.header=Dela upp PDF
|
||||||
split.desc.1=Siffrorna du väljer är sidnumret du vill göra en split på
|
split.desc.1=Siffrorna du väljer är sidnumret du vill göra en split på
|
||||||
split.desc.2=Som sådan skulle ett val av 1,3,7-8 dela upp ett 10-sidigt dokument i 6 separata PDF-filer med:
|
split.desc.2=Som sådan skulle ett val av 1,3,7-9 dela upp ett 10-sidigt dokument i 6 separata PDF-filer med:
|
||||||
split.desc.3=Dokument #1: Sida 1
|
split.desc.3=Dokument #1: Sida 1
|
||||||
split.desc.4=Dokument #2: Sida 2 och 3
|
split.desc.4=Dokument #2: Sida 2 och 3
|
||||||
split.desc.5=Dokument #3: Sida 4, 5 och 6
|
split.desc.5=Dokument #3: Sida 4, 5, 6 och 7
|
||||||
split.desc.6=Dokument #4: Sida 7
|
split.desc.6=Dokument #4: Sida 8
|
||||||
split.desc.7=Dokument #5: Sida 8
|
split.desc.7=Dokument #5: Sida 9
|
||||||
split.desc.8=Dokument #6: Sida 9 och 10
|
split.desc.8=Dokument #6: Sida 10
|
||||||
split.splitPages=Ange sidor att dela på:
|
split.splitPages=Ange sidor att dela på:
|
||||||
split.submit=Dela
|
split.submit=Dela
|
||||||
|
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=Opacitet (0% - 100%):
|
|||||||
watermark.selectText.8=Watermark Type:
|
watermark.selectText.8=Watermark Type:
|
||||||
watermark.selectText.9=Watermark Image:
|
watermark.selectText.9=Watermark Image:
|
||||||
watermark.submit=Lägg till vattenstämpel
|
watermark.submit=Lägg till vattenstämpel
|
||||||
|
watermark.type.1=Text
|
||||||
|
watermark.type.2=Image
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ 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 OCRmyPDF för PDF/A-konvertering
|
pdfToPDFA.credit=Denna tjänst använder OCRmyPDF för PDF/A-konvertering
|
||||||
pdfToPDFA.submit=Konvertera
|
pdfToPDFA.submit=Konvertera
|
||||||
|
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=Konvertera
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF till HTML
|
PDFToHTML.title=PDF till HTML
|
||||||
PDFToHTML.header=PDF till HTML
|
PDFToHTML.header=PDF till HTML
|
||||||
PDFToHTML.credit=Denna tjänst använder LibreOffice för filkonvertering.
|
PDFToHTML.credit=Denna tjänst använder pdftohtml för filkonvertering.
|
||||||
PDFToHTML.submit=Konvertera
|
PDFToHTML.submit=Konvertera
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=Choose page to extract table
|
|||||||
PDFToCSV.submit=Navvit
|
PDFToCSV.submit=Navvit
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=Split PDF by Size or Count
|
||||||
split-by-size-or-count.header=Split PDF by Size or Count
|
split-by-size-or-count.header=Split PDF by Size or Count
|
||||||
split-by-size-or-count.type.label=Select Split Type
|
split-by-size-or-count.type.label=Select Split Type
|
||||||
split-by-size-or-count.type.size=By Size
|
split-by-size-or-count.type.size=By Size
|
||||||
@@ -960,7 +1020,7 @@ split-by-sections.vertical.label=Vertical Divisions
|
|||||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||||
split-by-sections.submit=Split PDF
|
split-by-sections.submit=Split PDF
|
||||||
|
split-by-sections.merge=Merge Into One PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Licenses
|
||||||
@@ -971,3 +1031,16 @@ licenses.version=Version
|
|||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
@@ -11,16 +11,17 @@ imgPrompt=Resim(leri) seçin
|
|||||||
genericSubmit=Gönder
|
genericSubmit=Gönder
|
||||||
processTimeWarning=Uyarı: Bu işlem, dosya boyutuna bağlı olarak bir dakikaya kadar sürebilir.
|
processTimeWarning=Uyarı: Bu işlem, dosya boyutuna bağlı olarak bir dakikaya kadar sürebilir.
|
||||||
pageOrderPrompt=Özel Sayfa Sırası (Virgülle ayrılmış sayfa numaraları veya 2n+1 gibi bir fonksiyon girin) :
|
pageOrderPrompt=Özel Sayfa Sırası (Virgülle ayrılmış sayfa numaraları veya 2n+1 gibi bir fonksiyon girin) :
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
pageSelectionPrompt=Özel Sayfa Seçimi (1,5,6 sayfa numaralarının virgülle ayrılmış bir listesini veya 2n+1 gibi bir fonksiyon girin) :
|
||||||
goToPage=Git
|
goToPage=Git
|
||||||
true=Doğru
|
true=Doğru
|
||||||
false=Yanlış
|
false=Yanlış
|
||||||
unknown=Bilinmeyen
|
unknown=Bilinmeyen
|
||||||
save=Kaydet
|
save=Kaydet
|
||||||
|
saveToBrowser=Tarayıcıya Kaydet
|
||||||
close=Kapat
|
close=Kapat
|
||||||
filesSelected=dosya seçildi
|
filesSelected=dosya seçildi
|
||||||
noFavourites=Favori eklenmedi
|
noFavourites=Favori eklenmedi
|
||||||
downloadComplete=Download Complete
|
downloadComplete=İndirme Tamamlandı
|
||||||
bored=Sıkıldınız mı?
|
bored=Sıkıldınız mı?
|
||||||
alphabet=Alfabe
|
alphabet=Alfabe
|
||||||
downloadPdf=PDF İndir
|
downloadPdf=PDF İndir
|
||||||
@@ -44,38 +45,54 @@ red=Kırmızı
|
|||||||
green=Yeşil
|
green=Yeşil
|
||||||
blue=Mavi
|
blue=Mavi
|
||||||
custom=Özel
|
custom=Özel
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Çalışmalar devam ediyor, Çalışmayabilir veya hatalı olabilir, Lütfen herhangi bir sorunu bildirin!
|
||||||
poweredBy=Powered by
|
poweredBy=Tarafından desteklenmektedir
|
||||||
yes=Yes
|
yes=Evet
|
||||||
no=No
|
no=Hayır
|
||||||
changedCredsMessage=Bilgiler değiştirildi!
|
changedCredsMessage=Bilgiler değiştirildi!
|
||||||
notAuthenticatedMessage=Kullanıcı doğrulanmadı.
|
notAuthenticatedMessage=Kullanıcı doğrulanmadı.
|
||||||
userNotFoundMessage=Kullanıcı bulunamadı.
|
userNotFoundMessage=Kullanıcı bulunamadı.
|
||||||
incorrectPasswordMessage=Mevcut şifre yanlış.
|
incorrectPasswordMessage=Mevcut şifre yanlış.
|
||||||
usernameExistsMessage=Yeni Kullanıcı Adı zaten var.
|
usernameExistsMessage=Yeni Kullanıcı Adı zaten var.
|
||||||
|
invalidUsernameMessage=Geçersiz kullanıcı adı, Kullanıcı adı yalnızca alfabe karakterleri ve sayılar içermelidir.
|
||||||
|
deleteCurrentUserMessage=Şu anda oturum açmış olan kullanıcı silinemiyor.
|
||||||
|
deleteUsernameExistsMessage=Kullanıcı adı mevcut değil ve silinemez.
|
||||||
|
error=Hata
|
||||||
|
oops=Tüh!
|
||||||
|
help=Yardım
|
||||||
|
goHomepage=Anasayfa'ya git
|
||||||
|
joinDiscord=Discord sunucumuza katılın
|
||||||
|
seeDockerHub=Docker Hub'a bakın
|
||||||
|
visitGithub=Github Deposunu Ziyaret Edin
|
||||||
|
donate=Bağış Yapın
|
||||||
|
color=Renk
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=Pipeline Menü (Beta)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=Upload edin
|
||||||
pipeline.configureButton=Configure
|
pipeline.configureButton=Yapılandır
|
||||||
pipeline.defaultOption=Custom
|
pipeline.defaultOption=Özel
|
||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Gönder
|
||||||
|
pipeline.help=Pipeline Yardım
|
||||||
|
pipeline.scanHelp=Klasör Tarama Yardımı
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
######################
|
######################
|
||||||
pipelineOptions.header=Pipeline Configuration
|
pipelineOptions.header=Pipeline Yapılandırma
|
||||||
pipelineOptions.pipelineNameLabel=Pipeline Name
|
pipelineOptions.pipelineNameLabel=Pipeline İsim
|
||||||
pipelineOptions.saveSettings=Save Operation Settings
|
pipelineOptions.saveSettings=Ayarları Kaydet
|
||||||
pipelineOptions.pipelineNamePrompt=Enter pipeline name here
|
pipelineOptions.pipelineNamePrompt=Buraya isim girin
|
||||||
pipelineOptions.selectOperation=Select Operation
|
pipelineOptions.selectOperation=İşlem Seçin
|
||||||
pipelineOptions.addOperationButton=Add operation
|
pipelineOptions.addOperationButton=İşlem ekle
|
||||||
pipelineOptions.pipelineHeader=Pipeline:
|
pipelineOptions.pipelineHeader=Pipeline:
|
||||||
pipelineOptions.saveButton=Download
|
pipelineOptions.saveButton=İndir
|
||||||
pipelineOptions.validateButton=Validate
|
pipelineOptions.validateButton=Doğrula
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=Hesap Ayarları
|
|||||||
|
|
||||||
changeCreds.title=Giriş Bilgilerini Değiştir
|
changeCreds.title=Giriş Bilgilerini Değiştir
|
||||||
changeCreds.header=Hesap Detaylarınızı Güncelleyin
|
changeCreds.header=Hesap Detaylarınızı Güncelleyin
|
||||||
changeCreds.changeUserAndPassword=Varsayılan giriş bilgilerini kullanıyorsunuz. Lütfen yeni bir şifre (ve istenirse kullanıcı adı) girin
|
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
||||||
changeCreds.newUsername=Yeni Kullanıcı Adı
|
changeCreds.newUsername=Yeni Kullanıcı Adı
|
||||||
changeCreds.oldPassword=Mevcut Şifre
|
changeCreds.oldPassword=Mevcut Şifre
|
||||||
changeCreds.newPassword=Yeni Şifre
|
changeCreds.newPassword=Yeni Şifre
|
||||||
@@ -143,12 +160,15 @@ adminUserSettings.header=Yönetici Kullanıcı Kontrol Ayarları
|
|||||||
adminUserSettings.admin=Yönetici
|
adminUserSettings.admin=Yönetici
|
||||||
adminUserSettings.user=Kullanıcı
|
adminUserSettings.user=Kullanıcı
|
||||||
adminUserSettings.addUser=Yeni Kullanıcı Ekle
|
adminUserSettings.addUser=Yeni Kullanıcı Ekle
|
||||||
|
adminUserSettings.usernameInfo=Kullanıcı adı yalnızca harf ve rakamlardan oluşmalı, boşluk veya özel karakter içermemelidir.
|
||||||
adminUserSettings.roles=Roller
|
adminUserSettings.roles=Roller
|
||||||
adminUserSettings.role=Rol
|
adminUserSettings.role=Rol
|
||||||
adminUserSettings.actions=Eylemler
|
adminUserSettings.actions=Eylemler
|
||||||
adminUserSettings.apiUser=Sınırlı API Kullanıcısı
|
adminUserSettings.apiUser=Sınırlı API Kullanıcısı
|
||||||
|
adminUserSettings.extraApiUser=Ek Sınırlı API Kullanıcısı
|
||||||
adminUserSettings.webOnlyUser=Sadece Web Kullanıcısı
|
adminUserSettings.webOnlyUser=Sadece Web Kullanıcısı
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=Demo Kullanıcısı (Özel ayar yok)
|
||||||
|
adminUserSettings.internalApiUser=Dahili API Kullanıcısı
|
||||||
adminUserSettings.forceChange=Kullanıcının girişte kullanıcı adı/şifre değiştirmesini zorla
|
adminUserSettings.forceChange=Kullanıcının girişte kullanıcı adı/şifre değiştirmesini zorla
|
||||||
adminUserSettings.submit=Kullanıcıyı Kaydet
|
adminUserSettings.submit=Kullanıcıyı Kaydet
|
||||||
|
|
||||||
@@ -156,12 +176,12 @@ adminUserSettings.submit=Kullanıcıyı Kaydet
|
|||||||
# HOME-PAGE #
|
# HOME-PAGE #
|
||||||
#############
|
#############
|
||||||
home.desc=Yerel olarak barındırılan tüm PDF ihtiyaçlarınız için tek durak noktanız.
|
home.desc=Yerel olarak barındırılan tüm PDF ihtiyaçlarınız için tek durak noktanız.
|
||||||
home.searchBar=Search for features...
|
home.searchBar=Özellikleri arayın...
|
||||||
|
|
||||||
|
|
||||||
home.viewPdf.title=View PDF
|
home.viewPdf.title=PDF Görüntüle
|
||||||
home.viewPdf.desc=View, annotate, add text or images
|
home.viewPdf.desc=Görüntüleyin, açıklama ekleyin, metin veya resim ekleyin
|
||||||
viewPdf.tags=view,read,annotate,text,image
|
viewPdf.tags=görüntüle,oku,açıklama ekle,metin,görüntü
|
||||||
|
|
||||||
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
|
||||||
@@ -285,9 +305,9 @@ home.removeBlanks.title=Boş Sayfaları Kaldır
|
|||||||
home.removeBlanks.desc=Bir belgeden boş sayfaları tespit eder ve kaldırır
|
home.removeBlanks.desc=Bir belgeden boş sayfaları tespit eder ve kaldırır
|
||||||
removeBlanks.tags=temizle,sadeleştir,içeriksiz,düzenle
|
removeBlanks.tags=temizle,sadeleştir,içeriksiz,düzenle
|
||||||
|
|
||||||
home.removeAnnotations.title=Remove Annotations
|
home.removeAnnotations.title=Ek Açıklamaları Kaldır
|
||||||
home.removeAnnotations.desc=Removes all comments/annotations from a PDF
|
home.removeAnnotations.desc=PDF'deki tüm yorumları/açıklamaları kaldırır
|
||||||
removeAnnotations.tags=comments,highlight,notes,markup,remove
|
removeAnnotations.tags=yorumlar,vurgulama,notlar,işaretleme,kaldırma
|
||||||
|
|
||||||
home.compare.title=Karşılaştır
|
home.compare.title=Karşılaştır
|
||||||
home.compare.desc=2 PDF Belgesi arasındaki farkları karşılaştırır ve gösterir
|
home.compare.desc=2 PDF Belgesi arasındaki farkları karşılaştırır ve gösterir
|
||||||
@@ -370,27 +390,36 @@ home.autoRedact.title=Otomatik Karartma
|
|||||||
home.autoRedact.desc=Giriş metnine dayanarak bir PDF'teki metni Otomatik Karartır (Redakte)
|
home.autoRedact.desc=Giriş metnine dayanarak bir PDF'teki metni Otomatik Karartır (Redakte)
|
||||||
autoRedact.tags=Karart,Gizle,karartma,siyah,markör,gizli
|
autoRedact.tags=Karart,Gizle,karartma,siyah,markör,gizli
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF'den CSV'ye
|
||||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
home.tableExtraxt.desc=PDF'den Tabloları çıkarır ve CSV'ye dönüştürür
|
||||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
tableExtraxt.tags=CSV, Tablo Çıkarma, ayıklama, dönüştürme
|
||||||
|
|
||||||
|
|
||||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
home.autoSizeSplitPDF.title=Boyut/Sayıya Göre Otomatik Bölme
|
||||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
home.autoSizeSplitPDF.desc=Tek bir PDF'yi boyut, sayfa sayısı veya belge sayısına göre birden fazla belgeye bölün
|
||||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
autoSizeSplitPDF.tags=pdf,bölme,belge,organizasyon
|
||||||
|
|
||||||
|
|
||||||
home.overlay-pdfs.title=Overlay PDFs
|
home.overlay-pdfs.title=PDF'leri Bindirme
|
||||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
home.overlay-pdfs.desc=PDF'leri başka bir PDF'nin üzerine bindirir
|
||||||
overlay-pdfs.tags=Overlay
|
overlay-pdfs.tags=Bindirme
|
||||||
|
|
||||||
home.split-by-sections.title=Split PDF by Sections
|
home.split-by-sections.title=PDF'yi Bölümlere Ayırma
|
||||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
home.split-by-sections.desc=PDF'nin her sayfasını daha küçük yatay ve dikey bölümlere ayırın
|
||||||
split-by-sections.tags=Section Split, Divide, Customize
|
split-by-sections.tags=Bölümlere Ayırma, Bölme, Özelleştirme
|
||||||
|
|
||||||
home.AddStampRequest.title=Add Stamp to PDF
|
home.AddStampRequest.title=PDF'ye Damga Ekleme
|
||||||
home.AddStampRequest.desc=Add text or add image stamps at set locations
|
home.AddStampRequest.desc=Belirlenen konumlara metin veya resim damgaları ekleyin
|
||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=Damga, Görüntü ekle, Görüntüyü ortala, Filigran, PDF, Göm, Özelleştir
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF'den Kitaba
|
||||||
|
home.PDFToBook.desc=Calibre kullanarak PDF'yi Kitap/Komik formatlarına dönüştürür
|
||||||
|
PDFToBook.tags=Kitap,Çizgi Roman,Calibre,Dönüştür,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf
|
||||||
|
|
||||||
|
home.BookToPDF.title=Kitaptan PDF'ye
|
||||||
|
home.BookToPDF.desc=calibre kullanarak Kitap/Karikatür formatlarını PDF'ye dönüştürür
|
||||||
|
BookToPDF.tags=Kitap,Çizgi Roman,Calibre,Dönüştür,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=Giriş Yap
|
login.title=Giriş Yap
|
||||||
|
login.header=Giriş Yap
|
||||||
login.signin=Giriş Yap
|
login.signin=Giriş Yap
|
||||||
login.rememberme=Beni hatırla
|
login.rememberme=Beni hatırla
|
||||||
login.invalid=Geçersiz kullanıcı adı veya şifre.
|
login.invalid=Geçersiz kullanıcı adı veya şifre.
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=Tek Sayfaya Dönüştür
|
|||||||
pageExtracter.title=Sayfaları Çıkar
|
pageExtracter.title=Sayfaları Çıkar
|
||||||
pageExtracter.header=Sayfaları Çıkar
|
pageExtracter.header=Sayfaları Çıkar
|
||||||
pageExtracter.submit=Çıkar
|
pageExtracter.submit=Çıkar
|
||||||
|
pageExtracter.placeholder=(örneğin 1,2,8 veya 4,7,12-16 ya da 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -468,37 +499,37 @@ HTMLToPDF.header=HTML'den PDF'e
|
|||||||
HTMLToPDF.help=HTML dosyalarını ve html/css/görsel vb. içeren ZIP'leri kabul eder
|
HTMLToPDF.help=HTML dosyalarını ve html/css/görsel vb. içeren ZIP'leri kabul eder
|
||||||
HTMLToPDF.submit=Dönüştür
|
HTMLToPDF.submit=Dönüştür
|
||||||
HTMLToPDF.credit=WeasyPrint Kullanıyor
|
HTMLToPDF.credit=WeasyPrint Kullanıyor
|
||||||
HTMLToPDF.zoom=Zoom level for displaying the website.
|
HTMLToPDF.zoom=Web sitesini görüntülemek için yakınlaştırma düzeyi.
|
||||||
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
|
HTMLToPDF.pageWidth=Sayfanın santimetre cinsinden genişliği. (Varsayılan olarak boş)
|
||||||
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
|
HTMLToPDF.pageHeight=Sayfanın santimetre cinsinden yüksekliği. (Varsayılan olarak boş)
|
||||||
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginTop=Sayfanın milimetre cinsinden üst kenar boşluğu. (Varsayılan olarak boş)
|
||||||
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginBottom=Sayfanın milimetre cinsinden alt kenar boşluğu. (Varsayılan olarak boş)
|
||||||
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginLeft=Sayfanın milimetre cinsinden sol kenar boşluğu. (Varsayılan olarak boş)
|
||||||
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginRight=Sayfanın milimetre cinsinden sağ kenar boşluğu. (Varsayılan olarak boş)
|
||||||
HTMLToPDF.printBackground=Render the background of websites.
|
HTMLToPDF.printBackground=Web sitelerinin arka planını oluşturun.
|
||||||
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
|
HTMLToPDF.defaultHeader=Varsayılan Üstbilgiyi Etkinleştir (Ad ve sayfa numarası)
|
||||||
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
|
HTMLToPDF.cssMediaType=Sayfanın CSS ortam türünü değiştirin.
|
||||||
HTMLToPDF.none=None
|
HTMLToPDF.none=Hiçbiri
|
||||||
HTMLToPDF.print=Print
|
HTMLToPDF.print=Yazdır
|
||||||
HTMLToPDF.screen=Screen
|
HTMLToPDF.screen=Ekran
|
||||||
|
|
||||||
|
|
||||||
#AddStampRequest
|
#AddStampRequest
|
||||||
AddStampRequest.header=Stamp PDF
|
AddStampRequest.header=Damga PDF
|
||||||
AddStampRequest.title=Stamp PDF
|
AddStampRequest.title=Damga PDF
|
||||||
AddStampRequest.stampType=Stamp Type
|
AddStampRequest.stampType=Damga Türü
|
||||||
AddStampRequest.stampText=Stamp Text
|
AddStampRequest.stampText=Damga Metni
|
||||||
AddStampRequest.stampImage=Stamp Image
|
AddStampRequest.stampImage=Damga Resmi
|
||||||
AddStampRequest.alphabet=Alphabet
|
AddStampRequest.alphabet=Alfabe
|
||||||
AddStampRequest.fontSize=Font/Image Size
|
AddStampRequest.fontSize=Yazı Tipi/Görüntü Boyutu
|
||||||
AddStampRequest.rotation=Rotation
|
AddStampRequest.rotation=Döndürme
|
||||||
AddStampRequest.opacity=Opacity
|
AddStampRequest.opacity=Opaklık
|
||||||
AddStampRequest.position=Position
|
AddStampRequest.position=Konum
|
||||||
AddStampRequest.overrideX=Override X Coordinate
|
AddStampRequest.overrideX=X Koordinatını geçersiz kıl
|
||||||
AddStampRequest.overrideY=Override Y Coordinate
|
AddStampRequest.overrideY=Y Koordinatını Geçersiz Kıl
|
||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Özel Kenar Boşluğu
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Özel Metin Rengi
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Gönder
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
@@ -587,11 +618,11 @@ scalePages.submit=Gönder
|
|||||||
certSign.title=Sertifika İmzalama
|
certSign.title=Sertifika İmzalama
|
||||||
certSign.header=Sertifikanızla bir PDF imzalayın (Devam eden iş)
|
certSign.header=Sertifikanızla bir PDF imzalayın (Devam eden iş)
|
||||||
certSign.selectPDF=İmzalamak için bir PDF Dosyası seçin:
|
certSign.selectPDF=İmzalamak için bir PDF Dosyası seçin:
|
||||||
certSign.jksNote=Note: If your certificate type is not listed below, please convert it to a Java Keystore (.jks) file using the keytool command line tool. Then, choose the .jks file option below.
|
certSign.jksNote=Note: Sertifika türünüz aşağıda listelenmemişse, lütfen keytool komut satırı aracını kullanarak sertifikanızı bir Java Keystore (.jks) dosyasına dönüştürün. Ardından, aşağıdaki .jks dosyası seçeneğini seçin.
|
||||||
certSign.selectKey=Özel Anahtar Dosyanızı Seçin (PKCS#8 formatında, .pem veya .der olabilir):
|
certSign.selectKey=Özel Anahtar Dosyanızı Seçin (PKCS#8 formatında, .pem veya .der olabilir):
|
||||||
certSign.selectCert=Sertifika Dosyanızı Seçin (X.509 formatında, .pem veya .der olabilir):
|
certSign.selectCert=Sertifika Dosyanızı Seçin (X.509 formatında, .pem veya .der olabilir):
|
||||||
certSign.selectP12=PKCS#12 Anahtar Deposu Dosyanızı Seçin (.p12 veya .pfx) (İsteğe bağlı, sağlanırsa, özel anahtarınızı ve sertifikanızı içermelidir):
|
certSign.selectP12=PKCS#12 Anahtar Deposu Dosyanızı Seçin (.p12 veya .pfx) (İsteğe bağlı, sağlanırsa, özel anahtarınızı ve sertifikanızı içermelidir):
|
||||||
certSign.selectJKS=Select Your Java Keystore File (.jks or .keystore):
|
certSign.selectJKS=Java Keystore Dosyanızı (.jks veya .keystore) seçin:
|
||||||
certSign.certType=Sertifika Türü
|
certSign.certType=Sertifika Türü
|
||||||
certSign.password=Anahtar Deposu veya Özel Anahtar Şifrenizi Girin (Varsa):
|
certSign.password=Anahtar Deposu veya Özel Anahtar Şifrenizi Girin (Varsa):
|
||||||
certSign.showSig=İmzayı Göster
|
certSign.showSig=İmzayı Göster
|
||||||
@@ -612,9 +643,9 @@ removeBlanks.submit=Boşları Kaldır
|
|||||||
|
|
||||||
|
|
||||||
#removeAnnotations
|
#removeAnnotations
|
||||||
removeAnnotations.title=Remove Annotations
|
removeAnnotations.title=Ek Açıklamaları Kaldır
|
||||||
removeAnnotations.header=Remove Annotations
|
removeAnnotations.header=Ek Açıklamaları Kaldır
|
||||||
removeAnnotations.submit=Remove
|
removeAnnotations.submit=Kaldır
|
||||||
|
|
||||||
|
|
||||||
#compare
|
#compare
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=Belge 1
|
|||||||
compare.document.2=Belge 2
|
compare.document.2=Belge 2
|
||||||
compare.submit=Karşılaştır
|
compare.submit=Karşılaştır
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=Kitapları ve Çizgi Romanları PDF'e Dönüştürme
|
||||||
|
BookToPDF.header=Kitaptan PDF'ye
|
||||||
|
BookToPDF.credit=Kalibre Kullanır
|
||||||
|
BookToPDF.submit=Dönüştür
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF'den Kitaba
|
||||||
|
PDFToBook.header=PDF'den Kitaba
|
||||||
|
PDFToBook.selectText.1=Format
|
||||||
|
PDFToBook.credit=Kalibre Kullanır
|
||||||
|
PDFToBook.submit=Dönüştür
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=İmzala
|
sign.title=İmzala
|
||||||
@@ -727,21 +770,34 @@ merge.submit=Birleştir
|
|||||||
pdfOrganiser.title=Sayfa Organizatörü
|
pdfOrganiser.title=Sayfa Organizatörü
|
||||||
pdfOrganiser.header=PDF Sayfa Organizatörü
|
pdfOrganiser.header=PDF Sayfa Organizatörü
|
||||||
pdfOrganiser.submit=Sayfaları Yeniden Düzenle
|
pdfOrganiser.submit=Sayfaları Yeniden Düzenle
|
||||||
|
pdfOrganiser.mode=Mod
|
||||||
|
pdfOrganiser.mode.1=Özel Sayfa Düzeni
|
||||||
|
pdfOrganiser.mode.2=Ters Sıralama
|
||||||
|
pdfOrganiser.mode.3=Çift Taraflı Sıralama
|
||||||
|
pdfOrganiser.mode.4=Kitapçık Sıralama
|
||||||
|
pdfOrganiser.mode.5=Yandan Dikişli Kitapçık Sıralama
|
||||||
|
pdfOrganiser.mode.6=Tek-Çift Ayrımı
|
||||||
|
pdfOrganiser.mode.7=İlk Önce Kaldır
|
||||||
|
pdfOrganiser.mode.8=Sonuncuyu Kaldır
|
||||||
|
pdfOrganiser.mode.9=İlk ve Sonu Kaldır
|
||||||
|
pdfOrganiser.placeholder=(örn. 1,3,2 veya 4-8,2,10-12 veya 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=PDF Çoklu Araç
|
multiTool.title=PDF Çoklu Araç
|
||||||
multiTool.header=PDF Çoklu Araç
|
multiTool.header=PDF Çoklu Araç
|
||||||
|
multiTool.uploadPrompts=Lütfen PDF Yükleyin
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=View PDF
|
viewPdf.title=PDF Görüntüle
|
||||||
viewPdf.header=View PDF
|
viewPdf.header=PDF Görüntüle
|
||||||
|
|
||||||
#pageRemover
|
#pageRemover
|
||||||
pageRemover.title=Sayfa Silici
|
pageRemover.title=Sayfa Silici
|
||||||
pageRemover.header=PDF Sayfa silici
|
pageRemover.header=PDF Sayfa silici
|
||||||
pageRemover.pagesToDelete=Silinmesi gereken sayfalar (Virgülle ayrılmış sayfa numaraları listesi girin):
|
pageRemover.pagesToDelete=Silinmesi gereken sayfalar (Virgülle ayrılmış sayfa numaraları listesi girin):
|
||||||
pageRemover.submit=Sayfaları Sil
|
pageRemover.submit=Sayfaları Sil
|
||||||
|
pageRemover.placeholder=(örn. 1,2,6 veya 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=Döndürme açısını seçin (90 derecenin katları olarak):
|
|||||||
rotate.submit=Döndür
|
rotate.submit=Döndür
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=PDF Ayır
|
split.title=PDF Ayır
|
||||||
split.header=PDF Ayır
|
split.header=PDF Ayır
|
||||||
split.desc.1=Seçtiğiniz numaralar, bir ayrım yapmak istediğiniz sayfa numarasıdır
|
split.desc.1=Seçtiğiniz numaralar, bir ayrım yapmak istediğiniz sayfa numarasıdır
|
||||||
split.desc.2=Bu nedenle, 1,3,7-8 seçmek 10 sayfalı bir belgeyi şunlarla 6 ayrı PDF'e böler:
|
split.desc.2=Bu nedenle, 1,3,7-9 seçmek 10 sayfalı bir belgeyi şunlarla 6 ayrı PDF'e böler:
|
||||||
split.desc.3=Belge #1: Sayfa 1
|
split.desc.3=Belge #1: Sayfa 1
|
||||||
split.desc.4=Belge #2: Sayfa 2 ve 3
|
split.desc.4=Belge #2: Sayfa 2 ve 3
|
||||||
split.desc.5=Belge #3: Sayfa 4, 5 ve 6
|
split.desc.5=Belge #3: Sayfa 4, 5, 6 ve 7
|
||||||
split.desc.6=Belge #4: Sayfa 7
|
split.desc.6=Belge #4: Sayfa 8
|
||||||
split.desc.7=Belge #5: Sayfa 8
|
split.desc.7=Belge #5: Sayfa 9
|
||||||
split.desc.8=Belge #6: Sayfa 9 ve 10
|
split.desc.8=Belge #6: Sayfa 10
|
||||||
split.splitPages=Ayrılacak sayfaları girin:
|
split.splitPages=Ayrılacak sayfaları girin:
|
||||||
split.submit=Ayır
|
split.submit=Ayır
|
||||||
|
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=Opaklık (0% - 100%):
|
|||||||
watermark.selectText.8=Filigran Türü:
|
watermark.selectText.8=Filigran Türü:
|
||||||
watermark.selectText.9=Filigran Resmi:
|
watermark.selectText.9=Filigran Resmi:
|
||||||
watermark.submit=Filigran Ekle
|
watermark.submit=Filigran Ekle
|
||||||
|
watermark.type.1=Metin
|
||||||
|
watermark.type.2=Resim
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ 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 OCRmyPDF kullanır
|
pdfToPDFA.credit=Bu hizmet PDF/A dönüşümü için OCRmyPDF 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
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=Dönüştür
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF'den HTML'e
|
PDFToHTML.title=PDF'den HTML'e
|
||||||
PDFToHTML.header=PDF'den HTML'e
|
PDFToHTML.header=PDF'den HTML'e
|
||||||
PDFToHTML.credit=Bu hizmet dosya dönüşümü için LibreOffice kullanır.
|
PDFToHTML.credit=Bu hizmet dosya dönüşümü için pdftohtml kullanır.
|
||||||
PDFToHTML.submit=Dönüştür
|
PDFToHTML.submit=Dönüştür
|
||||||
|
|
||||||
|
|
||||||
@@ -920,54 +979,68 @@ PDFToXML.credit=Bu hizmet dosya dönüşümü için LibreOffice kullanır.
|
|||||||
PDFToXML.submit=Dönüştür
|
PDFToXML.submit=Dönüştür
|
||||||
|
|
||||||
#PDFToCSV
|
#PDFToCSV
|
||||||
PDFToCSV.title=PDF to CSV
|
PDFToCSV.title=PDF'den CSV'ye
|
||||||
PDFToCSV.header=PDF to CSV
|
PDFToCSV.header=PDF'den CSV'ye
|
||||||
PDFToCSV.prompt=Choose page to extract table
|
PDFToCSV.prompt=Tabloyu çıkarmak için sayfa seçin
|
||||||
PDFToCSV.submit=Extract
|
PDFToCSV.submit=Çıkart
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
split-by-size-or-count.header=Split PDF by Size or Count
|
split-by-size-or-count.title=PDF'yi Boyuta veya Sayıya Göre Bölme
|
||||||
split-by-size-or-count.type.label=Select Split Type
|
split-by-size-or-count.header=PDF'yi Boyuta veya Sayıya Göre Bölme
|
||||||
split-by-size-or-count.type.size=By Size
|
split-by-size-or-count.type.label=Bölme Türünü Seçin
|
||||||
split-by-size-or-count.type.pageCount=By Page Count
|
split-by-size-or-count.type.size=Boyuta Göre
|
||||||
split-by-size-or-count.type.docCount=By Document Count
|
split-by-size-or-count.type.pageCount=Sayfa Sayısına Göre
|
||||||
split-by-size-or-count.value.label=Enter Value
|
split-by-size-or-count.type.docCount=Belge Sayısına Göre
|
||||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
split-by-size-or-count.value.label=Değer Girin
|
||||||
split-by-size-or-count.submit=Submit
|
split-by-size-or-count.value.placeholder=Boyutu (örn. 2MB veya 3KB) veya sayıyı (örn. 5) girin
|
||||||
|
split-by-size-or-count.submit=Gönder
|
||||||
|
|
||||||
|
|
||||||
#overlay-pdfs
|
#overlay-pdfs
|
||||||
overlay-pdfs.header=Overlay PDF Files
|
overlay-pdfs.header=PDF Dosyalarını Bindirme
|
||||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
overlay-pdfs.baseFile.label=Temel PDF Dosyasını Seçin
|
||||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
overlay-pdfs.overlayFiles.label=İkinci PDF Dosyalarını Seçin
|
||||||
overlay-pdfs.mode.label=Select Overlay Mode
|
overlay-pdfs.mode.label=Bindirme Modunu Seçin
|
||||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
overlay-pdfs.mode.sequential=Sıralı Bindirme
|
||||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
overlay-pdfs.mode.interleaved=Serpiştirilmiş Bindirme
|
||||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
overlay-pdfs.mode.fixedRepeat=Sabit Tekrar Bindirme
|
||||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
overlay-pdfs.counts.label=Bindirme Sayıları (Sabit Tekrar Modu için)
|
||||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
overlay-pdfs.counts.placeholder=Virgülle ayrılmış sayıları girin (örn. 2,3,1)
|
||||||
overlay-pdfs.position.label=Select Overlay Position
|
overlay-pdfs.position.label=Bindirme Konumunu Seçin
|
||||||
overlay-pdfs.position.foreground=Foreground
|
overlay-pdfs.position.foreground=Ön plan
|
||||||
overlay-pdfs.position.background=Background
|
overlay-pdfs.position.background=Arka plan
|
||||||
overlay-pdfs.submit=Submit
|
overlay-pdfs.submit=Gönder
|
||||||
|
|
||||||
|
|
||||||
#split-by-sections
|
#split-by-sections
|
||||||
split-by-sections.title=Split PDF by Sections
|
split-by-sections.title=PDF'yi Bölümlere Ayırma
|
||||||
split-by-sections.header=Split PDF into Sections
|
split-by-sections.header=PDF'yi Bölümlere Ayırma
|
||||||
split-by-sections.horizontal.label=Horizontal Divisions
|
split-by-sections.horizontal.label=Yatay Bölümler
|
||||||
split-by-sections.vertical.label=Vertical Divisions
|
split-by-sections.vertical.label=Dikey Bölümler
|
||||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
split-by-sections.horizontal.placeholder=Yatay bölme sayısını girin
|
||||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
split-by-sections.vertical.placeholder=Dikey bölme sayısını girin
|
||||||
split-by-sections.submit=Split PDF
|
split-by-sections.submit=PDF'yi Böl
|
||||||
|
split-by-sections.merge=Bir PDF'de Birleştirin
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Lisanslar
|
||||||
licenses.title=3rd Party Licenses
|
licenses.title=3. Taraf Lisansları
|
||||||
licenses.header=3rd Party Licenses
|
licenses.header=3. Taraf Lisansları
|
||||||
licenses.module=Module
|
licenses.module=Modül
|
||||||
licenses.version=Version
|
licenses.version=Versiyon
|
||||||
licenses.license=License
|
licenses.license=Lisans
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorun için özür dileriz!
|
||||||
|
error.needHelp=Yardıma mı ihtiyacınız var / Bir sorun mu buldunuz?
|
||||||
|
error.contactTip=Hala sorun yaşıyorsanız, yardım için bize ulaşmaktan çekinmeyin. GitHub sayfamızdan bir bilet gönderebilir veya Discord üzerinden bizimle iletişime geçebilirsiniz:
|
||||||
|
error.404.head=404 - Sayfa Bulunamadı | Tüh, kodda takıldık!
|
||||||
|
error.404.1=Aradığınız sayfayı bulamıyoruz.
|
||||||
|
error.404.2=Bir şeyler ters gitti
|
||||||
|
error.github=GitHub üzerinden bir hata bildirin
|
||||||
|
error.showStack=Yığın İzlemesini Göster
|
||||||
|
error.copyStack=Yığın İzini Kopyala
|
||||||
|
error.githubSubmit=GitHub - Hata gönderin
|
||||||
|
error.discordSubmit=Discord - Destek gönderisi gönderin
|
||||||
|
|
||||||
|
|||||||
@@ -11,17 +11,18 @@ imgPrompt=选择图像
|
|||||||
genericSubmit=提交
|
genericSubmit=提交
|
||||||
processTimeWarning=警告:此过程可能需要多达一分钟,具体时间取决于文件大小
|
processTimeWarning=警告:此过程可能需要多达一分钟,具体时间取决于文件大小
|
||||||
pageOrderPrompt=页面顺序(输入逗号分隔的页码列表):
|
pageOrderPrompt=页面顺序(输入逗号分隔的页码列表):
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
pageSelectionPrompt=自定义页面选择(输入以逗号分隔的页码列表 1,5,6 或 2n+1 等函数):
|
||||||
goToPage=到
|
goToPage=到
|
||||||
true=对
|
true=对
|
||||||
false=错
|
false=错
|
||||||
unknown=未知
|
unknown=未知
|
||||||
save=保存
|
save=保存
|
||||||
|
saveToBrowser=保存到浏览器
|
||||||
close=关闭
|
close=关闭
|
||||||
filesSelected=选中的文件
|
filesSelected=选中的文件
|
||||||
noFavourites=没有添加收藏夹
|
noFavourites=没有添加收藏夹
|
||||||
downloadComplete=Download Complete
|
downloadComplete=下载完成
|
||||||
bored=无聊等待吗?
|
bored=等待时觉得无聊?
|
||||||
alphabet=字母表
|
alphabet=字母表
|
||||||
downloadPdf=下载PDF
|
downloadPdf=下载PDF
|
||||||
text=文本
|
text=文本
|
||||||
@@ -31,51 +32,67 @@ pageNum=页码
|
|||||||
sizes.small=小型尺寸
|
sizes.small=小型尺寸
|
||||||
sizes.medium=中型尺寸
|
sizes.medium=中型尺寸
|
||||||
sizes.large=大型尺寸
|
sizes.large=大型尺寸
|
||||||
sizes.x-large=稍大型尺寸
|
sizes.x-large=超大型尺寸
|
||||||
error.pdfPassword=PDF 文档有密码,未提供密码或密码不正确
|
error.pdfPassword=PDF 文档有密码,未提供密码或密码不正确
|
||||||
delete=删除
|
delete=删除
|
||||||
username=用户名
|
username=用户名
|
||||||
password=密码
|
password=密码
|
||||||
welcome=欢迎
|
welcome=欢迎
|
||||||
property=资产
|
property=资产
|
||||||
black=Black
|
black=黑色
|
||||||
white=White
|
white=白色
|
||||||
red=Red
|
red=红色
|
||||||
green=Green
|
green=绿色
|
||||||
blue=Blue
|
blue=蓝色
|
||||||
custom=Custom...
|
custom=自定义...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=工作正在进行中,可能无法工作或有错误,请报告任何问题!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=是
|
||||||
no=No
|
no=否
|
||||||
changedCredsMessage=凭证已更改!
|
changedCredsMessage=凭证已更改!
|
||||||
notAuthenticatedMessage=用户未经过身份验证。
|
notAuthenticatedMessage=用户未经过身份验证。
|
||||||
userNotFoundMessage=未找到用户。
|
userNotFoundMessage=未找到用户。
|
||||||
incorrectPasswordMessage=当前密码不正确。
|
incorrectPasswordMessage=当前密码不正确。
|
||||||
usernameExistsMessage=新用户名已存在。
|
usernameExistsMessage=新用户名已存在。
|
||||||
|
invalidUsernameMessage=用户名无效,用户名只能由字母字符和数字组成。
|
||||||
|
deleteCurrentUserMessage=无法删除当前登录的用户。
|
||||||
|
deleteUsernameExistsMessage=用户名不存在,无法删除。
|
||||||
|
error=错误
|
||||||
|
oops=哎呀!
|
||||||
|
help=帮助
|
||||||
|
goHomepage=返回主页
|
||||||
|
joinDiscord=加入我们的Discord服务器
|
||||||
|
seeDockerHub=查看Docker Hub
|
||||||
|
visitGithub=访问Github仓库
|
||||||
|
donate=捐款
|
||||||
|
color=颜色
|
||||||
|
sponsor=赞助
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=流水线菜单 (Beta)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=上传自定义流水线
|
||||||
pipeline.configureButton=Configure
|
pipeline.configureButton=配置
|
||||||
pipeline.defaultOption=Custom
|
pipeline.defaultOption=自定义
|
||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=提交
|
||||||
|
pipeline.help=工作流帮助
|
||||||
|
pipeline.scanHelp=文件夹扫描帮助
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
######################
|
######################
|
||||||
pipelineOptions.header=Pipeline Configuration
|
pipelineOptions.header=流水线配置
|
||||||
pipelineOptions.pipelineNameLabel=Pipeline Name
|
pipelineOptions.pipelineNameLabel=流水线名称
|
||||||
pipelineOptions.saveSettings=Save Operation Settings
|
pipelineOptions.saveSettings=保存设置
|
||||||
pipelineOptions.pipelineNamePrompt=Enter pipeline name here
|
pipelineOptions.pipelineNamePrompt=请输入流水线名称
|
||||||
pipelineOptions.selectOperation=Select Operation
|
pipelineOptions.selectOperation=选择操作
|
||||||
pipelineOptions.addOperationButton=Add operation
|
pipelineOptions.addOperationButton=添加操作
|
||||||
pipelineOptions.pipelineHeader=Pipeline:
|
pipelineOptions.pipelineHeader=流水线:
|
||||||
pipelineOptions.saveButton=Download
|
pipelineOptions.saveButton=下载
|
||||||
pipelineOptions.validateButton=Validate
|
pipelineOptions.validateButton=验证
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=帐号设定
|
|||||||
|
|
||||||
changeCreds.title=更改凭证
|
changeCreds.title=更改凭证
|
||||||
changeCreds.header=更新您的账户详情
|
changeCreds.header=更新您的账户详情
|
||||||
changeCreds.changeUserAndPassword=您正在使用默认登录凭据。请输入新密码(如果需要,还可以输入新用户名)
|
changeCreds.changePassword=您正在使用默认登录凭证,请输入新密码
|
||||||
changeCreds.newUsername=新用户名
|
changeCreds.newUsername=新用户名
|
||||||
changeCreds.oldPassword=当前密码
|
changeCreds.oldPassword=当前密码
|
||||||
changeCreds.newPassword=新密码
|
changeCreds.newPassword=新密码
|
||||||
@@ -143,19 +160,22 @@ adminUserSettings.header=管理员用户控制设置
|
|||||||
adminUserSettings.admin=管理员
|
adminUserSettings.admin=管理员
|
||||||
adminUserSettings.user=用户
|
adminUserSettings.user=用户
|
||||||
adminUserSettings.addUser=添加新用户
|
adminUserSettings.addUser=添加新用户
|
||||||
|
adminUserSettings.usernameInfo=用户名只能由字母和数字组成,不能包含空格或特殊字符。
|
||||||
adminUserSettings.roles=角色
|
adminUserSettings.roles=角色
|
||||||
adminUserSettings.role=角色
|
adminUserSettings.role=角色
|
||||||
adminUserSettings.actions=操作
|
adminUserSettings.actions=操作
|
||||||
adminUserSettings.apiUser=有限 API 用户
|
adminUserSettings.apiUser=受限制的 API 用户
|
||||||
|
adminUserSettings.extraApiUser=额外受限制的 API 用户
|
||||||
adminUserSettings.webOnlyUser=仅限 Web 用户
|
adminUserSettings.webOnlyUser=仅限 Web 用户
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=演示用户(无自定义设置)
|
||||||
|
adminUserSettings.internalApiUser=内部API用户
|
||||||
adminUserSettings.forceChange=强制用户在登录时更改用户名/密码
|
adminUserSettings.forceChange=强制用户在登录时更改用户名/密码
|
||||||
adminUserSettings.submit=保存用户
|
adminUserSettings.submit=保存用户
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# HOME-PAGE #
|
# HOME-PAGE #
|
||||||
#############
|
#############
|
||||||
home.desc=CZL一站式服务,满足您的所有PDF需求。
|
home.desc=本地部署的一站式服务,满足您的所有PDF需求。
|
||||||
home.searchBar=搜索您需要的功能...
|
home.searchBar=搜索您需要的功能...
|
||||||
|
|
||||||
|
|
||||||
@@ -229,7 +249,7 @@ changeMetadata.tags=标题、作者、日期、创建、时间、发布者、制
|
|||||||
|
|
||||||
home.fileToPDF.title=将文件转换为PDF文件
|
home.fileToPDF.title=将文件转换为PDF文件
|
||||||
home.fileToPDF.desc=将几乎所有文件转换为PDF(DOCX、PNG、XLS、PPT、TXT等)。
|
home.fileToPDF.desc=将几乎所有文件转换为PDF(DOCX、PNG、XLS、PPT、TXT等)。
|
||||||
fileToPDF.tags=转换、格式、文档、图片、幻灯片、文本、转换、办公室、文档、Word、Excel、PowerPoint
|
fileToPDF.tags=转换、格式、文档、图片、幻灯片、文本、转换、Office、Docs、Word、Excel、PowerPoint
|
||||||
|
|
||||||
home.ocr.title=运行OCR/清理扫描
|
home.ocr.title=运行OCR/清理扫描
|
||||||
home.ocr.desc=清理和识别PDF中的图像文本,并将其转换为可编辑文本。
|
home.ocr.desc=清理和识别PDF中的图像文本,并将其转换为可编辑文本。
|
||||||
@@ -240,17 +260,17 @@ home.extractImages.title=提取图像
|
|||||||
home.extractImages.desc=从PDF中提取所有图像并保存到压缩包中。
|
home.extractImages.desc=从PDF中提取所有图像并保存到压缩包中。
|
||||||
extractImages.tags=图片、照片、保存、归档、压缩包、截取、抓取
|
extractImages.tags=图片、照片、保存、归档、压缩包、截取、抓取
|
||||||
|
|
||||||
home.pdfToPDFA.title=PDF To PDF/A
|
home.pdfToPDFA.title=PDF转PDF/A
|
||||||
home.pdfToPDFA.desc=将PDF转换为PDF/A以进行长期保存。
|
home.pdfToPDFA.desc=将PDF转换为PDF/A以进行长期保存。
|
||||||
pdfToPDFA.tags=归档、长期、标准、转换、存储、保存
|
pdfToPDFA.tags=归档、长期、标准、转换、存储、保存
|
||||||
|
|
||||||
home.PDFToWord.title=PDF转Word
|
home.PDFToWord.title=PDF转Word
|
||||||
home.PDFToWord.desc=将PDF转换为Word格式(DOC、DOCX和ODT)。
|
home.PDFToWord.desc=将PDF转换为Word格式(DOC、DOCX和ODT)。
|
||||||
PDFToWord.tags=doc、docx、odt、word、转换、格式、办公、Microsoft、文档
|
PDFToWord.tags=doc、docx、odt、word、转换、格式、Office、Microsoft、文档
|
||||||
|
|
||||||
home.PDFToPresentation.title=PDF转演示文稿
|
home.PDFToPresentation.title=PDF转演示文稿
|
||||||
home.PDFToPresentation.desc=将PDF转换为演示文稿格式(PPT、PPTX和ODP)。
|
home.PDFToPresentation.desc=将PDF转换为演示文稿格式(PPT、PPTX和ODP)。
|
||||||
PDFToPresentation.tags=幻灯片、展示、办公、Microsoft
|
PDFToPresentation.tags=幻灯片、展示、Office、Microsoft
|
||||||
|
|
||||||
home.PDFToText.title=PDF转RTF(文本)
|
home.PDFToText.title=PDF转RTF(文本)
|
||||||
home.PDFToText.desc=将PDF转换为文本或RTF格式。
|
home.PDFToText.desc=将PDF转换为文本或RTF格式。
|
||||||
@@ -269,7 +289,7 @@ home.ScannerImageSplit.title=检测/分割扫描图像
|
|||||||
home.ScannerImageSplit.desc=从一张照片或PDF中分割出多张照片。
|
home.ScannerImageSplit.desc=从一张照片或PDF中分割出多张照片。
|
||||||
ScannerImageSplit.tags=分离、自动检测、扫描、多张照片、整理
|
ScannerImageSplit.tags=分离、自动检测、扫描、多张照片、整理
|
||||||
|
|
||||||
home.sign.title=标志
|
home.sign.title=签名
|
||||||
home.sign.desc=通过绘图、文字或图像向PDF添加签名
|
home.sign.desc=通过绘图、文字或图像向PDF添加签名
|
||||||
sign.tags=授权、缩写、手绘签名、文本签名、图像签名
|
sign.tags=授权、缩写、手绘签名、文本签名、图像签名
|
||||||
|
|
||||||
@@ -305,8 +325,8 @@ home.scalePages.title=调整页面尺寸/缩放
|
|||||||
home.scalePages.desc=调整页面及/或其内容的尺寸/缩放
|
home.scalePages.desc=调整页面及/或其内容的尺寸/缩放
|
||||||
scalePages.tags=调整大小、修改、尺寸、适应
|
scalePages.tags=调整大小、修改、尺寸、适应
|
||||||
|
|
||||||
home.pipeline.title=管道(高级版)
|
home.pipeline.title=流水线(高级版)
|
||||||
home.pipeline.desc=通过定义管道脚本在PDF上运行多个操作
|
home.pipeline.desc=通过定义流水线脚本在PDF上运行多个操作
|
||||||
pipeline.tags=自动化、顺序、脚本化、批处理
|
pipeline.tags=自动化、顺序、脚本化、批处理
|
||||||
|
|
||||||
home.add-page-numbers.title=添加页码
|
home.add-page-numbers.title=添加页码
|
||||||
@@ -368,9 +388,9 @@ showJS.tags=JavaScript
|
|||||||
|
|
||||||
home.autoRedact.title=自动删除
|
home.autoRedact.title=自动删除
|
||||||
home.autoRedact.desc=根据输入文本自动删除(覆盖)PDF中的文本
|
home.autoRedact.desc=根据输入文本自动删除(覆盖)PDF中的文本
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
autoRedact.tags=脱敏、隐藏、涂黑、标记、不可见
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF转CSV
|
||||||
home.tableExtraxt.desc=从PDF中提取表格并将其转换为CSV
|
home.tableExtraxt.desc=从PDF中提取表格并将其转换为CSV
|
||||||
tableExtraxt.tags=CSV、表格提取、提取、转换
|
tableExtraxt.tags=CSV、表格提取、提取、转换
|
||||||
|
|
||||||
@@ -388,9 +408,18 @@ home.split-by-sections.title=拆分PDF成小块
|
|||||||
home.split-by-sections.desc=将PDF的每一页分割成更小的水平和垂直的部分
|
home.split-by-sections.desc=将PDF的每一页分割成更小的水平和垂直的部分
|
||||||
split-by-sections.tags=章节拆分、分割、自定义
|
split-by-sections.tags=章节拆分、分割、自定义
|
||||||
|
|
||||||
home.AddStampRequest.title=Add Stamp to PDF
|
home.AddStampRequest.title=添加图章
|
||||||
home.AddStampRequest.desc=Add text or add image stamps at set locations
|
home.AddStampRequest.desc=在指定位置添加文本或图片图章
|
||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=图章、添加图片、图片居中、水印、PDF、嵌入、自定义
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF转电子书
|
||||||
|
home.PDFToBook.desc=使用Calibre将PDF转换成电子书/漫画
|
||||||
|
PDFToBook.tags=电子书、漫画、Calibre、转换、日本漫画、亚马逊、kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=电子书转PDF
|
||||||
|
home.BookToPDF.desc=使用Calibre将电子书/漫画转换成PDF
|
||||||
|
BookToPDF.tags=电子书、漫画、Calibre、转换、日本漫画、亚马逊、kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=登录
|
login.title=登录
|
||||||
|
login.header=登录
|
||||||
login.signin=登录
|
login.signin=登录
|
||||||
login.rememberme=记住我
|
login.rememberme=记住我
|
||||||
login.invalid=用户名或密码无效。
|
login.invalid=用户名或密码无效。
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=转为单页
|
|||||||
pageExtracter.title=提取页面
|
pageExtracter.title=提取页面
|
||||||
pageExtracter.header=提取页面
|
pageExtracter.header=提取页面
|
||||||
pageExtracter.submit=提取
|
pageExtracter.submit=提取
|
||||||
|
pageExtracter.placeholder=(例如 1,2,8 或 4,7,12-16 或 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -451,7 +482,7 @@ MarkdownToPDF.title=Markdown转PDF
|
|||||||
MarkdownToPDF.header=Markdown转PDF
|
MarkdownToPDF.header=Markdown转PDF
|
||||||
MarkdownToPDF.submit=转换
|
MarkdownToPDF.submit=转换
|
||||||
MarkdownToPDF.help=正在努力中
|
MarkdownToPDF.help=正在努力中
|
||||||
MarkdownToPDF.credit=使用WeasyPrint
|
MarkdownToPDF.credit=此服务使用WeasyPrint进行文件转换。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -459,7 +490,7 @@ MarkdownToPDF.credit=使用WeasyPrint
|
|||||||
URLToPDF.title=URL转PDF
|
URLToPDF.title=URL转PDF
|
||||||
URLToPDF.header=URL转PDF
|
URLToPDF.header=URL转PDF
|
||||||
URLToPDF.submit=转换
|
URLToPDF.submit=转换
|
||||||
URLToPDF.credit=使用WeasyPrint
|
URLToPDF.credit=此服务使用WeasyPrint进行文件转换。
|
||||||
|
|
||||||
|
|
||||||
#html-to-pdf
|
#html-to-pdf
|
||||||
@@ -467,38 +498,38 @@ HTMLToPDF.title=HTML转PDF
|
|||||||
HTMLToPDF.header=HTML转PDF
|
HTMLToPDF.header=HTML转PDF
|
||||||
HTMLToPDF.help=接受HTML文件和包含所需的html/css/images等的ZIP文件
|
HTMLToPDF.help=接受HTML文件和包含所需的html/css/images等的ZIP文件
|
||||||
HTMLToPDF.submit=转换
|
HTMLToPDF.submit=转换
|
||||||
HTMLToPDF.credit=使用WeasyPrint
|
HTMLToPDF.credit=此服务使用WeasyPrint进行文件转换。
|
||||||
HTMLToPDF.zoom=Zoom level for displaying the website.
|
HTMLToPDF.zoom=网站显示缩放级别
|
||||||
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
|
HTMLToPDF.pageWidth=页面宽度-以厘米为单位(填空则使用默认值)
|
||||||
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
|
HTMLToPDF.pageHeight=页面高度-以厘米为单位(填空则使用默认值)
|
||||||
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginTop=页面上边距-以毫米为单位(填空则使用默认值)
|
||||||
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginBottom=页面下边距-以毫米为单位(填空则使用默认值)
|
||||||
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginLeft=页面左上边距-以毫米为单位(填空则使用默认值)
|
||||||
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginRight=页面右边距-以毫米为单位(填空则使用默认值)
|
||||||
HTMLToPDF.printBackground=Render the background of websites.
|
HTMLToPDF.printBackground=页面背景渲染
|
||||||
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
|
HTMLToPDF.defaultHeader=启用默认页头(文件名称和页码)
|
||||||
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
|
HTMLToPDF.cssMediaType=更换页面的CSS media type.
|
||||||
HTMLToPDF.none=None
|
HTMLToPDF.none=无
|
||||||
HTMLToPDF.print=Print
|
HTMLToPDF.print=打印
|
||||||
HTMLToPDF.screen=Screen
|
HTMLToPDF.screen=屏幕
|
||||||
|
|
||||||
|
|
||||||
#AddStampRequest
|
#AddStampRequest
|
||||||
AddStampRequest.header=Stamp PDF
|
AddStampRequest.header=添加图章
|
||||||
AddStampRequest.title=Stamp PDF
|
AddStampRequest.title=添加图章
|
||||||
AddStampRequest.stampType=Stamp Type
|
AddStampRequest.stampType=图章类型
|
||||||
AddStampRequest.stampText=Stamp Text
|
AddStampRequest.stampText=图章文字
|
||||||
AddStampRequest.stampImage=Stamp Image
|
AddStampRequest.stampImage=图章图片
|
||||||
AddStampRequest.alphabet=Alphabet
|
AddStampRequest.alphabet=字母表
|
||||||
AddStampRequest.fontSize=Font/Image Size
|
AddStampRequest.fontSize=字体/图片大小
|
||||||
AddStampRequest.rotation=Rotation
|
AddStampRequest.rotation=旋转角度
|
||||||
AddStampRequest.opacity=Opacity
|
AddStampRequest.opacity=透明度
|
||||||
AddStampRequest.position=Position
|
AddStampRequest.position=定位
|
||||||
AddStampRequest.overrideX=Override X Coordinate
|
AddStampRequest.overrideX=覆盖 X 坐标
|
||||||
AddStampRequest.overrideY=Override Y Coordinate
|
AddStampRequest.overrideY=覆盖 Y 坐标
|
||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=自定义外边距
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=自定义文本颜色
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=提交
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
@@ -587,11 +618,11 @@ scalePages.submit=提交
|
|||||||
certSign.title=证书签名
|
certSign.title=证书签名
|
||||||
certSign.header=使用您的证书签署 PDF(进行中)
|
certSign.header=使用您的证书签署 PDF(进行中)
|
||||||
certSign.selectPDF=选择要签名的 PDF 文件:
|
certSign.selectPDF=选择要签名的 PDF 文件:
|
||||||
certSign.jksNote=Note: If your certificate type is not listed below, please convert it to a Java Keystore (.jks) file using the keytool command line tool. Then, choose the .jks file option below.
|
certSign.jksNote=注意:如果您的证书类型未在下面列出,请使用 keytool 命令行工具将其转换为 Java Keystore (.jks) 文件。 然后,选择下面的 .jks 文件选项。
|
||||||
certSign.selectKey=选择您的私钥文件(PKCS#8 格式,可以是 .pem 或 .der):
|
certSign.selectKey=选择您的私钥文件(PKCS#8 格式,可以是 .pem 或 .der):
|
||||||
certSign.selectCert=选择您的证书文件(X.509 格式,可以是 .pem 或 .der):
|
certSign.selectCert=选择您的证书文件(X.509 格式,可以是 .pem 或 .der):
|
||||||
certSign.selectP12=选择您的 PKCS#12 密钥库文件(.p12 或 .pfx)(可选,如果提供,它应该包含您的私钥和证书):
|
certSign.selectP12=选择您的 PKCS#12 密钥库文件(.p12 或 .pfx)(可选,如果提供,它应该包含您的私钥和证书):
|
||||||
certSign.selectJKS=Select Your Java Keystore File (.jks or .keystore):
|
certSign.selectJKS=选择你的 Java Keystore 文件 (.jks 或 .keystore):
|
||||||
certSign.certType=证书类型
|
certSign.certType=证书类型
|
||||||
certSign.password=输入您的密钥库或私钥密码(如果有):
|
certSign.password=输入您的密钥库或私钥密码(如果有):
|
||||||
certSign.showSig=显示签名
|
certSign.showSig=显示签名
|
||||||
@@ -612,9 +643,9 @@ removeBlanks.submit=删除空白
|
|||||||
|
|
||||||
|
|
||||||
#removeAnnotations
|
#removeAnnotations
|
||||||
removeAnnotations.title=Remove Annotations
|
removeAnnotations.title=删除标注
|
||||||
removeAnnotations.header=Remove Annotations
|
removeAnnotations.header=删除标注
|
||||||
removeAnnotations.submit=Remove
|
removeAnnotations.submit=删除
|
||||||
|
|
||||||
|
|
||||||
#compare
|
#compare
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=文档 1
|
|||||||
compare.document.2=文档 2
|
compare.document.2=文档 2
|
||||||
compare.submit=比较
|
compare.submit=比较
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=电子书和漫画转换成PDF
|
||||||
|
BookToPDF.header=电子书转PDF
|
||||||
|
BookToPDF.credit=此服务使用Calibre进行文件转换。
|
||||||
|
BookToPDF.submit=转换
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF转电子书
|
||||||
|
PDFToBook.header=PDF转电子书
|
||||||
|
PDFToBook.selectText.1=格式
|
||||||
|
PDFToBook.credit=此服务使用Calibre进行文件转换。
|
||||||
|
PDFToBook.submit=转换
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=签名
|
sign.title=签名
|
||||||
@@ -690,7 +733,7 @@ extractImages.submit=提取
|
|||||||
#File to PDF
|
#File to PDF
|
||||||
fileToPDF.title=文件转换为PDF
|
fileToPDF.title=文件转换为PDF
|
||||||
fileToPDF.header=将任何文件转换为PDF。
|
fileToPDF.header=将任何文件转换为PDF。
|
||||||
fileToPDF.credit=本服务使用LibreOffice和Unoconv进行文件转换。
|
fileToPDF.credit=此服务使用LibreOffice和Unoconv进行文件转换。
|
||||||
fileToPDF.supportedFileTypes=支持的文件类型应该包括以下几种,但是,对于支持的格式的完整更新列表,请参考LibreOffice文档。
|
fileToPDF.supportedFileTypes=支持的文件类型应该包括以下几种,但是,对于支持的格式的完整更新列表,请参考LibreOffice文档。
|
||||||
fileToPDF.submit=转换为 PDF
|
fileToPDF.submit=转换为 PDF
|
||||||
|
|
||||||
@@ -709,7 +752,7 @@ compress.submit=压缩
|
|||||||
|
|
||||||
#Add image
|
#Add image
|
||||||
addImage.title=添加图像
|
addImage.title=添加图像
|
||||||
addImage.header=添加图片到PDF(正在进行中)
|
addImage.header=添加图片到PDF
|
||||||
addImage.everyPage=每一页?
|
addImage.everyPage=每一页?
|
||||||
addImage.upload=添加图片
|
addImage.upload=添加图片
|
||||||
addImage.submit=添加图片
|
addImage.submit=添加图片
|
||||||
@@ -727,21 +770,34 @@ merge.submit=合并
|
|||||||
pdfOrganiser.title=页面排序
|
pdfOrganiser.title=页面排序
|
||||||
pdfOrganiser.header=PDF页面排序
|
pdfOrganiser.header=PDF页面排序
|
||||||
pdfOrganiser.submit=重新排列页面
|
pdfOrganiser.submit=重新排列页面
|
||||||
|
pdfOrganiser.mode=模式
|
||||||
|
pdfOrganiser.mode.1=自定义页面顺序
|
||||||
|
pdfOrganiser.mode.2=反向顺序
|
||||||
|
pdfOrganiser.mode.3=双面排序
|
||||||
|
pdfOrganiser.mode.4=小册子排序
|
||||||
|
pdfOrganiser.mode.5=侧装订小册子排序
|
||||||
|
pdfOrganiser.mode.6=奇偶拆分
|
||||||
|
pdfOrganiser.mode.7=删除第一页
|
||||||
|
pdfOrganiser.mode.8=删除最后一页
|
||||||
|
pdfOrganiser.mode.9=删除第一页和最后一页
|
||||||
|
pdfOrganiser.placeholder=(例如 1,3,2 或 4-8,2,10-12 或 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=PDF多功能工具
|
multiTool.title=PDF多功能工具
|
||||||
multiTool.header=PDF多功能工具
|
multiTool.header=PDF多功能工具
|
||||||
|
multiTool.uploadPrompts=上传PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=View PDF
|
viewPdf.title=浏览PDF
|
||||||
viewPdf.header=View PDF
|
viewPdf.header=浏览PDF
|
||||||
|
|
||||||
#pageRemover
|
#pageRemover
|
||||||
pageRemover.title=删除页面
|
pageRemover.title=删除页面
|
||||||
pageRemover.header=PDF页面移除器
|
pageRemover.header=PDF页面移除器
|
||||||
pageRemover.pagesToDelete=要删除的页面(输入一个用逗号分隔的页码列表):
|
pageRemover.pagesToDelete=要删除的页面(输入一个用逗号分隔的页码列表):
|
||||||
pageRemover.submit=删除页面
|
pageRemover.submit=删除页面
|
||||||
|
pageRemover.placeholder=(例如 1,2,6 或 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,14 +807,14 @@ rotate.selectAngle=选择旋转角度(以90度的倍数):
|
|||||||
rotate.submit=旋转
|
rotate.submit=旋转
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=拆分PDF
|
split.title=拆分PDF
|
||||||
split.header=拆分PDF
|
split.header=拆分PDF
|
||||||
split.desc.1=选择希望进行分割的页数
|
split.desc.1=选择希望进行分割的页数
|
||||||
split.desc.2=如选择1,3,7-8将把一个10页的文件分割成6个独立的PDF:
|
split.desc.2=如选择1,3,7-9将把一个10页的文件分割成6个独立的PDF:
|
||||||
split.desc.3=文档 #1:第1页
|
split.desc.3=文档 #1:第1页
|
||||||
split.desc.4=文档 #2:第2页和第3页
|
split.desc.4=文档 #2:第2页和第3页
|
||||||
split.desc.5=文档 #3:第4页、第5页和第6页
|
split.desc.5=文档 #3:第4页、第5页、第6页和第7页
|
||||||
split.desc.6=文档 #4:第7页
|
split.desc.6=文档 #4:第7页
|
||||||
split.desc.7=文档 #5:第8页
|
split.desc.7=文档 #5:第8页
|
||||||
split.desc.8=文档 #6:第9页和第10页
|
split.desc.8=文档 #6:第9页和第10页
|
||||||
@@ -781,7 +837,7 @@ imageToPDF.selectText.5=转换为独立的PDF文件
|
|||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF to Image
|
pdfToImage.title=PDF转图片
|
||||||
pdfToImage.header=PDF转图片
|
pdfToImage.header=PDF转图片
|
||||||
pdfToImage.selectText=图像格式
|
pdfToImage.selectText=图像格式
|
||||||
pdfToImage.singleOrMultiple=图像结果类型
|
pdfToImage.singleOrMultiple=图像结果类型
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=透明度(0% - 100%):
|
|||||||
watermark.selectText.8=水印类型:
|
watermark.selectText.8=水印类型:
|
||||||
watermark.selectText.9=水印图片:
|
watermark.selectText.9=水印图片:
|
||||||
watermark.submit=添加水印
|
watermark.submit=添加水印
|
||||||
|
watermark.type.1=文字
|
||||||
|
watermark.type.2=图片
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ pdfToPDFA.title=将PDF转换为PDF/A
|
|||||||
pdfToPDFA.header=PDF转换为PDF/A
|
pdfToPDFA.header=PDF转换为PDF/A
|
||||||
pdfToPDFA.credit=此服务使用OCRmyPDF进行PDF/A转换
|
pdfToPDFA.credit=此服务使用OCRmyPDF进行PDF/A转换
|
||||||
pdfToPDFA.submit=转换
|
pdfToPDFA.submit=转换
|
||||||
|
pdfToPDFA.tip=目前不支持上传多个
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -894,7 +953,7 @@ PDFToWord.submit=转换
|
|||||||
PDFToPresentation.title=PDF转换为演示文稿
|
PDFToPresentation.title=PDF转换为演示文稿
|
||||||
PDFToPresentation.header=将PDF转为演示文稿
|
PDFToPresentation.header=将PDF转为演示文稿
|
||||||
PDFToPresentation.selectText.1=输出文件格式
|
PDFToPresentation.selectText.1=输出文件格式
|
||||||
PDFToPresentation.credit=该服务使用LibreOffice进行文件转换。
|
PDFToPresentation.credit=此服务使用LibreOffice进行文件转换。
|
||||||
PDFToPresentation.submit=转换
|
PDFToPresentation.submit=转换
|
||||||
|
|
||||||
|
|
||||||
@@ -902,14 +961,14 @@ PDFToPresentation.submit=转换
|
|||||||
PDFToText.title=PDF to RTF (Text)
|
PDFToText.title=PDF to RTF (Text)
|
||||||
PDFToText.header=将PDF转换成文本/RTF
|
PDFToText.header=将PDF转换成文本/RTF
|
||||||
PDFToText.selectText.1=输出文件格式
|
PDFToText.selectText.1=输出文件格式
|
||||||
PDFToText.credit=该服务使用LibreOffice进行文件转换。
|
PDFToText.credit=此服务使用LibreOffice进行文件转换。
|
||||||
PDFToText.submit=转换
|
PDFToText.submit=转换
|
||||||
|
|
||||||
|
|
||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF To HTML
|
PDFToHTML.title=PDF To HTML
|
||||||
PDFToHTML.header=将PDF转换成HTML
|
PDFToHTML.header=将PDF转换成HTML
|
||||||
PDFToHTML.credit=此服务使用LibreOffice进行文件转换。
|
PDFToHTML.credit=此服务使用pdftohtml进行文件转换。
|
||||||
PDFToHTML.submit=转换
|
PDFToHTML.submit=转换
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=选择需要提取表格的页面
|
|||||||
PDFToCSV.submit=提取
|
PDFToCSV.submit=提取
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=按照大小或数目拆分PDF
|
||||||
split-by-size-or-count.header=按照大小或数目拆分PDF
|
split-by-size-or-count.header=按照大小或数目拆分PDF
|
||||||
split-by-size-or-count.type.label=选择拆分类型
|
split-by-size-or-count.type.label=选择拆分类型
|
||||||
split-by-size-or-count.type.size=按照大小
|
split-by-size-or-count.type.size=按照大小
|
||||||
@@ -960,14 +1020,27 @@ split-by-sections.vertical.label=垂直分割
|
|||||||
split-by-sections.horizontal.placeholder=输入水平分割数
|
split-by-sections.horizontal.placeholder=输入水平分割数
|
||||||
split-by-sections.vertical.placeholder=输入垂直分割数
|
split-by-sections.vertical.placeholder=输入垂直分割数
|
||||||
split-by-sections.submit=分割PDF
|
split-by-sections.submit=分割PDF
|
||||||
|
split-by-sections.merge=是否合并为一个pdf
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=许可证
|
||||||
licenses.title=3rd Party Licenses
|
licenses.title=第三方许可证
|
||||||
licenses.header=3rd Party Licenses
|
licenses.header=第三方许可证
|
||||||
licenses.module=Module
|
licenses.module=模块
|
||||||
licenses.version=Version
|
licenses.version=版本
|
||||||
licenses.license=License
|
licenses.license=许可证
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=对此问题感到抱歉!
|
||||||
|
error.needHelp=需要帮助 / 发现问题?
|
||||||
|
error.contactTip=如果你仍然遇到问题,不要犹豫,向我们寻求帮助。你可以在我们的GitHub页面上提交工单,或者通过Discord与我们联系:
|
||||||
|
error.404.head=404 - 页面未找到 | 哎呀,我们在代码中触发了错误!
|
||||||
|
error.404.1=我们似乎找不到你寻找的页面。
|
||||||
|
error.404.2=出了些问题
|
||||||
|
error.github=在GitHub上提交工单
|
||||||
|
error.showStack=显示堆栈跟踪
|
||||||
|
error.copyStack=复制堆栈跟踪
|
||||||
|
error.githubSubmit=GitHub - 提交工单
|
||||||
|
error.discordSubmit=Discord - 提交支持帖子
|
||||||
|
|
||||||
|
|||||||
@@ -11,16 +11,17 @@ imgPrompt=選擇圖片
|
|||||||
genericSubmit=送出
|
genericSubmit=送出
|
||||||
processTimeWarning=警告:此過程可能需要長達一分鐘,具體取決於檔案大小
|
processTimeWarning=警告:此過程可能需要長達一分鐘,具體取決於檔案大小
|
||||||
pageOrderPrompt=自訂頁面順序(輸入以逗號分隔的頁碼或函式,如 2n+1):
|
pageOrderPrompt=自訂頁面順序(輸入以逗號分隔的頁碼或函式,如 2n+1):
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
pageSelectionPrompt=自訂頁面選擇(輸入以逗號分隔的頁碼 1、5、6 或 2n+1 等函數的清單):
|
||||||
goToPage=前往
|
goToPage=前往
|
||||||
true=是
|
true=是
|
||||||
false=否
|
false=否
|
||||||
unknown=未知
|
unknown=未知
|
||||||
save=儲存
|
save=儲存
|
||||||
|
saveToBrowser=儲存到瀏覽器
|
||||||
close=關閉
|
close=關閉
|
||||||
filesSelected=已選擇的檔案
|
filesSelected=已選擇的檔案
|
||||||
noFavourites=未新增收藏
|
noFavourites=未新增收藏
|
||||||
downloadComplete=Download Complete
|
downloadComplete=下載完成
|
||||||
bored=等待時覺得無聊?
|
bored=等待時覺得無聊?
|
||||||
alphabet=字母表
|
alphabet=字母表
|
||||||
downloadPdf=下載 PDF
|
downloadPdf=下載 PDF
|
||||||
@@ -44,38 +45,54 @@ red=紅色
|
|||||||
green=綠色
|
green=綠色
|
||||||
blue=藍色
|
blue=藍色
|
||||||
custom=自訂...
|
custom=自訂...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=工作正在進行中,可能無法工作或有問題,請報告任何問題!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=是
|
||||||
no=No
|
no=否
|
||||||
changedCredsMessage=憑證已變更!
|
changedCredsMessage=憑證已變更!
|
||||||
notAuthenticatedMessage=使用者未認證。
|
notAuthenticatedMessage=使用者未認證。
|
||||||
userNotFoundMessage=找不到使用者。
|
userNotFoundMessage=找不到使用者。
|
||||||
incorrectPasswordMessage=目前密碼不正確。
|
incorrectPasswordMessage=目前密碼不正確。
|
||||||
usernameExistsMessage=新使用者名稱已存在。
|
usernameExistsMessage=新使用者名稱已存在。
|
||||||
|
invalidUsernameMessage=使用者名無效,使用者名只能包含字母字元和數位。
|
||||||
|
deleteCurrentUserMessage=無法刪除目前登錄的使用者。
|
||||||
|
deleteUsernameExistsMessage=使用者名不存在,無法刪除。
|
||||||
|
error=Error
|
||||||
|
oops=Oops!
|
||||||
|
help=Help
|
||||||
|
goHomepage=Go to Homepage
|
||||||
|
joinDiscord=Join our Discord server
|
||||||
|
seeDockerHub=See Docker Hub
|
||||||
|
visitGithub=Visit Github Repository
|
||||||
|
donate=Donate
|
||||||
|
color=Color
|
||||||
|
sponsor=Sponsor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline Menu (Alpha)
|
pipeline.header=管道選單(測試版)
|
||||||
pipeline.uploadButton=Upload Custom
|
pipeline.uploadButton=上傳自定義
|
||||||
pipeline.configureButton=Configure
|
pipeline.configureButton=配置
|
||||||
pipeline.defaultOption=Custom
|
pipeline.defaultOption=自訂
|
||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=送出
|
||||||
|
pipeline.help=管道説明
|
||||||
|
pipeline.scanHelp=資料夾掃描説明
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
######################
|
######################
|
||||||
pipelineOptions.header=Pipeline Configuration
|
pipelineOptions.header=管道配置
|
||||||
pipelineOptions.pipelineNameLabel=Pipeline Name
|
pipelineOptions.pipelineNameLabel=管道名稱
|
||||||
pipelineOptions.saveSettings=Save Operation Settings
|
pipelineOptions.saveSettings=保存操作設置
|
||||||
pipelineOptions.pipelineNamePrompt=Enter pipeline name here
|
pipelineOptions.pipelineNamePrompt=在此處輸入管道名稱
|
||||||
pipelineOptions.selectOperation=Select Operation
|
pipelineOptions.selectOperation=選擇操作
|
||||||
pipelineOptions.addOperationButton=Add operation
|
pipelineOptions.addOperationButton=添加操作
|
||||||
pipelineOptions.pipelineHeader=Pipeline:
|
pipelineOptions.pipelineHeader=管道:
|
||||||
pipelineOptions.saveButton=Download
|
pipelineOptions.saveButton=下載
|
||||||
pipelineOptions.validateButton=Validate
|
pipelineOptions.validateButton=驗證
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -108,7 +125,7 @@ settings.accountSettings=帳戶設定
|
|||||||
|
|
||||||
changeCreds.title=變更憑證
|
changeCreds.title=變更憑證
|
||||||
changeCreds.header=更新您的帳戶詳細資訊
|
changeCreds.header=更新您的帳戶詳細資訊
|
||||||
changeCreds.changeUserAndPassword=您正在使用預設的登入憑證。請輸入新的密碼(如果需要,也可以輸入使用者名稱)
|
changeCreds.changePassword=您使用的是預設登錄認證。請輸入新密碼
|
||||||
changeCreds.newUsername=新使用者名稱
|
changeCreds.newUsername=新使用者名稱
|
||||||
changeCreds.oldPassword=目前密碼
|
changeCreds.oldPassword=目前密碼
|
||||||
changeCreds.newPassword=新密碼
|
changeCreds.newPassword=新密碼
|
||||||
@@ -143,12 +160,15 @@ adminUserSettings.header=管理使用者控制設定
|
|||||||
adminUserSettings.admin=管理員
|
adminUserSettings.admin=管理員
|
||||||
adminUserSettings.user=使用者
|
adminUserSettings.user=使用者
|
||||||
adminUserSettings.addUser=新增使用者
|
adminUserSettings.addUser=新增使用者
|
||||||
|
adminUserSettings.usernameInfo=使用者名只能包含字母和數位,不能包含空格或特殊字元。
|
||||||
adminUserSettings.roles=角色
|
adminUserSettings.roles=角色
|
||||||
adminUserSettings.role=角色
|
adminUserSettings.role=角色
|
||||||
adminUserSettings.actions=操作
|
adminUserSettings.actions=操作
|
||||||
adminUserSettings.apiUser=受限制的 API 使用者
|
adminUserSettings.apiUser=受限制的 API 使用者
|
||||||
|
adminUserSettings.extraApiUser=其他受限 API 使用者
|
||||||
adminUserSettings.webOnlyUser=僅使用網頁的使用者
|
adminUserSettings.webOnlyUser=僅使用網頁的使用者
|
||||||
adminUserSettings.demoUser=示範用途的使用者(無自訂設定)
|
adminUserSettings.demoUser=示範用途的使用者(無自訂設定)
|
||||||
|
adminUserSettings.internalApiUser=內部 API 使用者
|
||||||
adminUserSettings.forceChange=強制使用者在登入時修改使用者名稱/密碼
|
adminUserSettings.forceChange=強制使用者在登入時修改使用者名稱/密碼
|
||||||
adminUserSettings.submit=儲存
|
adminUserSettings.submit=儲存
|
||||||
|
|
||||||
@@ -388,9 +408,18 @@ home.split-by-sections.title=依區段分割 PDF
|
|||||||
home.split-by-sections.desc=將 PDF 的每一頁分割為較小的水平和垂直區段
|
home.split-by-sections.desc=將 PDF 的每一頁分割為較小的水平和垂直區段
|
||||||
split-by-sections.tags=區段分割, 劃分, 自訂
|
split-by-sections.tags=區段分割, 劃分, 自訂
|
||||||
|
|
||||||
home.AddStampRequest.title=Add Stamp to PDF
|
home.AddStampRequest.title=將圖章添加到 PDF
|
||||||
home.AddStampRequest.desc=Add text or add image stamps at set locations
|
home.AddStampRequest.desc=在設置位置添加文字或添加圖像圖章
|
||||||
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
AddStampRequest.tags=圖章,添加圖片,中心圖像,浮水印,PDF,嵌入,自訂
|
||||||
|
|
||||||
|
|
||||||
|
home.PDFToBook.title=PDF 轉電子書
|
||||||
|
home.PDFToBook.desc=使用 calibre 將 PDF 轉換為書籍/漫畫格式
|
||||||
|
PDFToBook.tags=電子書,漫畫,Calibre,轉換,日本漫畫,亞馬遜,kindle
|
||||||
|
|
||||||
|
home.BookToPDF.title=電子書轉 PDF
|
||||||
|
home.BookToPDF.desc=使用 calibre 將書籍/漫畫格式轉換為 PDF
|
||||||
|
BookToPDF.tags=電子書,漫畫,Calibre,轉換,日本漫畫,亞馬遜,kindle
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
@@ -400,6 +429,7 @@ AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Cust
|
|||||||
###########################
|
###########################
|
||||||
#login
|
#login
|
||||||
login.title=登入
|
login.title=登入
|
||||||
|
login.header=登入
|
||||||
login.signin=登入
|
login.signin=登入
|
||||||
login.rememberme=記住我
|
login.rememberme=記住我
|
||||||
login.invalid=使用者名稱或密碼無效。
|
login.invalid=使用者名稱或密碼無效。
|
||||||
@@ -437,6 +467,7 @@ pdfToSinglePage.submit=轉換為單一頁面
|
|||||||
pageExtracter.title=提取頁面
|
pageExtracter.title=提取頁面
|
||||||
pageExtracter.header=提取頁面
|
pageExtracter.header=提取頁面
|
||||||
pageExtracter.submit=提取
|
pageExtracter.submit=提取
|
||||||
|
pageExtracter.placeholder=(例如 1,2,8 或 4,7,12-16 或 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#getPdfInfo
|
#getPdfInfo
|
||||||
@@ -451,7 +482,7 @@ MarkdownToPDF.title=Markdown 轉 PDF
|
|||||||
MarkdownToPDF.header=Markdown 轉 PDF
|
MarkdownToPDF.header=Markdown 轉 PDF
|
||||||
MarkdownToPDF.submit=轉換
|
MarkdownToPDF.submit=轉換
|
||||||
MarkdownToPDF.help=正在進行中
|
MarkdownToPDF.help=正在進行中
|
||||||
MarkdownToPDF.credit=使用 WeasyPrint
|
MarkdownToPDF.credit=此服務使用 WeasyPrint 進行轉換
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -459,7 +490,7 @@ MarkdownToPDF.credit=使用 WeasyPrint
|
|||||||
URLToPDF.title=URL 轉 PDF
|
URLToPDF.title=URL 轉 PDF
|
||||||
URLToPDF.header=URL 轉 PDF
|
URLToPDF.header=URL 轉 PDF
|
||||||
URLToPDF.submit=轉換
|
URLToPDF.submit=轉換
|
||||||
URLToPDF.credit=使用 WeasyPrint
|
URLToPDF.credit=此服務使用 WeasyPrint 進行轉換
|
||||||
|
|
||||||
|
|
||||||
#html-to-pdf
|
#html-to-pdf
|
||||||
@@ -467,38 +498,38 @@ HTMLToPDF.title=HTML 轉 PDF
|
|||||||
HTMLToPDF.header=HTML 轉 PDF
|
HTMLToPDF.header=HTML 轉 PDF
|
||||||
HTMLToPDF.help=接受 HTML 文件和包含所需 html/css/images 等的 ZIP
|
HTMLToPDF.help=接受 HTML 文件和包含所需 html/css/images 等的 ZIP
|
||||||
HTMLToPDF.submit=轉換
|
HTMLToPDF.submit=轉換
|
||||||
HTMLToPDF.credit=使用 WeasyPrint
|
HTMLToPDF.credit=此服務使用 WeasyPrint 進行轉換
|
||||||
HTMLToPDF.zoom=Zoom level for displaying the website.
|
HTMLToPDF.zoom=用於顯示網站的縮放級別。
|
||||||
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
|
HTMLToPDF.pageWidth=頁面寬度-以釐米為單位(填空則使用預設值)
|
||||||
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
|
HTMLToPDF.pageHeight=頁面高度-以釐米為單位(填空則使用預設值)
|
||||||
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginTop=頁面的上邊距-以毫米為單位(填空則使用預設值)
|
||||||
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginBottom=頁面的下邊距-以毫米為單位(填空則使用預設值)
|
||||||
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginLeft=頁面的左邊距-以毫米為單位(填空則使用預設值)
|
||||||
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
|
HTMLToPDF.marginRight=頁面的右邊距-以毫米為單位(填空則使用預設值)
|
||||||
HTMLToPDF.printBackground=Render the background of websites.
|
HTMLToPDF.printBackground=渲染網站的背景。
|
||||||
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
|
HTMLToPDF.defaultHeader=啟用預設標頭(名稱和頁碼)
|
||||||
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
|
HTMLToPDF.cssMediaType=更改頁面的 CSS 媒體類型。
|
||||||
HTMLToPDF.none=None
|
HTMLToPDF.none=無
|
||||||
HTMLToPDF.print=Print
|
HTMLToPDF.print=列印
|
||||||
HTMLToPDF.screen=Screen
|
HTMLToPDF.screen=螢幕
|
||||||
|
|
||||||
|
|
||||||
#AddStampRequest
|
#AddStampRequest
|
||||||
AddStampRequest.header=Stamp PDF
|
AddStampRequest.header=圖章 PDF
|
||||||
AddStampRequest.title=Stamp PDF
|
AddStampRequest.title=圖章 PDF
|
||||||
AddStampRequest.stampType=Stamp Type
|
AddStampRequest.stampType=圖章類型
|
||||||
AddStampRequest.stampText=Stamp Text
|
AddStampRequest.stampText=圖章文字
|
||||||
AddStampRequest.stampImage=Stamp Image
|
AddStampRequest.stampImage=圖章圖片
|
||||||
AddStampRequest.alphabet=Alphabet
|
AddStampRequest.alphabet=字母表
|
||||||
AddStampRequest.fontSize=Font/Image Size
|
AddStampRequest.fontSize=字體/圖像大小
|
||||||
AddStampRequest.rotation=Rotation
|
AddStampRequest.rotation=旋轉
|
||||||
AddStampRequest.opacity=Opacity
|
AddStampRequest.opacity=透明度
|
||||||
AddStampRequest.position=Position
|
AddStampRequest.position=位置
|
||||||
AddStampRequest.overrideX=Override X Coordinate
|
AddStampRequest.overrideX=覆蓋 X 座標
|
||||||
AddStampRequest.overrideY=Override Y Coordinate
|
AddStampRequest.overrideY=覆蓋 Y 座標
|
||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=自訂邊緣
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=自訂文字顏色
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=送出
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
@@ -523,7 +554,7 @@ addPageNumbers.selectText.5=要編號的頁面
|
|||||||
addPageNumbers.selectText.6=自訂文字
|
addPageNumbers.selectText.6=自訂文字
|
||||||
addPageNumbers.customTextDesc=自訂文字
|
addPageNumbers.customTextDesc=自訂文字
|
||||||
addPageNumbers.numberPagesDesc=要編號的頁面,預設為 '全部',也可使用 1-5 或 2,5,9 等格式
|
addPageNumbers.numberPagesDesc=要編號的頁面,預設為 '全部',也可使用 1-5 或 2,5,9 等格式
|
||||||
addPageNumbers.customNumberDesc=預設為 {n},也接受 '頁面 {n} 共 {total}','文字-{n}','{filename}-{n}
|
addPageNumbers.customNumberDesc=預設為 {n},也接受 '頁面 {n} 共 {total}','文字-{n}','{filename}-{n}'
|
||||||
addPageNumbers.submit=新增頁碼
|
addPageNumbers.submit=新增頁碼
|
||||||
|
|
||||||
|
|
||||||
@@ -587,11 +618,11 @@ scalePages.submit=送出
|
|||||||
certSign.title=憑證簽章
|
certSign.title=憑證簽章
|
||||||
certSign.header=使用您的憑證簽章(進行中)
|
certSign.header=使用您的憑證簽章(進行中)
|
||||||
certSign.selectPDF=選擇要簽章的 PDF 檔案:
|
certSign.selectPDF=選擇要簽章的 PDF 檔案:
|
||||||
certSign.jksNote=Note: If your certificate type is not listed below, please convert it to a Java Keystore (.jks) file using the keytool command line tool. Then, choose the .jks file option below.
|
certSign.jksNote=注意:如果您的證書類型未在下面列出,請使用keytool命令行工具將其轉換為Java Keystore (.jks) 檔。 然後,選擇下面的 .jks 文件選項。
|
||||||
certSign.selectKey=選擇您的私鑰文件(PKCS#8 格式,可能是 .pem 或 .der):
|
certSign.selectKey=選擇您的私鑰文件(PKCS#8 格式,可能是 .pem 或 .der):
|
||||||
certSign.selectCert=選擇您的憑證文件(X.509 格式,可能是 .pem 或 .der):
|
certSign.selectCert=選擇您的憑證文件(X.509 格式,可能是 .pem 或 .der):
|
||||||
certSign.selectP12=選擇您的 PKCS#12 金鑰庫文件(.p12 或 .pfx)(可選,如果提供,它應包含您的私鑰和憑證):
|
certSign.selectP12=選擇您的 PKCS#12 金鑰庫文件(.p12 或 .pfx)(可選,如果提供,它應包含您的私鑰和憑證):
|
||||||
certSign.selectJKS=Select Your Java Keystore File (.jks or .keystore):
|
certSign.selectJKS=選擇你的 Java Keystore 檔 (.jks 或 .keystore):
|
||||||
certSign.certType=憑證類型
|
certSign.certType=憑證類型
|
||||||
certSign.password=輸入您的金鑰庫或私鑰密碼(如果有):
|
certSign.password=輸入您的金鑰庫或私鑰密碼(如果有):
|
||||||
certSign.showSig=顯示簽章
|
certSign.showSig=顯示簽章
|
||||||
@@ -624,6 +655,18 @@ compare.document.1=文件 1
|
|||||||
compare.document.2=文件 2
|
compare.document.2=文件 2
|
||||||
compare.submit=比較
|
compare.submit=比較
|
||||||
|
|
||||||
|
#BookToPDF
|
||||||
|
BookToPDF.title=電子書和漫畫轉 PDF
|
||||||
|
BookToPDF.header=電子書轉 PDF
|
||||||
|
BookToPDF.credit=此服務使用 Calibre 進行轉換
|
||||||
|
BookToPDF.submit=轉換
|
||||||
|
|
||||||
|
#PDFToBook
|
||||||
|
PDFToBook.title=PDF 轉電子書
|
||||||
|
PDFToBook.header=PDF 轉電子書
|
||||||
|
PDFToBook.selectText.1=格式
|
||||||
|
PDFToBook.credit=此服務使用 Calibre 進行轉換
|
||||||
|
PDFToBook.submit=轉換
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=簽章
|
sign.title=簽章
|
||||||
@@ -727,11 +770,23 @@ merge.submit=合併
|
|||||||
pdfOrganiser.title=頁面整理
|
pdfOrganiser.title=頁面整理
|
||||||
pdfOrganiser.header=PDF 頁面整理
|
pdfOrganiser.header=PDF 頁面整理
|
||||||
pdfOrganiser.submit=重新排列頁面
|
pdfOrganiser.submit=重新排列頁面
|
||||||
|
pdfOrganiser.mode=模式
|
||||||
|
pdfOrganiser.mode.1=自定義頁面順序
|
||||||
|
pdfOrganiser.mode.2=反向順序
|
||||||
|
pdfOrganiser.mode.3=雙工排序
|
||||||
|
pdfOrganiser.mode.4=摺頁冊排序
|
||||||
|
pdfOrganiser.mode.5=側裝訂摺頁冊排序
|
||||||
|
pdfOrganiser.mode.6=奇偶拆分
|
||||||
|
pdfOrganiser.mode.7=刪除第一頁
|
||||||
|
pdfOrganiser.mode.8=刪除最後一頁
|
||||||
|
pdfOrganiser.mode.9=刪除第一頁和最後一頁
|
||||||
|
pdfOrganiser.placeholder=(例如 1,3,2 或 4-8,2,10-12 或 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=PDF 多工具
|
multiTool.title=PDF 多工具
|
||||||
multiTool.header=PDF 多工具
|
multiTool.header=PDF 多工具
|
||||||
|
multiTool.uploadPrompts=Please Upload PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=檢視 PDF
|
viewPdf.title=檢視 PDF
|
||||||
@@ -742,6 +797,7 @@ pageRemover.title=頁面移除
|
|||||||
pageRemover.header=PDF 頁面移除
|
pageRemover.header=PDF 頁面移除
|
||||||
pageRemover.pagesToDelete=要刪除的頁面(輸入以逗號分隔的頁碼):
|
pageRemover.pagesToDelete=要刪除的頁面(輸入以逗號分隔的頁碼):
|
||||||
pageRemover.submit=刪除頁面
|
pageRemover.submit=刪除頁面
|
||||||
|
pageRemover.placeholder=(例如 1,2,6 或 1-10,15-30)
|
||||||
|
|
||||||
|
|
||||||
#rotate
|
#rotate
|
||||||
@@ -751,17 +807,17 @@ rotate.selectAngle=選擇旋轉角度(以 90 度的倍數):
|
|||||||
rotate.submit=旋轉
|
rotate.submit=旋轉
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#split-pdfs
|
||||||
split.title=分割 PDF
|
split.title=分割 PDF
|
||||||
split.header=分割 PDF
|
split.header=分割 PDF
|
||||||
split.desc.1=您選擇的數字是您希望進行分割的頁碼
|
split.desc.1=您選擇的數字是您希望進行分割的頁碼
|
||||||
split.desc.2=因此,選擇 1,3,7-8 將會將一個 10 頁的文件分割為 6 個單獨的 PDF,包括:
|
split.desc.2=因此,選擇 1,3,7-9 將會將一個 10 頁的文件分割為 6 個單獨的 PDF,包括:
|
||||||
split.desc.3=文件 #1:頁面 1
|
split.desc.3=文件 #1:頁面 1
|
||||||
split.desc.4=文件 #2:頁面 2 和 3
|
split.desc.4=文件 #2:頁面 2 和 3
|
||||||
split.desc.5=文件 #3:頁面 4、5 和 6
|
split.desc.5=文件 #3:頁面 4、5、6 和 7
|
||||||
split.desc.6=文件 #4:頁面 7
|
split.desc.6=文件 #4:頁面 8
|
||||||
split.desc.7=文件 #5:頁面 8
|
split.desc.7=文件 #5:頁面 9
|
||||||
split.desc.8=文件 #6:頁面 9 和 10
|
split.desc.8=文件 #6:頁面 10
|
||||||
split.splitPages=輸入要分割的頁面:
|
split.splitPages=輸入要分割的頁面:
|
||||||
split.submit=分割
|
split.submit=分割
|
||||||
|
|
||||||
@@ -829,6 +885,8 @@ watermark.selectText.7=不透明度(0% - 100%):
|
|||||||
watermark.selectText.8=浮水印類型:
|
watermark.selectText.8=浮水印類型:
|
||||||
watermark.selectText.9=浮水印影像:
|
watermark.selectText.9=浮水印影像:
|
||||||
watermark.submit=新增浮水印
|
watermark.submit=新增浮水印
|
||||||
|
watermark.type.1=文字
|
||||||
|
watermark.type.2=圖片
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -880,6 +938,7 @@ pdfToPDFA.title=PDF 轉 PDF/A
|
|||||||
pdfToPDFA.header=PDF 轉 PDF/A
|
pdfToPDFA.header=PDF 轉 PDF/A
|
||||||
pdfToPDFA.credit=此服務使用 OCRmyPDF 進行 PDF/A 轉換
|
pdfToPDFA.credit=此服務使用 OCRmyPDF 進行 PDF/A 轉換
|
||||||
pdfToPDFA.submit=轉換
|
pdfToPDFA.submit=轉換
|
||||||
|
pdfToPDFA.tip=目前不支援上傳多個
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -909,7 +968,7 @@ PDFToText.submit=轉換
|
|||||||
#PDFToHTML
|
#PDFToHTML
|
||||||
PDFToHTML.title=PDF 轉 HTML
|
PDFToHTML.title=PDF 轉 HTML
|
||||||
PDFToHTML.header=PDF 轉 HTML
|
PDFToHTML.header=PDF 轉 HTML
|
||||||
PDFToHTML.credit=此服務使用 LibreOffice 進行檔案轉換。
|
PDFToHTML.credit=此服務使用 pdftohtml 進行檔案轉換。
|
||||||
PDFToHTML.submit=轉換
|
PDFToHTML.submit=轉換
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +985,7 @@ PDFToCSV.prompt=選擇要提取表格的頁面
|
|||||||
PDFToCSV.submit=提取
|
PDFToCSV.submit=提取
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
|
split-by-size-or-count.title=依大小或數量分割 PDF
|
||||||
split-by-size-or-count.header=依大小或數量分割 PDF
|
split-by-size-or-count.header=依大小或數量分割 PDF
|
||||||
split-by-size-or-count.type.label=選擇分割類型
|
split-by-size-or-count.type.label=選擇分割類型
|
||||||
split-by-size-or-count.type.size=依大小
|
split-by-size-or-count.type.size=依大小
|
||||||
@@ -960,14 +1020,27 @@ split-by-sections.vertical.label=垂直劃分
|
|||||||
split-by-sections.horizontal.placeholder=輸入水平劃分的數量
|
split-by-sections.horizontal.placeholder=輸入水平劃分的數量
|
||||||
split-by-sections.vertical.placeholder=輸入垂直劃分的數量
|
split-by-sections.vertical.placeholder=輸入垂直劃分的數量
|
||||||
split-by-sections.submit=分割 PDF
|
split-by-sections.submit=分割 PDF
|
||||||
|
split-by-sections.merge=是否合併為一個pdf
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=許可證
|
||||||
licenses.title=3rd Party Licenses
|
licenses.title=第三方許可證
|
||||||
licenses.header=3rd Party Licenses
|
licenses.header=第三方許可證
|
||||||
licenses.module=Module
|
licenses.module=模組
|
||||||
licenses.version=Version
|
licenses.version=版本
|
||||||
licenses.license=License
|
licenses.license=許可證
|
||||||
|
|
||||||
|
|
||||||
|
# error
|
||||||
|
error.sorry=Sorry for the issue!
|
||||||
|
error.needHelp=Need help / Found an issue?
|
||||||
|
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
|
||||||
|
error.404.head=404 - Page Not Found | Oops, we tripped in the code!
|
||||||
|
error.404.1=We can't seem to find the page you're looking for.
|
||||||
|
error.404.2=Something went wrong
|
||||||
|
error.github=Submit a ticket on GitHub
|
||||||
|
error.showStack=Show Stack Trace
|
||||||
|
error.copyStack=Copy Stack Trace
|
||||||
|
error.githubSubmit=GitHub - Submit a ticket
|
||||||
|
error.discordSubmit=Discord - Submit Support post
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user