Compare commits
71 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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
|
||||||
|
|
||||||
|
|||||||
4
.github/workflows/push-docker.yml
vendored
4
.github/workflows/push-docker.yml
vendored
@@ -6,6 +6,10 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
- main
|
- main
|
||||||
|
paths-ignore:
|
||||||
|
- ".github/**"
|
||||||
|
- "**/*.md"
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
packages: write
|
packages: write
|
||||||
|
|||||||
3
.github/workflows/swagger.yml
vendored
3
.github/workflows/swagger.yml
vendored
@@ -5,6 +5,9 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
|
paths-ignore:
|
||||||
|
- ".github/**"
|
||||||
|
- "**/*.md"
|
||||||
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)$
|
||||||
66
Dockerfile
66
Dockerfile
@@ -1,6 +1,26 @@
|
|||||||
# Main stage
|
# Main stage
|
||||||
FROM alpine:3.19.1
|
FROM alpine:3.19.1
|
||||||
|
|
||||||
|
# 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 && \
|
||||||
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 && \
|
||||||
@@ -12,6 +32,8 @@ RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /et
|
|||||||
bash \
|
bash \
|
||||||
curl \
|
curl \
|
||||||
openjdk17-jre \
|
openjdk17-jre \
|
||||||
|
su-exec \
|
||||||
|
shadow \
|
||||||
# Doc conversion
|
# Doc conversion
|
||||||
libreoffice@testing \
|
libreoffice@testing \
|
||||||
# OCR MY PDF (unpaper for descew and other advanced featues)
|
# OCR MY PDF (unpaper for descew and other advanced featues)
|
||||||
@@ -24,46 +46,18 @@ 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
|
||||||
|
|
||||||
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"]
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -29,7 +29,10 @@ RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /et
|
|||||||
tini \
|
tini \
|
||||||
bash \
|
bash \
|
||||||
curl \
|
curl \
|
||||||
|
gcc \
|
||||||
openjdk17-jre \
|
openjdk17-jre \
|
||||||
|
su-exec \
|
||||||
|
shadow \
|
||||||
# Doc conversion
|
# Doc conversion
|
||||||
libreoffice@testing \
|
libreoffice@testing \
|
||||||
# python and pip
|
# python and pip
|
||||||
@@ -37,17 +40,16 @@ 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 && \
|
||||||
# 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
|
# Set up necessary directories and permissions
|
||||||
mkdir -p /configs /logs /customFiles /pipeline/watchedFolders /pipeline/finishedFolders && \
|
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
|
# Set font cache and permissions
|
||||||
fc-cache -f -v && \
|
fc-cache -f -v && \
|
||||||
chmod +x /scripts/*.sh
|
chmod +x /scripts/*.sh && \
|
||||||
# chown stirlingpdfuser:stirlingpdfgroup /app.jar
|
# 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
|
||||||
|
|
||||||
|
|
||||||
# Set environment variables
|
# Set environment variables
|
||||||
ENV ENDPOINTS_GROUPS_TO_REMOVE=OpenCV,OCRmyPDF
|
ENV ENDPOINTS_GROUPS_TO_REMOVE=OpenCV,OCRmyPDF
|
||||||
@@ -56,6 +58,6 @@ ENV DOCKER_ENABLE_SECURITY=false
|
|||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
|
|
||||||
# Run the application
|
# Run the application
|
||||||
#USER stirlingpdfuser
|
|
||||||
ENTRYPOINT ["tini", "--", "/scripts/init-without-ocr.sh"]
|
ENTRYPOINT ["tini", "--", "/scripts/init-without-ocr.sh"]
|
||||||
CMD ["java", "-Dfile.encoding=UTF-8", "-jar", "/app.jar"]
|
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.
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -114,6 +114,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
|
||||||
|
|
||||||
@@ -137,6 +138,7 @@ 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".
|
||||||
@@ -228,6 +230,7 @@ metrics:
|
|||||||
- ``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
|
||||||
|
|||||||
50
build.gradle
50
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.4'
|
||||||
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'
|
||||||
@@ -130,7 +128,7 @@ dependencies {
|
|||||||
// implementation 'com.twelvemonkeys.imageio:imageio-xwd:3.10.1'
|
// implementation 'com.twelvemonkeys.imageio:imageio-xwd:3.10.1'
|
||||||
|
|
||||||
implementation 'commons-io:commons-io:2.15.1'
|
implementation 'commons-io:commons-io:2.15.1'
|
||||||
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
|
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.4.0'
|
||||||
|
|
||||||
//general PDF
|
//general PDF
|
||||||
|
|
||||||
@@ -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,5 +1,5 @@
|
|||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
appVersion: 0.20.2
|
appVersion: 0.22.4
|
||||||
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:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -6,7 +6,8 @@
|
|||||||
"parameters": {
|
"parameters": {
|
||||||
"horizontalDivisions": 2,
|
"horizontalDivisions": 2,
|
||||||
"verticalDivisions": 2,
|
"verticalDivisions": 2,
|
||||||
"fileInput": "automated"
|
"fileInput": "automated",
|
||||||
|
"merge": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -30,4 +31,4 @@
|
|||||||
},
|
},
|
||||||
"outputDir": "{outputFolder}",
|
"outputDir": "{outputFolder}",
|
||||||
"outputFileName": "{filename}"
|
"outputFileName": "{filename}"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 (loginAttemptService.loginAttemptCheck(username)) {
|
if (!isDemoUser(username)) {
|
||||||
setDefaultFailureUrl("/login?error=locked");
|
if (loginAttemptService.loginAttemptCheck(username)) {
|
||||||
|
|
||||||
} else {
|
|
||||||
if (exception.getClass().isAssignableFrom(BadCredentialsException.class)) {
|
|
||||||
setDefaultFailureUrl("/login?error=badcredentials");
|
|
||||||
} else if (exception.getClass().isAssignableFrom(LockedException.class)) {
|
|
||||||
setDefaultFailureUrl("/login?error=locked");
|
setDefaultFailureUrl("/login?error=locked");
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (exception.getClass().isAssignableFrom(LockedException.class)) {
|
||||||
|
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");
|
||||||
}
|
}
|
||||||
@@ -139,12 +100,45 @@ public class UserController {
|
|||||||
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) {
|
||||||
@@ -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;
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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,194 +73,208 @@ 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");
|
|
||||||
|
|
||||||
// Determine initial optimization level based on expected size reduction, only if in
|
|
||||||
// autoMode
|
|
||||||
if (autoMode) {
|
|
||||||
double sizeReductionRatio = expectedOutputSize / (double) inputFileSize;
|
|
||||||
if (sizeReductionRatio > 0.7) {
|
|
||||||
optimizeLevel = 1;
|
|
||||||
} else if (sizeReductionRatio > 0.5) {
|
|
||||||
optimizeLevel = 2;
|
|
||||||
} else if (sizeReductionRatio > 0.35) {
|
|
||||||
optimizeLevel = 3;
|
|
||||||
} else {
|
|
||||||
optimizeLevel = 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean sizeMet = false;
|
|
||||||
while (!sizeMet && optimizeLevel <= 4) {
|
|
||||||
// Prepare the Ghostscript command
|
|
||||||
List<String> command = new ArrayList<>();
|
|
||||||
command.add("gs");
|
|
||||||
command.add("-sDEVICE=pdfwrite");
|
|
||||||
command.add("-dCompatibilityLevel=1.4");
|
|
||||||
|
|
||||||
switch (optimizeLevel) {
|
|
||||||
case 1:
|
|
||||||
command.add("-dPDFSETTINGS=/prepress");
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
command.add("-dPDFSETTINGS=/printer");
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
command.add("-dPDFSETTINGS=/ebook");
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
command.add("-dPDFSETTINGS=/screen");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
command.add("-dPDFSETTINGS=/default");
|
|
||||||
}
|
|
||||||
|
|
||||||
command.add("-dNOPAUSE");
|
|
||||||
command.add("-dQUIET");
|
|
||||||
command.add("-dBATCH");
|
|
||||||
command.add("-sOutputFile=" + tempOutputFile.toString());
|
|
||||||
command.add(tempInputFile.toString());
|
|
||||||
|
|
||||||
ProcessExecutorResult returnCode =
|
|
||||||
ProcessExecutor.getInstance(ProcessExecutor.Processes.GHOSTSCRIPT)
|
|
||||||
.runCommandWithOutputHandling(command);
|
|
||||||
|
|
||||||
// Check if file size is within expected size or not auto mode so instantly finish
|
|
||||||
long outputFileSize = Files.size(tempOutputFile);
|
|
||||||
if (outputFileSize <= expectedOutputSize || !autoMode) {
|
|
||||||
sizeMet = true;
|
|
||||||
} else {
|
|
||||||
// Increase optimization level for next iteration
|
|
||||||
optimizeLevel++;
|
|
||||||
if (autoMode && optimizeLevel > 3) {
|
|
||||||
System.out.println("Skipping level 4 due to bad results in auto mode");
|
|
||||||
sizeMet = true;
|
|
||||||
} else if (optimizeLevel == 5) {
|
|
||||||
|
|
||||||
|
Path tempOutputFile = null;
|
||||||
|
byte[] pdfBytes;
|
||||||
|
try {
|
||||||
|
tempOutputFile = Files.createTempFile("output_", ".pdf");
|
||||||
|
// Determine initial optimization level based on expected size reduction, only if in
|
||||||
|
// autoMode
|
||||||
|
if (autoMode) {
|
||||||
|
double sizeReductionRatio = expectedOutputSize / (double) inputFileSize;
|
||||||
|
if (sizeReductionRatio > 0.7) {
|
||||||
|
optimizeLevel = 1;
|
||||||
|
} else if (sizeReductionRatio > 0.5) {
|
||||||
|
optimizeLevel = 2;
|
||||||
|
} else if (sizeReductionRatio > 0.35) {
|
||||||
|
optimizeLevel = 3;
|
||||||
} else {
|
} else {
|
||||||
System.out.println(
|
optimizeLevel = 3;
|
||||||
"Increasing ghostscript optimisation level to " + optimizeLevel);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (expectedOutputSize != null && autoMode) {
|
boolean sizeMet = false;
|
||||||
long outputFileSize = Files.size(tempOutputFile);
|
while (!sizeMet && optimizeLevel <= 4) {
|
||||||
if (outputFileSize > expectedOutputSize) {
|
// Prepare the Ghostscript command
|
||||||
try (PDDocument doc = Loader.loadPDF(new File(tempOutputFile.toString()))) {
|
List<String> command = new ArrayList<>();
|
||||||
long previousFileSize = 0;
|
command.add("gs");
|
||||||
double scaleFactor = 1.0;
|
command.add("-sDEVICE=pdfwrite");
|
||||||
while (true) {
|
command.add("-dCompatibilityLevel=1.4");
|
||||||
for (PDPage page : doc.getPages()) {
|
|
||||||
PDResources res = page.getResources();
|
|
||||||
|
|
||||||
for (COSName name : res.getXObjectNames()) {
|
switch (optimizeLevel) {
|
||||||
PDXObject xobj = res.getXObject(name);
|
case 1:
|
||||||
if (xobj instanceof PDImageXObject) {
|
command.add("-dPDFSETTINGS=/prepress");
|
||||||
PDImageXObject image = (PDImageXObject) xobj;
|
break;
|
||||||
|
case 2:
|
||||||
|
command.add("-dPDFSETTINGS=/printer");
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
command.add("-dPDFSETTINGS=/ebook");
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
command.add("-dPDFSETTINGS=/screen");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
command.add("-dPDFSETTINGS=/default");
|
||||||
|
}
|
||||||
|
|
||||||
// Get the image in BufferedImage format
|
command.add("-dNOPAUSE");
|
||||||
BufferedImage bufferedImage = image.getImage();
|
command.add("-dQUIET");
|
||||||
|
command.add("-dBATCH");
|
||||||
|
command.add("-sOutputFile=" + tempOutputFile.toString());
|
||||||
|
command.add(tempInputFile.toString());
|
||||||
|
|
||||||
// Calculate the new dimensions
|
ProcessExecutorResult returnCode =
|
||||||
int newWidth = (int) (bufferedImage.getWidth() * scaleFactor);
|
ProcessExecutor.getInstance(ProcessExecutor.Processes.GHOSTSCRIPT)
|
||||||
int newHeight = (int) (bufferedImage.getHeight() * scaleFactor);
|
.runCommandWithOutputHandling(command);
|
||||||
|
|
||||||
// If the new dimensions are zero, skip this iteration
|
// Check if file size is within expected size or not auto mode so instantly finish
|
||||||
if (newWidth == 0 || newHeight == 0) {
|
long outputFileSize = Files.size(tempOutputFile);
|
||||||
continue;
|
if (outputFileSize <= expectedOutputSize || !autoMode) {
|
||||||
|
sizeMet = true;
|
||||||
|
} else {
|
||||||
|
// Increase optimization level for next iteration
|
||||||
|
optimizeLevel++;
|
||||||
|
if (autoMode && optimizeLevel > 4) {
|
||||||
|
System.out.println("Skipping level 5 due to bad results in auto mode");
|
||||||
|
sizeMet = true;
|
||||||
|
} else {
|
||||||
|
System.out.println(
|
||||||
|
"Increasing ghostscript optimisation level to " + optimizeLevel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (expectedOutputSize != null && autoMode) {
|
||||||
|
long outputFileSize = Files.size(tempOutputFile);
|
||||||
|
byte[] fileBytes = Files.readAllBytes(tempOutputFile);
|
||||||
|
if (outputFileSize > expectedOutputSize) {
|
||||||
|
try (PDDocument doc = Loader.loadPDF(fileBytes)) {
|
||||||
|
long previousFileSize = 0;
|
||||||
|
double scaleFactorConst = 0.9f;
|
||||||
|
double scaleFactor = 0.9f;
|
||||||
|
while (true) {
|
||||||
|
for (PDPage page : doc.getPages()) {
|
||||||
|
PDResources res = page.getResources();
|
||||||
|
if (res != null && res.getXObjectNames() != null) {
|
||||||
|
for (COSName name : res.getXObjectNames()) {
|
||||||
|
PDXObject xobj = res.getXObject(name);
|
||||||
|
if (xobj != null && xobj instanceof PDImageXObject) {
|
||||||
|
PDImageXObject image = (PDImageXObject) xobj;
|
||||||
|
|
||||||
|
// Get the image in BufferedImage format
|
||||||
|
BufferedImage bufferedImage = image.getImage();
|
||||||
|
|
||||||
|
// Calculate the new dimensions
|
||||||
|
int newWidth =
|
||||||
|
(int)
|
||||||
|
(bufferedImage.getWidth()
|
||||||
|
* scaleFactorConst);
|
||||||
|
int newHeight =
|
||||||
|
(int)
|
||||||
|
(bufferedImage.getHeight()
|
||||||
|
* scaleFactorConst);
|
||||||
|
|
||||||
|
// If the new dimensions are zero, skip this iteration
|
||||||
|
if (newWidth == 0 || newHeight == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise, proceed with the scaling
|
||||||
|
Image scaledImage =
|
||||||
|
bufferedImage.getScaledInstance(
|
||||||
|
newWidth,
|
||||||
|
newHeight,
|
||||||
|
Image.SCALE_SMOOTH);
|
||||||
|
|
||||||
|
// Convert the scaled image back to a BufferedImage
|
||||||
|
BufferedImage scaledBufferedImage =
|
||||||
|
new BufferedImage(
|
||||||
|
newWidth,
|
||||||
|
newHeight,
|
||||||
|
BufferedImage.TYPE_INT_RGB);
|
||||||
|
scaledBufferedImage
|
||||||
|
.getGraphics()
|
||||||
|
.drawImage(scaledImage, 0, 0, null);
|
||||||
|
|
||||||
|
// Compress the scaled image
|
||||||
|
ByteArrayOutputStream compressedImageStream =
|
||||||
|
new ByteArrayOutputStream();
|
||||||
|
ImageIO.write(
|
||||||
|
scaledBufferedImage,
|
||||||
|
"jpeg",
|
||||||
|
compressedImageStream);
|
||||||
|
byte[] imageBytes = compressedImageStream.toByteArray();
|
||||||
|
compressedImageStream.close();
|
||||||
|
|
||||||
|
PDImageXObject compressedImage =
|
||||||
|
PDImageXObject.createFromByteArray(
|
||||||
|
doc,
|
||||||
|
imageBytes,
|
||||||
|
image.getCOSObject().toString());
|
||||||
|
|
||||||
|
// Replace the image in the resources with the
|
||||||
|
// compressed
|
||||||
|
// version
|
||||||
|
res.put(name, compressedImage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Otherwise, proceed with the scaling
|
|
||||||
Image scaledImage =
|
|
||||||
bufferedImage.getScaledInstance(
|
|
||||||
newWidth, newHeight, Image.SCALE_SMOOTH);
|
|
||||||
|
|
||||||
// Convert the scaled image back to a BufferedImage
|
|
||||||
BufferedImage scaledBufferedImage =
|
|
||||||
new BufferedImage(
|
|
||||||
newWidth,
|
|
||||||
newHeight,
|
|
||||||
BufferedImage.TYPE_INT_RGB);
|
|
||||||
scaledBufferedImage
|
|
||||||
.getGraphics()
|
|
||||||
.drawImage(scaledImage, 0, 0, null);
|
|
||||||
|
|
||||||
// Compress the scaled image
|
|
||||||
ByteArrayOutputStream compressedImageStream =
|
|
||||||
new ByteArrayOutputStream();
|
|
||||||
ImageIO.write(
|
|
||||||
scaledBufferedImage, "jpeg", compressedImageStream);
|
|
||||||
byte[] imageBytes = compressedImageStream.toByteArray();
|
|
||||||
compressedImageStream.close();
|
|
||||||
|
|
||||||
// Convert compressed image back to PDImageXObject
|
|
||||||
ByteArrayInputStream bais =
|
|
||||||
new ByteArrayInputStream(imageBytes);
|
|
||||||
PDImageXObject compressedImage =
|
|
||||||
PDImageXObject.createFromByteArray(
|
|
||||||
doc,
|
|
||||||
imageBytes,
|
|
||||||
image.getCOSObject().toString());
|
|
||||||
|
|
||||||
// Replace the image in the resources with the compressed
|
|
||||||
// version
|
|
||||||
res.put(name, compressedImage);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// save the document to tempOutputFile again
|
// save the document to tempOutputFile again
|
||||||
doc.save(tempOutputFile.toString());
|
doc.save(tempOutputFile.toString());
|
||||||
|
|
||||||
long currentSize = Files.size(tempOutputFile);
|
long currentSize = Files.size(tempOutputFile);
|
||||||
// Check if the overall PDF size is still larger than expectedOutputSize
|
// Check if the overall PDF size is still larger than expectedOutputSize
|
||||||
if (currentSize > expectedOutputSize) {
|
if (currentSize > expectedOutputSize) {
|
||||||
// Log the current file size and scaleFactor
|
// Log the current file size and scaleFactor
|
||||||
|
|
||||||
System.out.println(
|
System.out.println(
|
||||||
"Current file size: "
|
"Current file size: "
|
||||||
+ FileUtils.byteCountToDisplaySize(currentSize));
|
+ FileUtils.byteCountToDisplaySize(currentSize));
|
||||||
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
|
||||||
throw new RuntimeException(
|
if (scaleFactor < 0.2f || previousFileSize == currentSize) {
|
||||||
"Could not reach the desired size without excessively degrading image quality, lowest size recommended is "
|
throw new RuntimeException(
|
||||||
+ FileUtils.byteCountToDisplaySize(currentSize)
|
"Could not reach the desired size without excessively degrading image quality, lowest size recommended is "
|
||||||
+ ", "
|
+ FileUtils.byteCountToDisplaySize(currentSize)
|
||||||
+ currentSize
|
+ ", "
|
||||||
+ " bytes");
|
+ currentSize
|
||||||
|
+ " bytes");
|
||||||
|
}
|
||||||
|
previousFileSize = currentSize;
|
||||||
|
} else {
|
||||||
|
// The file is small enough, break the loop
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
previousFileSize = currentSize;
|
|
||||||
} else {
|
|
||||||
// The file is small enough, break the loop
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Read the optimized PDF file
|
||||||
|
pdfBytes = Files.readAllBytes(tempOutputFile);
|
||||||
|
|
||||||
|
// Check if optimized file is larger than the original
|
||||||
|
if (pdfBytes.length > inputFileSize) {
|
||||||
|
// Log the occurrence
|
||||||
|
logger.warn(
|
||||||
|
"Optimized file is larger than the original. Returning the original file instead.");
|
||||||
|
|
||||||
|
// Read the original file again
|
||||||
|
pdfBytes = Files.readAllBytes(tempInputFile);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
// Clean up the temporary files
|
||||||
|
Files.delete(tempInputFile);
|
||||||
|
Files.delete(tempOutputFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read the optimized PDF file
|
|
||||||
byte[] pdfBytes = Files.readAllBytes(tempOutputFile);
|
|
||||||
|
|
||||||
// Check if optimized file is larger than the original
|
|
||||||
if (pdfBytes.length > inputFileSize) {
|
|
||||||
// Log the occurrence
|
|
||||||
logger.warn(
|
|
||||||
"Optimized file is larger than the original. Returning the original file instead.");
|
|
||||||
|
|
||||||
// Read the original file again
|
|
||||||
pdfBytes = Files.readAllBytes(tempInputFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clean up the temporary files
|
|
||||||
Files.delete(tempInputFile);
|
|
||||||
Files.delete(tempOutputFile);
|
|
||||||
|
|
||||||
// Return the optimized PDF as a response
|
// Return the optimized PDF as a response
|
||||||
String outputFilename =
|
String outputFilename =
|
||||||
Filenames.toSimpleFileName(inputFile.getOriginalFilename())
|
Filenames.toSimpleFileName(inputFile.getOriginalFilename())
|
||||||
|
|||||||
@@ -73,111 +73,150 @@ public class ExtractImageScansController {
|
|||||||
|
|
||||||
List<String> images = new ArrayList<>();
|
List<String> images = new ArrayList<>();
|
||||||
|
|
||||||
// Check if input file is a PDF
|
List<Path> tempImageFiles = new ArrayList<>();
|
||||||
if ("pdf".equalsIgnoreCase(extension)) {
|
Path tempInputFile = null;
|
||||||
// Load PDF document
|
Path tempZipFile = null;
|
||||||
try (PDDocument document = Loader.loadPDF(form.getFileInput().getBytes())) {
|
List<Path> tempDirs = new ArrayList<>();
|
||||||
PDFRenderer pdfRenderer = new PDFRenderer(document);
|
|
||||||
int pageCount = document.getNumberOfPages();
|
|
||||||
images = new ArrayList<>();
|
|
||||||
|
|
||||||
// Create images of all pages
|
try {
|
||||||
for (int i = 0; i < pageCount; i++) {
|
// Check if input file is a PDF
|
||||||
// Create temp file to save the image
|
if ("pdf".equalsIgnoreCase(extension)) {
|
||||||
Path tempFile = Files.createTempFile("image_", ".png");
|
// Load PDF document
|
||||||
|
try (PDDocument document = Loader.loadPDF(form.getFileInput().getBytes())) {
|
||||||
|
PDFRenderer pdfRenderer = new PDFRenderer(document);
|
||||||
|
pdfRenderer.setSubsamplingAllowed(true);
|
||||||
|
int pageCount = document.getNumberOfPages();
|
||||||
|
images = new ArrayList<>();
|
||||||
|
|
||||||
// Render image and save as temp file
|
// Create images of all pages
|
||||||
BufferedImage image = pdfRenderer.renderImageWithDPI(i, 300);
|
for (int i = 0; i < pageCount; i++) {
|
||||||
ImageIO.write(image, "png", tempFile.toFile());
|
// Create temp file to save the image
|
||||||
|
Path tempFile = Files.createTempFile("image_", ".png");
|
||||||
|
|
||||||
// Add temp file path to images list
|
// Render image and save as temp file
|
||||||
images.add(tempFile.toString());
|
BufferedImage image = pdfRenderer.renderImageWithDPI(i, 300);
|
||||||
|
ImageIO.write(image, "png", tempFile.toFile());
|
||||||
|
|
||||||
|
// Add temp file path to images list
|
||||||
|
images.add(tempFile.toString());
|
||||||
|
tempImageFiles.add(tempFile);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
tempInputFile = Files.createTempFile("input_", "." + extension);
|
||||||
|
Files.copy(
|
||||||
|
form.getFileInput().getInputStream(),
|
||||||
|
tempInputFile,
|
||||||
|
StandardCopyOption.REPLACE_EXISTING);
|
||||||
|
// Add input file path to images list
|
||||||
|
images.add(tempInputFile.toString());
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
Path tempInputFile = Files.createTempFile("input_", "." + extension);
|
|
||||||
Files.copy(
|
|
||||||
form.getFileInput().getInputStream(),
|
|
||||||
tempInputFile,
|
|
||||||
StandardCopyOption.REPLACE_EXISTING);
|
|
||||||
// Add input file path to images list
|
|
||||||
images.add(tempInputFile.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
List<byte[]> processedImageBytes = new ArrayList<>();
|
List<byte[]> processedImageBytes = new ArrayList<>();
|
||||||
|
|
||||||
// Process each image
|
// Process each image
|
||||||
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");
|
||||||
List<String> command =
|
tempDirs.add(tempDir);
|
||||||
new ArrayList<>(
|
List<String> command =
|
||||||
Arrays.asList(
|
new ArrayList<>(
|
||||||
"python3",
|
Arrays.asList(
|
||||||
"./scripts/split_photos.py",
|
"python3",
|
||||||
images.get(i),
|
"./scripts/split_photos.py",
|
||||||
tempDir.toString(),
|
images.get(i),
|
||||||
"--angle_threshold",
|
tempDir.toString(),
|
||||||
String.valueOf(form.getAngleThreshold()),
|
"--angle_threshold",
|
||||||
"--tolerance",
|
String.valueOf(form.getAngleThreshold()),
|
||||||
String.valueOf(form.getTolerance()),
|
"--tolerance",
|
||||||
"--min_area",
|
String.valueOf(form.getTolerance()),
|
||||||
String.valueOf(form.getMinArea()),
|
"--min_area",
|
||||||
"--min_contour_area",
|
String.valueOf(form.getMinArea()),
|
||||||
String.valueOf(form.getMinContourArea()),
|
"--min_contour_area",
|
||||||
"--border_size",
|
String.valueOf(form.getMinContourArea()),
|
||||||
String.valueOf(form.getBorderSize())));
|
"--border_size",
|
||||||
|
String.valueOf(form.getBorderSize())));
|
||||||
|
|
||||||
// Run CLI command
|
// Run CLI command
|
||||||
ProcessExecutorResult returnCode =
|
ProcessExecutorResult returnCode =
|
||||||
ProcessExecutor.getInstance(ProcessExecutor.Processes.PYTHON_OPENCV)
|
ProcessExecutor.getInstance(ProcessExecutor.Processes.PYTHON_OPENCV)
|
||||||
.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 =
|
||||||
for (Path tempOutputFile : tempOutputFiles) {
|
Files.list(tempDir).sorted().collect(Collectors.toList());
|
||||||
byte[] imageBytes = Files.readAllBytes(tempOutputFile);
|
for (Path tempOutputFile : tempOutputFiles) {
|
||||||
processedImageBytes.add(imageBytes);
|
byte[] imageBytes = Files.readAllBytes(tempOutputFile);
|
||||||
|
processedImageBytes.add(imageBytes);
|
||||||
|
}
|
||||||
|
// Clean up the temporary directory
|
||||||
|
FileUtils.deleteDirectory(tempDir.toFile());
|
||||||
}
|
}
|
||||||
// Clean up the temporary directory
|
|
||||||
FileUtils.deleteDirectory(tempDir.toFile());
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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("[.][^.]+$", "") + "_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()))) {
|
||||||
// Add processed images to the zip
|
// Add processed images to the zip
|
||||||
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("[.][^.]+$", "")
|
||||||
+ "_"
|
+ "_"
|
||||||
+ (i + 1)
|
+ (i + 1)
|
||||||
+ ".png");
|
+ ".png");
|
||||||
zipOut.putNextEntry(entry);
|
zipOut.putNextEntry(entry);
|
||||||
zipOut.write(processedImageBytes.get(i));
|
zipOut.write(processedImageBytes.get(i));
|
||||||
zipOut.closeEntry();
|
zipOut.closeEntry();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
byte[] zipBytes = Files.readAllBytes(tempZipFile);
|
||||||
|
|
||||||
|
// Clean up the temporary zip file
|
||||||
|
Files.delete(tempZipFile);
|
||||||
|
|
||||||
|
return WebResponseUtils.bytesToWebResponse(
|
||||||
|
zipBytes, outputZipFilename, MediaType.APPLICATION_OCTET_STREAM);
|
||||||
|
} else {
|
||||||
|
// Return the processed image as a response
|
||||||
|
byte[] imageBytes = processedImageBytes.get(0);
|
||||||
|
return WebResponseUtils.bytesToWebResponse(
|
||||||
|
imageBytes,
|
||||||
|
fileName.replaceFirst("[.][^.]+$", "") + ".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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
byte[] zipBytes = Files.readAllBytes(tempZipFile);
|
tempDirs.forEach(
|
||||||
|
dir -> {
|
||||||
// Clean up the temporary zip file
|
try {
|
||||||
Files.delete(tempZipFile);
|
FileUtils.deleteDirectory(dir.toFile());
|
||||||
|
} catch (IOException e) {
|
||||||
return WebResponseUtils.bytesToWebResponse(
|
logger.error("Failed to delete temporary directory: " + dir, e);
|
||||||
zipBytes, outputZipFilename, MediaType.APPLICATION_OCTET_STREAM);
|
}
|
||||||
} else {
|
});
|
||||||
// Return the processed image as a response
|
|
||||||
byte[] imageBytes = processedImageBytes.get(0);
|
|
||||||
return WebResponseUtils.bytesToWebResponse(
|
|
||||||
imageBytes,
|
|
||||||
fileName.replaceFirst("[.][^.]+$", "") + ".png",
|
|
||||||
MediaType.IMAGE_PNG);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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,33 +54,32 @@ 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);
|
||||||
}
|
|
||||||
|
|
||||||
if (removeEmbeddedFiles) {
|
|
||||||
sanitizeEmbeddedFiles(document);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (removeMetadata) {
|
|
||||||
sanitizeMetadata(document);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (removeLinks) {
|
|
||||||
sanitizeLinks(document);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (removeFonts) {
|
|
||||||
sanitizeFonts(document);
|
|
||||||
}
|
|
||||||
|
|
||||||
return WebResponseUtils.pdfDocToWebResponse(
|
|
||||||
document,
|
|
||||||
Filenames.toSimpleFileName(inputFile.getOriginalFilename())
|
|
||||||
.replaceFirst("[.][^.]+$", "")
|
|
||||||
+ "_sanitized.pdf");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (removeEmbeddedFiles) {
|
||||||
|
sanitizeEmbeddedFiles(document);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (removeMetadata) {
|
||||||
|
sanitizeMetadata(document);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (removeLinks) {
|
||||||
|
sanitizeLinks(document);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (removeFonts) {
|
||||||
|
sanitizeFonts(document);
|
||||||
|
}
|
||||||
|
|
||||||
|
return WebResponseUtils.pdfDocToWebResponse(
|
||||||
|
document,
|
||||||
|
Filenames.toSimpleFileName(inputFile.getOriginalFilename())
|
||||||
|
.replaceFirst("[.][^.]+$", "")
|
||||||
|
+ "_sanitized.pdf");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sanitizeJavaScript(PDDocument document) throws IOException {
|
private void sanitizeJavaScript(PDDocument document) throws IOException {
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,10 +3,14 @@ package stirling.software.SPDF.repository;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.data.repository.query.Param;
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
public static List<Integer> parsePageString(
|
|
||||||
String pageOrder, int totalPages, boolean isOneBased) {
|
|
||||||
if (pageOrder == null || pageOrder.isEmpty()) {
|
|
||||||
return Collections.singletonList(1);
|
|
||||||
}
|
}
|
||||||
if (pageOrder.matches("\\d+")) {
|
try {
|
||||||
// Convert the single number string to an integer and return it in a list
|
return parsePageList(pages.split(","), totalPages, oneBased);
|
||||||
return Collections.singletonList(Integer.parseInt(pageOrder));
|
} catch (NumberFormatException e) {
|
||||||
|
return List.of(1); // Default to first page if input is invalid
|
||||||
}
|
}
|
||||||
return parsePageList(pageOrder.split(","), totalPages, isOneBased);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Integer> parsePageList(String[] pageOrderArr, int totalPages) {
|
public static List<Integer> parsePageList(String[] pages, int totalPages) {
|
||||||
return parsePageList(pageOrderArr, totalPages, false);
|
return parsePageList(pages, totalPages, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Integer> parsePageList(
|
public static List<Integer> parsePageList(String[] pages, int totalPages, boolean oneBased) {
|
||||||
String[] pageOrderArr, int totalPages, boolean isOneBased) {
|
List<Integer> result = new ArrayList<>();
|
||||||
List<Integer> newPageOrder = new ArrayList<>();
|
int offset = oneBased ? 1 : 0;
|
||||||
|
for (String page : pages) {
|
||||||
|
if ("all".equalsIgnoreCase(page)) {
|
||||||
|
|
||||||
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) {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -189,7 +189,11 @@ public class ProcessExecutor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (exitCode != 0) {
|
} else if (exitCode != 0) {
|
||||||
throw new IOException("Command process failed with exit code " + exitCode);
|
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,12 +54,15 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -88,19 +92,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 +112,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 +147,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 +230,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 +400,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 +416,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.
|
||||||
@@ -624,6 +641,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 +690,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
|
||||||
@@ -774,23 +803,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,7 +854,7 @@ 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=إضافة علامة مائية
|
||||||
@@ -857,29 +886,29 @@ 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=تحويل
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=Вярно
|
|||||||
false=Невярно
|
false=Невярно
|
||||||
unknown=Непознат
|
unknown=Непознат
|
||||||
save=Съхранете
|
save=Съхранете
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=Затворете
|
close=Затворете
|
||||||
filesSelected=избрани файлове
|
filesSelected=избрани файлове
|
||||||
noFavourites=Няма добавени любими
|
noFavourites=Няма добавени любими
|
||||||
@@ -53,12 +54,15 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -108,7 +112,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 +147,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 +400,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 +416,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=Невалидно потребителско име или парола.
|
||||||
@@ -624,6 +641,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=Подпишете
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
@@ -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,12 +54,15 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -108,7 +112,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 +147,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 +400,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 +416,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
|
||||||
@@ -624,6 +641,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
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
@@ -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,12 +54,15 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -69,12 +73,12 @@ pipeline.submitButton=Speichern
|
|||||||
######################
|
######################
|
||||||
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 +90,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 +112,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 +133,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 +144,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 +168,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 +176,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 +265,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 +371,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 +397,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 +416,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
|
||||||
@@ -491,7 +508,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 +641,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
|
||||||
@@ -748,7 +777,7 @@ pageRemover.submit=Seiten löschen
|
|||||||
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
|
#merge
|
||||||
@@ -907,15 +936,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 LibreOffice 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 +955,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 +990,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
|
||||||
|
|||||||
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,12 +54,15 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -108,7 +112,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 +147,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 +400,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 +416,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.
|
||||||
@@ -624,6 +641,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
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
@@ -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,12 +54,15 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -108,7 +112,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 +147,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 +400,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 +416,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.
|
||||||
@@ -624,6 +641,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
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=Verdadero
|
|||||||
false=Falso
|
false=Falso
|
||||||
unknown=Desconocido
|
unknown=Desconocido
|
||||||
save=Guardar
|
save=Guardar
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=Cerrar
|
close=Cerrar
|
||||||
filesSelected=archivos seleccionados
|
filesSelected=archivos seleccionados
|
||||||
noFavourites=No se agregaron favoritos
|
noFavourites=No se agregaron favoritos
|
||||||
@@ -53,6 +54,9 @@ 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=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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
@@ -108,7 +112,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=You are using default login credentials. Please enter a new password
|
||||||
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 +147,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=Username must only contain letters and numbers, no spaces or special characters.
|
||||||
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=Additional Limited API User
|
||||||
adminUserSettings.webOnlyUser=Usuario solo web
|
adminUserSettings.webOnlyUser=Usuario solo web
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=Demo User (No custom settings)
|
||||||
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
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
|
||||||
|
|
||||||
@@ -393,6 +400,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 +416,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.
|
||||||
@@ -624,6 +641,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=Firmar
|
sign.title=Firmar
|
||||||
@@ -926,6 +955,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 +990,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=Merge Into One PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licencias
|
licenses.nav=Licencias
|
||||||
|
|||||||
@@ -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,12 +54,15 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -108,7 +112,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 +147,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 +400,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 +416,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.
|
||||||
@@ -624,6 +641,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
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
@@ -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,16 +44,19 @@ 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=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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
@@ -95,8 +99,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 +112,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=You are using default login credentials. Please enter a new password
|
||||||
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 +123,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 +138,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 +147,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=Username must only contain letters and numbers, no spaces or special characters.
|
||||||
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=Additional Limited API User
|
||||||
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 +196,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 +206,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 +235,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 +273,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 +281,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 +289,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 +305,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 +325,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 +341,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 +374,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 +388,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 +416,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
|
||||||
|
|
||||||
@@ -468,15 +485,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 +571,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 +593,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 +604,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 +622,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 +641,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 +678,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 +695,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 +726,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
|
||||||
|
|
||||||
@@ -740,14 +769,14 @@ 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
|
||||||
|
|
||||||
|
|
||||||
#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
|
||||||
|
|
||||||
|
|
||||||
@@ -755,7 +784,7 @@ rotate.submit=Pivoter
|
|||||||
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-8 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 et 6
|
||||||
@@ -770,9 +799,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 +812,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 +827,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
|
||||||
|
|
||||||
|
|
||||||
@@ -837,14 +866,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
|
||||||
|
|
||||||
|
|
||||||
@@ -926,6 +955,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 +970,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 +990,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=Merge Into One PDF
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licences
|
licenses.nav=Licences
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=सही
|
|||||||
false=गलत
|
false=गलत
|
||||||
unknown=अज्ञात
|
unknown=अज्ञात
|
||||||
save=सहेजें
|
save=सहेजें
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=बंद करें
|
close=बंद करें
|
||||||
filesSelected=फ़ाइलें चयनित हैं
|
filesSelected=फ़ाइलें चयनित हैं
|
||||||
noFavourites=कोई पसंदीदा जोड़ा नहीं गया है
|
noFavourites=कोई पसंदीदा जोड़ा नहीं गया है
|
||||||
@@ -53,12 +54,15 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -108,7 +112,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 +147,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 +400,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 +416,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=अमान्य उपयोगकर्ता नाम या पासवर्ड।
|
||||||
@@ -624,6 +641,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=हस्ताक्षर
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
@@ -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,12 +54,15 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -108,7 +112,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 +147,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 +400,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 +416,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ó!
|
||||||
@@ -624,6 +641,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
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
@@ -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,12 +54,15 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -108,7 +112,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 +147,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 +400,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 +416,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.
|
||||||
@@ -624,6 +641,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
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
@@ -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,12 +54,15 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -108,7 +112,7 @@ 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
|
||||||
@@ -143,12 +147,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
|
||||||
|
|
||||||
@@ -368,7 +375,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
|
||||||
@@ -393,6 +400,15 @@ home.AddStampRequest.desc=Aggiungi testo o aggiungi timbri immagine nelle posizi
|
|||||||
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
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
@@ -400,6 +416,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.
|
||||||
@@ -624,6 +641,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
|
||||||
@@ -869,7 +898,7 @@ 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à
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
@@ -17,12 +17,13 @@ true=True
|
|||||||
false=False
|
false=False
|
||||||
unknown=不明
|
unknown=不明
|
||||||
save=保存
|
save=保存
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=閉じる
|
close=閉じる
|
||||||
filesSelected=選択されたファイル
|
filesSelected=選択されたファイル
|
||||||
noFavourites=お気に入りはありません
|
noFavourites=お気に入りはありません
|
||||||
downloadComplete=Download Complete
|
downloadComplete=Download Complete
|
||||||
bored=待ち時間が退屈
|
bored=待ち時間が退屈
|
||||||
alphabet=\u30A2\u30EB\u30D5\u30A1\u30D9\u30C3\u30C8
|
alphabet=アルファベット
|
||||||
downloadPdf=PDFをダウンロード
|
downloadPdf=PDFをダウンロード
|
||||||
text=テキスト
|
text=テキスト
|
||||||
font=フォント
|
font=フォント
|
||||||
@@ -53,6 +54,9 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
@@ -108,7 +112,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 +147,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 +400,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 +416,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=ユーザー名かパスワードが無効です。
|
||||||
@@ -624,6 +641,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=署名
|
||||||
@@ -926,6 +955,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 +990,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=ライセンス
|
||||||
|
|||||||
@@ -17,12 +17,13 @@ true=참
|
|||||||
false=거짓
|
false=거짓
|
||||||
unknown=알 수 없음
|
unknown=알 수 없음
|
||||||
save=저장
|
save=저장
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=닫기
|
close=닫기
|
||||||
filesSelected=개 파일 선택됨
|
filesSelected=개 파일 선택됨
|
||||||
noFavourites=즐겨찾기 없음
|
noFavourites=즐겨찾기 없음
|
||||||
downloadComplete=Download Complete
|
downloadComplete=Download Complete
|
||||||
bored=기다리는 게 지루하신가요?
|
bored=기다리는 게 지루하신가요?
|
||||||
alphabet=\uC54C\uD30C\uBCB3
|
alphabet=알파벳
|
||||||
downloadPdf=PDF 다운로드
|
downloadPdf=PDF 다운로드
|
||||||
text=텍스트
|
text=텍스트
|
||||||
font=폰트
|
font=폰트
|
||||||
@@ -53,12 +54,15 @@ notAuthenticatedMessage=User not authenticated.
|
|||||||
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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -108,7 +112,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 +147,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 +400,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 +416,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=사용자 이름이나 비밀번호가 틀립니다.
|
||||||
@@ -624,6 +641,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=서명
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
@@ -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,9 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
@@ -108,7 +112,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 +147,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 +400,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 +416,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.
|
||||||
@@ -624,6 +641,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
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
@@ -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,12 +54,15 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -108,7 +112,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 +147,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 +400,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 +416,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.
|
||||||
@@ -624,6 +641,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
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
@@ -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,12 +54,15 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -108,7 +112,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 +147,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 +400,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 +416,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.
|
||||||
@@ -624,6 +641,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
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
1003
src/main/resources/messages_pt_PT.properties
Normal file
1003
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,12 +54,15 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -108,7 +112,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 +147,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 +400,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 +416,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.
|
||||||
@@ -624,6 +641,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ă
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=Истина
|
|||||||
false=Ложь
|
false=Ложь
|
||||||
unknown=Неизвестно
|
unknown=Неизвестно
|
||||||
save=Сохранить
|
save=Сохранить
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=Закрыть
|
close=Закрыть
|
||||||
filesSelected=файлов выбрано
|
filesSelected=файлов выбрано
|
||||||
noFavourites=Нет избранного
|
noFavourites=Нет избранного
|
||||||
@@ -53,12 +54,15 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -108,7 +112,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 +147,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 +400,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 +416,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.
|
||||||
@@ -624,6 +641,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=Подпись
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
@@ -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,9 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
@@ -108,7 +112,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 +147,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 +400,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 +416,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.
|
||||||
@@ -624,6 +641,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
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
@@ -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,12 +54,15 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -108,7 +112,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 +147,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 +400,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 +416,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.
|
||||||
@@ -624,6 +641,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
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=Doğru
|
|||||||
false=Yanlış
|
false=Yanlış
|
||||||
unknown=Bilinmeyen
|
unknown=Bilinmeyen
|
||||||
save=Kaydet
|
save=Kaydet
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=Kapat
|
close=Kapat
|
||||||
filesSelected=dosya seçildi
|
filesSelected=dosya seçildi
|
||||||
noFavourites=Favori eklenmedi
|
noFavourites=Favori eklenmedi
|
||||||
@@ -53,12 +54,15 @@ 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=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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -108,7 +112,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 +147,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=Username must only contain letters and numbers, no spaces or special characters.
|
||||||
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=Additional Limited API User
|
||||||
adminUserSettings.webOnlyUser=Sadece Web Kullanıcısı
|
adminUserSettings.webOnlyUser=Sadece Web Kullanıcısı
|
||||||
adminUserSettings.demoUser=Demo User (No custom settings)
|
adminUserSettings.demoUser=Demo User (No custom settings)
|
||||||
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
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
|
||||||
|
|
||||||
@@ -393,6 +400,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 +416,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.
|
||||||
@@ -624,6 +641,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=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=İmzala
|
sign.title=İmzala
|
||||||
@@ -926,6 +955,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 +990,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
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=对
|
|||||||
false=错
|
false=错
|
||||||
unknown=未知
|
unknown=未知
|
||||||
save=保存
|
save=保存
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=关闭
|
close=关闭
|
||||||
filesSelected=选中的文件
|
filesSelected=选中的文件
|
||||||
noFavourites=没有添加收藏夹
|
noFavourites=没有添加收藏夹
|
||||||
@@ -53,12 +54,15 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -108,7 +112,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 +147,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=仅限 Web 用户
|
adminUserSettings.webOnlyUser=仅限 Web 用户
|
||||||
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 +400,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 +416,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=用户名或密码无效。
|
||||||
@@ -624,6 +641,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=签名
|
||||||
@@ -926,6 +955,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 +990,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=是否合并为一个pdf
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Licenses
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ true=是
|
|||||||
false=否
|
false=否
|
||||||
unknown=未知
|
unknown=未知
|
||||||
save=儲存
|
save=儲存
|
||||||
|
saveToBrowser=Save to Browser
|
||||||
close=關閉
|
close=關閉
|
||||||
filesSelected=已選擇的檔案
|
filesSelected=已選擇的檔案
|
||||||
noFavourites=未新增收藏
|
noFavourites=未新增收藏
|
||||||
@@ -53,12 +54,15 @@ 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.
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# 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
|
||||||
@@ -108,7 +112,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 +147,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=示範用途的使用者(無自訂設定)
|
adminUserSettings.demoUser=示範用途的使用者(無自訂設定)
|
||||||
|
adminUserSettings.internalApiUser=Internal API User
|
||||||
adminUserSettings.forceChange=強制使用者在登入時修改使用者名稱/密碼
|
adminUserSettings.forceChange=強制使用者在登入時修改使用者名稱/密碼
|
||||||
adminUserSettings.submit=儲存
|
adminUserSettings.submit=儲存
|
||||||
|
|
||||||
@@ -393,6 +400,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 +416,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=使用者名稱或密碼無效。
|
||||||
@@ -624,6 +641,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=簽章
|
||||||
@@ -926,6 +955,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 +990,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=是否合併為一個pdf
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Licenses
|
||||||
|
|||||||
@@ -9,13 +9,10 @@ security:
|
|||||||
loginResetTimeMinutes : 120 # lock account for 2 hours after x attempts
|
loginResetTimeMinutes : 120 # lock account for 2 hours after x attempts
|
||||||
|
|
||||||
system:
|
system:
|
||||||
|
|
||||||
defaultLocale: 'en-US' # Set the default language (e.g. 'de-DE', 'fr-FR', etc)
|
defaultLocale: 'en-US' # Set the default language (e.g. 'de-DE', 'fr-FR', etc)
|
||||||
googlevisibility: false # 'true' to allow Google visibility (via robots.txt), 'false' to disallow
|
googlevisibility: false # 'true' to allow Google visibility (via robots.txt), 'false' to disallow
|
||||||
enableAlphaFunctionality: false # Set to enable functionality which might need more testing before it fully goes live (This feature might make no changes)
|
enableAlphaFunctionality: false # Set to enable functionality which might need more testing before it fully goes live (This feature might make no changes)
|
||||||
customApplications:
|
|
||||||
bookAndHtmlFormatsInstalled: false # Installs Calibre for book format conversion (For non docker it must be manually downloaded but will need to be true to show in UI)
|
|
||||||
|
|
||||||
#ui:
|
#ui:
|
||||||
# appName: exampleAppName # Application's visible name
|
# appName: exampleAppName # Application's visible name
|
||||||
# homeDescription: I am a description # Short description or tagline shown on homepage.
|
# homeDescription: I am a description # Short description or tagline shown on homepage.
|
||||||
|
|||||||
@@ -3,69 +3,69 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "ch.qos.logback:logback-classic",
|
"moduleName": "ch.qos.logback:logback-classic",
|
||||||
"moduleUrl": "http://www.qos.ch",
|
"moduleUrl": "http://www.qos.ch",
|
||||||
"moduleVersion": "1.4.14",
|
"moduleVersion": "1.5.3",
|
||||||
"moduleLicense": "GNU Lesser General Public License",
|
"moduleLicense": "GNU Lesser General Public License",
|
||||||
"moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"
|
"moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "ch.qos.logback:logback-core",
|
"moduleName": "ch.qos.logback:logback-core",
|
||||||
"moduleUrl": "http://www.qos.ch",
|
"moduleUrl": "http://www.qos.ch",
|
||||||
"moduleVersion": "1.4.14",
|
"moduleVersion": "1.5.3",
|
||||||
"moduleLicense": "GNU Lesser General Public License",
|
"moduleLicense": "GNU Lesser General Public License",
|
||||||
"moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"
|
"moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fasterxml.jackson.core:jackson-annotations",
|
"moduleName": "com.fasterxml.jackson.core:jackson-annotations",
|
||||||
"moduleUrl": "https://github.com/FasterXML/jackson",
|
"moduleUrl": "https://github.com/FasterXML/jackson",
|
||||||
"moduleVersion": "2.15.3",
|
"moduleVersion": "2.15.4",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fasterxml.jackson.core:jackson-core",
|
"moduleName": "com.fasterxml.jackson.core:jackson-core",
|
||||||
"moduleUrl": "https://github.com/FasterXML/jackson-core",
|
"moduleUrl": "https://github.com/FasterXML/jackson-core",
|
||||||
"moduleVersion": "2.15.3",
|
"moduleVersion": "2.15.4",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fasterxml.jackson.core:jackson-databind",
|
"moduleName": "com.fasterxml.jackson.core:jackson-databind",
|
||||||
"moduleUrl": "https://github.com/FasterXML/jackson",
|
"moduleUrl": "https://github.com/FasterXML/jackson",
|
||||||
"moduleVersion": "2.15.3",
|
"moduleVersion": "2.15.4",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml",
|
"moduleName": "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml",
|
||||||
"moduleUrl": "https://github.com/FasterXML/jackson-dataformats-text",
|
"moduleUrl": "https://github.com/FasterXML/jackson-dataformats-text",
|
||||||
"moduleVersion": "2.15.3",
|
"moduleVersion": "2.15.4",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fasterxml.jackson.datatype:jackson-datatype-jdk8",
|
"moduleName": "com.fasterxml.jackson.datatype:jackson-datatype-jdk8",
|
||||||
"moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jdk8",
|
"moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jdk8",
|
||||||
"moduleVersion": "2.15.3",
|
"moduleVersion": "2.15.4",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fasterxml.jackson.datatype:jackson-datatype-jsr310",
|
"moduleName": "com.fasterxml.jackson.datatype:jackson-datatype-jsr310",
|
||||||
"moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jsr310",
|
"moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jsr310",
|
||||||
"moduleVersion": "2.15.3",
|
"moduleVersion": "2.15.4",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fasterxml.jackson.module:jackson-module-parameter-names",
|
"moduleName": "com.fasterxml.jackson.module:jackson-module-parameter-names",
|
||||||
"moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-module-parameter-names",
|
"moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-module-parameter-names",
|
||||||
"moduleVersion": "2.15.3",
|
"moduleVersion": "2.15.4",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fasterxml.jackson:jackson-bom",
|
"moduleName": "com.fasterxml.jackson:jackson-bom",
|
||||||
"moduleVersion": "2.15.3"
|
"moduleVersion": "2.15.4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fasterxml:classmate",
|
"moduleName": "com.fasterxml:classmate",
|
||||||
@@ -74,6 +74,13 @@
|
|||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.fathzer:javaluator",
|
||||||
|
"moduleUrl": "http://javaluator.fathzer.com",
|
||||||
|
"moduleVersion": "3.0.3",
|
||||||
|
"moduleLicense": "GNU Lesser General Public License v3 (LGPL-v3)",
|
||||||
|
"moduleLicenseUrl": "http://www.gnu.org/licenses/lgpl-3.0.html"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.github.vladimir-bukhtoyarov:bucket4j-core",
|
"moduleName": "com.github.vladimir-bukhtoyarov:bucket4j-core",
|
||||||
"moduleUrl": "http://github.com/vladimir-bukhtoyarov/bucket4j/bucket4j-core",
|
"moduleUrl": "http://github.com/vladimir-bukhtoyarov/bucket4j/bucket4j-core",
|
||||||
@@ -84,7 +91,7 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "com.google.zxing:core",
|
"moduleName": "com.google.zxing:core",
|
||||||
"moduleUrl": "https://github.com/zxing/zxing/core",
|
"moduleUrl": "https://github.com/zxing/zxing/core",
|
||||||
"moduleVersion": "3.5.2",
|
"moduleVersion": "3.5.3",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
@@ -214,35 +221,35 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "io.github.pixee:java-security-toolkit",
|
"moduleName": "io.github.pixee:java-security-toolkit",
|
||||||
"moduleUrl": "https://github.com/pixee/java-security-toolkit",
|
"moduleUrl": "https://github.com/pixee/java-security-toolkit",
|
||||||
"moduleVersion": "1.1.2",
|
"moduleVersion": "1.1.3",
|
||||||
"moduleLicense": "MIT License",
|
"moduleLicense": "MIT License",
|
||||||
"moduleLicenseUrl": "http://www.opensource.org/licenses/mit-license.php"
|
"moduleLicenseUrl": "http://www.opensource.org/licenses/mit-license.php"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "io.micrometer:micrometer-commons",
|
"moduleName": "io.micrometer:micrometer-commons",
|
||||||
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
||||||
"moduleVersion": "1.12.2",
|
"moduleVersion": "1.12.4",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "io.micrometer:micrometer-core",
|
"moduleName": "io.micrometer:micrometer-core",
|
||||||
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
||||||
"moduleVersion": "1.12.2",
|
"moduleVersion": "1.12.4",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "io.micrometer:micrometer-jakarta9",
|
"moduleName": "io.micrometer:micrometer-jakarta9",
|
||||||
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
||||||
"moduleVersion": "1.12.2",
|
"moduleVersion": "1.12.4",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "io.micrometer:micrometer-observation",
|
"moduleName": "io.micrometer:micrometer-observation",
|
||||||
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
||||||
"moduleVersion": "1.12.2",
|
"moduleVersion": "1.12.4",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
@@ -255,28 +262,28 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "io.swagger.core.v3:swagger-annotations-jakarta",
|
"moduleName": "io.swagger.core.v3:swagger-annotations-jakarta",
|
||||||
"moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-annotations",
|
"moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-annotations",
|
||||||
"moduleVersion": "2.2.15",
|
"moduleVersion": "2.2.20",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "io.swagger.core.v3:swagger-core-jakarta",
|
"moduleName": "io.swagger.core.v3:swagger-core-jakarta",
|
||||||
"moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-core",
|
"moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-core",
|
||||||
"moduleVersion": "2.2.15",
|
"moduleVersion": "2.2.20",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "io.swagger.core.v3:swagger-models-jakarta",
|
"moduleName": "io.swagger.core.v3:swagger-models-jakarta",
|
||||||
"moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-models",
|
"moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-models",
|
||||||
"moduleVersion": "2.2.15",
|
"moduleVersion": "2.2.20",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "jakarta.activation:jakarta.activation-api",
|
"moduleName": "jakarta.activation:jakarta.activation-api",
|
||||||
"moduleUrl": "https://www.eclipse.org",
|
"moduleUrl": "https://www.eclipse.org",
|
||||||
"moduleVersion": "2.1.2",
|
"moduleVersion": "2.1.3",
|
||||||
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
||||||
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||||
},
|
},
|
||||||
@@ -318,13 +325,13 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "jakarta.xml.bind:jakarta.xml.bind-api",
|
"moduleName": "jakarta.xml.bind:jakarta.xml.bind-api",
|
||||||
"moduleUrl": "https://www.eclipse.org",
|
"moduleUrl": "https://www.eclipse.org",
|
||||||
"moduleVersion": "4.0.1",
|
"moduleVersion": "4.0.2",
|
||||||
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
||||||
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "net.bytebuddy:byte-buddy",
|
"moduleName": "net.bytebuddy:byte-buddy",
|
||||||
"moduleVersion": "1.14.11",
|
"moduleVersion": "1.14.12",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
@@ -371,49 +378,49 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "org.apache.pdfbox:fontbox",
|
"moduleName": "org.apache.pdfbox:fontbox",
|
||||||
"moduleUrl": "https://pdfbox.apache.org",
|
"moduleUrl": "https://pdfbox.apache.org",
|
||||||
"moduleVersion": "3.0.1",
|
"moduleVersion": "3.0.2",
|
||||||
"moduleLicense": "Apache-2.0",
|
"moduleLicense": "Apache-2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.apache.pdfbox:pdfbox",
|
"moduleName": "org.apache.pdfbox:pdfbox",
|
||||||
"moduleUrl": "https://pdfbox.apache.org",
|
"moduleUrl": "https://pdfbox.apache.org",
|
||||||
"moduleVersion": "3.0.1",
|
"moduleVersion": "3.0.2",
|
||||||
"moduleLicense": "Apache-2.0",
|
"moduleLicense": "Apache-2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.apache.pdfbox:pdfbox-io",
|
"moduleName": "org.apache.pdfbox:pdfbox-io",
|
||||||
"moduleUrl": "https://pdfbox.apache.org",
|
"moduleUrl": "https://pdfbox.apache.org",
|
||||||
"moduleVersion": "3.0.1",
|
"moduleVersion": "3.0.2",
|
||||||
"moduleLicense": "Apache-2.0",
|
"moduleLicense": "Apache-2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.apache.pdfbox:xmpbox",
|
"moduleName": "org.apache.pdfbox:xmpbox",
|
||||||
"moduleUrl": "https://pdfbox.apache.org",
|
"moduleUrl": "https://pdfbox.apache.org",
|
||||||
"moduleVersion": "3.0.1",
|
"moduleVersion": "3.0.2",
|
||||||
"moduleLicense": "Apache-2.0",
|
"moduleLicense": "Apache-2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.apache.tomcat.embed:tomcat-embed-core",
|
"moduleName": "org.apache.tomcat.embed:tomcat-embed-core",
|
||||||
"moduleUrl": "https://tomcat.apache.org/",
|
"moduleUrl": "https://tomcat.apache.org/",
|
||||||
"moduleVersion": "10.1.18",
|
"moduleVersion": "10.1.19",
|
||||||
"moduleLicense": "Eclipse Public License - v 2.0",
|
"moduleLicense": "Eclipse Public License - v 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt"
|
"moduleLicenseUrl": "https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.apache.tomcat.embed:tomcat-embed-el",
|
"moduleName": "org.apache.tomcat.embed:tomcat-embed-el",
|
||||||
"moduleUrl": "https://tomcat.apache.org/",
|
"moduleUrl": "https://tomcat.apache.org/",
|
||||||
"moduleVersion": "10.1.18",
|
"moduleVersion": "10.1.19",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.apache.tomcat.embed:tomcat-embed-websocket",
|
"moduleName": "org.apache.tomcat.embed:tomcat-embed-websocket",
|
||||||
"moduleUrl": "https://tomcat.apache.org/",
|
"moduleUrl": "https://tomcat.apache.org/",
|
||||||
"moduleVersion": "10.1.18",
|
"moduleVersion": "10.1.19",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
@@ -467,41 +474,41 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.commonmark:commonmark",
|
"moduleName": "org.commonmark:commonmark",
|
||||||
"moduleVersion": "0.21.0",
|
"moduleVersion": "0.22.0",
|
||||||
"moduleLicense": "BSD 2-Clause License",
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
"moduleLicenseUrl": "https://opensource.org/licenses/BSD-2-Clause"
|
"moduleLicenseUrl": "https://opensource.org/licenses/BSD-2-Clause"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.commonmark:commonmark-ext-gfm-tables",
|
"moduleName": "org.commonmark:commonmark-ext-gfm-tables",
|
||||||
"moduleVersion": "0.21.0",
|
"moduleVersion": "0.22.0",
|
||||||
"moduleLicense": "BSD 2-Clause License",
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
"moduleLicenseUrl": "https://opensource.org/licenses/BSD-2-Clause"
|
"moduleLicenseUrl": "https://opensource.org/licenses/BSD-2-Clause"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.angus:angus-activation",
|
"moduleName": "org.eclipse.angus:angus-activation",
|
||||||
"moduleUrl": "https://www.eclipse.org",
|
"moduleUrl": "https://www.eclipse.org",
|
||||||
"moduleVersion": "2.0.1",
|
"moduleVersion": "2.0.2",
|
||||||
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
||||||
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.glassfish.jaxb:jaxb-core",
|
"moduleName": "org.glassfish.jaxb:jaxb-core",
|
||||||
"moduleUrl": "https://www.eclipse.org",
|
"moduleUrl": "https://www.eclipse.org",
|
||||||
"moduleVersion": "4.0.4",
|
"moduleVersion": "4.0.5",
|
||||||
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
||||||
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.glassfish.jaxb:jaxb-runtime",
|
"moduleName": "org.glassfish.jaxb:jaxb-runtime",
|
||||||
"moduleUrl": "https://www.eclipse.org",
|
"moduleUrl": "https://www.eclipse.org",
|
||||||
"moduleVersion": "4.0.4",
|
"moduleVersion": "4.0.5",
|
||||||
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
||||||
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.glassfish.jaxb:txw2",
|
"moduleName": "org.glassfish.jaxb:txw2",
|
||||||
"moduleUrl": "https://eclipse-ee4j.github.io/jaxb-ri/",
|
"moduleUrl": "https://eclipse-ee4j.github.io/jaxb-ri/",
|
||||||
"moduleVersion": "4.0.4",
|
"moduleVersion": "4.0.5",
|
||||||
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
||||||
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||||
},
|
},
|
||||||
@@ -522,7 +529,7 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "org.hibernate.orm:hibernate-core",
|
"moduleName": "org.hibernate.orm:hibernate-core",
|
||||||
"moduleUrl": "https://www.hibernate.org/orm/6.4",
|
"moduleUrl": "https://www.hibernate.org/orm/6.4",
|
||||||
"moduleVersion": "6.4.1.Final",
|
"moduleVersion": "6.4.4.Final",
|
||||||
"moduleLicense": "GNU Library General Public License v2.1 or later",
|
"moduleLicense": "GNU Library General Public License v2.1 or later",
|
||||||
"moduleLicenseUrl": "https://www.opensource.org/licenses/LGPL-2.1"
|
"moduleLicenseUrl": "https://www.opensource.org/licenses/LGPL-2.1"
|
||||||
},
|
},
|
||||||
@@ -533,52 +540,6 @@
|
|||||||
"moduleLicense": "Public Domain",
|
"moduleLicense": "Public Domain",
|
||||||
"moduleLicenseUrl": "http://repository.jboss.org/licenses/cc0-1.0.txt"
|
"moduleLicenseUrl": "http://repository.jboss.org/licenses/cc0-1.0.txt"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"moduleName": "org.junit.jupiter:junit-jupiter",
|
|
||||||
"moduleUrl": "https://junit.org/junit5/",
|
|
||||||
"moduleVersion": "5.10.1",
|
|
||||||
"moduleLicense": "Eclipse Public License v2.0",
|
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-v20.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"moduleName": "org.junit.jupiter:junit-jupiter-api",
|
|
||||||
"moduleUrl": "https://junit.org/junit5/",
|
|
||||||
"moduleVersion": "5.10.1",
|
|
||||||
"moduleLicense": "Eclipse Public License v2.0",
|
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-v20.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"moduleName": "org.junit.jupiter:junit-jupiter-engine",
|
|
||||||
"moduleUrl": "https://junit.org/junit5/",
|
|
||||||
"moduleVersion": "5.10.1",
|
|
||||||
"moduleLicense": "Eclipse Public License v2.0",
|
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-v20.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"moduleName": "org.junit.jupiter:junit-jupiter-params",
|
|
||||||
"moduleUrl": "https://junit.org/junit5/",
|
|
||||||
"moduleVersion": "5.10.1",
|
|
||||||
"moduleLicense": "Eclipse Public License v2.0",
|
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-v20.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"moduleName": "org.junit.platform:junit-platform-commons",
|
|
||||||
"moduleUrl": "https://junit.org/junit5/",
|
|
||||||
"moduleVersion": "1.10.1",
|
|
||||||
"moduleLicense": "Eclipse Public License v2.0",
|
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-v20.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"moduleName": "org.junit.platform:junit-platform-engine",
|
|
||||||
"moduleUrl": "https://junit.org/junit5/",
|
|
||||||
"moduleVersion": "1.10.1",
|
|
||||||
"moduleLicense": "Eclipse Public License v2.0",
|
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-v20.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"moduleName": "org.junit:junit-bom",
|
|
||||||
"moduleVersion": "5.10.1"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"moduleName": "org.latencyutils:LatencyUtils",
|
"moduleName": "org.latencyutils:LatencyUtils",
|
||||||
"moduleUrl": "http://latencyutils.github.io/LatencyUtils/",
|
"moduleUrl": "http://latencyutils.github.io/LatencyUtils/",
|
||||||
@@ -586,280 +547,273 @@
|
|||||||
"moduleLicense": "Public Domain, per Creative Commons CC0",
|
"moduleLicense": "Public Domain, per Creative Commons CC0",
|
||||||
"moduleLicenseUrl": "http://creativecommons.org/publicdomain/zero/1.0/"
|
"moduleLicenseUrl": "http://creativecommons.org/publicdomain/zero/1.0/"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"moduleName": "org.opentest4j:opentest4j",
|
|
||||||
"moduleUrl": "https://github.com/ota4j-team/opentest4j",
|
|
||||||
"moduleVersion": "1.3.0",
|
|
||||||
"moduleLicense": "The Apache License, Version 2.0",
|
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"moduleName": "org.slf4j:jul-to-slf4j",
|
"moduleName": "org.slf4j:jul-to-slf4j",
|
||||||
"moduleUrl": "http://www.slf4j.org",
|
"moduleUrl": "http://www.slf4j.org",
|
||||||
"moduleVersion": "2.0.11",
|
"moduleVersion": "2.0.12",
|
||||||
"moduleLicense": "MIT License",
|
"moduleLicense": "MIT License",
|
||||||
"moduleLicenseUrl": "http://www.opensource.org/licenses/mit-license.php"
|
"moduleLicenseUrl": "http://www.opensource.org/licenses/mit-license.php"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.slf4j:slf4j-api",
|
"moduleName": "org.slf4j:slf4j-api",
|
||||||
"moduleUrl": "http://www.slf4j.org",
|
"moduleUrl": "http://www.slf4j.org",
|
||||||
"moduleVersion": "2.0.11",
|
"moduleVersion": "2.0.12",
|
||||||
"moduleLicense": "MIT License",
|
"moduleLicense": "MIT License",
|
||||||
"moduleLicenseUrl": "http://www.opensource.org/licenses/mit-license.php"
|
"moduleLicenseUrl": "http://www.opensource.org/licenses/mit-license.php"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springdoc:springdoc-openapi-starter-common",
|
"moduleName": "org.springdoc:springdoc-openapi-starter-common",
|
||||||
"moduleVersion": "2.2.0",
|
"moduleVersion": "2.4.0",
|
||||||
"moduleLicense": "The Apache License, Version 2.0",
|
"moduleLicense": "The Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springdoc:springdoc-openapi-starter-webmvc-api",
|
"moduleName": "org.springdoc:springdoc-openapi-starter-webmvc-api",
|
||||||
"moduleVersion": "2.2.0",
|
"moduleVersion": "2.4.0",
|
||||||
"moduleLicense": "The Apache License, Version 2.0",
|
"moduleLicense": "The Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springdoc:springdoc-openapi-starter-webmvc-ui",
|
"moduleName": "org.springdoc:springdoc-openapi-starter-webmvc-ui",
|
||||||
"moduleVersion": "2.2.0",
|
"moduleVersion": "2.4.0",
|
||||||
"moduleLicense": "The Apache License, Version 2.0",
|
"moduleLicense": "The Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot",
|
"moduleName": "org.springframework.boot:spring-boot",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.2",
|
"moduleVersion": "3.2.4",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-actuator",
|
"moduleName": "org.springframework.boot:spring-boot-actuator",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.2",
|
"moduleVersion": "3.2.4",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-actuator-autoconfigure",
|
"moduleName": "org.springframework.boot:spring-boot-actuator-autoconfigure",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.2",
|
"moduleVersion": "3.2.4",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-autoconfigure",
|
"moduleName": "org.springframework.boot:spring-boot-autoconfigure",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.2",
|
"moduleVersion": "3.2.4",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-devtools",
|
"moduleName": "org.springframework.boot:spring-boot-devtools",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.2",
|
"moduleVersion": "3.2.4",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter",
|
"moduleName": "org.springframework.boot:spring-boot-starter",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.2",
|
"moduleVersion": "3.2.4",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-actuator",
|
"moduleName": "org.springframework.boot:spring-boot-starter-actuator",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.2",
|
"moduleVersion": "3.2.4",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-aop",
|
"moduleName": "org.springframework.boot:spring-boot-starter-aop",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.2",
|
"moduleVersion": "3.2.4",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-data-jpa",
|
"moduleName": "org.springframework.boot:spring-boot-starter-data-jpa",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.2",
|
"moduleVersion": "3.2.4",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-jdbc",
|
"moduleName": "org.springframework.boot:spring-boot-starter-jdbc",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.2",
|
"moduleVersion": "3.2.4",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-json",
|
"moduleName": "org.springframework.boot:spring-boot-starter-json",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.2",
|
"moduleVersion": "3.2.4",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-logging",
|
"moduleName": "org.springframework.boot:spring-boot-starter-logging",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.2",
|
"moduleVersion": "3.2.4",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-security",
|
"moduleName": "org.springframework.boot:spring-boot-starter-security",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.2",
|
"moduleVersion": "3.2.4",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-thymeleaf",
|
"moduleName": "org.springframework.boot:spring-boot-starter-thymeleaf",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.2",
|
"moduleVersion": "3.2.4",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-tomcat",
|
"moduleName": "org.springframework.boot:spring-boot-starter-tomcat",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.2",
|
"moduleVersion": "3.2.4",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-web",
|
"moduleName": "org.springframework.boot:spring-boot-starter-web",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.2",
|
"moduleVersion": "3.2.4",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.data:spring-data-commons",
|
"moduleName": "org.springframework.data:spring-data-commons",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-data",
|
"moduleUrl": "https://spring.io/projects/spring-data",
|
||||||
"moduleVersion": "3.2.2",
|
"moduleVersion": "3.2.4",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.data:spring-data-jpa",
|
"moduleName": "org.springframework.data:spring-data-jpa",
|
||||||
"moduleUrl": "https://projects.spring.io/spring-data-jpa",
|
"moduleUrl": "https://projects.spring.io/spring-data-jpa",
|
||||||
"moduleVersion": "3.2.2",
|
"moduleVersion": "3.2.4",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-config",
|
"moduleName": "org.springframework.security:spring-security-config",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.2.1",
|
"moduleVersion": "6.2.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-core",
|
"moduleName": "org.springframework.security:spring-security-core",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.2.1",
|
"moduleVersion": "6.2.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-crypto",
|
"moduleName": "org.springframework.security:spring-security-crypto",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.2.1",
|
"moduleVersion": "6.2.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-web",
|
"moduleName": "org.springframework.security:spring-security-web",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.2.1",
|
"moduleVersion": "6.2.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-aop",
|
"moduleName": "org.springframework:spring-aop",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.3",
|
"moduleVersion": "6.1.5",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-aspects",
|
"moduleName": "org.springframework:spring-aspects",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.3",
|
"moduleVersion": "6.1.5",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-beans",
|
"moduleName": "org.springframework:spring-beans",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.3",
|
"moduleVersion": "6.1.5",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-context",
|
"moduleName": "org.springframework:spring-context",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.3",
|
"moduleVersion": "6.1.5",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-core",
|
"moduleName": "org.springframework:spring-core",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.3",
|
"moduleVersion": "6.1.5",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-expression",
|
"moduleName": "org.springframework:spring-expression",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.3",
|
"moduleVersion": "6.1.5",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-jcl",
|
"moduleName": "org.springframework:spring-jcl",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.3",
|
"moduleVersion": "6.1.5",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-jdbc",
|
"moduleName": "org.springframework:spring-jdbc",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.3",
|
"moduleVersion": "6.1.5",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-orm",
|
"moduleName": "org.springframework:spring-orm",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.3",
|
"moduleVersion": "6.1.5",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-tx",
|
"moduleName": "org.springframework:spring-tx",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.3",
|
"moduleVersion": "6.1.5",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-web",
|
"moduleName": "org.springframework:spring-web",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.3",
|
"moduleVersion": "6.1.5",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-webmvc",
|
"moduleName": "org.springframework:spring-webmvc",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.2",
|
"moduleVersion": "6.1.5",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
@@ -897,7 +851,7 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "org.webjars:swagger-ui",
|
"moduleName": "org.webjars:swagger-ui",
|
||||||
"moduleUrl": "http://webjars.org",
|
"moduleUrl": "http://webjars.org",
|
||||||
"moduleVersion": "5.2.0",
|
"moduleVersion": "5.11.8",
|
||||||
"moduleLicense": "Apache 2.0",
|
"moduleLicense": "Apache 2.0",
|
||||||
"moduleLicenseUrl": "https://github.com/swagger-api/swagger-ui"
|
"moduleLicenseUrl": "https://github.com/swagger-api/swagger-ui"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -114,28 +114,28 @@ hr {
|
|||||||
border-color: #fff;
|
border-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
#global-buttons-container input {
|
.global-buttons-container input {
|
||||||
background-color: #323948;
|
background-color: #323948;
|
||||||
caret-color: #ffffff;
|
caret-color: #ffffff;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
#global-buttons-container input::placeholder {
|
.global-buttons-container input::placeholder {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
#global-buttons-container input:disabled::-webkit-input-placeholder {
|
.global-buttons-container input:disabled::-webkit-input-placeholder {
|
||||||
/* WebKit browsers */
|
/* WebKit browsers */
|
||||||
color: #6e6865;
|
color: #6e6865;
|
||||||
}
|
}
|
||||||
#global-buttons-container input:disabled:-moz-placeholder {
|
.global-buttons-container input:disabled:-moz-placeholder {
|
||||||
/* Mozilla Firefox 4 to 18 */
|
/* Mozilla Firefox 4 to 18 */
|
||||||
color: #6e6865;
|
color: #6e6865;
|
||||||
}
|
}
|
||||||
#global-buttons-container input:disabled::-moz-placeholder {
|
.global-buttons-container input:disabled::-moz-placeholder {
|
||||||
/* Mozilla Firefox 19+ */
|
/* Mozilla Firefox 19+ */
|
||||||
color: #6e6865;
|
color: #6e6865;
|
||||||
}
|
}
|
||||||
#global-buttons-container input:disabled:-ms-input-placeholder {
|
.global-buttons-container input:disabled:-ms-input-placeholder {
|
||||||
/* Internet Explorer 10+ */
|
/* Internet Explorer 10+ */
|
||||||
color: #6e6865;
|
color: #6e6865;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,11 +36,11 @@
|
|||||||
visibility: hidden !important;
|
visibility: hidden !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[lang-direction="ltr"] .drag-manager_draghover img {
|
html[dir="ltr"] .drag-manager_draghover img {
|
||||||
left: calc(50% + 62.5px) !important;
|
left: calc(50% + 62.5px) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[lang-direction="rtl"] .drag-manager_draghover img {
|
html[dir="rtl"] .drag-manager_draghover img {
|
||||||
left: 125px;
|
left: 125px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -68,11 +68,11 @@ p {
|
|||||||
|
|
||||||
#github-button:hover,
|
#github-button:hover,
|
||||||
#discord-button:hover,
|
#discord-button:hover,
|
||||||
#home-button:hover {
|
.home-button:hover {
|
||||||
background-color: #005b7f;
|
background-color: #005b7f;
|
||||||
}
|
}
|
||||||
|
|
||||||
#home-button {
|
.home-button {
|
||||||
display: block;
|
display: block;
|
||||||
width: 200px;
|
width: 200px;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
|
|||||||
@@ -77,11 +77,11 @@
|
|||||||
|
|
||||||
#github-button:hover,
|
#github-button:hover,
|
||||||
#discord-button:hover,
|
#discord-button:hover,
|
||||||
#home-button:hover {
|
.home-button:hover {
|
||||||
background-color: #005b7f;
|
background-color: #005b7f;
|
||||||
}
|
}
|
||||||
|
|
||||||
#home-button {
|
.home-button {
|
||||||
display: block;
|
display: block;
|
||||||
width: 200px;
|
width: 200px;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
|
|||||||
@@ -25,10 +25,10 @@
|
|||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
html[lang-direction="ltr"] * {
|
html[dir="ltr"] * {
|
||||||
direction: ltr;
|
direction: ltr;
|
||||||
}
|
}
|
||||||
html[lang-direction="rtl"] * {
|
html[dir="rtl"] * {
|
||||||
direction: rtl;
|
direction: rtl;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
@@ -63,11 +63,11 @@ html[lang-direction="rtl"] * {
|
|||||||
border-bottom-left-radius: 0.25rem !important;
|
border-bottom-left-radius: 0.25rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[lang-direction="rtl"] input.form-check-input {
|
html[dir="rtl"] input.form-check-input {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-left: 0px;
|
margin-left: 0px;
|
||||||
}
|
}
|
||||||
html[lang-direction="rtl"] label.form-check-label {
|
html[dir="rtl"] label.form-check-label {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,20 +4,20 @@ body {
|
|||||||
--base-font-color: 33, 37, 41;
|
--base-font-color: 33, 37, 41;
|
||||||
}
|
}
|
||||||
|
|
||||||
#global-buttons-container input {
|
.global-buttons-container input {
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
/*caret-color: #ffffff;*/
|
/*caret-color: #ffffff;*/
|
||||||
/*color: #ffffff;*/
|
/*color: #ffffff;*/
|
||||||
}
|
}
|
||||||
/*#global-buttons-container input:disabled::-webkit-input-placeholder { !* WebKit browsers *!*/
|
/*.global-buttons-container input:disabled::-webkit-input-placeholder { !* WebKit browsers *!*/
|
||||||
/* color: #98A0AB;*/
|
/* color: #98A0AB;*/
|
||||||
/*}*/
|
/*}*/
|
||||||
/*#global-buttons-container input:disabled:-moz-placeholder { !* Mozilla Firefox 4 to 18 *!*/
|
/*.global-buttons-container input:disabled:-moz-placeholder { !* Mozilla Firefox 4 to 18 *!*/
|
||||||
/* color: #98A0AB;*/
|
/* color: #98A0AB;*/
|
||||||
/*}*/
|
/*}*/
|
||||||
/*#global-buttons-container input:disabled::-moz-placeholder { !* Mozilla Firefox 19+ *!*/
|
/*.global-buttons-container input:disabled::-moz-placeholder { !* Mozilla Firefox 19+ *!*/
|
||||||
/* color: #98A0AB;*/
|
/* color: #98A0AB;*/
|
||||||
/*}*/
|
/*}*/
|
||||||
/*#global-buttons-container input:disabled:-ms-input-placeholder { !* Internet Explorer 10+ *!*/
|
/*.global-buttons-container input:disabled:-ms-input-placeholder { !* Internet Explorer 10+ *!*/
|
||||||
/* color: #98A0AB;*/
|
/* color: #98A0AB;*/
|
||||||
/*}*/
|
/*}*/
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#global-buttons-container {
|
.global-buttons-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
align-items: start;
|
align-items: start;
|
||||||
@@ -17,11 +17,11 @@
|
|||||||
padding: 10px;
|
padding: 10px;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
#global-buttons-container > * {
|
.global-buttons-container > * {
|
||||||
padding: 0.6rem 0.75rem;
|
padding: 0.6rem 0.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
#global-buttons-container svg {
|
.global-buttons-container svg {
|
||||||
width: 20px;
|
width: 20px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,11 +45,11 @@
|
|||||||
right: -20px;
|
right: -20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[lang-direction="ltr"] .pdf-actions_insert-file-button-container.right {
|
html[dir="ltr"] .pdf-actions_insert-file-button-container.right {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[lang-direction="rtl"] .pdf-actions_insert-file-button-container.left {
|
html[dir="rtl"] .pdf-actions_insert-file-button-container.left {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,11 +63,11 @@ html[lang-direction="rtl"] .pdf-actions_insert-file-button-container.left {
|
|||||||
translate: 0 -50%;
|
translate: 0 -50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[lang-direction="ltr"] .pdf-actions_container:last-child > .pdf-actions_insert-file-button-container.right {
|
html[dir="ltr"] .pdf-actions_container:last-child > .pdf-actions_insert-file-button-container.right {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[lang-direction="rtl"] .pdf-actions_container:last-child > .pdf-actions_insert-file-button-container.left {
|
html[dir="rtl"] .pdf-actions_container:last-child > .pdf-actions_insert-file-button-container.left {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
translate: -50% -50%;
|
translate: -50% -50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.previewContainer {
|
#previewContainer {
|
||||||
aspect-ratio: 1;
|
aspect-ratio: 1;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border: 1px solid rgba(0, 0, 0, 0.125);
|
border: 1px solid rgba(0, 0, 0, 0.125);
|
||||||
|
|||||||
57
src/main/resources/static/images/flags/pt_pt.svg
Normal file
57
src/main/resources/static/images/flags/pt_pt.svg
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="flag-icons-pt" viewBox="0 0 640 480">
|
||||||
|
<path fill="red" d="M256 0h384v480H256z"/>
|
||||||
|
<path fill="#060" d="M0 0h256v480H0z"/>
|
||||||
|
<g fill="#ff0" fill-rule="evenodd" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width=".6">
|
||||||
|
<path d="M339.5 306.2c-32.3-1-180-93.2-181-108l8.1-13.5c14.7 21.3 165.7 111 180.6 107.8z"/>
|
||||||
|
<path d="M164.9 182.8c-2.9 7.8 38.6 33.4 88.4 63.8 49.9 30.3 92.9 49 96 46.4l1.5-2.8c-.6 1-2 1.3-4.3.6-13.5-3.9-48.6-20-92.1-46.4-43.6-26.4-81.4-50.7-87.3-61a6.3 6.3 0 0 1-.6-3.1h-.2l-1.2 2.2zm175.3 123.8c-.5 1-1.6 1-3.5.8-12-1.3-48.6-19.1-91.9-45-50.4-30.2-92-57.6-87.4-64.8l1.2-2.2.2.1c-4 12.2 82.1 61.4 87.2 64.6 49.8 30.8 91.8 48.9 95.5 44.2z"/>
|
||||||
|
<path d="M256.2 207.2c32.2-.3 72-4.4 95-13.6l-5-8c-13.5 7.5-53.5 12.5-90.3 13.2-43.4-.4-74.1-4.5-89.5-14.8l-4.6 8.6c28.2 12 57.2 14.5 94.4 14.6"/>
|
||||||
|
<path d="M352.5 193.8c-.8 1.3-15.8 6.4-37.8 10.2a381.2 381.2 0 0 1-58.6 4.3 416.1 416.1 0 0 1-56.2-3.6c-23.1-3.6-35-8.6-39.5-10.4l1.1-2.2c12.7 5 24.7 8 38.7 10.2A411.5 411.5 0 0 0 256 206a391.8 391.8 0 0 0 58.3-4.3c22.5-3.7 34.8-8.4 36.6-10.5zm-4.4-8.1c-2.4 2-14.6 6.3-36 9.7a388.2 388.2 0 0 1-55.8 4c-22 0-40.1-1.6-53.8-3.6-21.8-2.8-33.4-8-37.6-9.4l1.3-2.2c3.3 1.7 14.4 6.2 36.5 9.3a385 385 0 0 0 53.6 3.4 384 384 0 0 0 55.4-4c21.5-3 33.1-8.4 34.9-9.8zM150.3 246c19.8 10.7 63.9 16 105.6 16.4 38 .1 87.4-5.8 105.9-15.6l-.5-10.7c-5.8 9-58.8 17.7-105.8 17.4-47-.4-90.7-7.6-105.3-17v9.5"/>
|
||||||
|
<path d="M362.8 244.5v2.5c-2.8 3.4-20.2 8.4-42 12a434 434 0 0 1-65.4 4.4 400 400 0 0 1-62-4.3 155 155 0 0 1-44.4-12v-2.9c9.7 6.4 35.9 11.2 44.7 12.6 15.8 2.4 36.1 4.2 61.7 4.2 26.9 0 48.4-1.9 65-4.4 15.7-2.3 38-8.2 42.4-12.1m0-9v2.5c-2.8 3.3-20.2 8.3-42 11.9a434 434 0 0 1-65.4 4.5 414 414 0 0 1-62-4.3 155 155 0 0 1-44.4-12v-3c9.7 6.5 36 11.2 44.7 12.6a408 408 0 0 0 61.7 4.3c26.9 0 48.5-2 65-4.5 15.7-2.2 38-8.1 42.4-12m-107 68.8c-45.6-.2-84.7-12.4-93-14.4l6 9.4a249.8 249.8 0 0 0 87.4 14.3c34.7-1 65-3.7 86.3-14.1l6.2-9.8c-14.5 6.9-64 14.6-93 14.6"/>
|
||||||
|
<path d="M344.9 297.3a143 143 0 0 1-2.8 4c-10 3.6-26 7.4-32.6 8.4a295.5 295.5 0 0 1-53.7 5c-40.4-.6-73.5-8.5-89-15.3l-1.3-2.1.2-.4 2.1.9a286.5 286.5 0 0 0 88.2 14.5c18.8 0 37.5-2.1 52.6-4.8 23.2-4.7 32.6-8.2 35.5-9.8l.7-.4zm5.3-8.8a287.2 287.2 0 0 1-2 3.5c-5.4 2-20 6.2-41.3 9.2-14 1.9-22.7 3.8-50.6 4.3a347.4 347.4 0 0 1-94.2-14L161 289a390 390 0 0 0 95.4 14c25.5-.5 36.4-2.4 50.3-4.3 24.8-3.8 37.3-8 41-9.1a2.9 2.9 0 0 0 0-.2l2.6-1z"/>
|
||||||
|
<path d="M350.8 237.6c.1 30-15.3 57-27.6 68.8a99.3 99.3 0 0 1-67.8 28.2c-30.3.5-58.8-19.2-66.5-27.9a101 101 0 0 1-27.5-67.4c1.8-32.8 14.7-55.6 33.3-71.3a99.6 99.6 0 0 1 64.2-22.7 98.2 98.2 0 0 1 71 35.6c12.5 15.2 18 31.7 20.9 56.7M255.6 135a106 106 0 0 1 106 105.2 105.6 105.6 0 1 1-211.4 0c-.1-58 47.3-105.2 105.4-105.2"/>
|
||||||
|
<path d="M255.9 134.5c58.2 0 105.6 47.4 105.6 105.6S314.1 345.7 256 345.7s-105.6-47.4-105.6-105.6c0-58.2 47.4-105.6 105.6-105.6zM152.6 240c0 56.8 46.7 103.3 103.3 103.3 56.6 0 103.3-46.5 103.3-103.3s-46.7-103.3-103.3-103.3S152.6 183.2 152.6 240"/>
|
||||||
|
<path d="M256 143.3a97 97 0 0 1 96.7 96.7 97.1 97.1 0 0 1-96.7 96.8c-53 0-96.7-43.6-96.7-96.8a97.1 97.1 0 0 1 96.7-96.7M161.6 240c0 52 42.6 94.4 94.4 94.4s94.4-42.5 94.4-94.4c0-52-42.6-94.4-94.4-94.4a94.8 94.8 0 0 0-94.4 94.4"/>
|
||||||
|
<path d="M260.3 134h-9.1v212.3h9z"/>
|
||||||
|
<path d="M259.3 132.8h2.3v214.7h-2.2V132.8zm-9 0h2.4v214.7h-2.3z"/>
|
||||||
|
<path d="M361.6 244.2v-7.8l-6.4-6-36.3-9.6-52.2-5.3-63 3.2-44.8 10.6-9 6.7v7.9l22.9-10.3 54.4-8.5h52.3l38.4 4.2 26.6 6.4z"/>
|
||||||
|
<path d="M256 223.8c24.9 0 49 2.3 68.3 6 19.8 4 33.7 9 38.5 14.5v2.8c-5.8-7-24.5-12-39-15-19-3.6-43-6-67.9-6-26.1 0-50.5 2.6-69.3 6.2-15 3-35.1 9-37.6 14.8v-2.9c1.3-4 16.3-10 37.3-14.3 18.9-3.7 43.3-6.1 69.6-6.1zm0-9.1a383 383 0 0 1 68.3 6c19.8 4 33.7 9 38.5 14.6v2.7c-5.8-6.9-24.5-12-39-14.9-19-3.7-43-6-67.9-6a376 376 0 0 0-69.2 6.2c-14.5 2.7-35.4 8.9-37.7 14.7v-2.8c1.4-4 16.6-10.3 37.3-14.3 19-3.7 43.3-6.2 69.7-6.2m-.6-46.2c39.3-.2 73.6 5.5 89.3 13.5l5.7 10c-13.6-7.4-50.6-15-94.9-14-36.1.3-74.7 4-94 14.4l6.8-11.4c15.9-8.3 53.3-12.5 87.1-12.5"/>
|
||||||
|
<path d="M256 176.7a354 354 0 0 1 61.3 4.3c16 3 31.3 7.4 33.5 9.8l1.7 3c-5.3-3.4-18.6-7.3-35.6-10.5s-38.7-4.3-61-4.2c-25.3-.1-45 1.2-61.8 4.2a108.9 108.9 0 0 0-33.3 10.3l1.7-3.1c6-3 15.3-6.7 31.1-9.6 17.5-3.2 37.4-4.1 62.4-4.2m0-9c21.4-.2 42.6 1 59.1 4a96 96 0 0 1 30.6 10l2.5 4c-4.2-4.7-20-9.2-34.1-11.6-16.4-2.9-36.7-4-58.1-4.2a361 361 0 0 0-59.5 4.4 97.3 97.3 0 0 0-29.6 9.1l2.2-3.3c5.8-3 15.2-5.8 27-8.1a357 357 0 0 1 59.9-4.4zM308.4 284a276.4 276.4 0 0 0-52.5-4c-65.5.8-86.6 13.5-89.2 17.3l-5-8c16.8-12 52.4-18.8 94.6-18.2 21.9.4 40.8 1.9 56.6 5l-4.5 8"/>
|
||||||
|
<path d="M255.6 278.9c18.2.3 36 1 53.3 4.2l-1.2 2.2c-16-3-33.2-4-52-4-24.3-.2-48.7 2.1-70 8.2-6.7 1.9-17.8 6.2-19 9.8l-1.2-2c.4-2.2 7-6.6 19.6-10 24.4-7 47.2-8.3 70.5-8.4m.8-9.2a327 327 0 0 1 57.3 5l-1.3 2.3a299 299 0 0 0-56-4.9c-24.2 0-49.9 1.8-73.3 8.6-7.5 2.2-20.6 7-21 10.7l-1.2-2.2c.2-3.4 11.5-7.9 21.7-10.8 23.5-6.9 49.3-8.6 73.8-8.7"/>
|
||||||
|
<path d="m349.4 290.5-7.8 12.3-22.7-20.1-58.6-39.5-66.2-36.3-34.3-11.7 7.3-13.6 2.5-1.3 21.3 5.3 70.4 36.3 40.6 25.6L336 272l13.9 16z"/>
|
||||||
|
<path d="M158.6 195.5c6-4 50.2 15.6 96.6 43.6 46.1 28 90.3 59.6 86.3 65.5l-1.3 2.1-.6.5c.1-.1.8-1 0-3.1-2-6.5-33.4-31.5-85.3-62.9-50.7-30.1-92.9-48.3-97-43.1zM351 290.4c3.8-7.6-37.2-38.5-88.1-68.6-52-29.5-89.6-46.9-96.5-41.7L165 183c0 .1 0-.2.4-.5 1.2-1 3.3-1 4.2-1 11.8.2 45.5 15.7 92.8 42.8 20.8 12 87.6 55 87.3 67 0 1 .1 1.2-.3 1.8l1.7-2.6z"/>
|
||||||
|
</g>
|
||||||
|
<g transform="translate(0 26.7)scale(1.06667)">
|
||||||
|
<path fill="#fff" stroke="#000" stroke-width=".7" d="M180.6 211a58.7 58.7 0 0 0 17.5 41.7 59 59 0 0 0 41.8 17.6 59.4 59.4 0 0 0 42-17.4 59 59 0 0 0 17.4-41.8v-79.2l-118.7-.2z"/>
|
||||||
|
<path fill="red" stroke="#000" stroke-width=".5" d="M183 211.1a56.4 56.4 0 0 0 16.8 40 57 57 0 0 0 40.2 16.8 56.9 56.9 0 0 0 40.2-16.6 56.4 56.4 0 0 0 16.7-40v-77H183v76.8m91-53.7v48.9l-.1 5.1a33.2 33.2 0 0 1-10 24 34 34 0 0 1-24 10c-9.4 0-17.7-4-23.9-10.2a34 34 0 0 1-10-24v-54z"/>
|
||||||
|
<g id="pt-e">
|
||||||
|
<g id="pt-d" fill="#ff0" stroke="#000" stroke-width=".5">
|
||||||
|
<path stroke="none" d="M190.2 154.4c.1-5.5 4-6.8 4-6.8.1 0 4.3 1.4 4.3 6.9z"/>
|
||||||
|
<path d="m186.8 147.7-.7 6.3h4.2c0-5.2 4-6 4-6 .1 0 4 1.1 4.1 6h4.2l-.8-6.4zm-1 6.4h17c.3 0 .6.3.6.7 0 .5-.3.8-.6.8h-17c-.3 0-.6-.3-.6-.8 0-.4.3-.7.7-.7z"/>
|
||||||
|
<path d="M192 154c0-3.3 2.3-4.2 2.3-4.2s2.3 1 2.3 4.2H192m-5.8-9h16.3c.3 0 .6.4.6.8 0 .3-.3.6-.6.6h-16.3c-.3 0-.6-.3-.6-.7 0-.3.3-.6.6-.6zm.4 1.5H202c.3 0 .6.3.6.7 0 .4-.3.7-.6.7h-15.5c-.4 0-.6-.3-.6-.7 0-.4.2-.7.6-.7zm5-10.6h1.2v.8h.9v-.8h1.3v.9h.9v-1h1.2v2c0 .4-.2.6-.5.6h-4.4c-.3 0-.6-.2-.6-.5zm4.6 2.7.3 6.4h-4.3l.3-6.5h3.7"/>
|
||||||
|
<path id="pt-a" d="M191 141.6v3.4h-4v-3.4z"/>
|
||||||
|
<use xlink:href="#pt-a" width="100%" height="100%" x="10.6"/>
|
||||||
|
<path id="pt-b" d="M186.3 139h1.2v1h.9v-1h1.2v1h.9v-1h1.2v2c0 .4-.2.6-.5.6h-4.3a.6.6 0 0 1-.6-.6z"/>
|
||||||
|
<use xlink:href="#pt-b" width="100%" height="100%" x="10.6"/>
|
||||||
|
<path fill="#000001" stroke="none" d="M193.9 140.6c0-.6.9-.6.9 0v1.6h-.9z"/>
|
||||||
|
<path id="pt-c" fill="#000001" stroke="none" d="M188.6 142.8c0-.6.8-.6.8 0v1.2h-.8z"/>
|
||||||
|
<use xlink:href="#pt-c" width="100%" height="100%" x="10.6"/>
|
||||||
|
</g>
|
||||||
|
<use xlink:href="#pt-d" width="100%" height="100%" y="46.3"/>
|
||||||
|
<use xlink:href="#pt-d" width="100%" height="100%" transform="rotate(-45.2 312.8 180)"/>
|
||||||
|
</g>
|
||||||
|
<use xlink:href="#pt-d" width="100%" height="100%" x="45.7"/>
|
||||||
|
<use xlink:href="#pt-e" width="100%" height="100%" transform="matrix(-1 0 0 1 479.8 0)"/>
|
||||||
|
<g id="pt-f" fill="#fff">
|
||||||
|
<path fill="#039" d="M232.6 202.4a8.3 8.3 0 0 0 2.2 5.7 7.2 7.2 0 0 0 5.3 2.4c2.1 0 4-1 5.3-2.4a8.3 8.3 0 0 0 2.2-5.7v-10.8h-15z"/>
|
||||||
|
<circle cx="236.1" cy="195.7" r="1.5"/>
|
||||||
|
<circle cx="244.4" cy="195.7" r="1.5"/>
|
||||||
|
<circle cx="240.2" cy="199.7" r="1.5"/>
|
||||||
|
<circle cx="236.1" cy="203.9" r="1.5"/>
|
||||||
|
<circle cx="244.4" cy="203.9" r="1.5"/>
|
||||||
|
</g>
|
||||||
|
<use xlink:href="#pt-f" width="100%" height="100%" y="-26"/>
|
||||||
|
<use xlink:href="#pt-f" width="100%" height="100%" x="-20.8"/>
|
||||||
|
<use xlink:href="#pt-f" width="100%" height="100%" x="20.8"/>
|
||||||
|
<use xlink:href="#pt-f" width="100%" height="100%" y="25.8"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 8.1 KiB |
@@ -53,8 +53,8 @@ $(document).ready(function () {
|
|||||||
// Display a green banner at the bottom of the screen saying "Download complete"
|
// Display a green banner at the bottom of the screen saying "Download complete"
|
||||||
let downloadCompleteText = "Download Complete";
|
let downloadCompleteText = "Download Complete";
|
||||||
if(window.downloadCompleteText){
|
if(window.downloadCompleteText){
|
||||||
downloadCompleteText = window.downloadCompleteText;
|
downloadCompleteText = window.downloadCompleteText;
|
||||||
}
|
}
|
||||||
$("body").append('<div id="download-complete-banner" style="position:fixed;bottom:0;left:0;width:100%;background-color:green;color:white;text-align:center;padding:10px;font-size:16px;z-index:1000;">'+ downloadCompleteText + '</div>');
|
$("body").append('<div id="download-complete-banner" style="position:fixed;bottom:0;left:0;width:100%;background-color:green;color:white;text-align:center;padding:10px;font-size:16px;z-index:1000;">'+ downloadCompleteText + '</div>');
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
$("#download-complete-banner").fadeOut("slow", function() {
|
$("#download-complete-banner").fadeOut("slow", function() {
|
||||||
@@ -79,8 +79,8 @@ async function handleSingleDownload(url, formData, isMulti = false, isZip = fals
|
|||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
if (contentType && contentType.includes("application/json")) {
|
if (contentType && contentType.includes("application/json")) {
|
||||||
return handleJsonResponse(response);
|
|
||||||
console.error("Throwing error banner, response was not okay");
|
console.error("Throwing error banner, response was not okay");
|
||||||
|
return handleJsonResponse(response);
|
||||||
}
|
}
|
||||||
throw new Error(`HTTP error! status: ${response.status}`);
|
throw new Error(`HTTP error! status: ${response.status}`);
|
||||||
}
|
}
|
||||||
@@ -177,10 +177,10 @@ async function submitMultiPdfForm(url, files) {
|
|||||||
const zipFiles = files.length > zipThreshold;
|
const zipFiles = files.length > zipThreshold;
|
||||||
let jszip = null;
|
let jszip = null;
|
||||||
// Show the progress bar
|
// Show the progress bar
|
||||||
$("#progressBarContainer").show();
|
$(".progressBarContainer").show();
|
||||||
// Initialize the progress bar
|
// Initialize the progress bar
|
||||||
|
|
||||||
let progressBar = $("#progressBar");
|
let progressBar = $(".progressBar");
|
||||||
progressBar.css("width", "0%");
|
progressBar.css("width", "0%");
|
||||||
progressBar.attr("aria-valuenow", 0);
|
progressBar.attr("aria-valuenow", 0);
|
||||||
progressBar.attr("aria-valuemax", files.length);
|
progressBar.attr("aria-valuemax", files.length);
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user