Compare commits
2 Commits
v0.21.0
...
normalize_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cd07f789ce | ||
|
|
d725cf9a01 |
@@ -1,5 +1,2 @@
|
|||||||
# Formatting
|
# Formatting
|
||||||
5f771b785130154ed47952635b7acef371ffe0ec
|
5f771b785130154ed47952635b7acef371ffe0ec
|
||||||
|
|
||||||
# Normalize files
|
|
||||||
55d4fda01b2f39f5b7d7b4fda5214bd7ff0fd5dd
|
|
||||||
22
.github/workflows/push-docker.yml
vendored
@@ -3,7 +3,7 @@ name: Push Docker Image with VersionNumber
|
|||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
- main
|
- main
|
||||||
permissions:
|
permissions:
|
||||||
@@ -15,13 +15,13 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
|
|
||||||
- uses: actions/checkout@v3.5.2
|
- uses: actions/checkout@v3.5.2
|
||||||
|
|
||||||
- name: Set up JDK 17
|
- name: Set up JDK 17
|
||||||
uses: actions/setup-java@v3.11.0
|
uses: actions/setup-java@v3.11.0
|
||||||
with:
|
with:
|
||||||
java-version: '17'
|
java-version: '17'
|
||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
|
|
||||||
|
|
||||||
- uses: gradle/gradle-build-action@v2.4.2
|
- uses: gradle/gradle-build-action@v2.4.2
|
||||||
env:
|
env:
|
||||||
@@ -32,11 +32,11 @@ jobs:
|
|||||||
|
|
||||||
- name: Make Gradle wrapper executable
|
- name: Make Gradle wrapper executable
|
||||||
run: chmod +x gradlew
|
run: chmod +x gradlew
|
||||||
|
|
||||||
- name: Get version number
|
- name: Get version number
|
||||||
id: versionNumber
|
id: versionNumber
|
||||||
run: echo "::set-output name=versionNumber::$(./gradlew printVersion --quiet | tail -1)"
|
run: echo "::set-output name=versionNumber::$(./gradlew printVersion --quiet | tail -1)"
|
||||||
|
|
||||||
- name: Login to Docker Hub
|
- name: Login to Docker Hub
|
||||||
uses: docker/login-action@v2.1.0
|
uses: docker/login-action@v2.1.0
|
||||||
with:
|
with:
|
||||||
@@ -53,7 +53,7 @@ jobs:
|
|||||||
- name: Convert repository owner to lowercase
|
- name: Convert repository owner to lowercase
|
||||||
id: repoowner
|
id: repoowner
|
||||||
run: echo "::set-output name=lowercase::$(echo ${{ github.repository_owner }} | awk '{print tolower($0)}')"
|
run: echo "::set-output name=lowercase::$(echo ${{ github.repository_owner }} | awk '{print tolower($0)}')"
|
||||||
|
|
||||||
- name: Generate tags
|
- name: Generate tags
|
||||||
id: meta
|
id: meta
|
||||||
uses: docker/metadata-action@v4.4.0
|
uses: docker/metadata-action@v4.4.0
|
||||||
@@ -82,7 +82,7 @@ jobs:
|
|||||||
cache-to: type=gha,mode=max
|
cache-to: type=gha,mode=max
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
build-args:
|
build-args:
|
||||||
VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }}
|
VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }}
|
||||||
platforms: linux/amd64,linux/arm64/v8
|
platforms: linux/amd64,linux/arm64/v8
|
||||||
|
|
||||||
@@ -99,7 +99,7 @@ jobs:
|
|||||||
tags: |
|
tags: |
|
||||||
type=raw,value=${{ steps.versionNumber.outputs.versionNumber }}-ultra-lite,enable=${{ github.ref == 'refs/heads/master' }}
|
type=raw,value=${{ steps.versionNumber.outputs.versionNumber }}-ultra-lite,enable=${{ github.ref == 'refs/heads/master' }}
|
||||||
type=raw,value=latest-ultra-lite,enable=${{ github.ref == 'refs/heads/master' }}
|
type=raw,value=latest-ultra-lite,enable=${{ github.ref == 'refs/heads/master' }}
|
||||||
|
|
||||||
|
|
||||||
- name: Build and push Dockerfile-ultra-lite
|
- name: Build and push Dockerfile-ultra-lite
|
||||||
uses: docker/build-push-action@v4.0.0
|
uses: docker/build-push-action@v4.0.0
|
||||||
@@ -112,7 +112,7 @@ jobs:
|
|||||||
cache-to: type=gha,mode=max
|
cache-to: type=gha,mode=max
|
||||||
tags: ${{ steps.meta2.outputs.tags }}
|
tags: ${{ steps.meta2.outputs.tags }}
|
||||||
labels: ${{ steps.meta2.outputs.labels }}
|
labels: ${{ steps.meta2.outputs.labels }}
|
||||||
build-args:
|
build-args:
|
||||||
VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }}
|
VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }}
|
||||||
platforms: linux/amd64,linux/arm64/v8
|
platforms: linux/amd64,linux/arm64/v8
|
||||||
|
|
||||||
@@ -129,7 +129,7 @@ jobs:
|
|||||||
tags: |
|
tags: |
|
||||||
type=raw,value=${{ steps.versionNumber.outputs.versionNumber }}-lite,enable=${{ github.ref == 'refs/heads/master' }}
|
type=raw,value=${{ steps.versionNumber.outputs.versionNumber }}-lite,enable=${{ github.ref == 'refs/heads/master' }}
|
||||||
type=raw,value=latest-lite,enable=${{ github.ref == 'refs/heads/master' }}
|
type=raw,value=latest-lite,enable=${{ github.ref == 'refs/heads/master' }}
|
||||||
|
|
||||||
|
|
||||||
- name: Build and push Dockerfile-lite
|
- name: Build and push Dockerfile-lite
|
||||||
uses: docker/build-push-action@v4.0.0
|
uses: docker/build-push-action@v4.0.0
|
||||||
@@ -142,7 +142,7 @@ jobs:
|
|||||||
cache-to: type=gha,mode=max
|
cache-to: type=gha,mode=max
|
||||||
tags: ${{ steps.meta3.outputs.tags }}
|
tags: ${{ steps.meta3.outputs.tags }}
|
||||||
labels: ${{ steps.meta3.outputs.labels }}
|
labels: ${{ steps.meta3.outputs.labels }}
|
||||||
build-args:
|
build-args:
|
||||||
VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }}
|
VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }}
|
||||||
platforms: linux/amd64,linux/arm64/v8
|
platforms: linux/amd64,linux/arm64/v8
|
||||||
- name: Build and Push Helm Chart
|
- name: Build and Push Helm Chart
|
||||||
|
|||||||
12
.github/workflows/releaseArtifacts.yml
vendored
@@ -1,7 +1,7 @@
|
|||||||
name: Release Artifacts
|
name: Release Artifacts
|
||||||
|
|
||||||
on:
|
on:
|
||||||
release:
|
release:
|
||||||
types: [created]
|
types: [created]
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
@@ -19,13 +19,13 @@ jobs:
|
|||||||
file_suffix: ''
|
file_suffix: ''
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3.5.2
|
- uses: actions/checkout@v3.5.2
|
||||||
|
|
||||||
- name: Set up JDK 17
|
- name: Set up JDK 17
|
||||||
uses: actions/setup-java@v3.11.0
|
uses: actions/setup-java@v3.11.0
|
||||||
with:
|
with:
|
||||||
java-version: '17'
|
java-version: '17'
|
||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
|
|
||||||
- name: Grant execute permission for gradlew
|
- name: Grant execute permission for gradlew
|
||||||
run: chmod +x gradlew
|
run: chmod +x gradlew
|
||||||
|
|
||||||
@@ -42,11 +42,11 @@ jobs:
|
|||||||
asset_name: Stirling-PDF${{ matrix.file_suffix }}.exe
|
asset_name: Stirling-PDF${{ matrix.file_suffix }}.exe
|
||||||
tag: ${{ github.ref }}
|
tag: ${{ github.ref }}
|
||||||
overwrite: true
|
overwrite: true
|
||||||
|
|
||||||
- name: Get version number
|
- name: Get version number
|
||||||
id: versionNumber
|
id: versionNumber
|
||||||
run: echo "::set-output name=versionNumber::$(./gradlew printVersion --quiet | tail -1)"
|
run: echo "::set-output name=versionNumber::$(./gradlew printVersion --quiet | tail -1)"
|
||||||
|
|
||||||
- name: Upload jar binaries to release
|
- name: Upload jar binaries to release
|
||||||
uses: svenstaro/upload-release-action@v2
|
uses: svenstaro/upload-release-action@v2
|
||||||
with:
|
with:
|
||||||
|
|||||||
6
.github/workflows/swagger.yml
vendored
@@ -3,7 +3,7 @@ name: Update Swagger
|
|||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
jobs:
|
jobs:
|
||||||
push:
|
push:
|
||||||
@@ -12,13 +12,13 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
|
|
||||||
- uses: actions/checkout@v3.5.2
|
- uses: actions/checkout@v3.5.2
|
||||||
|
|
||||||
- name: Set up JDK 17
|
- name: Set up JDK 17
|
||||||
uses: actions/setup-java@v3.11.0
|
uses: actions/setup-java@v3.11.0
|
||||||
with:
|
with:
|
||||||
java-version: '17'
|
java-version: '17'
|
||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
|
|
||||||
- name: Grant execute permission for gradlew
|
- name: Grant execute permission for gradlew
|
||||||
run: chmod +x gradlew
|
run: chmod +x gradlew
|
||||||
|
|
||||||
|
|||||||
2
.github/workflows/test.yml
vendored
@@ -30,7 +30,7 @@ jobs:
|
|||||||
- name: Run Docker Compose Tests
|
- name: Run Docker Compose Tests
|
||||||
run: |
|
run: |
|
||||||
chmod +x ./gradlew
|
chmod +x ./gradlew
|
||||||
|
|
||||||
- name: Get version number
|
- name: Get version number
|
||||||
id: versionNumber
|
id: versionNumber
|
||||||
run: echo "::set-output name=versionNumber::$(./gradlew printVersion --quiet | tail -1)"
|
run: echo "::set-output name=versionNumber::$(./gradlew printVersion --quiet | tail -1)"
|
||||||
|
|||||||
@@ -9,13 +9,13 @@ Fork Stirling-PDF and make a new branch out of Main
|
|||||||
Then add reference to the language in the navbar by adding a new language entry to the dropdown
|
Then add reference to the language in the navbar by adding a new language entry to the dropdown
|
||||||
|
|
||||||
https://github.com/Stirling-Tools/Stirling-PDF/blob/main/src/main/resources/templates/fragments/languages.html
|
https://github.com/Stirling-Tools/Stirling-PDF/blob/main/src/main/resources/templates/fragments/languages.html
|
||||||
and add a flag svg file to
|
and add a flag svg file to
|
||||||
https://github.com/Stirling-Tools/Stirling-PDF/tree/main/src/main/resources/static/images/flags
|
https://github.com/Stirling-Tools/Stirling-PDF/tree/main/src/main/resources/static/images/flags
|
||||||
Any SVG flags are fine, i got most of mine from [here](https://flagicons.lipis.dev/)
|
Any SVG flags are fine, i got most of mine from [here](https://flagicons.lipis.dev/)
|
||||||
If your language isn't represented by a flag just find whichever closely matches it, such as for Arabic i chose Saudi Arabia
|
If your language isnt represented by a flag just find whichever closely matches it, such as for Arabic i chose Saudi Arabia
|
||||||
|
|
||||||
|
|
||||||
For example to add Polish you would add
|
For example to add Polish you would add
|
||||||
```html
|
```html
|
||||||
<a class="dropdown-item lang_dropdown-item" href="" data-language-code="pl_PL">
|
<a class="dropdown-item lang_dropdown-item" href="" data-language-code="pl_PL">
|
||||||
<img src="images/flags/pl.svg" alt="icon" width="20" height="15"> Polski
|
<img src="images/flags/pl.svg" alt="icon" width="20" height="15"> Polski
|
||||||
@@ -23,7 +23,7 @@ For example to add Polish you would add
|
|||||||
```
|
```
|
||||||
The data-language-code is the code used to reference the file in the next step.
|
The data-language-code is the code used to reference the file in the next step.
|
||||||
|
|
||||||
Start by copying the existing english property file
|
Start by copying the existing english property file
|
||||||
|
|
||||||
[https://github.com/Stirling-Tools/Stirling-PDF/blob/main/src/main/resources/messages_en_GB.properties](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/src/main/resources/messages_en_GB.properties)
|
[https://github.com/Stirling-Tools/Stirling-PDF/blob/main/src/main/resources/messages_en_GB.properties](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/src/main/resources/messages_en_GB.properties)
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ Copy and rename it to messages_{your data-language-code here}.properties, in the
|
|||||||
|
|
||||||
Then simply translate all property entries within that file and make a PR into main for others to use!
|
Then simply translate all property entries within that file and make a PR into main for others to use!
|
||||||
|
|
||||||
If you do not have a java IDE i am happy to verify the changes worked once you raise PR (but won't be able to verify the translations themselves)
|
If you do not have a java IDE i am happy to verify the changes worked once you raise PR (but wont be able to verify the translations themselves)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
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 doesnt!
|
||||||
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)
|
Please update your tesseract docker volume path version from 4.00 to 5
|
||||||
|
|
||||||
## 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.
|
||||||
All credit goes to them for this awesome work!
|
All credit goes to them for this awesome work!
|
||||||
|
|
||||||
## Language Packs
|
## Language Packs
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ Depending on your requirements, you can choose the appropriate language pack for
|
|||||||
|
|
||||||
#### Docker
|
#### Docker
|
||||||
|
|
||||||
If you are using Docker, you need to expose the Tesseract tessdata directory as a volume in order to use the additional language packs.
|
If you are using Docker, you need to expose the Tesseract tessdata directory as a volume in order to use the additional language packs.
|
||||||
#### Docker Compose
|
#### Docker Compose
|
||||||
Modify your `docker-compose.yml` file to include the following volume configuration:
|
Modify your `docker-compose.yml` file to include the following volume configuration:
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ sudo apt-get update
|
|||||||
sudo apt-get install -y git automake autoconf libtool libleptonica-dev pkg-config zlib1g-dev make g++ java-17-openjdk python3 python3-pip
|
sudo apt-get install -y git automake autoconf libtool libleptonica-dev pkg-config zlib1g-dev make g++ java-17-openjdk python3 python3-pip
|
||||||
```
|
```
|
||||||
|
|
||||||
For Fedora-based systems use this command:
|
For Fedora-based systems use this command:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo dnf install -y git automake autoconf libtool leptonica-devel pkg-config zlib-devel make gcc-c++ java-17-openjdk python3 python3-pip
|
sudo dnf install -y git automake autoconf libtool leptonica-devel pkg-config zlib-devel make gcc-c++ java-17-openjdk python3 python3-pip
|
||||||
@@ -65,7 +65,7 @@ sudo make install
|
|||||||
```
|
```
|
||||||
|
|
||||||
### Step 3: Install Additional Software
|
### Step 3: Install Additional Software
|
||||||
Next we need to install LibreOffice for conversions, ocrmypdf for OCR, and opencv for pattern recognition functionality.
|
Next we need to install LibreOffice for conversions, ocrmypdf for OCR, and opencv for patern recognition functionality.
|
||||||
|
|
||||||
Install the following software:
|
Install the following software:
|
||||||
|
|
||||||
@@ -95,14 +95,14 @@ For Debian-based systems, you can use the following command:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo apt-get install -y libreoffice-writer libreoffice-calc libreoffice-impress unpaper ocrmypdf
|
sudo apt-get install -y libreoffice-writer libreoffice-calc libreoffice-impress unpaper ocrmypdf
|
||||||
pip3 install uno opencv-python-headless unoconv pngquant WeasyPrint
|
pip3 install uno opencv-python-headless unoconv pngquant WeasyPrint
|
||||||
```
|
```
|
||||||
|
|
||||||
For Fedora:
|
For Fedora:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo dnf install -y libreoffice-writer libreoffice-calc libreoffice-impress unpaper ocrmypdf
|
sudo dnf install -y libreoffice-writer libreoffice-calc libreoffice-impress unpaper ocrmypdf
|
||||||
pip3 install uno opencv-python-headless unoconv pngquant WeasyPrint
|
pip3 install uno opencv-python-headless unoconv pngquant WeasyPrint
|
||||||
```
|
```
|
||||||
|
|
||||||
### Step 4: Clone and Build Stirling-PDF
|
### Step 4: Clone and Build Stirling-PDF
|
||||||
@@ -140,7 +140,7 @@ Manual:
|
|||||||
|
|
||||||
1. Download the desired language pack(s) by selecting the `.traineddata` file(s) for the language(s) you need.
|
1. Download the desired language pack(s) by selecting the `.traineddata` file(s) for the language(s) you need.
|
||||||
2. Place the `.traineddata` files in the Tesseract tessdata directory: `/usr/share/tessdata`
|
2. Place the `.traineddata` files in the Tesseract tessdata directory: `/usr/share/tessdata`
|
||||||
3.
|
3.
|
||||||
Please view [OCRmyPDF install guide](https://ocrmypdf.readthedocs.io/en/latest/installation.html) for more info.
|
Please view [OCRmyPDF install guide](https://ocrmypdf.readthedocs.io/en/latest/installation.html) for more info.
|
||||||
**IMPORTANT:** DO NOT REMOVE EXISTING `eng.traineddata`, IT'S REQUIRED.
|
**IMPORTANT:** DO NOT REMOVE EXISTING `eng.traineddata`, IT'S REQUIRED.
|
||||||
|
|
||||||
@@ -264,10 +264,10 @@ sudo systemctl restart stirlingpdf.service
|
|||||||
|
|
||||||
Remember to set the necessary environment variables before running the project if you want to customize the application the list can be seen in the main readme.
|
Remember to set the necessary environment variables before running the project if you want to customize the application the list can be seen in the main readme.
|
||||||
|
|
||||||
You can do this in the terminal by using the `export` command or -D argument to java -jar command:
|
You can do this in the terminal by using the `export` command or -D arguements to java -jar command:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
export APP_HOME_NAME="Stirling PDF"
|
export APP_HOME_NAME="Stirling PDF"
|
||||||
or
|
or
|
||||||
-DAPP_HOME_NAME="Stirling PDF"
|
-DAPP_HOME_NAME="Stirling PDF"
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
[](https://github.com/Stirling-Tools/Stirling-PDF/)
|
[](https://github.com/Stirling-Tools/Stirling-PDF/)
|
||||||
[](https://github.com/Stirling-Tools/stirling-pdf)
|
[](https://github.com/Stirling-Tools/stirling-pdf)
|
||||||
[](https://www.paypal.com/paypalme/froodleplex)
|
[](https://www.paypal.com/paypalme/froodleplex)
|
||||||
[](https://github.com/sponsors/Frooodle)
|
[](https://github.com/sponsors/Frooodle)
|
||||||
|
|
||||||
[](https://cloud.digitalocean.com/apps/new?repo=https://github.com/Stirling-Tools/Stirling-PDF/tree/digitalOcean&refcode=c3210994b1af)
|
[](https://cloud.digitalocean.com/apps/new?repo=https://github.com/Stirling-Tools/Stirling-PDF/tree/digitalOcean&refcode=c3210994b1af)
|
||||||
|
|
||||||
@@ -172,7 +172,7 @@ Stirling PDF currently supports 26!
|
|||||||
- Hindi (हिंदी) (hi_IN)
|
- Hindi (हिंदी) (hi_IN)
|
||||||
- Hungarian (Magyar) (hu_HU)
|
- Hungarian (Magyar) (hu_HU)
|
||||||
- Bulgarian (Български) (bg_BG)
|
- Bulgarian (Български) (bg_BG)
|
||||||
- Sebian Latin alphabet (Srpski) (sr_LATN_RS)
|
- Sebian Latin alphabet (Srpski) (sr-Latn-RS)
|
||||||
|
|
||||||
## Contributing (creating issues, translations, fixing bugs, etc.)
|
## Contributing (creating issues, translations, fixing bugs, etc.)
|
||||||
|
|
||||||
@@ -262,7 +262,7 @@ For API usage you must provide a header with 'X-API-Key' and the associated API
|
|||||||
- Redact text (Via UI not just automated way)
|
- Redact text (Via UI not just automated way)
|
||||||
- Add Forms
|
- Add Forms
|
||||||
- Multi page layout (Stich PDF pages together) support x rows y columns and custom page sizing
|
- Multi page layout (Stich PDF pages together) support x rows y columns and custom page sizing
|
||||||
- Fill forms manually or automatically
|
- Fill forms mannual and automatic
|
||||||
|
|
||||||
### Q2: Why is my application downloading .htm files?
|
### Q2: Why is my application downloading .htm files?
|
||||||
This is an issue caused commonly by your NGINX configuration. The default file upload size for NGINX is 1MB, you need to add the following in your Nginx sites-available file. ``client_max_body_size SIZE;`` Where "SIZE" is 50M for example for 50MB files.
|
This is an issue caused commonly by your NGINX configuration. The default file upload size for NGINX is 1MB, you need to add the following in your Nginx sites-available file. ``client_max_body_size SIZE;`` Where "SIZE" is 50M for example for 50MB files.
|
||||||
|
|||||||
14
build.gradle
@@ -89,10 +89,10 @@ dependencies {
|
|||||||
//security updates
|
//security updates
|
||||||
implementation 'ch.qos.logback:logback-classic:1.4.14'
|
implementation 'ch.qos.logback:logback-classic:1.4.14'
|
||||||
implementation 'ch.qos.logback:logback-core:1.4.14'
|
implementation 'ch.qos.logback:logback-core:1.4.14'
|
||||||
implementation 'org.springframework:spring-webmvc:6.1.3'
|
implementation 'org.springframework:spring-webmvc:6.1.2'
|
||||||
|
|
||||||
implementation("io.github.pixee:java-security-toolkit:1.1.2")
|
implementation("io.github.pixee:java-security-toolkit:1.1.2")
|
||||||
|
|
||||||
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.2'
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf:3.2.2'
|
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf:3.2.2'
|
||||||
@@ -101,7 +101,7 @@ dependencies {
|
|||||||
implementation 'org.springframework.boot:spring-boot-starter-security:3.2.2'
|
implementation 'org.springframework.boot:spring-boot-starter-security:3.2.2'
|
||||||
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.2"
|
||||||
|
|
||||||
//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"
|
||||||
}
|
}
|
||||||
@@ -138,19 +138,19 @@ dependencies {
|
|||||||
implementation ('com.opencsv:opencsv:5.9') {
|
implementation ('com.opencsv:opencsv:5.9') {
|
||||||
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.1'){
|
||||||
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.1'){
|
||||||
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.2'
|
||||||
implementation 'io.micrometer:micrometer-core:1.12.3'
|
implementation 'io.micrometer:micrometer-core:1.12.2'
|
||||||
implementation group: 'com.google.zxing', name: 'core', version: '3.5.2'
|
implementation group: 'com.google.zxing', name: 'core', version: '3.5.2'
|
||||||
// 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.21.0'
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
appVersion: 0.20.2
|
appVersion: 0.14.2
|
||||||
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:
|
||||||
|
|||||||
@@ -43,6 +43,6 @@ spec:
|
|||||||
name: http
|
name: http
|
||||||
{{- end }}
|
{{- end }}
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
|
|
||||||
selector:
|
selector:
|
||||||
{{- include "stirlingpdf.selectorLabels" . | nindent 4 }}
|
{{- include "stirlingpdf.selectorLabels" . | nindent 4 }}
|
||||||
|
|||||||
@@ -16,11 +16,11 @@ commonLabels: {}
|
|||||||
# team_name: dev
|
# team_name: dev
|
||||||
|
|
||||||
envs: []
|
envs: []
|
||||||
# - name: UI_APP_NAME
|
# - name: PP_HOME_NAME
|
||||||
# value: "Stirling PDF"
|
# value: "Stirling PDF"
|
||||||
# - name: UI_HOME_DESCRIPTION
|
# - name: APP_HOME_DESCRIPTION
|
||||||
# value: "Your locally hosted one-stop-shop for all your PDF needs."
|
# value: "Your locally hosted one-stop-shop for all your PDF needs."
|
||||||
# - name: UI_APP_NAVBAR_NAME
|
# - name: APP_NAVBAR_NAME
|
||||||
# value: "Stirling PDF"
|
# value: "Stirling PDF"
|
||||||
# - name: ALLOW_GOOGLE_VISIBILITY
|
# - name: ALLOW_GOOGLE_VISIBILITY
|
||||||
# value: "true"
|
# value: "true"
|
||||||
|
|||||||
@@ -19,8 +19,8 @@
|
|||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"><defs
|
xmlns:svg="http://www.w3.org/2000/svg"><defs
|
||||||
id="defs173">
|
id="defs173">
|
||||||
|
|
||||||
|
|
||||||
<linearGradient
|
<linearGradient
|
||||||
id="XMLID_5_"
|
id="XMLID_5_"
|
||||||
gradientUnits="userSpaceOnUse"
|
gradientUnits="userSpaceOnUse"
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
style="stop-color:#C2C2C9"
|
style="stop-color:#C2C2C9"
|
||||||
id="stop158" />
|
id="stop158" />
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
|
|
||||||
</defs><sodipodi:namedview
|
</defs><sodipodi:namedview
|
||||||
id="namedview171"
|
id="namedview171"
|
||||||
pagecolor="#ffffff"
|
pagecolor="#ffffff"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
@@ -15,7 +15,7 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- 8080:8080
|
- 8080:8080
|
||||||
volumes:
|
volumes:
|
||||||
- /stirling/latest/data:/usr/share/tessdata:rw
|
- /stirling/latest/data:/usr/share/tesseract-ocr/5/tessdata:rw
|
||||||
- /stirling/latest/config:/configs:rw
|
- /stirling/latest/config:/configs:rw
|
||||||
- /stirling/latest/logs:/logs:rw
|
- /stirling/latest/logs:/logs:rw
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- 8080:8080
|
- 8080:8080
|
||||||
volumes:
|
volumes:
|
||||||
- /stirling/latest/data:/usr/share/tessdata:rw
|
- /stirling/latest/data:/usr/share/tesseract-ocr/5/tessdata:rw
|
||||||
- /stirling/latest/config:/configs:rw
|
- /stirling/latest/config:/configs:rw
|
||||||
- /stirling/latest/logs:/logs:rw
|
- /stirling/latest/logs:/logs:rw
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- 8080:8080
|
- 8080:8080
|
||||||
volumes:
|
volumes:
|
||||||
- /stirling/latest/data:/usr/share/tessdata:rw
|
- /stirling/latest/data:/usr/share/tesseract-ocr/5/tessdata:rw
|
||||||
- /stirling/latest/config:/configs:rw
|
- /stirling/latest/config:/configs:rw
|
||||||
- /stirling/latest/logs:/logs:rw
|
- /stirling/latest/logs:/logs:rw
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- 8080:8080
|
- 8080:8080
|
||||||
volumes:
|
volumes:
|
||||||
- /stirling/latest/data:/usr/share/tessdata:rw
|
- /stirling/latest/data:/usr/share/tesseract-ocr/5/tessdata:rw
|
||||||
- /stirling/latest/config:/configs:rw
|
- /stirling/latest/config:/configs:rw
|
||||||
- /stirling/latest/logs:/logs:rw
|
- /stirling/latest/logs:/logs:rw
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
37
scripts/detect-blank-pages.py
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import cv2
|
||||||
|
import sys
|
||||||
|
import argparse
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
def is_blank_image(image_path, threshold=10, white_percent=99, white_value=255, blur_size=5):
|
||||||
|
image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
|
||||||
|
|
||||||
|
if image is None:
|
||||||
|
print(f"Error: Unable to read the image file: {image_path}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Apply Gaussian blur to reduce noise
|
||||||
|
blurred_image = cv2.GaussianBlur(image, (blur_size, blur_size), 0)
|
||||||
|
|
||||||
|
_, thresholded_image = cv2.threshold(blurred_image, white_value - threshold, white_value, cv2.THRESH_BINARY)
|
||||||
|
|
||||||
|
# Calculate the percentage of white pixels in the thresholded image
|
||||||
|
white_pixels = np.sum(thresholded_image == white_value)
|
||||||
|
white_pixel_percentage = (white_pixels / thresholded_image.size) * 100
|
||||||
|
|
||||||
|
print(f"Page has white pixel percent of {white_pixel_percentage}")
|
||||||
|
return white_pixel_percentage >= white_percent
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser(description='Detect if an image is considered blank or not.')
|
||||||
|
parser.add_argument('image_path', help='The path to the image file.')
|
||||||
|
parser.add_argument('-t', '--threshold', type=int, default=10, help='Threshold for determining white pixels. The default value is 10.')
|
||||||
|
parser.add_argument('-w', '--white_percent', type=float, default=99, help='The percentage of white pixels for an image to be considered blank. The default value is 99.')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
blank = is_blank_image(args.image_path, args.threshold, args.white_percent)
|
||||||
|
|
||||||
|
# Return code 1: The image is considered blank.
|
||||||
|
# Return code 0: The image is not considered blank.
|
||||||
|
sys.exit(int(blank))
|
||||||
@@ -4,7 +4,7 @@ if [ "$DOCKER_ENABLE_SECURITY" = "true" ] && [ "$VERSION_TAG" != "alpha" ]; then
|
|||||||
if [ ! -f app-security.jar ]; then
|
if [ ! -f app-security.jar ]; then
|
||||||
echo "Trying to download from: https://github.com/Stirling-Tools/Stirling-PDF/releases/download/v$VERSION_TAG/Stirling-PDF-with-login.jar"
|
echo "Trying to download from: https://github.com/Stirling-Tools/Stirling-PDF/releases/download/v$VERSION_TAG/Stirling-PDF-with-login.jar"
|
||||||
curl -L -o app-security.jar https://github.com/Stirling-Tools/Stirling-PDF/releases/download/v$VERSION_TAG/Stirling-PDF-with-login.jar
|
curl -L -o app-security.jar https://github.com/Stirling-Tools/Stirling-PDF/releases/download/v$VERSION_TAG/Stirling-PDF-with-login.jar
|
||||||
|
|
||||||
# If the first download attempt failed, try with the 'v' prefix
|
# If the first download attempt failed, try with the 'v' prefix
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "Trying to download from: https://github.com/Stirling-Tools/Stirling-PDF/releases/download/$VERSION_TAG/Stirling-PDF-with-login.jar"
|
echo "Trying to download from: https://github.com/Stirling-Tools/Stirling-PDF/releases/download/$VERSION_TAG/Stirling-PDF-with-login.jar"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import argparse
|
|||||||
import sys
|
import sys
|
||||||
import cv2
|
import cv2
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import os
|
import os
|
||||||
|
|
||||||
def find_photo_boundaries(image, background_color, tolerance=30, min_area=10000, min_contour_area=500):
|
def find_photo_boundaries(image, background_color, tolerance=30, min_area=10000, min_contour_area=500):
|
||||||
mask = cv2.inRange(image, background_color - tolerance, background_color + tolerance)
|
mask = cv2.inRange(image, background_color - tolerance, background_color + tolerance)
|
||||||
@@ -49,9 +49,9 @@ def auto_rotate(image, angle_threshold=1):
|
|||||||
angles = []
|
angles = []
|
||||||
for rho, theta in lines[:, 0]:
|
for rho, theta in lines[:, 0]:
|
||||||
angles.append((theta * 180) / np.pi - 90)
|
angles.append((theta * 180) / np.pi - 90)
|
||||||
|
|
||||||
angle = np.median(angles)
|
angle = np.median(angles)
|
||||||
|
|
||||||
if abs(angle) < angle_threshold:
|
if abs(angle) < angle_threshold:
|
||||||
return image
|
return image
|
||||||
|
|
||||||
@@ -65,16 +65,16 @@ def auto_rotate(image, angle_threshold=1):
|
|||||||
|
|
||||||
def crop_borders(image, border_color, tolerance=30):
|
def crop_borders(image, border_color, tolerance=30):
|
||||||
mask = cv2.inRange(image, border_color - tolerance, border_color + tolerance)
|
mask = cv2.inRange(image, border_color - tolerance, border_color + tolerance)
|
||||||
|
|
||||||
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
|
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
|
||||||
if len(contours) == 0:
|
if len(contours) == 0:
|
||||||
return image
|
return image
|
||||||
|
|
||||||
largest_contour = max(contours, key=cv2.contourArea)
|
largest_contour = max(contours, key=cv2.contourArea)
|
||||||
x, y, w, h = cv2.boundingRect(largest_contour)
|
x, y, w, h = cv2.boundingRect(largest_contour)
|
||||||
|
|
||||||
return image[y:y+h, x:x+w]
|
return image[y:y+h, x:x+w]
|
||||||
|
|
||||||
def split_photos(input_file, output_directory, tolerance=30, min_area=10000, min_contour_area=500, angle_threshold=10, border_size=0):
|
def split_photos(input_file, output_directory, tolerance=30, min_area=10000, min_contour_area=500, angle_threshold=10, border_size=0):
|
||||||
image = cv2.imread(input_file)
|
image = cv2.imread(input_file)
|
||||||
background_color = estimate_background_color(image)
|
background_color = estimate_background_color(image)
|
||||||
@@ -110,7 +110,7 @@ if __name__ == "__main__":
|
|||||||
parser.add_argument("--min_contour_area", type=int, default=500, help="Sets the minimum contour area threshold for a photo (default: 500).")
|
parser.add_argument("--min_contour_area", type=int, default=500, help="Sets the minimum contour area threshold for a photo (default: 500).")
|
||||||
parser.add_argument("--angle_threshold", type=int, default=10, help="Sets the minimum absolute angle required for the image to be rotated (default: 10).")
|
parser.add_argument("--angle_threshold", type=int, default=10, help="Sets the minimum absolute angle required for the image to be rotated (default: 10).")
|
||||||
parser.add_argument("--border_size", type=int, default=0, help="Sets the size of the border added and removed to prevent white borders in the output (default: 0).")
|
parser.add_argument("--border_size", type=int, default=0, help="Sets the size of the border added and removed to prevent white borders in the output (default: 0).")
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
split_photos(args.input_file, args.output_directory, tolerance=args.tolerance, min_area=args.min_area, min_contour_area=args.min_contour_area, angle_threshold=args.angle_threshold, border_size=args.border_size)
|
split_photos(args.input_file, args.output_directory, tolerance=args.tolerance, min_area=args.min_area, min_contour_area=args.min_contour_area, angle_threshold=args.angle_threshold, border_size=args.border_size)
|
||||||
|
|||||||
@@ -79,16 +79,6 @@ public class ConfigInitializer
|
|||||||
return parts.length > 0 ? parts[0].trim().replace("#", "").trim() : "";
|
return parts.length > 0 ? parts[0].trim().replace("#", "").trim() : "";
|
||||||
};
|
};
|
||||||
|
|
||||||
Function<String, Integer> getIndentationLevel =
|
|
||||||
line -> {
|
|
||||||
int count = 0;
|
|
||||||
for (char ch : line.toCharArray()) {
|
|
||||||
if (ch == ' ') count++;
|
|
||||||
else break;
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
};
|
|
||||||
|
|
||||||
Set<String> userKeys = userLines.stream().map(extractKey).collect(Collectors.toSet());
|
Set<String> userKeys = userLines.stream().map(extractKey).collect(Collectors.toSet());
|
||||||
|
|
||||||
for (String line : templateLines) {
|
for (String line : templateLines) {
|
||||||
@@ -144,77 +134,10 @@ public class ConfigInitializer
|
|||||||
.map(extractKey)
|
.map(extractKey)
|
||||||
.anyMatch(templateKey -> templateKey.equalsIgnoreCase(userKey));
|
.anyMatch(templateKey -> templateKey.equalsIgnoreCase(userKey));
|
||||||
if (!isPresentInTemplate && !isCommented.apply(userLine)) {
|
if (!isPresentInTemplate && !isCommented.apply(userLine)) {
|
||||||
if (!childOfTemplateEntry(
|
mergedLines.add(userLine);
|
||||||
isCommented,
|
|
||||||
extractKey,
|
|
||||||
getIndentationLevel,
|
|
||||||
userLines,
|
|
||||||
userLine,
|
|
||||||
templateLines)) {
|
|
||||||
// check if userLine is a child of a entry within templateLines or not, if child
|
|
||||||
// of parent in templateLines then dont add to mergedLines, if anything else
|
|
||||||
// then add
|
|
||||||
mergedLines.add(userLine);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Files.write(outputPath, mergedLines, StandardCharsets.UTF_8);
|
Files.write(outputPath, mergedLines, StandardCharsets.UTF_8);
|
||||||
}
|
}
|
||||||
|
|
||||||
// New method to check if a userLine is a child of an entry in templateLines
|
|
||||||
boolean childOfTemplateEntry(
|
|
||||||
Function<String, Boolean> isCommented,
|
|
||||||
Function<String, String> extractKey,
|
|
||||||
Function<String, Integer> getIndentationLevel,
|
|
||||||
List<String> userLines,
|
|
||||||
String userLine,
|
|
||||||
List<String> templateLines) {
|
|
||||||
String userKey = extractKey.apply(userLine).trim();
|
|
||||||
int userIndentation = getIndentationLevel.apply(userLine);
|
|
||||||
|
|
||||||
// Start by assuming the line is not a child of an entry in templateLines
|
|
||||||
boolean isChild = false;
|
|
||||||
|
|
||||||
// Iterate backwards through userLines from the current line to find any parent
|
|
||||||
for (int i = userLines.indexOf(userLine) - 1; i >= 0; i--) {
|
|
||||||
String potentialParentLine = userLines.get(i);
|
|
||||||
int parentIndentation = getIndentationLevel.apply(potentialParentLine);
|
|
||||||
|
|
||||||
// Check if we've reached a potential parent based on indentation
|
|
||||||
if (parentIndentation < userIndentation) {
|
|
||||||
String parentKey = extractKey.apply(potentialParentLine).trim();
|
|
||||||
|
|
||||||
// Now, check if this potential parent or any of its parents exist in templateLines
|
|
||||||
boolean parentExistsInTemplate =
|
|
||||||
templateLines.stream()
|
|
||||||
.filter(line -> !isCommented.apply(line)) // Skip commented lines
|
|
||||||
.anyMatch(
|
|
||||||
templateLine -> {
|
|
||||||
String templateKey =
|
|
||||||
extractKey.apply(templateLine).trim();
|
|
||||||
return parentKey.equalsIgnoreCase(templateKey);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!parentExistsInTemplate) {
|
|
||||||
// If the parent does not exist in template, check the next level parent
|
|
||||||
userIndentation =
|
|
||||||
parentIndentation; // Update userIndentation to the parent's indentation
|
|
||||||
// for next iteration
|
|
||||||
if (parentIndentation == 0) {
|
|
||||||
// If we've reached the top-level parent and it's not in template, the
|
|
||||||
// original line is considered not a child
|
|
||||||
isChild = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// If any parent exists in template, the original line is considered a child
|
|
||||||
isChild = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return isChild; // Return true if the line is not a child of any entry in templateLines
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -140,6 +140,7 @@ public class EndpointConfiguration {
|
|||||||
// CLI
|
// CLI
|
||||||
addEndpointToGroup("CLI", "compress-pdf");
|
addEndpointToGroup("CLI", "compress-pdf");
|
||||||
addEndpointToGroup("CLI", "extract-image-scans");
|
addEndpointToGroup("CLI", "extract-image-scans");
|
||||||
|
addEndpointToGroup("CLI", "remove-blanks");
|
||||||
addEndpointToGroup("CLI", "repair");
|
addEndpointToGroup("CLI", "repair");
|
||||||
addEndpointToGroup("CLI", "pdf-to-pdfa");
|
addEndpointToGroup("CLI", "pdf-to-pdfa");
|
||||||
addEndpointToGroup("CLI", "file-to-pdf");
|
addEndpointToGroup("CLI", "file-to-pdf");
|
||||||
@@ -217,7 +218,6 @@ public class EndpointConfiguration {
|
|||||||
addEndpointToGroup("Java", "split-by-size-or-count");
|
addEndpointToGroup("Java", "split-by-size-or-count");
|
||||||
addEndpointToGroup("Java", "overlay-pdf");
|
addEndpointToGroup("Java", "overlay-pdf");
|
||||||
addEndpointToGroup("Java", "split-pdf-by-sections");
|
addEndpointToGroup("Java", "split-pdf-by-sections");
|
||||||
addEndpointToGroup("Java", "remove-blanks");
|
|
||||||
|
|
||||||
// Javascript
|
// Javascript
|
||||||
addEndpointToGroup("Javascript", "pdf-organizer");
|
addEndpointToGroup("Javascript", "pdf-organizer");
|
||||||
|
|||||||
@@ -9,9 +9,6 @@ import org.springframework.security.authentication.dao.DaoAuthenticationProvider
|
|||||||
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
|
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
|
||||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||||
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
||||||
import org.springframework.security.config.http.SessionCreationPolicy;
|
|
||||||
import org.springframework.security.core.session.SessionRegistry;
|
|
||||||
import org.springframework.security.core.session.SessionRegistryImpl;
|
|
||||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
@@ -47,11 +44,6 @@ public class SecurityConfiguration {
|
|||||||
|
|
||||||
@Autowired private FirstLoginFilter firstLoginFilter;
|
@Autowired private FirstLoginFilter firstLoginFilter;
|
||||||
|
|
||||||
@Bean
|
|
||||||
public SessionRegistry sessionRegistry() {
|
|
||||||
return new SessionRegistryImpl();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
|
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
|
||||||
http.addFilterBefore(userAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
|
http.addFilterBefore(userAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
|
||||||
@@ -61,14 +53,6 @@ public class SecurityConfiguration {
|
|||||||
http.csrf(csrf -> csrf.disable());
|
http.csrf(csrf -> csrf.disable());
|
||||||
http.addFilterBefore(rateLimitingFilter(), UsernamePasswordAuthenticationFilter.class);
|
http.addFilterBefore(rateLimitingFilter(), UsernamePasswordAuthenticationFilter.class);
|
||||||
http.addFilterAfter(firstLoginFilter, UsernamePasswordAuthenticationFilter.class);
|
http.addFilterAfter(firstLoginFilter, UsernamePasswordAuthenticationFilter.class);
|
||||||
http.sessionManagement(
|
|
||||||
sessionManagement ->
|
|
||||||
sessionManagement
|
|
||||||
.sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
|
|
||||||
.maximumSessions(3)
|
|
||||||
.maxSessionsPreventsLogin(true)
|
|
||||||
.sessionRegistry(sessionRegistry())
|
|
||||||
.expiredUrl("/login?logout=true"));
|
|
||||||
http.formLogin(
|
http.formLogin(
|
||||||
formLogin ->
|
formLogin ->
|
||||||
formLogin
|
formLogin
|
||||||
|
|||||||
@@ -10,9 +10,6 @@ import org.springframework.http.HttpStatus;
|
|||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
import org.springframework.security.core.session.SessionInformation;
|
|
||||||
import org.springframework.security.core.session.SessionRegistry;
|
|
||||||
import org.springframework.security.core.userdetails.UserDetails;
|
|
||||||
import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
|
import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
@@ -231,27 +228,11 @@ public class UserController {
|
|||||||
if (currentUsername.equals(username)) {
|
if (currentUsername.equals(username)) {
|
||||||
throw new IllegalArgumentException("Cannot delete currently logined in user.");
|
throw new IllegalArgumentException("Cannot delete currently logined in user.");
|
||||||
}
|
}
|
||||||
invalidateUserSessions(username);
|
|
||||||
userService.deleteUser(username);
|
userService.deleteUser(username);
|
||||||
return "redirect:/addUsers";
|
return "redirect:/addUsers";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Autowired private SessionRegistry sessionRegistry;
|
|
||||||
|
|
||||||
private void invalidateUserSessions(String username) {
|
|
||||||
for (Object principal : sessionRegistry.getAllPrincipals()) {
|
|
||||||
if (principal instanceof UserDetails) {
|
|
||||||
UserDetails userDetails = (UserDetails) principal;
|
|
||||||
if (userDetails.getUsername().equals(username)) {
|
|
||||||
for (SessionInformation session :
|
|
||||||
sessionRegistry.getAllSessions(principal, false)) {
|
|
||||||
session.expireNow();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
||||||
@PostMapping("/get-api-key")
|
@PostMapping("/get-api-key")
|
||||||
public ResponseEntity<String> getApiKey(Principal principal) {
|
public ResponseEntity<String> getApiKey(Principal principal) {
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public class OCRController {
|
|||||||
private static final Logger logger = LoggerFactory.getLogger(OCRController.class);
|
private static final Logger logger = LoggerFactory.getLogger(OCRController.class);
|
||||||
|
|
||||||
public List<String> getAvailableTesseractLanguages() {
|
public List<String> getAvailableTesseractLanguages() {
|
||||||
String tessdataDir = "/usr/share/tessdata";
|
String tessdataDir = "/usr/share/tesseract-ocr/5/tessdata";
|
||||||
File[] files = new File(tessdataDir).listFiles();
|
File[] files = new File(tessdataDir).listFiles();
|
||||||
if (files == null) {
|
if (files == null) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
|
|||||||
@@ -33,8 +33,6 @@ public class AccountWebController {
|
|||||||
return "redirect:/";
|
return "redirect:/";
|
||||||
}
|
}
|
||||||
|
|
||||||
model.addAttribute("currentPage", "login");
|
|
||||||
|
|
||||||
if (request.getParameter("error") != null) {
|
if (request.getParameter("error") != null) {
|
||||||
|
|
||||||
model.addAttribute("error", request.getParameter("error"));
|
model.addAttribute("error", request.getParameter("error"));
|
||||||
@@ -114,7 +112,6 @@ public class AccountWebController {
|
|||||||
model.addAttribute("role", user.get().getRolesAsString());
|
model.addAttribute("role", user.get().getRolesAsString());
|
||||||
model.addAttribute("settings", settingsJson);
|
model.addAttribute("settings", settingsJson);
|
||||||
model.addAttribute("changeCredsFlag", user.get().isFirstLogin());
|
model.addAttribute("changeCredsFlag", user.get().isFirstLogin());
|
||||||
model.addAttribute("currentPage", "account");
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return "redirect:/";
|
return "redirect:/";
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ public class OtherWebController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getAvailableTesseractLanguages() {
|
public List<String> getAvailableTesseractLanguages() {
|
||||||
String tessdataDir = "/usr/share/tessdata";
|
String tessdataDir = "/usr/share/tesseract-ocr/5/tessdata";
|
||||||
File[] files = new File(tessdataDir).listFiles();
|
File[] files = new File(tessdataDir).listFiles();
|
||||||
if (files == null) {
|
if (files == null) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
|
|||||||
@@ -12,6 +12,6 @@ public class PdfToTextOrRTFRequest extends PDFFile {
|
|||||||
|
|
||||||
@Schema(
|
@Schema(
|
||||||
description = "The output Text or RTF format",
|
description = "The output Text or RTF format",
|
||||||
allowableValues = {"rtf", "txt"})
|
allowableValues = {"rtf", "txt:Text"})
|
||||||
private String outputFormat;
|
private String outputFormat;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ server.servlet.context-path=${SYSTEM_ROOTURIPATH:/}
|
|||||||
spring.devtools.restart.enabled=true
|
spring.devtools.restart.enabled=true
|
||||||
spring.devtools.livereload.enabled=true
|
spring.devtools.livereload.enabled=true
|
||||||
|
|
||||||
spring.thymeleaf.encoding=UTF-8
|
spring.thymeleaf.encoding=UTF-8
|
||||||
|
|
||||||
server.connection-timeout=${SYSTEM_CONNECTIONTIMEOUTMINUTES:5m}
|
server.connection-timeout=${SYSTEM_CONNECTIONTIMEOUTMINUTES:5m}
|
||||||
spring.mvc.async.request-timeout=${SYSTEM_CONNECTIONTIMEOUTMILLISECONDS:300000}
|
spring.mvc.async.request-timeout=${SYSTEM_CONNECTIONTIMEOUTMILLISECONDS:300000}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
____ _____ ___ ____ _ ___ _ _ ____ ____ ____ _____
|
____ _____ ___ ____ _ ___ _ _ ____ ____ ____ _____
|
||||||
/ ___|_ _|_ _| _ \| | |_ _| \ | |/ ___| | _ \| _ \| ___|
|
/ ___|_ _|_ _| _ \| | |_ _| \ | |/ ___| | _ \| _ \| ___|
|
||||||
\___ \ | | | || |_) | | | || \| | | _ _____| |_) | | | | |_
|
\___ \ | | | || |_) | | | || \| | | _ _____| |_) | | | | |_
|
||||||
___) || | | || _ <| |___ | || |\ | |_| |_____| __/| |_| | _|
|
___) || | | || _ <| |___ | || |\ | |_| |_____| __/| |_| | _|
|
||||||
|____/ |_| |___|_| \_\_____|___|_| \_|\____| |_| |____/|_|
|
|____/ |_| |___|_| \_\_____|___|_| \_|\____| |_| |____/|_|
|
||||||
Powered by Spring Boot ${spring-boot.version}
|
Powered by Spring Boot ${spring-boot.version}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=اختر صورة
|
|||||||
genericSubmit=إرسال
|
genericSubmit=إرسال
|
||||||
processTimeWarning=تحذير: يمكن أن تستغرق هذه العملية ما يصل إلى دقيقة حسب حجم الملف
|
processTimeWarning=تحذير: يمكن أن تستغرق هذه العملية ما يصل إلى دقيقة حسب حجم الملف
|
||||||
pageOrderPrompt=ترتيب الصفحات (أدخل قائمة بأرقام الصفحات مفصولة بفواصل):
|
pageOrderPrompt=ترتيب الصفحات (أدخل قائمة بأرقام الصفحات مفصولة بفواصل):
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=اذهب
|
goToPage=اذهب
|
||||||
true=\u0635\u062D\u064A\u062D
|
true=\u0635\u062D\u064A\u062D
|
||||||
false=\u062E\u0637\u0623
|
false=\u062E\u0637\u0623
|
||||||
@@ -20,7 +19,6 @@ save=\u062D\u0641\u0638
|
|||||||
close=\u0625\u063A\u0644\u0627\u0642
|
close=\u0625\u063A\u0644\u0627\u0642
|
||||||
filesSelected=الملفات المحددة
|
filesSelected=الملفات المحددة
|
||||||
noFavourites=لم تتم إضافة أي مفضلات
|
noFavourites=لم تتم إضافة أي مفضلات
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=الانتظار بالملل؟
|
bored=الانتظار بالملل؟
|
||||||
alphabet=\u0627\u0644\u0623\u0628\u062C\u062F\u064A\u0629
|
alphabet=\u0627\u0644\u0623\u0628\u062C\u062F\u064A\u0629
|
||||||
downloadPdf=تنزيل PDF
|
downloadPdf=تنزيل PDF
|
||||||
@@ -44,7 +42,7 @@ red=Red
|
|||||||
green=Green
|
green=Green
|
||||||
blue=Blue
|
blue=Blue
|
||||||
custom=Custom...
|
custom=Custom...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=Account Settings
|
|||||||
account.adminSettings=Admin Settings - View and Add Users
|
account.adminSettings=Admin Settings - View and Add Users
|
||||||
account.userControlSettings=User Control Settings
|
account.userControlSettings=User Control Settings
|
||||||
account.changeUsername=Change Username
|
account.changeUsername=Change Username
|
||||||
account.newUsername=New Username
|
account.changeUsername=Change Username
|
||||||
account.password=Confirmation Password
|
account.password=Confirmation Password
|
||||||
account.oldPassword=Old password
|
account.oldPassword=Old password
|
||||||
account.newPassword=New Password
|
account.newPassword=New Password
|
||||||
@@ -368,7 +366,7 @@ showJS.tags=JS
|
|||||||
|
|
||||||
home.autoRedact.title=Auto Redact
|
home.autoRedact.title=Auto Redact
|
||||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
showJS.tags=JS
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF to CSV
|
||||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=Auto Redact
|
|||||||
autoRedact.header=Auto Redact
|
autoRedact.header=Auto Redact
|
||||||
autoRedact.colorLabel=Colour
|
autoRedact.colorLabel=Colour
|
||||||
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
||||||
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
||||||
autoRedact.useRegexLabel=Use Regex
|
autoRedact.useRegexLabel=Use Regex
|
||||||
autoRedact.wholeWordSearchLabel=Whole Word Search
|
autoRedact.wholeWordSearchLabel=Whole Word Search
|
||||||
autoRedact.customPaddingLabel=Custom Extra Padding
|
autoRedact.customPaddingLabel=Custom Extra Padding
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=Sanitize PDF
|
sanitizePDF.title=Sanitize PDF
|
||||||
sanitizePDF.header=Sanitize a PDF file
|
sanitizePDF.header=Sanitize a PDF file
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=تعيين الحد الأدنى لمنطقة ا
|
|||||||
ScannerImageSplit.selectText.9=حجم الحدود:
|
ScannerImageSplit.selectText.9=حجم الحدود:
|
||||||
ScannerImageSplit.selectText.10=يضبط حجم الحدود المضافة والمزالة لمنع الحدود البيضاء في الإخراج (الافتراضي: 1).
|
ScannerImageSplit.selectText.10=يضبط حجم الحدود المضافة والمزالة لمنع الحدود البيضاء في الإخراج (الافتراضي: 1).
|
||||||
|
|
||||||
|
|
||||||
#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=\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.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=\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)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=\u062F\u0648\u0631\u0627\u0646 PDF \u062A\u0644\u0642\u0
|
|||||||
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=\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.4=\u062F\u0645\u062C \u0641\u064A \u0645\u0644\u0641 PDF \u0648\u0627\u062D\u062F
|
imageToPDF.selectText.4=\u062F\u0645\u062C \u0641\u064A \u0645\u0644\u0641 PDF \u0648\u0627\u062D\u062F
|
||||||
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=\u062A\u062D\u0648\u064A\u0644 \u0625\u0644\u0649 \u0645\u0644\u0641\u0627\u062A PDF \u0645\u0646\u0641\u0635\u0644\u0629
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=تحويل PDF إلى صورة
|
pdfToImage.title=تحويل PDF إلى صورة
|
||||||
pdfToImage.header=تحويل PDF إلى صورة
|
pdfToImage.header=تحويل PDF إلى صورة
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=\u0627\u0644\u0643\u0644\u0645\u0627\u062A \u0627\u0644\
|
|||||||
changeMetadata.modDate=\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u062A\u0639\u062F\u064A\u0644 (yyyy / MM / dd HH: mm: ss):
|
changeMetadata.modDate=\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u062A\u0639\u062F\u064A\u0644 (yyyy / MM / dd HH: mm: ss):
|
||||||
changeMetadata.producer=\u0627\u0644\u0645\u0646\u062A\u062C:
|
changeMetadata.producer=\u0627\u0644\u0645\u0646\u062A\u062C:
|
||||||
changeMetadata.subject=\u0627\u0644\u0645\u0648\u0636\u0648\u0639:
|
changeMetadata.subject=\u0627\u0644\u0645\u0648\u0636\u0648\u0639:
|
||||||
|
changeMetadata.title=\u0627\u0644\u0639\u0646\u0648\u0627\u0646:
|
||||||
changeMetadata.trapped=\u0645\u062D\u0627\u0635\u0631:
|
changeMetadata.trapped=\u0645\u062D\u0627\u0635\u0631:
|
||||||
changeMetadata.selectText.4=\u0628\u064A\u0627\u0646\u0627\u062A \u0648\u0635\u0641\u064A\u0629 \u0623\u062E\u0631\u0649:
|
changeMetadata.selectText.4=\u0628\u064A\u0627\u0646\u0627\u062A \u0648\u0635\u0641\u064A\u0629 \u0623\u062E\u0631\u0649:
|
||||||
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=\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
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=Изберете изображение(я)
|
|||||||
genericSubmit=Подайте
|
genericSubmit=Подайте
|
||||||
processTimeWarning=Предупреждение: Този процес може да отнеме до минута в зависимост от размера на файла
|
processTimeWarning=Предупреждение: Този процес може да отнеме до минута в зависимост от размера на файла
|
||||||
pageOrderPrompt=Персонализиран ред на страниците (Въведете разделен със запетаи списък с номера на страници или функции като 2n+1):
|
pageOrderPrompt=Персонализиран ред на страниците (Въведете разделен със запетаи списък с номера на страници или функции като 2n+1):
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=Давай
|
goToPage=Давай
|
||||||
true=Вярно
|
true=Вярно
|
||||||
false=Невярно
|
false=Невярно
|
||||||
@@ -20,7 +19,6 @@ save=Съхранете
|
|||||||
close=Затворете
|
close=Затворете
|
||||||
filesSelected=избрани файлове
|
filesSelected=избрани файлове
|
||||||
noFavourites=Няма добавени любими
|
noFavourites=Няма добавени любими
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=Отекчени сте да чакате?
|
bored=Отекчени сте да чакате?
|
||||||
alphabet=Азбука
|
alphabet=Азбука
|
||||||
downloadPdf=Изтеглете PDF
|
downloadPdf=Изтеглете PDF
|
||||||
@@ -44,7 +42,7 @@ red=Червено
|
|||||||
green=Зелено
|
green=Зелено
|
||||||
blue=Синьо
|
blue=Синьо
|
||||||
custom=Персонализиране...
|
custom=Персонализиране...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=Настройки на акаунта
|
|||||||
account.adminSettings=Настройки на администратора - Преглед и добавяне на потребители
|
account.adminSettings=Настройки на администратора - Преглед и добавяне на потребители
|
||||||
account.userControlSettings=Настройки за потребителски контрол
|
account.userControlSettings=Настройки за потребителски контрол
|
||||||
account.changeUsername=Промени потребител
|
account.changeUsername=Промени потребител
|
||||||
account.newUsername=Ново потребителско име
|
account.changeUsername=Промени потребител
|
||||||
account.password=Парола за потвърждение
|
account.password=Парола за потвърждение
|
||||||
account.oldPassword=Стара парола
|
account.oldPassword=Стара парола
|
||||||
account.newPassword=Нова парола
|
account.newPassword=Нова парола
|
||||||
@@ -364,11 +362,11 @@ PdfToSinglePage.tags=единична страница
|
|||||||
|
|
||||||
home.showJS.title=Показване на Javascript
|
home.showJS.title=Показване на Javascript
|
||||||
home.showJS.desc=Търси и показва всеки JS, инжектиран в PDF
|
home.showJS.desc=Търси и показва всеки JS, инжектиран в PDF
|
||||||
showJS.tags=JS
|
showJS.tags=Редактиране,Скриване,затъмняване,черен,маркер,скрит
|
||||||
|
|
||||||
home.autoRedact.title=Автоматично редактиране
|
home.autoRedact.title=Автоматично редактиране
|
||||||
home.autoRedact.desc=Автоматично редактира (зачернява) текст в PDF въз основа на въведен текст
|
home.autoRedact.desc=Автоматично редактира (зачернява) текст в PDF въз основа на въведен текст
|
||||||
autoRedact.tags=Редактиране,Скриване,затъмняване,черен,маркер,скрит
|
showJS.tags=Редактиране,Скриване,затъмняване,черен,маркер,скрит
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF to CSV
|
||||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=Автоматично редактиране
|
|||||||
autoRedact.header=Автоматично редактиране
|
autoRedact.header=Автоматично редактиране
|
||||||
autoRedact.colorLabel=Цвят
|
autoRedact.colorLabel=Цвят
|
||||||
autoRedact.textsToRedactLabel=Текст за редактиране (разделен с редове)
|
autoRedact.textsToRedactLabel=Текст за редактиране (разделен с редове)
|
||||||
autoRedact.textsToRedactPlaceholder=например: \nПоверително \nСтрого секретно
|
autoRedact.textsToRedactPlaceholder=например: \nПоверително \nСтрого секретно
|
||||||
autoRedact.useRegexLabel=Използване на Regex
|
autoRedact.useRegexLabel=Използване на Regex
|
||||||
autoRedact.wholeWordSearchLabel=Търсене на цялата дума
|
autoRedact.wholeWordSearchLabel=Търсене на цялата дума
|
||||||
autoRedact.customPaddingLabel=Персонализирана допълнителна подложка
|
autoRedact.customPaddingLabel=Персонализирана допълнителна подложка
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=Дезинфектирай PDF
|
sanitizePDF.title=Дезинфектирай PDF
|
||||||
sanitizePDF.header=Дезинфектира PDF файл
|
sanitizePDF.header=Дезинфектира PDF файл
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=Задава минималния праг на
|
|||||||
ScannerImageSplit.selectText.9=Размер на рамката:
|
ScannerImageSplit.selectText.9=Размер на рамката:
|
||||||
ScannerImageSplit.selectText.10=Задава размера на добавената и премахната граница, за да предотврати бели граници към изхода (по подразбиране: 1).
|
ScannerImageSplit.selectText.10=Задава размера на добавената и премахната граница, за да предотврати бели граници към изхода (по подразбиране: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / Почистване на сканиране
|
ocr.title=OCR / Почистване на сканиране
|
||||||
ocr.header=Почистващи сканирания / OCR (оптично разпознаване на знаци)
|
ocr.header=Почистващи сканирания / OCR (оптично разпознаване на знаци)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=Автоматично завъртане на PDF
|
|||||||
imageToPDF.selectText.3=Файлова логика с много (Активирано само ако работите с множество изображения)
|
imageToPDF.selectText.3=Файлова логика с много (Активирано само ако работите с множество изображения)
|
||||||
imageToPDF.selectText.4=Сливане към един PDF
|
imageToPDF.selectText.4=Сливане към един PDF
|
||||||
imageToPDF.selectText.5=Преобразуване към отделни PDF файлове
|
imageToPDF.selectText.5=Преобразуване към отделни PDF файлове
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF към Изображение
|
pdfToImage.title=PDF към Изображение
|
||||||
pdfToImage.header=PDF към Изображение
|
pdfToImage.header=PDF към Изображение
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=Ключови думи:
|
|||||||
changeMetadata.modDate=Дата на промяна (гггг/ММ/дд ЧЧ:мм:сс):
|
changeMetadata.modDate=Дата на промяна (гггг/ММ/дд ЧЧ:мм:сс):
|
||||||
changeMetadata.producer=Продуцент:
|
changeMetadata.producer=Продуцент:
|
||||||
changeMetadata.subject=Тема:
|
changeMetadata.subject=Тема:
|
||||||
|
changeMetadata.title=Заглавие:
|
||||||
changeMetadata.trapped=В капан:
|
changeMetadata.trapped=В капан:
|
||||||
changeMetadata.selectText.4=Други метаданни:
|
changeMetadata.selectText.4=Други метаданни:
|
||||||
changeMetadata.selectText.5=Добавяне на персонализиране метаданни
|
changeMetadata.selectText.5=Добавяне на персонализиране метаданни
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=Selecciona Imatge(s)
|
|||||||
genericSubmit=Envia
|
genericSubmit=Envia
|
||||||
processTimeWarning=Alerta: Aquest procés pot tardar 1 minut depenent de la mida de l'arxiu
|
processTimeWarning=Alerta: Aquest procés pot tardar 1 minut depenent de la mida de l'arxiu
|
||||||
pageOrderPrompt=Ordre de Pàgines (Llista separada per comes) :
|
pageOrderPrompt=Ordre de Pàgines (Llista separada per comes) :
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=Anar
|
goToPage=Anar
|
||||||
true=Verdader
|
true=Verdader
|
||||||
false=Fals
|
false=Fals
|
||||||
@@ -20,7 +19,6 @@ save=Desa
|
|||||||
close=Tanca
|
close=Tanca
|
||||||
filesSelected=fitxers seleccionats
|
filesSelected=fitxers seleccionats
|
||||||
noFavourites=No s'ha afegit cap favorit
|
noFavourites=No s'ha afegit cap favorit
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=Avorrit esperant?
|
bored=Avorrit esperant?
|
||||||
alphabet=Alfabet
|
alphabet=Alfabet
|
||||||
downloadPdf=Descarregueu PDF
|
downloadPdf=Descarregueu PDF
|
||||||
@@ -44,7 +42,7 @@ red=Vermell
|
|||||||
green=Verd
|
green=Verd
|
||||||
blue=Blau
|
blue=Blau
|
||||||
custom=Personalitzat...
|
custom=Personalitzat...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=Opcions del compte
|
|||||||
account.adminSettings=Opcions d'Admin - Veure i afegir usuaris
|
account.adminSettings=Opcions d'Admin - Veure i afegir usuaris
|
||||||
account.userControlSettings=Opcions de Control d'Usuari
|
account.userControlSettings=Opcions de Control d'Usuari
|
||||||
account.changeUsername=Canvia nom usuari
|
account.changeUsername=Canvia nom usuari
|
||||||
account.newUsername=Nom d'usuari nou
|
account.changeUsername=Canvia nom usuari
|
||||||
account.password=Confirma contrasenya
|
account.password=Confirma contrasenya
|
||||||
account.oldPassword=Password Antic
|
account.oldPassword=Password Antic
|
||||||
account.newPassword=Password Nou
|
account.newPassword=Password Nou
|
||||||
@@ -368,7 +366,7 @@ showJS.tags=JS
|
|||||||
|
|
||||||
home.autoRedact.title=Auto Redact
|
home.autoRedact.title=Auto Redact
|
||||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
showJS.tags=JS
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF to CSV
|
||||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=Auto Redact
|
|||||||
autoRedact.header=Auto Redact
|
autoRedact.header=Auto Redact
|
||||||
autoRedact.colorLabel=Colour
|
autoRedact.colorLabel=Colour
|
||||||
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
||||||
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
||||||
autoRedact.useRegexLabel=Use Regex
|
autoRedact.useRegexLabel=Use Regex
|
||||||
autoRedact.wholeWordSearchLabel=Whole Word Search
|
autoRedact.wholeWordSearchLabel=Whole Word Search
|
||||||
autoRedact.customPaddingLabel=Custom Extra Padding
|
autoRedact.customPaddingLabel=Custom Extra Padding
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=Sanitize PDF
|
sanitizePDF.title=Sanitize PDF
|
||||||
sanitizePDF.header=Sanitize a PDF file
|
sanitizePDF.header=Sanitize a PDF file
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=Estableix el llindar mínim de l'àrea de contorn
|
|||||||
ScannerImageSplit.selectText.9=Mida Vora:
|
ScannerImageSplit.selectText.9=Mida Vora:
|
||||||
ScannerImageSplit.selectText.10=Estableix la mida de la vora afegida i eliminada per evitar vores blanques a la sortida (per defecte: 1).
|
ScannerImageSplit.selectText.10=Estableix la mida de la vora afegida i eliminada per evitar vores blanques a la sortida (per defecte: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / Neteja escaneig
|
ocr.title=OCR / Neteja escaneig
|
||||||
ocr.header=Neteja Escanejos / OCR (Reconeixement òptic de caràcters)
|
ocr.header=Neteja Escanejos / OCR (Reconeixement òptic de caràcters)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=Auto rota PDF
|
|||||||
imageToPDF.selectText.3=Lògica de diversos fitxers (només està activada si es treballa amb diverses imatges)
|
imageToPDF.selectText.3=Lògica de diversos fitxers (només està activada si es treballa amb diverses imatges)
|
||||||
imageToPDF.selectText.4=Combina en un únic PDF
|
imageToPDF.selectText.4=Combina en un únic PDF
|
||||||
imageToPDF.selectText.5=Converteix per separar PDFs
|
imageToPDF.selectText.5=Converteix per separar PDFs
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF a Imatge
|
pdfToImage.title=PDF a Imatge
|
||||||
pdfToImage.header=PDF a Imatge
|
pdfToImage.header=PDF a Imatge
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=Keywords:
|
|||||||
changeMetadata.modDate=Data Modificació (yyyy/MM/dd HH:mm:ss):
|
changeMetadata.modDate=Data Modificació (yyyy/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=Productor:
|
changeMetadata.producer=Productor:
|
||||||
changeMetadata.subject=Assumpte:
|
changeMetadata.subject=Assumpte:
|
||||||
|
changeMetadata.title=Títol:
|
||||||
changeMetadata.trapped=Atrapat:
|
changeMetadata.trapped=Atrapat:
|
||||||
changeMetadata.selectText.4=Altres Metadades:
|
changeMetadata.selectText.4=Altres Metadades:
|
||||||
changeMetadata.selectText.5=Afegir entrada personalizada
|
changeMetadata.selectText.5=Afegir entrada personalizada
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ imgPrompt=Wählen Sie ein Bild
|
|||||||
genericSubmit=Einreichen
|
genericSubmit=Einreichen
|
||||||
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):
|
|
||||||
goToPage=Los
|
goToPage=Los
|
||||||
true=Wahr
|
true=Wahr
|
||||||
false=Falsch
|
false=Falsch
|
||||||
@@ -20,7 +19,6 @@ save=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
|
|
||||||
bored=Langeweile beim Warten?
|
bored=Langeweile beim Warten?
|
||||||
alphabet=Alphabet
|
alphabet=Alphabet
|
||||||
downloadPdf=PDF herunterladen
|
downloadPdf=PDF herunterladen
|
||||||
@@ -44,10 +42,10 @@ red=Rot
|
|||||||
green=Grün
|
green=Grün
|
||||||
blue=Blau
|
blue=Blau
|
||||||
custom=benutzerdefiniert...
|
custom=benutzerdefiniert...
|
||||||
WorkInProgess=In Arbeit, funktioniert möglicherweise nicht oder ist fehlerhaft. Bitte melden Sie alle Probleme!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Ja
|
yes=Yes
|
||||||
no=Nein
|
no=No
|
||||||
changedCredsMessage=Anmeldedaten geändert!
|
changedCredsMessage=Anmeldedaten geändert!
|
||||||
notAuthenticatedMessage=Benutzer nicht authentifiziert.
|
notAuthenticatedMessage=Benutzer nicht authentifiziert.
|
||||||
userNotFoundMessage=Benutzer nicht gefunden.
|
userNotFoundMessage=Benutzer nicht gefunden.
|
||||||
@@ -58,24 +56,24 @@ usernameExistsMessage=Neuer Benutzername existiert bereits.
|
|||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Pipeline-Menü (Alpha)
|
pipeline.header=Pipeline Menu (Alpha)
|
||||||
pipeline.uploadButton=Benutzerdefinierter Upload
|
pipeline.uploadButton=Upload Custom
|
||||||
pipeline.configureButton=Konfigurieren
|
pipeline.configureButton=Configure
|
||||||
pipeline.defaultOption=Benutzerdefiniert
|
pipeline.defaultOption=Custom
|
||||||
pipeline.submitButton=Speichern
|
pipeline.submitButton=Submit
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
######################
|
######################
|
||||||
pipelineOptions.header=Pipeline-Konfiguration
|
pipelineOptions.header=Pipeline Configuration
|
||||||
pipelineOptions.pipelineNameLabel=Pipeline-Name
|
pipelineOptions.pipelineNameLabel=Pipeline Name
|
||||||
pipelineOptions.saveSettings=Save Operation Settings
|
pipelineOptions.saveSettings=Save Operation Settings
|
||||||
pipelineOptions.pipelineNamePrompt=Geben Sie hier den Namen der Pipeline ein
|
pipelineOptions.pipelineNamePrompt=Enter pipeline name here
|
||||||
pipelineOptions.selectOperation=Vorgang auswählen
|
pipelineOptions.selectOperation=Select Operation
|
||||||
pipelineOptions.addOperationButton=Vorgang hinzufügen
|
pipelineOptions.addOperationButton=Add operation
|
||||||
pipelineOptions.pipelineHeader=Pipeline:
|
pipelineOptions.pipelineHeader=Pipeline:
|
||||||
pipelineOptions.saveButton=Downloaden
|
pipelineOptions.saveButton=Download
|
||||||
pipelineOptions.validateButton=Validieren
|
pipelineOptions.validateButton=Validate
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -122,11 +120,11 @@ account.accountSettings=Kontoeinstellungen
|
|||||||
account.adminSettings=Admin Einstellungen - Benutzer anzeigen und hinzufügen
|
account.adminSettings=Admin Einstellungen - Benutzer anzeigen und hinzufügen
|
||||||
account.userControlSettings=Benutzerkontrolle
|
account.userControlSettings=Benutzerkontrolle
|
||||||
account.changeUsername=Benutzername ändern
|
account.changeUsername=Benutzername ändern
|
||||||
account.newUsername=Neuer Benutzername
|
account.changeUsername=Benutzername ändern
|
||||||
account.password=Bestätigungspasswort
|
account.password=Bestätigungspasswort
|
||||||
account.oldPassword=Altes Passwort
|
account.oldPassword=Altes Passwort
|
||||||
account.newPassword=Neues Passwort
|
account.newPassword=Neues Passwort
|
||||||
account.changePassword=Passwort ändern
|
account.changePassword=Password ä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
|
||||||
@@ -148,7 +146,7 @@ adminUserSettings.role=Rolle
|
|||||||
adminUserSettings.actions=Aktion
|
adminUserSettings.actions=Aktion
|
||||||
adminUserSettings.apiUser=Eingeschränkter API-Benutzer
|
adminUserSettings.apiUser=Eingeschränkter API-Benutzer
|
||||||
adminUserSettings.webOnlyUser=Nur Web-Benutzer
|
adminUserSettings.webOnlyUser=Nur Web-Benutzer
|
||||||
adminUserSettings.demoUser=Demo-Benutzer (Keine benutzerdefinierten Einstellungen)
|
adminUserSettings.demoUser=Demo User (No custom settings)
|
||||||
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
|
||||||
|
|
||||||
@@ -285,8 +283,8 @@ 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=cleanup,streamline,non-content,organize
|
||||||
|
|
||||||
home.removeAnnotations.title=Anmerkungen entfernen
|
home.removeAnnotations.title=Remove Annotations
|
||||||
home.removeAnnotations.desc=Entfernt alle Kommentare/Anmerkungen aus einem PDF
|
home.removeAnnotations.desc=Removes all comments/annotations from a PDF
|
||||||
removeAnnotations.tags=comments,highlight,notes,markup,remove
|
removeAnnotations.tags=comments,highlight,notes,markup,remove
|
||||||
|
|
||||||
home.compare.title=Vergleichen
|
home.compare.title=Vergleichen
|
||||||
@@ -306,7 +304,7 @@ home.scalePages.desc=Größe/Skalierung der Seite und/oder des Inhalts ändern
|
|||||||
scalePages.tags=resize,modify,dimension,adapt
|
scalePages.tags=resize,modify,dimension,adapt
|
||||||
|
|
||||||
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 einen Pipeline Skript
|
||||||
pipeline.tags=automate,sequence,scripted,batch-process
|
pipeline.tags=automate,sequence,scripted,batch-process
|
||||||
|
|
||||||
home.add-page-numbers.title=Seitenzahlen hinzufügen
|
home.add-page-numbers.title=Seitenzahlen hinzufügen
|
||||||
@@ -368,7 +366,7 @@ 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
|
||||||
autoRedact.tags=zensieren,schwärzen
|
showJS.tags=zensieren,schwärzen
|
||||||
|
|
||||||
home.tableExtraxt.title=Tabelle extrahieren
|
home.tableExtraxt.title=Tabelle extrahieren
|
||||||
home.tableExtraxt.desc=Tabelle aus PDF in CSV extrahieren
|
home.tableExtraxt.desc=Tabelle aus PDF in CSV extrahieren
|
||||||
@@ -388,8 +386,8 @@ home.split-by-sections.title=PDF in Abschnitte teilen
|
|||||||
home.split-by-sections.desc=Teilen Sie jede Seite einer PDF-Datei in kleinere horizontale und vertikale Abschnitte auf
|
home.split-by-sections.desc=Teilen Sie jede Seite einer PDF-Datei in kleinere horizontale und vertikale Abschnitte auf
|
||||||
split-by-sections.tags=abschnitte,teilen,bearbeiten
|
split-by-sections.tags=abschnitte,teilen,bearbeiten
|
||||||
|
|
||||||
home.AddStampRequest.title=Stempel zu PDF hinzufügen
|
home.AddStampRequest.title=Add Stamp to PDF
|
||||||
home.AddStampRequest.desc=Fügen Sie an festgelegten Stellen Text oder Bildstempel hinzu
|
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
|
||||||
|
|
||||||
|
|
||||||
@@ -468,39 +466,38 @@ HTMLToPDF.header=HTML zu PDF
|
|||||||
HTMLToPDF.help=Akzeptiert HTML-Dateien und ZIPs mit html/css/images etc.
|
HTMLToPDF.help=Akzeptiert HTML-Dateien und ZIPs mit html/css/images etc.
|
||||||
HTMLToPDF.submit=Konvertieren
|
HTMLToPDF.submit=Konvertieren
|
||||||
HTMLToPDF.credit=Verwendet WeasyPrint
|
HTMLToPDF.credit=Verwendet WeasyPrint
|
||||||
HTMLToPDF.zoom=Zoomstufe zur Darstellung der Website.
|
HTMLToPDF.zoom=Zoom level for displaying the website.
|
||||||
HTMLToPDF.pageWidth=Breite der Seite in Zentimetern. (Leer auf Standard)
|
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
|
||||||
HTMLToPDF.pageHeight=Höhe der Seite in Zentimetern. (Leer auf Standard)
|
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
|
||||||
HTMLToPDF.marginTop=Oberer Rand der Seite in Millimetern. (Leer auf Standard)
|
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
|
||||||
HTMLToPDF.marginBottom=Unterer Rand der Seite in Millimetern. (Leer auf Standard)
|
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
|
||||||
HTMLToPDF.marginLeft=Linker Rand der Seite in Millimetern. (Leer auf Standard)
|
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
|
||||||
HTMLToPDF.marginRight=Linker Rand der Seite in Millimetern. (Leer auf Standard)
|
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
|
||||||
HTMLToPDF.printBackground=Den Hintergrund der Website rendern.
|
HTMLToPDF.printBackground=Render the background of websites.
|
||||||
HTMLToPDF.defaultHeader=Standardkopfzeile aktivieren (Name und Seitenzahl)
|
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
|
||||||
HTMLToPDF.cssMediaType=CSS-Medientyp der Seite ändern.
|
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
|
||||||
HTMLToPDF.none=Keine
|
HTMLToPDF.none=None
|
||||||
HTMLToPDF.print=Drucken
|
HTMLToPDF.print=Print
|
||||||
HTMLToPDF.screen=Bildschirm
|
HTMLToPDF.screen=Screen
|
||||||
|
|
||||||
|
|
||||||
#AddStampRequest
|
#AddStampRequest
|
||||||
AddStampRequest.header=PDF Stempel
|
AddStampRequest.header=Stamp PDF
|
||||||
AddStampRequest.title=PDF Stempel
|
AddStampRequest.title=Stamp PDF
|
||||||
AddStampRequest.stampType=Stempeltyp
|
AddStampRequest.stampType=Stamp Type
|
||||||
AddStampRequest.stampText=Stempeltext
|
AddStampRequest.stampText=Stamp Text
|
||||||
AddStampRequest.stampImage=Stampelbild
|
AddStampRequest.stampImage=Stamp Image
|
||||||
AddStampRequest.alphabet=Alphabet
|
AddStampRequest.alphabet=Alphabet
|
||||||
AddStampRequest.fontSize=Schriftart/Bildgröße
|
AddStampRequest.fontSize=Font/Image Size
|
||||||
AddStampRequest.rotation=Rotation
|
AddStampRequest.rotation=Rotation
|
||||||
AddStampRequest.opacity=Deckkraft
|
AddStampRequest.opacity=Opacity
|
||||||
AddStampRequest.position=Position
|
AddStampRequest.position=Position
|
||||||
AddStampRequest.overrideX=X-Koordinate überschreiben
|
AddStampRequest.overrideX=Override X Coordinate
|
||||||
AddStampRequest.overrideY=Y-Koordinate überschreiben
|
AddStampRequest.overrideY=Override Y Coordinate
|
||||||
AddStampRequest.customMargin=Benutzerdefinierter Rand
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Benutzerdefinierte Textfarbe
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Abschicken
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=PDF Bereinigen
|
sanitizePDF.title=PDF Bereinigen
|
||||||
sanitizePDF.header=PDF Bereinigen
|
sanitizePDF.header=PDF Bereinigen
|
||||||
@@ -551,7 +548,7 @@ crop.submit=Abschicken
|
|||||||
#autoSplitPDF
|
#autoSplitPDF
|
||||||
autoSplitPDF.title=PDF automatisch teilen
|
autoSplitPDF.title=PDF automatisch teilen
|
||||||
autoSplitPDF.header=PDF automatisch teilen
|
autoSplitPDF.header=PDF automatisch teilen
|
||||||
autoSplitPDF.description=Drucken Sie, fügen Sie ein, scannen Sie, laden Sie hoch und lassen Sie uns Ihre Dokumente automatisch trennen. Kein manuelles Sortieren erforderlich.
|
autoSplitPDF.description=Drucken Sie, fügen Sie ein, scannen Sie, laden Sie hoch, und lassen Sie uns Ihre Dokumente automatisch trennen. Kein manuelles Sortieren erforderlich.
|
||||||
autoSplitPDF.selectText.1=Drucken Sie einige Trennblätter aus (schwarz/weiß ist ausreichend).
|
autoSplitPDF.selectText.1=Drucken Sie einige Trennblätter aus (schwarz/weiß ist ausreichend).
|
||||||
autoSplitPDF.selectText.2=Scannen Sie alle Dokumente auf einmal, indem Sie das Trennblatt zwischen die Dokumente einlegen.
|
autoSplitPDF.selectText.2=Scannen Sie alle Dokumente auf einmal, indem Sie das Trennblatt zwischen die Dokumente einlegen.
|
||||||
autoSplitPDF.selectText.3=Laden Sie die einzelne große gescannte PDF-Datei hoch und überlassen Sie Stirling PDF den Rest.
|
autoSplitPDF.selectText.3=Laden Sie die einzelne große gescannte PDF-Datei hoch und überlassen Sie Stirling PDF den Rest.
|
||||||
@@ -571,7 +568,7 @@ pipeline.title=Pipeline
|
|||||||
pageLayout.title=Mehrseitiges Layout
|
pageLayout.title=Mehrseitiges Layout
|
||||||
pageLayout.header=Mehrseitiges Layout
|
pageLayout.header=Mehrseitiges Layout
|
||||||
pageLayout.pagesPerSheet=Seiten pro Blatt:
|
pageLayout.pagesPerSheet=Seiten pro Blatt:
|
||||||
pageLayout.addBorder=Ränder hinzufügen
|
pageLayout.addBorder=Add Borders
|
||||||
pageLayout.submit=Abschicken
|
pageLayout.submit=Abschicken
|
||||||
|
|
||||||
|
|
||||||
@@ -587,11 +584,11 @@ scalePages.submit=Abschicken
|
|||||||
certSign.title=Zertifikatsignierung
|
certSign.title=Zertifikatsignierung
|
||||||
certSign.header=Signieren Sie ein PDF mit Ihrem Zertifikat (in Arbeit)
|
certSign.header=Signieren Sie ein PDF mit Ihrem Zertifikat (in Arbeit)
|
||||||
certSign.selectPDF=Wählen Sie eine PDF-Datei zum Signieren aus:
|
certSign.selectPDF=Wählen Sie eine PDF-Datei zum Signieren aus:
|
||||||
certSign.jksNote=Hinweis: Wenn Ihr Zertifikatstyp unten nicht aufgeführt ist, konvertieren Sie ihn bitte mit dem Befehlszeilentool keytool in eine Java Keystore-Datei (.jks). Wählen Sie dann unten die Option „.jks-Datei“ aus.
|
certSign.jksNote=Note: If your certificate type is not listed below, please convert it to a Java Keystore (.jks) file using the keytool command line tool. Then, choose the .jks file option below.
|
||||||
certSign.selectKey=Wählen Sie Ihre private Schlüsseldatei aus (PKCS#8-Format, könnte .pem oder .der sein):
|
certSign.selectKey=Wählen Sie Ihre private Schlüsseldatei aus (PKCS#8-Format, könnte .pem oder .der sein):
|
||||||
certSign.selectCert=Wählen Sie Ihre Zertifikatsdatei aus (X.509-Format, könnte .pem oder .der sein):
|
certSign.selectCert=Wählen Sie Ihre Zertifikatsdatei aus (X.509-Format, könnte .pem oder .der sein):
|
||||||
certSign.selectP12=Wählen Sie Ihre PKCS#12-Keystore-Datei (.p12 oder .pfx) aus (optional, falls angegeben, sollte sie Ihren privaten Schlüssel und Ihr Zertifikat enthalten):
|
certSign.selectP12=Wählen Sie Ihre PKCS#12-Keystore-Datei (.p12 oder .pfx) aus (optional, falls angegeben, sollte sie Ihren privaten Schlüssel und Ihr Zertifikat enthalten):
|
||||||
certSign.selectJKS=Wählen Sie Ihre Java Keystore-Datei (.jks oder .keystore):
|
certSign.selectJKS=Select Your Java Keystore File (.jks or .keystore):
|
||||||
certSign.certType=Zertifikattyp
|
certSign.certType=Zertifikattyp
|
||||||
certSign.password=Geben Sie Ihr Keystore- oder Private-Key-Passwort ein (falls vorhanden):
|
certSign.password=Geben Sie Ihr Keystore- oder Private-Key-Passwort ein (falls vorhanden):
|
||||||
certSign.showSig=Signatur anzeigen
|
certSign.showSig=Signatur anzeigen
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=Legt den minimalen Konturbereichsschwellenwert f
|
|||||||
ScannerImageSplit.selectText.9=Randgröße:
|
ScannerImageSplit.selectText.9=Randgröße:
|
||||||
ScannerImageSplit.selectText.10=Legt die Größe des hinzugefügten und entfernten Randes fest, um weiße Ränder in der Ausgabe zu verhindern (Standard: 1).
|
ScannerImageSplit.selectText.10=Legt die Größe des hinzugefügten und entfernten Randes fest, um weiße Ränder in der Ausgabe zu verhindern (Standard: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / Scan-Bereinigung
|
ocr.title=OCR / Scan-Bereinigung
|
||||||
ocr.header=Scans bereinigen / OCR (Optical Character Recognition)
|
ocr.header=Scans bereinigen / OCR (Optical Character Recognition)
|
||||||
@@ -703,7 +700,7 @@ compress.selectText.1=Manueller Modus – Von 1 bis 4
|
|||||||
compress.selectText.2=Optimierungsstufe:
|
compress.selectText.2=Optimierungsstufe:
|
||||||
compress.selectText.3=4 (Schrecklich für Textbilder)
|
compress.selectText.3=4 (Schrecklich für Textbilder)
|
||||||
compress.selectText.4=Automatischer Modus – Passt die Qualität automatisch an, um das PDF auf die exakte Größe zu bringen
|
compress.selectText.4=Automatischer Modus – Passt die Qualität automatisch an, um das PDF auf die exakte Größe zu bringen
|
||||||
compress.selectText.5=Erwartete PDF-Größe (z.B. 25 MB, 10,8 MB, 25 KB)
|
compress.selectText.5=Erwartete PDF-Größe (z. B. 25 MB, 10,8 MB, 25 KB)
|
||||||
compress.submit=Komprimieren
|
compress.submit=Komprimieren
|
||||||
|
|
||||||
|
|
||||||
@@ -734,8 +731,8 @@ multiTool.title=PDF-Multitool
|
|||||||
multiTool.header=PDF-Multitool
|
multiTool.header=PDF-Multitool
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=PDF anzeigen
|
viewPdf.title=View PDF
|
||||||
viewPdf.header=PDF anzeigen
|
viewPdf.header=View PDF
|
||||||
|
|
||||||
#pageRemover
|
#pageRemover
|
||||||
pageRemover.title=Seiten entfernen
|
pageRemover.title=Seiten entfernen
|
||||||
@@ -770,16 +767,16 @@ split.submit=Aufteilen
|
|||||||
imageToPDF.title=Bild zu PDF
|
imageToPDF.title=Bild zu PDF
|
||||||
imageToPDF.header=Bild zu PDF
|
imageToPDF.header=Bild zu PDF
|
||||||
imageToPDF.submit=Umwandeln
|
imageToPDF.submit=Umwandeln
|
||||||
imageToPDF.selectLabel=Bild anpassen
|
imageToPDF.selectLabel=Image Fit Options
|
||||||
imageToPDF.fillPage=Seite füllen
|
imageToPDF.fillPage=Fill Page
|
||||||
imageToPDF.fitDocumentToImage=Seite an Bild anpassen
|
imageToPDF.fitDocumentToImage=Fit Page to Image
|
||||||
imageToPDF.maintainAspectRatio=Seitenverhältnisse beibehalten
|
imageToPDF.maintainAspectRatio=Maintain Aspect Ratios
|
||||||
imageToPDF.selectText.2=PDF automatisch drehen
|
imageToPDF.selectText.2=PDF automatisch drehen
|
||||||
imageToPDF.selectText.3=Mehrere Dateien verarbeiten (nur aktiv, wenn Sie mit mehreren Bildern arbeiten)
|
imageToPDF.selectText.3=Mehrere Dateien verarbeiten (nur aktiv, wenn Sie mit mehreren Bildern arbeiten)
|
||||||
imageToPDF.selectText.4=In ein einziges PDF zusammenführen
|
imageToPDF.selectText.4=In ein einziges PDF zusammenführen
|
||||||
imageToPDF.selectText.5=In separate PDFs konvertieren
|
imageToPDF.selectText.5=In separate PDFs konvertieren
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF zu Bild
|
pdfToImage.title=PDF zu Bild
|
||||||
pdfToImage.header=PDF zu Bild
|
pdfToImage.header=PDF zu Bild
|
||||||
@@ -863,12 +860,13 @@ changeMetadata.selectText.1=Bitte bearbeiten Sie die Variablen, die Sie ändern
|
|||||||
changeMetadata.selectText.2=Alle Metadaten löschen
|
changeMetadata.selectText.2=Alle Metadaten löschen
|
||||||
changeMetadata.selectText.3=Benutzerdefinierte Metadaten anzeigen:
|
changeMetadata.selectText.3=Benutzerdefinierte Metadaten anzeigen:
|
||||||
changeMetadata.author=Autor:
|
changeMetadata.author=Autor:
|
||||||
changeMetadata.creationDate=Erstellungsdatum (JJJJ/MM/TT HH:mm:ss):
|
changeMetadata.creationDate=Erstellungsdatum (jjjj/MM/tt HH:mm:ss):
|
||||||
changeMetadata.creator=Ersteller:
|
changeMetadata.creator=Ersteller:
|
||||||
changeMetadata.keywords=Schlüsselwörter:
|
changeMetadata.keywords=Schlüsselwörter:
|
||||||
changeMetadata.modDate=Änderungsdatum (JJJJ/MM/TT HH:mm:ss):
|
changeMetadata.modDate=Änderungsdatum (JJJJ/MM/TT HH:mm:ss):
|
||||||
changeMetadata.producer=Produzent:
|
changeMetadata.producer=Produzent:
|
||||||
changeMetadata.subject=Betreff:
|
changeMetadata.subject=Betreff:
|
||||||
|
changeMetadata.title=Titel:
|
||||||
changeMetadata.trapped=Gefangen:
|
changeMetadata.trapped=Gefangen:
|
||||||
changeMetadata.selectText.4=Andere Metadaten:
|
changeMetadata.selectText.4=Andere Metadaten:
|
||||||
changeMetadata.selectText.5=Benutzerdefinierten Metadateneintrag hinzufügen
|
changeMetadata.selectText.5=Benutzerdefinierten Metadateneintrag hinzufügen
|
||||||
@@ -932,7 +930,7 @@ split-by-size-or-count.type.size=Nach Größe
|
|||||||
split-by-size-or-count.type.pageCount=Nach Anzahl Seiten
|
split-by-size-or-count.type.pageCount=Nach Anzahl Seiten
|
||||||
split-by-size-or-count.type.docCount=Nach Anzahl Dokumenten
|
split-by-size-or-count.type.docCount=Nach Anzahl Dokumenten
|
||||||
split-by-size-or-count.value.label=Wert eingeben
|
split-by-size-or-count.value.label=Wert eingeben
|
||||||
split-by-size-or-count.value.placeholder=Größe eingeben (z.B.: 2MB oder 3KB) oder Anzahl (z.B.: 5)
|
split-by-size-or-count.value.placeholder=Größe eingeben (z. B.: 2MB oder 3KB) oder Anzahl (z. B.: 5)
|
||||||
split-by-size-or-count.submit=Erstellen
|
split-by-size-or-count.submit=Erstellen
|
||||||
|
|
||||||
|
|
||||||
@@ -945,7 +943,7 @@ overlay-pdfs.mode.sequential=Sequentielles Overlay
|
|||||||
overlay-pdfs.mode.interleaved=Verschachteltes Overlay
|
overlay-pdfs.mode.interleaved=Verschachteltes Overlay
|
||||||
overlay-pdfs.mode.fixedRepeat=Feste-Wiederholung Overlay
|
overlay-pdfs.mode.fixedRepeat=Feste-Wiederholung Overlay
|
||||||
overlay-pdfs.counts.label=Overlay Anzahl (für Feste-Wiederholung)
|
overlay-pdfs.counts.label=Overlay Anzahl (für Feste-Wiederholung)
|
||||||
overlay-pdfs.counts.placeholder=Komma-separierte Anzahl eingeben (z.B.: 2,3,1)
|
overlay-pdfs.counts.placeholder=Komma-separierte Anzahl eingeben (z. B.: 2,3,1)
|
||||||
overlay-pdfs.position.label=Overlay Position auswählen
|
overlay-pdfs.position.label=Overlay Position auswählen
|
||||||
overlay-pdfs.position.foreground=Vordergrund
|
overlay-pdfs.position.foreground=Vordergrund
|
||||||
overlay-pdfs.position.background=Hintergrund
|
overlay-pdfs.position.background=Hintergrund
|
||||||
@@ -963,11 +961,10 @@ split-by-sections.submit=PDF teilen
|
|||||||
|
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Lizenzen
|
licenses.nav=Licenses
|
||||||
licenses.title=Lizenzen von Drittanbietern
|
licenses.title=3rd Party Licenses
|
||||||
licenses.header=Lizenzen von Drittanbietern
|
licenses.header=3rd Party Licenses
|
||||||
licenses.module=Modul
|
licenses.module=Module
|
||||||
licenses.version=Version
|
licenses.version=Version
|
||||||
licenses.license=Lizenz
|
licenses.license=License
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u0395\u03B9\u03BA\u03CC\u0
|
|||||||
genericSubmit=\u03A5\u03C0\u03BF\u03B2\u03BF\u03BB\u03AE
|
genericSubmit=\u03A5\u03C0\u03BF\u03B2\u03BF\u03BB\u03AE
|
||||||
processTimeWarning=\u03A0\u03C1\u03BF\u03C3\u03BF\u03C7\u03AE: \u0391\u03C5\u03C4\u03AE \u03B7 \u03B4\u03B9\u03B1\u03B4\u03B9\u03BA\u03B1\u03C3\u03AF\u03B1 \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03B4\u03B9\u03B1\u03C1\u03BA\u03AD\u03C3\u03B5\u03B9 \u03AD\u03C9\u03C2 \u03BA\u03B1\u03B9 \u03AD\u03BD\u03B1 \u03BB\u03B5\u03C0\u03C4\u03CC \u03B1\u03BD\u03AC\u03BB\u03BF\u03B3\u03B1 \u03BC\u03B5 \u03C4\u03BF \u03BC\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03C4\u03BF\u03C5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5
|
processTimeWarning=\u03A0\u03C1\u03BF\u03C3\u03BF\u03C7\u03AE: \u0391\u03C5\u03C4\u03AE \u03B7 \u03B4\u03B9\u03B1\u03B4\u03B9\u03BA\u03B1\u03C3\u03AF\u03B1 \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03B4\u03B9\u03B1\u03C1\u03BA\u03AD\u03C3\u03B5\u03B9 \u03AD\u03C9\u03C2 \u03BA\u03B1\u03B9 \u03AD\u03BD\u03B1 \u03BB\u03B5\u03C0\u03C4\u03CC \u03B1\u03BD\u03AC\u03BB\u03BF\u03B3\u03B1 \u03BC\u03B5 \u03C4\u03BF \u03BC\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03C4\u03BF\u03C5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5
|
||||||
pageOrderPrompt=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03C3\u03BC\u03AD\u03BD\u03B7 \u03A3\u03B5\u03B9\u03C1\u03AC \u03A3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2 (\u03A0\u03C1\u03BF\u03C3\u03B8\u03AD\u03C3\u03C4\u03B5 \u03BC\u03AF\u03B1 \u03BB\u03AF\u03C3\u03C4\u03B5 \u03B1\u03C0\u03BF \u03B1\u03C1\u03B9\u03B8\u03BC\u03BF\u03CD\u03C2 \u03C3\u03B5\u03BB\u03B9\u03B4\u03CE\u03BD, \u03C7\u03C9\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03B5\u03C2 \u03BC\u03B5 \u03BA\u03CC\u03BC\u03BC\u03B1 \u03AE \u03C3\u03C5\u03BD\u03B1\u03C1\u03C4\u03AE\u03C3\u03B5\u03B9\u03C2 \u03CC\u03C0\u03C9\u03C2 2n+1) :
|
pageOrderPrompt=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03C3\u03BC\u03AD\u03BD\u03B7 \u03A3\u03B5\u03B9\u03C1\u03AC \u03A3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2 (\u03A0\u03C1\u03BF\u03C3\u03B8\u03AD\u03C3\u03C4\u03B5 \u03BC\u03AF\u03B1 \u03BB\u03AF\u03C3\u03C4\u03B5 \u03B1\u03C0\u03BF \u03B1\u03C1\u03B9\u03B8\u03BC\u03BF\u03CD\u03C2 \u03C3\u03B5\u03BB\u03B9\u03B4\u03CE\u03BD, \u03C7\u03C9\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03B5\u03C2 \u03BC\u03B5 \u03BA\u03CC\u03BC\u03BC\u03B1 \u03AE \u03C3\u03C5\u03BD\u03B1\u03C1\u03C4\u03AE\u03C3\u03B5\u03B9\u03C2 \u03CC\u03C0\u03C9\u03C2 2n+1) :
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=Go
|
goToPage=Go
|
||||||
true=\u0391\u03BB\u03B7\u03B8\u03AD\u03C2
|
true=\u0391\u03BB\u03B7\u03B8\u03AD\u03C2
|
||||||
false=\u039B\u03B1\u03BD\u03B8\u03B1\u03C3\u03BC\u03AD\u03BD\u03BF
|
false=\u039B\u03B1\u03BD\u03B8\u03B1\u03C3\u03BC\u03AD\u03BD\u03BF
|
||||||
@@ -20,7 +19,6 @@ save=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7
|
|||||||
close=\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF
|
close=\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF
|
||||||
filesSelected=\u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 \u03C0\u03BF\u03C5 \u03B5\u03C0\u03B9\u03BB\u03AD\u03C7\u03B8\u03B7\u03BA\u03B1\u03BD
|
filesSelected=\u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 \u03C0\u03BF\u03C5 \u03B5\u03C0\u03B9\u03BB\u03AD\u03C7\u03B8\u03B7\u03BA\u03B1\u03BD
|
||||||
noFavourites=\u039A\u03B1\u03BD\u03AD\u03BD\u03B1 \u03B1\u03B3\u03B1\u03C0\u03AE\u03BC\u03B5\u03BD\u03BF \u03B4\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03C0\u03C1\u03BF\u03C3\u03C4\u03B5\u03B8\u03B5\u03AF
|
noFavourites=\u039A\u03B1\u03BD\u03AD\u03BD\u03B1 \u03B1\u03B3\u03B1\u03C0\u03AE\u03BC\u03B5\u03BD\u03BF \u03B4\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03C0\u03C1\u03BF\u03C3\u03C4\u03B5\u03B8\u03B5\u03AF
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=\u0392\u03B1\u03C1\u03B9\u03AD\u03C3\u03C4\u03B5 \u03BD\u03B1 \u03C0\u03B5\u03C1\u03B9\u03BC\u03AD\u03BD\u03B5\u03C4\u03B5;
|
bored=\u0392\u03B1\u03C1\u03B9\u03AD\u03C3\u03C4\u03B5 \u03BD\u03B1 \u03C0\u03B5\u03C1\u03B9\u03BC\u03AD\u03BD\u03B5\u03C4\u03B5;
|
||||||
alphabet=\u0391\u03BB\u03C6\u03AC\u03B2\u03B7\u03C4\u03BF
|
alphabet=\u0391\u03BB\u03C6\u03AC\u03B2\u03B7\u03C4\u03BF
|
||||||
downloadPdf=\u039A\u03B1\u03C4\u03AD\u03B2\u03B1\u03C3\u03BC\u03B1 \u03C4\u03BF\u03C5 PDF
|
downloadPdf=\u039A\u03B1\u03C4\u03AD\u03B2\u03B1\u03C3\u03BC\u03B1 \u03C4\u03BF\u03C5 PDF
|
||||||
@@ -44,7 +42,7 @@ red=\u039A\u03CC\u03BA\u03BA\u03B9\u03BD\u03BF
|
|||||||
green=\u03A0\u03C1\u03AC\u03C3\u03B9\u03BD\u03BF
|
green=\u03A0\u03C1\u03AC\u03C3\u03B9\u03BD\u03BF
|
||||||
blue=\u039C\u03C0\u03BB\u03AD
|
blue=\u039C\u03C0\u03BB\u03AD
|
||||||
custom=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE...
|
custom=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \
|
|||||||
account.adminSettings=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u0394\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE - \u03A0\u03C1\u03BF\u03B2\u03BF\u03BB\u03AE \u03BA\u03B1\u03B9 \u03C0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C7\u03C1\u03B7\u03C3\u03C4\u03CE\u03BD
|
account.adminSettings=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u0394\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE - \u03A0\u03C1\u03BF\u03B2\u03BF\u03BB\u03AE \u03BA\u03B1\u03B9 \u03C0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C7\u03C1\u03B7\u03C3\u03C4\u03CE\u03BD
|
||||||
account.userControlSettings=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u03A7\u03B5\u03B9\u03C1\u03B9\u03C3\u03BC\u03BF\u03CD \u03A7\u03C1\u03B7\u03C3\u03C4\u03CE\u03BD
|
account.userControlSettings=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u03A7\u03B5\u03B9\u03C1\u03B9\u03C3\u03BC\u03BF\u03CD \u03A7\u03C1\u03B7\u03C3\u03C4\u03CE\u03BD
|
||||||
account.changeUsername=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u039F\u03BD\u03CC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03A7\u03C1\u03AE\u03C3\u03C4\u03B7
|
account.changeUsername=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u039F\u03BD\u03CC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03A7\u03C1\u03AE\u03C3\u03C4\u03B7
|
||||||
account.newUsername=\u039d\u03ad\u03bf \u038c\u03bd\u03bf\u03bc\u03b1 \u03a7\u03c1\u03ae\u03c3\u03c4\u03b7
|
account.changeUsername=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u039F\u03BD\u03CC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03A7\u03C1\u03AE\u03C3\u03C4\u03B7
|
||||||
account.password=\u0395\u03C0\u03B9\u03B2\u03B5\u03B2\u03B1\u03AF\u03C9\u03C3\u03B7 \u039A\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD \u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2
|
account.password=\u0395\u03C0\u03B9\u03B2\u03B5\u03B2\u03B1\u03AF\u03C9\u03C3\u03B7 \u039A\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD \u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2
|
||||||
account.oldPassword=\u03A0\u03B1\u03BB\u03B9\u03CC\u03C2 \u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2
|
account.oldPassword=\u03A0\u03B1\u03BB\u03B9\u03CC\u03C2 \u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2
|
||||||
account.newPassword=\u039D\u03AD\u03BF\u03C2 \u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2
|
account.newPassword=\u039D\u03AD\u03BF\u03C2 \u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2
|
||||||
@@ -364,11 +362,11 @@ PdfToSinglePage.tags=single page
|
|||||||
|
|
||||||
home.showJS.title=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 Javascript
|
home.showJS.title=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 Javascript
|
||||||
home.showJS.desc=\u0391\u03BD\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03BA\u03B1\u03B9 \u03B5\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03BA\u03CE\u03B4\u03B9\u03BA\u03B1 Javascript \u03C0\u03BF\u03C5 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B5\u03BD\u03C3\u03C9\u03BC\u03B1\u03C4\u03C9\u03BC\u03AD\u03BD\u03BF \u03BC\u03AD\u03C3\u03B1 \u03C3\u03B5 \u03AD\u03BD\u03B1 PDF
|
home.showJS.desc=\u0391\u03BD\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03BA\u03B1\u03B9 \u03B5\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03BA\u03CE\u03B4\u03B9\u03BA\u03B1 Javascript \u03C0\u03BF\u03C5 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B5\u03BD\u03C3\u03C9\u03BC\u03B1\u03C4\u03C9\u03BC\u03AD\u03BD\u03BF \u03BC\u03AD\u03C3\u03B1 \u03C3\u03B5 \u03AD\u03BD\u03B1 PDF
|
||||||
showJS.tags=JS
|
showJS.tags=Redact,Hide,black out,black,marker,hidden
|
||||||
|
|
||||||
home.autoRedact.title=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03BF \u039C\u03B1\u03CD\u03C1\u03B9\u03C3\u03BC\u03B1 \u039A\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5
|
home.autoRedact.title=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03BF \u039C\u03B1\u03CD\u03C1\u03B9\u03C3\u03BC\u03B1 \u039A\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5
|
||||||
home.autoRedact.desc=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u03B5\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 (\u039C\u03B1\u03CD\u03C1\u03B9\u03C3\u03BC\u03B1) \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF\u03C5 \u03C3\u03B5 PDF \u03BC\u03B5 \u03B2\u03AC\u03C3\u03B7 \u03C4\u03BF \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03B5\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE\u03C2
|
home.autoRedact.desc=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u03B5\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 (\u039C\u03B1\u03CD\u03C1\u03B9\u03C3\u03BC\u03B1) \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF\u03C5 \u03C3\u03B5 PDF \u03BC\u03B5 \u03B2\u03AC\u03C3\u03B7 \u03C4\u03BF \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03B5\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE\u03C2
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
showJS.tags=Redact,Hide,black out,black,marker,hidden
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF to CSV
|
||||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03BF \u039C\u03B1\u
|
|||||||
autoRedact.header=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03BF \u039C\u03B1\u03CD\u03C1\u03B9\u03C3\u03BC\u03B1 \u039A\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5
|
autoRedact.header=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03BF \u039C\u03B1\u03CD\u03C1\u03B9\u03C3\u03BC\u03B1 \u039A\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5
|
||||||
autoRedact.colorLabel=\u03A7\u03C1\u03CE\u03BC\u03B1
|
autoRedact.colorLabel=\u03A7\u03C1\u03CE\u03BC\u03B1
|
||||||
autoRedact.textsToRedactLabel=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03B3\u03B9\u03B1 \u03BC\u03B1\u03CD\u03C1\u03B9\u03C3\u03BC\u03B1 (\u03B4\u03B9\u03B1\u03C7\u03C9\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03BF \u03C3\u03B5 \u03B3\u03C1\u03B1\u03BC\u03BC\u03AD\u03C2)
|
autoRedact.textsToRedactLabel=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03B3\u03B9\u03B1 \u03BC\u03B1\u03CD\u03C1\u03B9\u03C3\u03BC\u03B1 (\u03B4\u03B9\u03B1\u03C7\u03C9\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03BF \u03C3\u03B5 \u03B3\u03C1\u03B1\u03BC\u03BC\u03AD\u03C2)
|
||||||
autoRedact.textsToRedactPlaceholder=\u03C0.\u03C7. \n\u0395\u03BC\u03C0\u03B9\u03C3\u03C4\u03B5\u03C5\u03C4\u03B9\u03BA\u03CC \n\u0391\u03BA\u03C1\u03CE\u03C2 \u03B1\u03C0\u03CC\u03C1\u03C1\u03B7\u03C4\u03BF
|
autoRedact.textsToRedactPlaceholder=\u03C0.\u03C7. \n\u0395\u03BC\u03C0\u03B9\u03C3\u03C4\u03B5\u03C5\u03C4\u03B9\u03BA\u03CC \n\u0391\u03BA\u03C1\u03CE\u03C2 \u03B1\u03C0\u03CC\u03C1\u03C1\u03B7\u03C4\u03BF
|
||||||
autoRedact.useRegexLabel=\u03A7\u03C1\u03AE\u03C3\u03B7 Regex
|
autoRedact.useRegexLabel=\u03A7\u03C1\u03AE\u03C3\u03B7 Regex
|
||||||
autoRedact.wholeWordSearchLabel=\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03BF\u03BB\u03CC\u03BA\u03BB\u03B7\u03C1\u03B7\u03C2 \u03C4\u03B7\u03C2 \u03BB\u03AD\u03BE\u03B7\u03C2
|
autoRedact.wholeWordSearchLabel=\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03BF\u03BB\u03CC\u03BA\u03BB\u03B7\u03C1\u03B7\u03C2 \u03C4\u03B7\u03C2 \u03BB\u03AD\u03BE\u03B7\u03C2
|
||||||
autoRedact.customPaddingLabel=Custom Extra Padding
|
autoRedact.customPaddingLabel=Custom Extra Padding
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=\u0391\u03C0\u03BF\u03BB\u03CD\u03BC\u03B1\u03BD\u03C3\u03B7 PDF
|
sanitizePDF.title=\u0391\u03C0\u03BF\u03BB\u03CD\u03BC\u03B1\u03BD\u03C3\u03B7 PDF
|
||||||
sanitizePDF.header=\u0391\u03C0\u03BF\u03BB\u03CD\u03BC\u03B1\u03BD\u03C3\u03B7 \u03B5\u03BD\u03CC\u03C2 PDF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5
|
sanitizePDF.header=\u0391\u03C0\u03BF\u03BB\u03CD\u03BC\u03B1\u03BD\u03C3\u03B7 \u03B5\u03BD\u03CC\u03C2 PDF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=\u03A1\u03C5\u03B8\u03BC\u03AF\u03B6\u03B5\u03B9
|
|||||||
ScannerImageSplit.selectText.9=\u039C\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2:
|
ScannerImageSplit.selectText.9=\u039C\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2:
|
||||||
ScannerImageSplit.selectText.10=\u039F\u03C1\u03AF\u03B6\u03B5\u03B9 \u03C4\u03BF \u03BC\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03C4\u03BF\u03C5 \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03C0\u03BF\u03C5 \u03C0\u03C1\u03BF\u03C3\u03C4\u03AF\u03B8\u03B5\u03C4\u03B1\u03B9 \u03BA\u03B1\u03B9 \u03B1\u03C6\u03B1\u03B9\u03C1\u03B5\u03AF\u03C4\u03B1\u03B9 \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B1\u03C0\u03BF\u03C4\u03C1\u03AD\u03C0\u03BF\u03BD\u03C4\u03B1\u03B9 \u03BB\u03B5\u03C5\u03BA\u03AC \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03B1 \u03C3\u03C4\u03B7\u03BD \u03AD\u03BE\u03BF\u03B4\u03BF (\u03C0\u03C1\u03BF\u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE: 1).
|
ScannerImageSplit.selectText.10=\u039F\u03C1\u03AF\u03B6\u03B5\u03B9 \u03C4\u03BF \u03BC\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03C4\u03BF\u03C5 \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03C0\u03BF\u03C5 \u03C0\u03C1\u03BF\u03C3\u03C4\u03AF\u03B8\u03B5\u03C4\u03B1\u03B9 \u03BA\u03B1\u03B9 \u03B1\u03C6\u03B1\u03B9\u03C1\u03B5\u03AF\u03C4\u03B1\u03B9 \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B1\u03C0\u03BF\u03C4\u03C1\u03AD\u03C0\u03BF\u03BD\u03C4\u03B1\u03B9 \u03BB\u03B5\u03C5\u03BA\u03AC \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03B1 \u03C3\u03C4\u03B7\u03BD \u03AD\u03BE\u03BF\u03B4\u03BF (\u03C0\u03C1\u03BF\u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=\u039F\u03C0\u03C4\u03B9\u03BA\u03AE \u03B1\u03BD\u03B1\u03B3\u03BD\u03CE\u03C1\u03B9\u03C3\u03B7 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03C9\u03BD (OCR) / \u03A3\u03B1\u03C1\u03CE\u03C3\u03B5\u03B9\u03C2 Cleanup
|
ocr.title=\u039F\u03C0\u03C4\u03B9\u03BA\u03AE \u03B1\u03BD\u03B1\u03B3\u03BD\u03CE\u03C1\u03B9\u03C3\u03B7 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03C9\u03BD (OCR) / \u03A3\u03B1\u03C1\u03CE\u03C3\u03B5\u03B9\u03C2 Cleanup
|
||||||
ocr.header=\u03A3\u03B1\u03C1\u03CE\u03C3\u03B5\u03B9\u03C2 Cleanup / OCR (Optical Character Recognition - \u039F\u03C0\u03C4\u03B9\u03BA\u03AE \u03B1\u03BD\u03B1\u03B3\u03BD\u03CE\u03C1\u03B9\u03C3\u03B7 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03C9\u03BD)
|
ocr.header=\u03A3\u03B1\u03C1\u03CE\u03C3\u03B5\u03B9\u03C2 Cleanup / OCR (Optical Character Recognition - \u039F\u03C0\u03C4\u03B9\u03BA\u03AE \u03B1\u03BD\u03B1\u03B3\u03BD\u03CE\u03C1\u03B9\u03C3\u03B7 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03C9\u03BD)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u03C0\
|
|||||||
imageToPDF.selectText.3=\u039B\u03BF\u03B3\u03B9\u03BA\u03AE \u03C0\u03BF\u03BB\u03BB\u03CE\u03BD \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD (\u0395\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 \u03BC\u03CC\u03BD\u03BF \u03B5\u03AC\u03BD \u03B5\u03C1\u03B3\u03AC\u03B6\u03B5\u03C3\u03C4\u03B5 \u03BC\u03B5 \u03C0\u03BF\u03BB\u03BB\u03AD\u03C2 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B5\u03C2)
|
imageToPDF.selectText.3=\u039B\u03BF\u03B3\u03B9\u03BA\u03AE \u03C0\u03BF\u03BB\u03BB\u03CE\u03BD \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD (\u0395\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 \u03BC\u03CC\u03BD\u03BF \u03B5\u03AC\u03BD \u03B5\u03C1\u03B3\u03AC\u03B6\u03B5\u03C3\u03C4\u03B5 \u03BC\u03B5 \u03C0\u03BF\u03BB\u03BB\u03AD\u03C2 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B5\u03C2)
|
||||||
imageToPDF.selectText.4=\u03A3\u03C5\u03B3\u03C7\u03CE\u03BD\u03B5\u03C5\u03C3\u03B7 \u03C3\u03B5 \u03AD\u03BD\u03B1 PDF
|
imageToPDF.selectText.4=\u03A3\u03C5\u03B3\u03C7\u03CE\u03BD\u03B5\u03C5\u03C3\u03B7 \u03C3\u03B5 \u03AD\u03BD\u03B1 PDF
|
||||||
imageToPDF.selectText.5=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03C3\u03B5 \u03BE\u03B5\u03C7\u03C9\u03C1\u03B9\u03C3\u03C4\u03AC \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 PDF
|
imageToPDF.selectText.5=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03C3\u03B5 \u03BE\u03B5\u03C7\u03C9\u03C1\u03B9\u03C3\u03C4\u03AC \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 PDF
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF \u03C3\u03B5 \u0395\u03B9\u03BA\u03CC\u03BD\u03B1
|
pdfToImage.title=PDF \u03C3\u03B5 \u0395\u03B9\u03BA\u03CC\u03BD\u03B1
|
||||||
pdfToImage.header=PDF \u03C3\u03B5 \u0395\u03B9\u03BA\u03CC\u03BD\u03B1
|
pdfToImage.header=PDF \u03C3\u03B5 \u0395\u03B9\u03BA\u03CC\u03BD\u03B1
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=\u039B\u03AD\u03BE\u03B5\u03B9\u03C2-\u03BA\u03BB\u03B5\
|
|||||||
changeMetadata.modDate=\u0397\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 \u03A4\u03C1\u03BF\u03C0\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7\u03C2 (yyyy/MM/dd HH:mm:ss):
|
changeMetadata.modDate=\u0397\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 \u03A4\u03C1\u03BF\u03C0\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7\u03C2 (yyyy/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=\u03A0\u03B1\u03C1\u03B1\u03B3\u03C9\u03B3\u03CC\u03C2:
|
changeMetadata.producer=\u03A0\u03B1\u03C1\u03B1\u03B3\u03C9\u03B3\u03CC\u03C2:
|
||||||
changeMetadata.subject=\u0398\u03AD\u03BC\u03B1:
|
changeMetadata.subject=\u0398\u03AD\u03BC\u03B1:
|
||||||
|
changeMetadata.title=\u03A4\u03AF\u03C4\u03BB\u03BF\u03C2:
|
||||||
changeMetadata.trapped=Trapped:
|
changeMetadata.trapped=Trapped:
|
||||||
changeMetadata.selectText.4=\u0386\u03BB\u03BB\u03B1 \u03BC\u03B5\u03C4\u03B1\u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03B1:
|
changeMetadata.selectText.4=\u0386\u03BB\u03BB\u03B1 \u03BC\u03B5\u03C4\u03B1\u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03B1:
|
||||||
changeMetadata.selectText.5=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03B5\u03B3\u03B3\u03C1\u03B1\u03C6\u03AE\u03C2 \u03C0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03C3\u03BC\u03AD\u03BD\u03C9\u03BD \u03BC\u03B5\u03C4\u03B1\u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD
|
changeMetadata.selectText.5=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03B5\u03B3\u03B3\u03C1\u03B1\u03C6\u03AE\u03C2 \u03C0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03C3\u03BC\u03AD\u03BD\u03C9\u03BD \u03BC\u03B5\u03C4\u03B1\u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr = left to right, rtl = right to left)
|
# the direction that the language is written (ltr = left to right, rtl = right to left)
|
||||||
@@ -20,14 +20,13 @@ save=Save
|
|||||||
close=Close
|
close=Close
|
||||||
filesSelected=files selected
|
filesSelected=files selected
|
||||||
noFavourites=No favourites added
|
noFavourites=No favourites added
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=Bored Waiting?
|
bored=Bored Waiting?
|
||||||
alphabet=Alphabet
|
alphabet=Alphabet
|
||||||
downloadPdf=Download PDF
|
downloadPdf=Download PDF
|
||||||
text=Text
|
text=Text
|
||||||
font=Font
|
font=Font
|
||||||
selectFillter=-- Select --
|
selectFillter=-- Select --
|
||||||
pageNum=Page Number
|
pageNum=Page Number
|
||||||
sizes.small=Small
|
sizes.small=Small
|
||||||
sizes.medium=Medium
|
sizes.medium=Medium
|
||||||
sizes.large=Large
|
sizes.large=Large
|
||||||
@@ -44,7 +43,7 @@ red=Red
|
|||||||
green=Green
|
green=Green
|
||||||
blue=Blue
|
blue=Blue
|
||||||
custom=Custom...
|
custom=Custom...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -121,8 +120,8 @@ account.title=Account Settings
|
|||||||
account.accountSettings=Account Settings
|
account.accountSettings=Account Settings
|
||||||
account.adminSettings=Admin Settings - View and Add Users
|
account.adminSettings=Admin Settings - View and Add Users
|
||||||
account.userControlSettings=User Control Settings
|
account.userControlSettings=User Control Settings
|
||||||
|
account.changeUsername=New Username
|
||||||
account.changeUsername=Change Username
|
account.changeUsername=Change Username
|
||||||
account.newUsername=New Username
|
|
||||||
account.password=Confirmation Password
|
account.password=Confirmation Password
|
||||||
account.oldPassword=Old password
|
account.oldPassword=Old password
|
||||||
account.newPassword=New Password
|
account.newPassword=New Password
|
||||||
@@ -173,7 +172,7 @@ merge.tags=merge,Page operations,Back end,server side
|
|||||||
|
|
||||||
home.split.title=Split
|
home.split.title=Split
|
||||||
home.split.desc=Split PDFs into multiple documents
|
home.split.desc=Split PDFs into multiple documents
|
||||||
split.tags=Page operations,divide,Multi Page,cut,server side
|
split.tags=Page operations,divide,Multi Page,cut,server side
|
||||||
|
|
||||||
home.rotate.title=Rotate
|
home.rotate.title=Rotate
|
||||||
home.rotate.desc=Easily rotate your PDFs.
|
home.rotate.desc=Easily rotate your PDFs.
|
||||||
@@ -314,7 +313,7 @@ home.add-page-numbers.desc=Add Page numbers throughout a document in a set locat
|
|||||||
add-page-numbers.tags=paginate,label,organize,index
|
add-page-numbers.tags=paginate,label,organize,index
|
||||||
|
|
||||||
home.auto-rename.title=Auto Rename PDF File
|
home.auto-rename.title=Auto Rename PDF File
|
||||||
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
||||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
auto-rename.tags=auto-detect,header-based,organize,relabel
|
||||||
|
|
||||||
home.adjust-contrast.title=Adjust Colors/Contrast
|
home.adjust-contrast.title=Adjust Colors/Contrast
|
||||||
@@ -368,7 +367,7 @@ showJS.tags=JS
|
|||||||
|
|
||||||
home.autoRedact.title=Auto Redact
|
home.autoRedact.title=Auto Redact
|
||||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
showJS.tags=Redact,Hide,black out,black,marker,hidden
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF to CSV
|
||||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||||
@@ -412,7 +411,7 @@ autoRedact.title=Auto Redact
|
|||||||
autoRedact.header=Auto Redact
|
autoRedact.header=Auto Redact
|
||||||
autoRedact.colorLabel=Colour
|
autoRedact.colorLabel=Colour
|
||||||
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
||||||
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
||||||
autoRedact.useRegexLabel=Use Regex
|
autoRedact.useRegexLabel=Use Regex
|
||||||
autoRedact.wholeWordSearchLabel=Whole Word Search
|
autoRedact.wholeWordSearchLabel=Whole Word Search
|
||||||
autoRedact.customPaddingLabel=Custom Extra Padding
|
autoRedact.customPaddingLabel=Custom Extra Padding
|
||||||
@@ -499,8 +498,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=Sanitize PDF
|
sanitizePDF.title=Sanitize PDF
|
||||||
sanitizePDF.header=Sanitize a PDF file
|
sanitizePDF.header=Sanitize a PDF file
|
||||||
@@ -586,18 +584,18 @@ scalePages.submit=Submit
|
|||||||
#certSign
|
#certSign
|
||||||
certSign.title=Certificate Signing
|
certSign.title=Certificate Signing
|
||||||
certSign.header=Sign a PDF with your certificate (Work in progress)
|
certSign.header=Sign a PDF with your certificate (Work in progress)
|
||||||
certSign.selectPDF=Select a PDF File for Signing:
|
certSign.selectPDF=Select a PDF File for Signing:
|
||||||
certSign.jksNote=Note: If your certificate type is not listed below, please convert it to a Java Keystore (.jks) file using the keytool command line tool. Then, choose the .jks file option below.
|
certSign.jksNote=Note: If your certificate type is not listed below, please convert it to a Java Keystore (.jks) file using the keytool command line tool. Then, choose the .jks file option below.
|
||||||
certSign.selectKey=Select Your Private Key File (PKCS#8 format, could be .pem or .der):
|
certSign.selectKey=Select Your Private Key File (PKCS#8 format, could be .pem or .der):
|
||||||
certSign.selectCert=Select Your Certificate File (X.509 format, could be .pem or .der):
|
certSign.selectCert=Select Your Certificate File (X.509 format, could be .pem or .der):
|
||||||
certSign.selectP12=Select Your PKCS#12 Keystore File (.p12 or .pfx) (Optional, If provided, it should contain your private key and certificate):
|
certSign.selectP12=Select Your PKCS#12 Keystore File (.p12 or .pfx) (Optional, If provided, it should contain your private key and certificate):
|
||||||
certSign.selectJKS=Select Your Java Keystore File (.jks or .keystore):
|
certSign.selectJKS=Select Your Java Keystore File (.jks or .keystore):
|
||||||
certSign.certType=Certificate Type
|
certSign.certType=Certificate Type
|
||||||
certSign.password=Enter Your Keystore or Private Key Password (If Any):
|
certSign.password=Enter Your Keystore or Private Key Password (If Any):
|
||||||
certSign.showSig=Show Signature
|
certSign.showSig=Show Signature
|
||||||
certSign.reason=Reason
|
certSign.reason=Reason
|
||||||
certSign.location=Location
|
certSign.location=Location
|
||||||
certSign.name=Name
|
certSign.name=Name
|
||||||
certSign.submit=Sign PDF
|
certSign.submit=Sign PDF
|
||||||
|
|
||||||
|
|
||||||
@@ -659,7 +657,7 @@ ScannerImageSplit.selectText.8=Sets the minimum contour area threshold for a pho
|
|||||||
ScannerImageSplit.selectText.9=Border Size:
|
ScannerImageSplit.selectText.9=Border Size:
|
||||||
ScannerImageSplit.selectText.10=Sets the size of the border added and removed to prevent white borders in the output (default: 1).
|
ScannerImageSplit.selectText.10=Sets the size of the border added and removed to prevent white borders in the output (default: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / Scan Cleanup
|
ocr.title=OCR / Scan Cleanup
|
||||||
ocr.header=Cleanup Scans / OCR (Optical Character Recognition)
|
ocr.header=Cleanup Scans / OCR (Optical Character Recognition)
|
||||||
@@ -703,7 +701,7 @@ compress.selectText.1=Manual Mode - From 1 to 4
|
|||||||
compress.selectText.2=Optimization level:
|
compress.selectText.2=Optimization level:
|
||||||
compress.selectText.3=4 (Terrible for text images)
|
compress.selectText.3=4 (Terrible for text images)
|
||||||
compress.selectText.4=Auto mode - Auto adjusts quality to get PDF to exact size
|
compress.selectText.4=Auto mode - Auto adjusts quality to get PDF to exact size
|
||||||
compress.selectText.5=Expected PDF Size (e.g. 25MB, 10.8MB, 25KB)
|
compress.selectText.5=Expected PDF Size (e.g. 25MB, 10.8MB, 25KB)
|
||||||
compress.submit=Compress
|
compress.submit=Compress
|
||||||
|
|
||||||
|
|
||||||
@@ -778,8 +776,8 @@ imageToPDF.selectText.2=Auto rotate PDF
|
|||||||
imageToPDF.selectText.3=Multi file logic (Only enabled if working with multiple images)
|
imageToPDF.selectText.3=Multi file logic (Only enabled if working with multiple images)
|
||||||
imageToPDF.selectText.4=Merge into single PDF
|
imageToPDF.selectText.4=Merge into single PDF
|
||||||
imageToPDF.selectText.5=Convert to separate PDFs
|
imageToPDF.selectText.5=Convert to separate PDFs
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF to Image
|
pdfToImage.title=PDF to Image
|
||||||
pdfToImage.header=PDF to Image
|
pdfToImage.header=PDF to Image
|
||||||
@@ -869,6 +867,7 @@ changeMetadata.keywords=Keywords:
|
|||||||
changeMetadata.modDate=Modification Date (yyyy/MM/dd HH:mm:ss):
|
changeMetadata.modDate=Modification Date (yyyy/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=Producer:
|
changeMetadata.producer=Producer:
|
||||||
changeMetadata.subject=Subject:
|
changeMetadata.subject=Subject:
|
||||||
|
changeMetadata.title=Title:
|
||||||
changeMetadata.trapped=Trapped:
|
changeMetadata.trapped=Trapped:
|
||||||
changeMetadata.selectText.4=Other Metadata:
|
changeMetadata.selectText.4=Other Metadata:
|
||||||
changeMetadata.selectText.5=Add Custom Metadata Entry
|
changeMetadata.selectText.5=Add Custom Metadata Entry
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=Select Image(s)
|
|||||||
genericSubmit=Submit
|
genericSubmit=Submit
|
||||||
processTimeWarning=Warning: This process can take up to a minute depending on file-size
|
processTimeWarning=Warning: This process can take up to a minute depending on file-size
|
||||||
pageOrderPrompt=Custom Page Order (Enter a comma-separated list of page numbers or Functions like 2n+1) :
|
pageOrderPrompt=Custom Page Order (Enter a comma-separated list of page numbers 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=Go
|
goToPage=Go
|
||||||
true=True
|
true=True
|
||||||
false=False
|
false=False
|
||||||
@@ -20,7 +19,6 @@ save=Save
|
|||||||
close=Close
|
close=Close
|
||||||
filesSelected=files selected
|
filesSelected=files selected
|
||||||
noFavourites=No favorites added
|
noFavourites=No favorites added
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=Bored Waiting?
|
bored=Bored Waiting?
|
||||||
alphabet=Alphabet
|
alphabet=Alphabet
|
||||||
downloadPdf=Download PDF
|
downloadPdf=Download PDF
|
||||||
@@ -44,7 +42,7 @@ red=Red
|
|||||||
green=Green
|
green=Green
|
||||||
blue=Blue
|
blue=Blue
|
||||||
custom=Custom...
|
custom=Custom...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=Account Settings
|
|||||||
account.adminSettings=Admin Settings - View and Add Users
|
account.adminSettings=Admin Settings - View and Add Users
|
||||||
account.userControlSettings=User Control Settings
|
account.userControlSettings=User Control Settings
|
||||||
account.changeUsername=Change Username
|
account.changeUsername=Change Username
|
||||||
account.newUsername=New Username
|
account.changeUsername=Change Username
|
||||||
account.password=Confirmation Password
|
account.password=Confirmation Password
|
||||||
account.oldPassword=Old password
|
account.oldPassword=Old password
|
||||||
account.newPassword=New Password
|
account.newPassword=New Password
|
||||||
@@ -368,7 +366,7 @@ showJS.tags=JS
|
|||||||
|
|
||||||
home.autoRedact.title=Auto Redact
|
home.autoRedact.title=Auto Redact
|
||||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
showJS.tags=JS
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF to CSV
|
||||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=Auto Redact
|
|||||||
autoRedact.header=Auto Redact
|
autoRedact.header=Auto Redact
|
||||||
autoRedact.colorLabel=Color
|
autoRedact.colorLabel=Color
|
||||||
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
||||||
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
||||||
autoRedact.useRegexLabel=Use Regex
|
autoRedact.useRegexLabel=Use Regex
|
||||||
autoRedact.wholeWordSearchLabel=Whole Word Search
|
autoRedact.wholeWordSearchLabel=Whole Word Search
|
||||||
autoRedact.customPaddingLabel=Custom Extra Padding
|
autoRedact.customPaddingLabel=Custom Extra Padding
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=Sanitize PDF
|
sanitizePDF.title=Sanitize PDF
|
||||||
sanitizePDF.header=Sanitize a PDF file
|
sanitizePDF.header=Sanitize a PDF file
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=Sets the minimum contour area threshold for a pho
|
|||||||
ScannerImageSplit.selectText.9=Border Size:
|
ScannerImageSplit.selectText.9=Border Size:
|
||||||
ScannerImageSplit.selectText.10=Sets the size of the border added and removed to prevent white borders in the output (default: 1).
|
ScannerImageSplit.selectText.10=Sets the size of the border added and removed to prevent white borders in the output (default: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / Scan Cleanup
|
ocr.title=OCR / Scan Cleanup
|
||||||
ocr.header=Cleanup Scans / OCR (Optical Character Recognition)
|
ocr.header=Cleanup Scans / OCR (Optical Character Recognition)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=Auto rotate PDF
|
|||||||
imageToPDF.selectText.3=Multi file logic (Only enabled if working with multiple images)
|
imageToPDF.selectText.3=Multi file logic (Only enabled if working with multiple images)
|
||||||
imageToPDF.selectText.4=Merge into single PDF
|
imageToPDF.selectText.4=Merge into single PDF
|
||||||
imageToPDF.selectText.5=Convert to separate PDFs
|
imageToPDF.selectText.5=Convert to separate PDFs
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF to Image
|
pdfToImage.title=PDF to Image
|
||||||
pdfToImage.header=PDF to Image
|
pdfToImage.header=PDF to Image
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=Keywords:
|
|||||||
changeMetadata.modDate=Modification Date (yyyy/MM/dd HH:mm:ss):
|
changeMetadata.modDate=Modification Date (yyyy/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=Producer:
|
changeMetadata.producer=Producer:
|
||||||
changeMetadata.subject=Subject:
|
changeMetadata.subject=Subject:
|
||||||
|
changeMetadata.title=Title:
|
||||||
changeMetadata.trapped=Trapped:
|
changeMetadata.trapped=Trapped:
|
||||||
changeMetadata.selectText.4=Other Metadata:
|
changeMetadata.selectText.4=Other Metadata:
|
||||||
changeMetadata.selectText.5=Add Custom Metadata Entry
|
changeMetadata.selectText.5=Add Custom Metadata Entry
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=Seleccionar Imagen(es)
|
|||||||
genericSubmit=Enviar
|
genericSubmit=Enviar
|
||||||
processTimeWarning=Advertencia: este proceso puede tardar hasta un minuto dependiendo del tamaño del archivo
|
processTimeWarning=Advertencia: este proceso puede tardar hasta un minuto dependiendo del tamaño del archivo
|
||||||
pageOrderPrompt=Orden de páginas (Introduzca una lista de números de página separados por coma):
|
pageOrderPrompt=Orden de páginas (Introduzca una lista de números de página separados por coma):
|
||||||
pageSelectionPrompt=Selección de página personalizada (Intruduzca una lista de números de página separados por comas 1,5,6 o funciones como 2n+1) :
|
|
||||||
goToPage=Ir a
|
goToPage=Ir a
|
||||||
true=Verdadero
|
true=Verdadero
|
||||||
false=Falso
|
false=Falso
|
||||||
@@ -20,7 +19,6 @@ save=Guardar
|
|||||||
close=Cerrar
|
close=Cerrar
|
||||||
filesSelected=archivos seleccionados
|
filesSelected=archivos seleccionados
|
||||||
noFavourites=No se agregaron favoritos
|
noFavourites=No se agregaron favoritos
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=¿Cansado de esperar?
|
bored=¿Cansado de esperar?
|
||||||
alphabet=Alfabeto
|
alphabet=Alfabeto
|
||||||
downloadPdf=Descargar PDF
|
downloadPdf=Descargar PDF
|
||||||
@@ -58,7 +56,7 @@ usernameExistsMessage=El nuevo nombre de usuario está en uso.
|
|||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Menú de canalización (Alfa)
|
pipeline.header=Menu Pipeline (Alfa)
|
||||||
pipeline.uploadButton=Cargar personalización
|
pipeline.uploadButton=Cargar personalización
|
||||||
pipeline.configureButton=Configurar
|
pipeline.configureButton=Configurar
|
||||||
pipeline.defaultOption=Personalizar
|
pipeline.defaultOption=Personalizar
|
||||||
@@ -67,13 +65,13 @@ pipeline.submitButton=Enviar
|
|||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
######################
|
######################
|
||||||
pipelineOptions.header=Configuración de la canalización
|
pipelineOptions.header=Configuración Pipeline
|
||||||
pipelineOptions.pipelineNameLabel=Nombre de la canalización
|
pipelineOptions.pipelineNameLabel=Nombre del Pipeline
|
||||||
pipelineOptions.saveSettings=Guardar configuración de la canalización
|
pipelineOptions.saveSettings=Guardar configuración de la oiperación
|
||||||
pipelineOptions.pipelineNamePrompt=Introduzca aquí el nombre de la canalización
|
pipelineOptions.pipelineNamePrompt=Introduzca aquí el nombre del pipeline
|
||||||
pipelineOptions.selectOperation=Seleccione la operación
|
pipelineOptions.selectOperation=Seleccione la operación
|
||||||
pipelineOptions.addOperationButton=Añadir operación
|
pipelineOptions.addOperationButton=Añadir operación
|
||||||
pipelineOptions.pipelineHeader=Canalización:
|
pipelineOptions.pipelineHeader=Pipeline:
|
||||||
pipelineOptions.saveButton=Descargar
|
pipelineOptions.saveButton=Descargar
|
||||||
pipelineOptions.validateButton=Validar
|
pipelineOptions.validateButton=Validar
|
||||||
|
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=Configuración de la cuenta
|
|||||||
account.adminSettings=Configuración de Administrador - Ver y Añadir Usuarios
|
account.adminSettings=Configuración de Administrador - Ver y Añadir Usuarios
|
||||||
account.userControlSettings=Configuración de control de usuario
|
account.userControlSettings=Configuración de control de usuario
|
||||||
account.changeUsername=Cambiar nombre de usuario
|
account.changeUsername=Cambiar nombre de usuario
|
||||||
account.newUsername=nuevo nombre de usuario
|
account.changeUsername=Cambiar nombre de usuario
|
||||||
account.password=Confirmar contraseña
|
account.password=Confirmar contraseña
|
||||||
account.oldPassword=Contraseña anterior
|
account.oldPassword=Contraseña anterior
|
||||||
account.newPassword=Nueva Contraseña
|
account.newPassword=Nueva Contraseña
|
||||||
@@ -368,7 +366,7 @@ showJS.tags=JS
|
|||||||
|
|
||||||
home.autoRedact.title=Auto Redactar
|
home.autoRedact.title=Auto Redactar
|
||||||
home.autoRedact.desc=Redactar automáticamente (ocultar) texto en un PDF según el texto introducido
|
home.autoRedact.desc=Redactar automáticamente (ocultar) texto en un PDF según el texto introducido
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
showJS.tags=JS
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF a CSV
|
home.tableExtraxt.title=PDF a CSV
|
||||||
home.tableExtraxt.desc=Extraer Tablas de un PDF convirtiéndolas a CSV
|
home.tableExtraxt.desc=Extraer Tablas de un PDF convirtiéndolas a CSV
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=Auto Redactar
|
|||||||
autoRedact.header=Auto Redactar
|
autoRedact.header=Auto Redactar
|
||||||
autoRedact.colorLabel=Color
|
autoRedact.colorLabel=Color
|
||||||
autoRedact.textsToRedactLabel=Texto para Redactar (separado por líneas)
|
autoRedact.textsToRedactLabel=Texto para Redactar (separado por líneas)
|
||||||
autoRedact.textsToRedactPlaceholder=por ej. \nConfidencial \nAlto-Secreto
|
autoRedact.textsToRedactPlaceholder=por ej. \nConfidencial \nAlto-Secreto
|
||||||
autoRedact.useRegexLabel=Usar Regex
|
autoRedact.useRegexLabel=Usar Regex
|
||||||
autoRedact.wholeWordSearchLabel=Búsqueda por palabra completa
|
autoRedact.wholeWordSearchLabel=Búsqueda por palabra completa
|
||||||
autoRedact.customPaddingLabel=Extra Padding personalizado
|
autoRedact.customPaddingLabel=Extra Padding personalizado
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Forzar coordenada Y
|
|||||||
AddStampRequest.customMargin=Personalizar margen
|
AddStampRequest.customMargin=Personalizar margen
|
||||||
AddStampRequest.customColor=Personalizar color de texto
|
AddStampRequest.customColor=Personalizar color de texto
|
||||||
AddStampRequest.submit=Enviar
|
AddStampRequest.submit=Enviar
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=Desinfectar archivo PDF
|
sanitizePDF.title=Desinfectar archivo PDF
|
||||||
sanitizePDF.header=Desinfectar un archivo PDF
|
sanitizePDF.header=Desinfectar un archivo PDF
|
||||||
@@ -564,7 +561,7 @@ autoSplitPDF.submit=Entregar
|
|||||||
|
|
||||||
|
|
||||||
#pipeline
|
#pipeline
|
||||||
pipeline.title=Canalización
|
pipeline.title=Pipeline
|
||||||
|
|
||||||
|
|
||||||
#pageLayout
|
#pageLayout
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=Establecer el umbral mínimo del área de contorn
|
|||||||
ScannerImageSplit.selectText.9=Tamaño del borde:
|
ScannerImageSplit.selectText.9=Tamaño del borde:
|
||||||
ScannerImageSplit.selectText.10=Establece el tamaño del borde agregado y eliminado para evitar bordes blancos en la salida (predeterminado: 1).
|
ScannerImageSplit.selectText.10=Establece el tamaño del borde agregado y eliminado para evitar bordes blancos en la salida (predeterminado: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / Escaneo de limpieza
|
ocr.title=OCR / Escaneo de limpieza
|
||||||
ocr.header=Escaneos de limpieza / OCR (Reconocimiento óptico de caracteres)
|
ocr.header=Escaneos de limpieza / OCR (Reconocimiento óptico de caracteres)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=Rotación automática del PDF
|
|||||||
imageToPDF.selectText.3=Lógica de archivos múltiples (únicamente activado si funciona con multiples imágenes)
|
imageToPDF.selectText.3=Lógica de archivos múltiples (únicamente activado si funciona con multiples imágenes)
|
||||||
imageToPDF.selectText.4=Unir en un único archivo PDF
|
imageToPDF.selectText.4=Unir en un único archivo PDF
|
||||||
imageToPDF.selectText.5=Convertir a PDFs separados
|
imageToPDF.selectText.5=Convertir a PDFs separados
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF a Imagen
|
pdfToImage.title=PDF a Imagen
|
||||||
pdfToImage.header=PDF a Imagen
|
pdfToImage.header=PDF a Imagen
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=Palabras clave:
|
|||||||
changeMetadata.modDate=Fecha de modificación (aaaa/MM/dd HH:mm:ss):
|
changeMetadata.modDate=Fecha de modificación (aaaa/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=Productor:
|
changeMetadata.producer=Productor:
|
||||||
changeMetadata.subject=Asunto:
|
changeMetadata.subject=Asunto:
|
||||||
|
changeMetadata.title=Título:
|
||||||
changeMetadata.trapped=Capturado:
|
changeMetadata.trapped=Capturado:
|
||||||
changeMetadata.selectText.4=Otros Metadatos:
|
changeMetadata.selectText.4=Otros Metadatos:
|
||||||
changeMetadata.selectText.5=Agregar entrada de metadatos personalizados
|
changeMetadata.selectText.5=Agregar entrada de metadatos personalizados
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=Hautatu Irudia(k)
|
|||||||
genericSubmit=Bidali
|
genericSubmit=Bidali
|
||||||
processTimeWarning=Oharra: prozesu honetarako minutu bat ere beharko da fitxategiaren tamaiaren arabera
|
processTimeWarning=Oharra: prozesu honetarako minutu bat ere beharko da fitxategiaren tamaiaren arabera
|
||||||
pageOrderPrompt=Orrialdeen ordena (sartu komaz bereizitako orrialde-zenbakien zerrenda)
|
pageOrderPrompt=Orrialdeen ordena (sartu komaz bereizitako orrialde-zenbakien zerrenda)
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=Joan
|
goToPage=Joan
|
||||||
true=Egiazkoa
|
true=Egiazkoa
|
||||||
false=Faltsua
|
false=Faltsua
|
||||||
@@ -20,7 +19,6 @@ save=Gorde
|
|||||||
close=Itxi
|
close=Itxi
|
||||||
filesSelected=Hautatutako fitxategiak
|
filesSelected=Hautatutako fitxategiak
|
||||||
noFavourites=Ez dira gogokoak gehitu
|
noFavourites=Ez dira gogokoak gehitu
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=Itxaroten aspertuta?
|
bored=Itxaroten aspertuta?
|
||||||
alphabet=Alfabetoa
|
alphabet=Alfabetoa
|
||||||
downloadPdf=PDFa deskargatu
|
downloadPdf=PDFa deskargatu
|
||||||
@@ -44,7 +42,7 @@ red=Gorria
|
|||||||
green=Berdea
|
green=Berdea
|
||||||
blue=Urdina
|
blue=Urdina
|
||||||
custom=Pertsonalizatu...
|
custom=Pertsonalizatu...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=Kontuaren ezarpenak
|
|||||||
account.adminSettings=Admin ezarpenak - Ikusi eta gehitu Erabiltzaileak
|
account.adminSettings=Admin ezarpenak - Ikusi eta gehitu Erabiltzaileak
|
||||||
account.userControlSettings=Erabiltzaile ezarpen kontrolak
|
account.userControlSettings=Erabiltzaile ezarpen kontrolak
|
||||||
account.changeUsername=Aldatu erabiltzaile izena
|
account.changeUsername=Aldatu erabiltzaile izena
|
||||||
account.newUsername=Erabiltzaile izen berria
|
account.changeUsername=Aldatu erabiltzaile izena
|
||||||
account.password=Konfirmatu pasahitza
|
account.password=Konfirmatu pasahitza
|
||||||
account.oldPassword=Pasahitz zaharra
|
account.oldPassword=Pasahitz zaharra
|
||||||
account.newPassword=Pasahitz berria
|
account.newPassword=Pasahitz berria
|
||||||
@@ -368,7 +366,7 @@ showJS.tags=JS
|
|||||||
|
|
||||||
home.autoRedact.title=Auto Idatzi
|
home.autoRedact.title=Auto Idatzi
|
||||||
home.autoRedact.desc=Auto Idatzi testua pdf fitxategian sarrerako testuan oinarritua
|
home.autoRedact.desc=Auto Idatzi testua pdf fitxategian sarrerako testuan oinarritua
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
showJS.tags=JS
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF to CSV
|
||||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=Auto Idatzi
|
|||||||
autoRedact.header=Auto Idatzi
|
autoRedact.header=Auto Idatzi
|
||||||
autoRedact.colorLabel=Kolorea
|
autoRedact.colorLabel=Kolorea
|
||||||
autoRedact.textsToRedactLabel=Idazteko testua (lerro bidez bereizia)
|
autoRedact.textsToRedactLabel=Idazteko testua (lerro bidez bereizia)
|
||||||
autoRedact.textsToRedactPlaceholder=adib. \nKonfidentziala \nTop-Secret
|
autoRedact.textsToRedactPlaceholder=adib. \nKonfidentziala \nTop-Secret
|
||||||
autoRedact.useRegexLabel=Regex erabili
|
autoRedact.useRegexLabel=Regex erabili
|
||||||
autoRedact.wholeWordSearchLabel=Hitz osoen bilaketa
|
autoRedact.wholeWordSearchLabel=Hitz osoen bilaketa
|
||||||
autoRedact.customPaddingLabel=Custom Extra Padding
|
autoRedact.customPaddingLabel=Custom Extra Padding
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=PDF-a desinfektatu
|
sanitizePDF.title=PDF-a desinfektatu
|
||||||
sanitizePDF.header=PDF fitxategi bat desinfektatu
|
sanitizePDF.header=PDF fitxategi bat desinfektatu
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=Ezarri inguruko arearen gutxieneko balioa argazki
|
|||||||
ScannerImageSplit.selectText.9=Ertzaren tamaina:
|
ScannerImageSplit.selectText.9=Ertzaren tamaina:
|
||||||
ScannerImageSplit.selectText.10=Ezarri gehitutako eta ezabatutako ertzaren tamaina irteeran ertz zuriak saihesteko (lehenetsia: 1).
|
ScannerImageSplit.selectText.10=Ezarri gehitutako eta ezabatutako ertzaren tamaina irteeran ertz zuriak saihesteko (lehenetsia: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / Garbiketa-eskaneatzea
|
ocr.title=OCR / Garbiketa-eskaneatzea
|
||||||
ocr.header=Garbiketa-eskaneatzea / OCR (Karaktere-ezagutze optikoa)
|
ocr.header=Garbiketa-eskaneatzea / OCR (Karaktere-ezagutze optikoa)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=PDFaren errotazio automatikoa
|
|||||||
imageToPDF.selectText.3=Fitxategi askoren logika (gaituta bakarrik zenbait irudirekin ari denean)
|
imageToPDF.selectText.3=Fitxategi askoren logika (gaituta bakarrik zenbait irudirekin ari denean)
|
||||||
imageToPDF.selectText.4=Elkartu PDF bakar batean
|
imageToPDF.selectText.4=Elkartu PDF bakar batean
|
||||||
imageToPDF.selectText.5=Bihurtu eta PDF bereizituak sortu
|
imageToPDF.selectText.5=Bihurtu eta PDF bereizituak sortu
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDFa irudi bihurtu
|
pdfToImage.title=PDFa irudi bihurtu
|
||||||
pdfToImage.header=PDFa irudi bihurtu
|
pdfToImage.header=PDFa irudi bihurtu
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=Gako-hitzak:
|
|||||||
changeMetadata.modDate=Aldatze-data (aaaa/MM/dd HH:mm:ss):
|
changeMetadata.modDate=Aldatze-data (aaaa/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=Ekoizlea:
|
changeMetadata.producer=Ekoizlea:
|
||||||
changeMetadata.subject=Gaia:
|
changeMetadata.subject=Gaia:
|
||||||
|
changeMetadata.title=Izenburua:
|
||||||
changeMetadata.trapped=Trapped:
|
changeMetadata.trapped=Trapped:
|
||||||
changeMetadata.selectText.4=Beste metadatu batzuk:
|
changeMetadata.selectText.4=Beste metadatu batzuk:
|
||||||
changeMetadata.selectText.5=Gehitu metadatu pertsonalizatuen sarrera
|
changeMetadata.selectText.5=Gehitu metadatu pertsonalizatuen sarrera
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ 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\u2019à 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)\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)\u00a0:
|
|
||||||
goToPage=Aller
|
goToPage=Aller
|
||||||
true=Vrai
|
true=Vrai
|
||||||
false=Faux
|
false=Faux
|
||||||
@@ -20,7 +19,6 @@ save=Enregistrer
|
|||||||
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é
|
|
||||||
bored=Ennuyé d\u2019attendre\u00a0?
|
bored=Ennuyé d\u2019attendre\u00a0?
|
||||||
alphabet=Alphabet
|
alphabet=Alphabet
|
||||||
downloadPdf=Télécharger le PDF
|
downloadPdf=Télécharger le PDF
|
||||||
@@ -44,10 +42,10 @@ red=Rouge
|
|||||||
green=Vert
|
green=Vert
|
||||||
blue=Bleu
|
blue=Bleu
|
||||||
custom=Personnalisé\u2026
|
custom=Personnalisé\u2026
|
||||||
WorkInProgess=En cours de développement, merci de nous remonter les problèmes que vous pourriez constater!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Propulsé par
|
poweredBy=Powered by
|
||||||
yes=Oui
|
yes=Yes
|
||||||
no=Non
|
no=No
|
||||||
changedCredsMessage=Les identifiants ont été mis à jour\u00a0!
|
changedCredsMessage=Les identifiants ont été mis à jour\u00a0!
|
||||||
notAuthenticatedMessage=Utilisateur non authentifié.
|
notAuthenticatedMessage=Utilisateur non authentifié.
|
||||||
userNotFoundMessage=Utilisateur non trouvé.
|
userNotFoundMessage=Utilisateur non trouvé.
|
||||||
@@ -58,24 +56,24 @@ usernameExistsMessage=Le nouveau nom d\u2019utilisateur existe déjà.
|
|||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Menu Pipeline (Alpha)
|
pipeline.header=Pipeline Menu (Alpha)
|
||||||
pipeline.uploadButton=Télécharger une personnalisation
|
pipeline.uploadButton=Upload Custom
|
||||||
pipeline.configureButton=Configurer
|
pipeline.configureButton=Configure
|
||||||
pipeline.defaultOption=Personnaliser
|
pipeline.defaultOption=Custom
|
||||||
pipeline.submitButton=Soumettre
|
pipeline.submitButton=Submit
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
######################
|
######################
|
||||||
pipelineOptions.header=Configuration du pipeline
|
pipelineOptions.header=Pipeline Configuration
|
||||||
pipelineOptions.pipelineNameLabel=Nom du pipeline
|
pipelineOptions.pipelineNameLabel=Pipeline Name
|
||||||
pipelineOptions.saveSettings=Sauvegarder la configuration
|
pipelineOptions.saveSettings=Save Operation Settings
|
||||||
pipelineOptions.pipelineNamePrompt=Entrez ici le nom du pipeline
|
pipelineOptions.pipelineNamePrompt=Enter pipeline name here
|
||||||
pipelineOptions.selectOperation=Sélectionner une opération
|
pipelineOptions.selectOperation=Select Operation
|
||||||
pipelineOptions.addOperationButton=Ajouter une opération
|
pipelineOptions.addOperationButton=Add operation
|
||||||
pipelineOptions.pipelineHeader=Pipeline:
|
pipelineOptions.pipelineHeader=Pipeline:
|
||||||
pipelineOptions.saveButton=Télécharger
|
pipelineOptions.saveButton=Download
|
||||||
pipelineOptions.validateButton=Valider
|
pipelineOptions.validateButton=Validate
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=Paramètres du compte
|
|||||||
account.adminSettings=Paramètres d\u2019administration \u2013 Voir et ajouter des utilisateurs
|
account.adminSettings=Paramètres d\u2019administration \u2013 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\u2019utilisateur
|
||||||
account.newUsername=Nouveau nom d\u2019utilisateur
|
account.changeUsername=Modifier le nom d\u2019utilisateur
|
||||||
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
|
||||||
@@ -148,7 +146,7 @@ adminUserSettings.role=Rôle
|
|||||||
adminUserSettings.actions=Actions
|
adminUserSettings.actions=Actions
|
||||||
adminUserSettings.apiUser=Utilisateur API limité
|
adminUserSettings.apiUser=Utilisateur API limité
|
||||||
adminUserSettings.webOnlyUser=Utilisateur Web uniquement
|
adminUserSettings.webOnlyUser=Utilisateur Web uniquement
|
||||||
adminUserSettings.demoUser=Demo User (Paramètres par défaut)
|
adminUserSettings.demoUser=Demo User (No custom settings)
|
||||||
adminUserSettings.forceChange=Forcer l\u2019utilisateur à changer son nom d\u2019utilisateur/mot de passe lors de la connexion
|
adminUserSettings.forceChange=Forcer l\u2019utilisateur à changer son nom d\u2019utilisateur/mot de passe lors de la connexion
|
||||||
adminUserSettings.submit=Ajouter
|
adminUserSettings.submit=Ajouter
|
||||||
|
|
||||||
@@ -160,7 +158,7 @@ home.searchBar=Rechercher des fonctionnalités...
|
|||||||
|
|
||||||
|
|
||||||
home.viewPdf.title=Visionner le PDF
|
home.viewPdf.title=Visionner le PDF
|
||||||
home.viewPdf.desc=Visionner, annoter, ajouter du texte ou des images.
|
home.viewPdf.desc=Visionner, annoter, ajouter du texte ou des images
|
||||||
viewPdf.tags=visualiser,lire,annoter,texte,image
|
viewPdf.tags=visualiser,lire,annoter,texte,image
|
||||||
|
|
||||||
home.multiTool.title=Outil multifonction PDF
|
home.multiTool.title=Outil multifonction PDF
|
||||||
@@ -169,7 +167,7 @@ multiTool.tags=outil multifonction,opération multifonction,interface utilisateu
|
|||||||
|
|
||||||
home.merge.title=Fusionner
|
home.merge.title=Fusionner
|
||||||
home.merge.desc=Fusionnez facilement plusieurs PDF en un seul.
|
home.merge.desc=Fusionnez facilement plusieurs PDF en un seul.
|
||||||
merge.tags=fusionner,opérations sur les pages,backend,server side,merge
|
merge.tags=fusionner,opérations sur les pages,backeend,server side,merge
|
||||||
|
|
||||||
home.split.title=Diviser
|
home.split.title=Diviser
|
||||||
home.split.desc=Divisez un PDF en plusieurs documents.
|
home.split.desc=Divisez un PDF en plusieurs documents.
|
||||||
@@ -285,9 +283,9 @@ 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\u2019un 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=Remove Annotations
|
||||||
home.removeAnnotations.desc=Supprimer tous les commentaires/annotations d\u2019un PDF.
|
home.removeAnnotations.desc=Removes all comments/annotations from a PDF
|
||||||
removeAnnotations.tags=commentaires,supprimer,annotations,highlight,notes,markup,remove
|
removeAnnotations.tags=comments,highlight,notes,markup,remove
|
||||||
|
|
||||||
home.compare.title=Comparer
|
home.compare.title=Comparer
|
||||||
home.compare.desc=Comparez et visualisez les différences entre deux PDF.
|
home.compare.desc=Comparez et visualisez les différences entre deux PDF.
|
||||||
@@ -364,14 +362,14 @@ PdfToSinglePage.tags=fusionner,merge,une seule page,single page
|
|||||||
|
|
||||||
home.showJS.title=Afficher le JavaScript
|
home.showJS.title=Afficher le JavaScript
|
||||||
home.showJS.desc=Recherche et affiche tout JavaScript injecté dans un PDF.
|
home.showJS.desc=Recherche et affiche tout JavaScript injecté dans un PDF.
|
||||||
showJS.tags=JS
|
showJS.tags=caviarder,redact,auto
|
||||||
|
|
||||||
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\u2019un PDF.
|
||||||
autoRedact.tags=caviarder,redact,auto
|
showJS.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\u2019un PDF et les transforme en CSV
|
||||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||||
|
|
||||||
|
|
||||||
@@ -381,16 +379,16 @@ 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\u2019un PDF sur un autre PDF
|
||||||
overlay-pdfs.tags=Overlay,incrustation
|
overlay-pdfs.tags=Overlay
|
||||||
|
|
||||||
home.split-by-sections.title=Séparer un PDF en sections
|
home.split-by-sections.title=Split PDF by Sections
|
||||||
home.split-by-sections.desc=Diviser chaque page d\u2019un PDF en sections horizontales/verticales plus petites.
|
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||||
split-by-sections.tags=Sections,Diviser,Section Split, Divide, Customize
|
split-by-sections.tags=Section Split, Divide, Customize
|
||||||
|
|
||||||
home.AddStampRequest.title=Ajouter un tampon sur un PDF
|
home.AddStampRequest.title=Add Stamp to PDF
|
||||||
home.AddStampRequest.desc=Ajouter un texte ou l\u2019image d\u2019un tampon à un emplacement défini.
|
home.AddStampRequest.desc=Add text or add image stamps at set locations
|
||||||
AddStampRequest.tags=Tampon,Ajouter,Stamp,Add image,center image,Watermark,PDF,Embed,Customize
|
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=Caviarder automatiquement
|
|||||||
autoRedact.header=Caviarder automatiquement
|
autoRedact.header=Caviarder automatiquement
|
||||||
autoRedact.colorLabel=Couleur
|
autoRedact.colorLabel=Couleur
|
||||||
autoRedact.textsToRedactLabel=Texte à caviarder (séparé par des lignes)
|
autoRedact.textsToRedactLabel=Texte à caviarder (séparé par des lignes)
|
||||||
autoRedact.textsToRedactPlaceholder=ex. \nConfidentiel \nTop secret
|
autoRedact.textsToRedactPlaceholder=ex. \nConfidentiel \nTop secret
|
||||||
autoRedact.useRegexLabel=Utiliser une Regex
|
autoRedact.useRegexLabel=Utiliser une Regex
|
||||||
autoRedact.wholeWordSearchLabel=Recherche de mots entiers
|
autoRedact.wholeWordSearchLabel=Recherche de mots entiers
|
||||||
autoRedact.customPaddingLabel=Marge intérieure supplémentaire
|
autoRedact.customPaddingLabel=Marge intérieure supplémentaire
|
||||||
@@ -468,39 +466,38 @@ 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=Zoom level for displaying the website.
|
||||||
HTMLToPDF.pageWidth=Largeur de la page en centimètres. (Vide par défaut)
|
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
|
||||||
HTMLToPDF.pageHeight=Hauteur de la page en centimètres. (Vide par défaut)
|
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
|
||||||
HTMLToPDF.marginTop=Marge supérieure de la page en millimètres. (Vide par défaut)
|
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
|
||||||
HTMLToPDF.marginBottom=Marge inférieure de la page en millimètres. (Vide par défaut)
|
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
|
||||||
HTMLToPDF.marginLeft=Marge gauche de la page en millimètres. (Vide par défaut)
|
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
|
||||||
HTMLToPDF.marginRight=Marge droite de la page en millimètres. (Vide par défaut)
|
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
|
||||||
HTMLToPDF.printBackground=Restituer l\u2019image de fond des sites web.
|
HTMLToPDF.printBackground=Render the background of websites.
|
||||||
HTMLToPDF.defaultHeader=Activer l\u2019entête par défaut (Nom et numéro de page)
|
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
|
||||||
HTMLToPDF.cssMediaType=Modifier le type de média CSS de la page.
|
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
|
||||||
HTMLToPDF.none=Aucun
|
HTMLToPDF.none=None
|
||||||
HTMLToPDF.print=Imprimer
|
HTMLToPDF.print=Print
|
||||||
HTMLToPDF.screen=Écran
|
HTMLToPDF.screen=Screen
|
||||||
|
|
||||||
|
|
||||||
#AddStampRequest
|
#AddStampRequest
|
||||||
AddStampRequest.header=Tampon PDF
|
AddStampRequest.header=Stamp PDF
|
||||||
AddStampRequest.title=Tampon PDF
|
AddStampRequest.title=Stamp PDF
|
||||||
AddStampRequest.stampType=Type de tampon
|
AddStampRequest.stampType=Stamp Type
|
||||||
AddStampRequest.stampText=Tampon texte
|
AddStampRequest.stampText=Stamp Text
|
||||||
AddStampRequest.stampImage=Tampon image
|
AddStampRequest.stampImage=Stamp Image
|
||||||
AddStampRequest.alphabet=Alphabet
|
AddStampRequest.alphabet=Alphabet
|
||||||
AddStampRequest.fontSize=Taille de fonte/image
|
AddStampRequest.fontSize=Font/Image Size
|
||||||
AddStampRequest.rotation=Rotation
|
AddStampRequest.rotation=Rotation
|
||||||
AddStampRequest.opacity=Opacité
|
AddStampRequest.opacity=Opacity
|
||||||
AddStampRequest.position=Position
|
AddStampRequest.position=Position
|
||||||
AddStampRequest.overrideX=Définir coordonnées X
|
AddStampRequest.overrideX=Override X Coordinate
|
||||||
AddStampRequest.overrideY=Définir coordonnées Y
|
AddStampRequest.overrideY=Override Y Coordinate
|
||||||
AddStampRequest.customMargin=Marge personnalisée
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Couleur de texte personnalisée
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Soumettre
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=Assainir
|
sanitizePDF.title=Assainir
|
||||||
sanitizePDF.header=Assainir
|
sanitizePDF.header=Assainir
|
||||||
@@ -587,11 +584,11 @@ 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: If your certificate type is not listed below, please convert it to a Java Keystore (.jks) file using the keytool command line tool. Then, choose the .jks file option below.
|
||||||
certSign.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\u2019il n\u2019est 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=Select Your 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
|
||||||
certSign.showSig=Afficher la signature
|
certSign.showSig=Afficher la signature
|
||||||
@@ -612,9 +609,9 @@ removeBlanks.submit=Supprimer les pages vierges
|
|||||||
|
|
||||||
|
|
||||||
#removeAnnotations
|
#removeAnnotations
|
||||||
removeAnnotations.title=Supprimer les annotations
|
removeAnnotations.title=Remove Annotations
|
||||||
removeAnnotations.header=Supprimer les annotations
|
removeAnnotations.header=Remove Annotations
|
||||||
removeAnnotations.submit=Supprimer
|
removeAnnotations.submit=Remove
|
||||||
|
|
||||||
|
|
||||||
#compare
|
#compare
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=Définit la surface de contour minimale pour une
|
|||||||
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\u00a0: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / Nettoyage des numérisations
|
ocr.title=OCR / Nettoyage des numérisations
|
||||||
ocr.header=OCR (Reconnaissance optique de caractères) / Nettoyage des numérisations
|
ocr.header=OCR (Reconnaissance optique de caractères) / Nettoyage des numérisations
|
||||||
@@ -696,14 +693,14 @@ fileToPDF.submit=Convertir
|
|||||||
|
|
||||||
|
|
||||||
#compress
|
#compress
|
||||||
compress.title=Compresser un PDF
|
compress.title=Compresser
|
||||||
compress.header=Compresser un PDF (lorsque c\u2019est possible!)
|
compress.header=Compresser
|
||||||
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\u2019optimisation des PDF.
|
||||||
compress.selectText.1=Mode manuel \u2013 de 1 à 4
|
compress.selectText.1=Mode manuel \u2013 de 1 à 4
|
||||||
compress.selectText.2=Niveau d\u2019optimisation
|
compress.selectText.2=Niveau d\u2019optimisation
|
||||||
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 \u2013 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\u202fMo, 10,8\u202fMo, 25\u202fKo)
|
||||||
compress.submit=Compresser
|
compress.submit=Compresser
|
||||||
|
|
||||||
|
|
||||||
@@ -734,8 +731,8 @@ multiTool.title=Outil multifonction PDF
|
|||||||
multiTool.header=Outil multifonction PDF
|
multiTool.header=Outil multifonction PDF
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=Visualiser un PDF
|
viewPdf.title=View PDF
|
||||||
viewPdf.header=Visualiser un PDF
|
viewPdf.header=View PDF
|
||||||
|
|
||||||
#pageRemover
|
#pageRemover
|
||||||
pageRemover.title=Supprimer des pages
|
pageRemover.title=Supprimer des pages
|
||||||
@@ -778,8 +775,8 @@ 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)
|
||||||
imageToPDF.selectText.4=Fusionner en un seul PDF
|
imageToPDF.selectText.4=Fusionner en un seul PDF
|
||||||
imageToPDF.selectText.5=Convertir en PDF séparés
|
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
|
||||||
@@ -790,7 +787,7 @@ pdfToImage.multi=Plusieurs images
|
|||||||
pdfToImage.colorType=Type d\u2019impression
|
pdfToImage.colorType=Type d\u2019impression
|
||||||
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 engendre une perde de données\u00a0!)
|
||||||
pdfToImage.submit=Convertir
|
pdfToImage.submit=Convertir
|
||||||
|
|
||||||
|
|
||||||
@@ -869,7 +866,8 @@ changeMetadata.keywords=Mots clés
|
|||||||
changeMetadata.modDate=Date de modification (yyyy/MM/dd HH:mm:ss)
|
changeMetadata.modDate=Date de modification (yyyy/MM/dd HH:mm:ss)
|
||||||
changeMetadata.producer=Producteur
|
changeMetadata.producer=Producteur
|
||||||
changeMetadata.subject=Sujet
|
changeMetadata.subject=Sujet
|
||||||
changeMetadata.trapped=Recouvrement (technique d’impression)
|
changeMetadata.title=Titre
|
||||||
|
changeMetadata.trapped=Défoncé (technique d’impression)
|
||||||
changeMetadata.selectText.4=Autres métadonnées
|
changeMetadata.selectText.4=Autres métadonnées
|
||||||
changeMetadata.selectText.5=Ajouter une entrée de métadonnées personnalisée
|
changeMetadata.selectText.5=Ajouter une entrée de métadonnées personnalisée
|
||||||
changeMetadata.submit=Modifier
|
changeMetadata.submit=Modifier
|
||||||
@@ -937,19 +935,19 @@ split-by-size-or-count.submit=Séparer
|
|||||||
|
|
||||||
|
|
||||||
#overlay-pdfs
|
#overlay-pdfs
|
||||||
overlay-pdfs.header=Incrustation de PDF
|
overlay-pdfs.header=Overlay PDF Files
|
||||||
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=Select Overlay Mode
|
||||||
overlay-pdfs.mode.sequential=Superposition séquentielle
|
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||||
overlay-pdfs.mode.interleaved=Superposition entrelacée
|
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||||
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=Enter comma-separated counts (e.g., 2,3,1)
|
||||||
overlay-pdfs.position.label=Définir la position de l\u2019incrustation
|
overlay-pdfs.position.label=Select Overlay Position
|
||||||
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=Submit
|
||||||
|
|
||||||
|
|
||||||
#split-by-sections
|
#split-by-sections
|
||||||
@@ -963,11 +961,11 @@ split-by-sections.submit=Diviser le PDF
|
|||||||
|
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licences
|
licenses.nav=Licenses
|
||||||
licenses.title=Licences tierces
|
licenses.title=3rd Party Licenses
|
||||||
licenses.header=Licences tierces
|
licenses.header=3rd Party Licenses
|
||||||
licenses.module=Module
|
licenses.module=Module
|
||||||
licenses.version=Version
|
licenses.version=Version
|
||||||
licenses.license=Licence
|
licenses.license=License
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=छवियों का चयन करें
|
|||||||
genericSubmit=प्रस्तुत करें
|
genericSubmit=प्रस्तुत करें
|
||||||
processTimeWarning=चेतावनी: यह प्रक्रिया फ़ाइल के आकार पर निर्भर करती है और यह से एक मिनट तक लग सकती है
|
processTimeWarning=चेतावनी: यह प्रक्रिया फ़ाइल के आकार पर निर्भर करती है और यह से एक मिनट तक लग सकती है
|
||||||
pageOrderPrompt=कस्टम पेज क्रम (पेज नंबरों या 2n+1 जैसे कार्यों की एक कॉमा से अलग-अलग सूची दर्ज करें):
|
pageOrderPrompt=कस्टम पेज क्रम (पेज नंबरों या 2n+1 जैसे कार्यों की एक कॉमा से अलग-अलग सूची दर्ज करें):
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=जाएँ
|
goToPage=जाएँ
|
||||||
true=सही
|
true=सही
|
||||||
false=गलत
|
false=गलत
|
||||||
@@ -20,7 +19,6 @@ save=सहेजें
|
|||||||
close=बंद करें
|
close=बंद करें
|
||||||
filesSelected=फ़ाइलें चयनित हैं
|
filesSelected=फ़ाइलें चयनित हैं
|
||||||
noFavourites=कोई पसंदीदा जोड़ा नहीं गया है
|
noFavourites=कोई पसंदीदा जोड़ा नहीं गया है
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=बोर हो रहे हैं?
|
bored=बोर हो रहे हैं?
|
||||||
alphabet=वर्णमाला
|
alphabet=वर्णमाला
|
||||||
downloadPdf=पीडीएफ़ डाउनलोड करें
|
downloadPdf=पीडीएफ़ डाउनलोड करें
|
||||||
@@ -44,7 +42,7 @@ red=लाल
|
|||||||
green=हरा
|
green=हरा
|
||||||
blue=नीला
|
blue=नीला
|
||||||
custom=कस्टम...
|
custom=कस्टम...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=खाता सेटिंग्स
|
|||||||
account.adminSettings=व्यवस्थापक सेटिंग्स - उपयोगकर्ताओं को देखें और जोड़ें
|
account.adminSettings=व्यवस्थापक सेटिंग्स - उपयोगकर्ताओं को देखें और जोड़ें
|
||||||
account.userControlSettings=उपयोगकर्ता नियंत्रण सेटिंग्स
|
account.userControlSettings=उपयोगकर्ता नियंत्रण सेटिंग्स
|
||||||
account.changeUsername=उपयोगकर्ता नाम परिवर्तन करें
|
account.changeUsername=उपयोगकर्ता नाम परिवर्तन करें
|
||||||
account.newUsername=नया उपयोगकर्ता नाम
|
account.changeUsername=उपयोगकर्ता नाम परिवर्तन करें
|
||||||
account.password=पासवर्ड पुष्टि
|
account.password=पासवर्ड पुष्टि
|
||||||
account.oldPassword=पुराना पासवर्ड
|
account.oldPassword=पुराना पासवर्ड
|
||||||
account.newPassword=नया पासवर्ड
|
account.newPassword=नया पासवर्ड
|
||||||
@@ -364,11 +362,11 @@ PdfToSinglePage.tags=एकल पृष्ठ
|
|||||||
|
|
||||||
home.showJS.title=जावास्क्रिप्ट दिखाएं
|
home.showJS.title=जावास्क्रिप्ट दिखाएं
|
||||||
home.showJS.desc=पीडीएफ़ में डाला गया कोई भी जावास्क्रिप्ट खोजता है और प्रदर्शित करता है
|
home.showJS.desc=पीडीएफ़ में डाला गया कोई भी जावास्क्रिप्ट खोजता है और प्रदर्शित करता है
|
||||||
showJS.tags=जे एस
|
showJS.tags=गोपनीयकरण, छिपाना, काला करना, काला, मार्कर, छिपा हुआ
|
||||||
|
|
||||||
home.autoRedact.title=स्वतः गोपनीयकरण
|
home.autoRedact.title=स्वतः गोपनीयकरण
|
||||||
home.autoRedact.desc=प्रविष्ट पाठ के आधार पर पीडीएफ़ में पाठ को स्वतः गोपनीयकरित(काला करें)
|
home.autoRedact.desc=प्रविष्ट पाठ के आधार पर पीडीएफ़ में पाठ को स्वतः गोपनीयकरित(काला करें)
|
||||||
autoRedact.tags=गोपनीयकरण, छिपाना, काला करना, काला, मार्कर, छिपा हुआ
|
showJS.tags=गोपनीयकरण, छिपाना, काला करना, काला, मार्कर, छिपा हुआ
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF से CSV में
|
home.tableExtraxt.title=PDF से CSV में
|
||||||
home.tableExtraxt.desc=CSV में बदलते हुए पीडीएफ़ से तालिकाएँ निकालता है
|
home.tableExtraxt.desc=CSV में बदलते हुए पीडीएफ़ से तालिकाएँ निकालता है
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=पीडीएफ़ को सफाई करें
|
sanitizePDF.title=पीडीएफ़ को सफाई करें
|
||||||
sanitizePDF.header=एक पीडीएफ़ फ़ाइल को सफाई करें
|
sanitizePDF.header=एक पीडीएफ़ फ़ाइल को सफाई करें
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=फोटो के लिए न्यूनत
|
|||||||
ScannerImageSplit.selectText.9=बॉर्डर का आकार:
|
ScannerImageSplit.selectText.9=बॉर्डर का आकार:
|
||||||
ScannerImageSplit.selectText.10=निकालने और जोड़ने के लिए जोड़ा जाने वाला बॉर्डर का आकार सेट करता है ताकि आउटपुट में सफेद बॉर्डर न आए (डिफ़ॉल्ट: 1)।
|
ScannerImageSplit.selectText.10=निकालने और जोड़ने के लिए जोड़ा जाने वाला बॉर्डर का आकार सेट करता है ताकि आउटपुट में सफेद बॉर्डर न आए (डिफ़ॉल्ट: 1)।
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / स्कैन सफाई
|
ocr.title=OCR / स्कैन सफाई
|
||||||
ocr.header=स्कैन सफाई / OCR (ऑप्टिकल कैरेक्टर रिकग्निशन)
|
ocr.header=स्कैन सफाई / OCR (ऑप्टिकल कैरेक्टर रिकग्निशन)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=पीडीएफ को ऑटो रोटेट क
|
|||||||
imageToPDF.selectText.3=मल्टी फ़ाइल तर्क (केवल यदि कई छवियों के साथ काम किया जा रहा है)
|
imageToPDF.selectText.3=मल्टी फ़ाइल तर्क (केवल यदि कई छवियों के साथ काम किया जा रहा है)
|
||||||
imageToPDF.selectText.4=एक ही पीडीएफ में मर्ज करें
|
imageToPDF.selectText.4=एक ही पीडीएफ में मर्ज करें
|
||||||
imageToPDF.selectText.5=अलग-अलग पीडीएफ में परिवर्तित करें
|
imageToPDF.selectText.5=अलग-अलग पीडीएफ में परिवर्तित करें
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=पीडीएफ से छवि
|
pdfToImage.title=पीडीएफ से छवि
|
||||||
pdfToImage.header=पीडीएफ से छवि
|
pdfToImage.header=पीडीएफ से छवि
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=कीवर्ड्स:
|
|||||||
changeMetadata.modDate=संशोधन तिथि (yyyy/MM/dd HH:mm:ss):
|
changeMetadata.modDate=संशोधन तिथि (yyyy/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=निर्माता:
|
changeMetadata.producer=निर्माता:
|
||||||
changeMetadata.subject=विषय:
|
changeMetadata.subject=विषय:
|
||||||
|
changeMetadata.title=शीर्षक:
|
||||||
changeMetadata.trapped=फंसा हुआ:
|
changeMetadata.trapped=फंसा हुआ:
|
||||||
changeMetadata.selectText.4=अन्य मेटाडेटा:
|
changeMetadata.selectText.4=अन्य मेटाडेटा:
|
||||||
changeMetadata.selectText.5=कस्टम मेटाडेटा एंट्री जोड़ें
|
changeMetadata.selectText.5=कस्टम मेटाडेटा एंट्री जोड़ें
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=Válasszon képeket
|
|||||||
genericSubmit=Beküldés
|
genericSubmit=Beküldés
|
||||||
processTimeWarning=Figyelmeztetés: Ez a folyamat akár egy percig is eltarthat a fájlmérettől függően
|
processTimeWarning=Figyelmeztetés: Ez a folyamat akár egy percig is eltarthat a fájlmérettől függően
|
||||||
pageOrderPrompt=Egyedi oldalsorrend (Adjon meg vesszővel elválasztott oldalszámokat vagy függvényeket, például 2n+1):
|
pageOrderPrompt=Egyedi oldalsorrend (Adjon meg vesszővel elválasztott oldalszámokat vagy függvényeket, például 2n+1):
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=Ugrás
|
goToPage=Ugrás
|
||||||
true=Igaz
|
true=Igaz
|
||||||
false=Hamis
|
false=Hamis
|
||||||
@@ -20,7 +19,6 @@ save=Mentés
|
|||||||
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
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=Unatkozol?
|
bored=Unatkozol?
|
||||||
alphabet=Ábécé
|
alphabet=Ábécé
|
||||||
downloadPdf=PDF letöltése
|
downloadPdf=PDF letöltése
|
||||||
@@ -44,7 +42,7 @@ red=Piros
|
|||||||
green=Zöld
|
green=Zöld
|
||||||
blue=Kék
|
blue=Kék
|
||||||
custom=Egyedi...
|
custom=Egyedi...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -121,8 +119,8 @@ account.title=Fiókbeállítások
|
|||||||
account.accountSettings=Fiókbeállítások
|
account.accountSettings=Fiókbeállítások
|
||||||
account.adminSettings=Admin Beállítások - Felhasználók megtekintése és hozzáadása
|
account.adminSettings=Admin Beállítások - Felhasználók megtekintése és hozzáadása
|
||||||
account.userControlSettings=Felhasználói vezérlési beállítások
|
account.userControlSettings=Felhasználói vezérlési beállítások
|
||||||
account.changeUsername=Felhasználónév módosítása
|
account.changeUsername=Új felhasználónév
|
||||||
account.newUsername=Új felhasználónév
|
account.changeUsername=Új felhasználónév
|
||||||
account.password=Megerősítő jelszó
|
account.password=Megerősítő jelszó
|
||||||
account.oldPassword=Régi jelszó
|
account.oldPassword=Régi jelszó
|
||||||
account.newPassword=Új jelszó
|
account.newPassword=Új jelszó
|
||||||
@@ -364,11 +362,11 @@ PdfToSinglePage.tags=egyetlen lap
|
|||||||
|
|
||||||
home.showJS.title=JavaScript megjelenítése
|
home.showJS.title=JavaScript megjelenítése
|
||||||
home.showJS.desc=Keres és megjelenít bármilyen JS-t, amit beinjektáltak a PDF-be
|
home.showJS.desc=Keres és megjelenít bármilyen JS-t, amit beinjektáltak a PDF-be
|
||||||
showJS.tags=JS
|
showJS.tags=Elrejt,Elrejtés,kitakarás,fekete,fekete,marker,elrejtett
|
||||||
|
|
||||||
home.autoRedact.title=Automatikus Elrejtés
|
home.autoRedact.title=Automatikus Elrejtés
|
||||||
home.autoRedact.desc=Automatikusan kitakar (elrejt) szöveget egy PDF-ben az input szöveg alapján
|
home.autoRedact.desc=Automatikusan kitakar (elrejt) szöveget egy PDF-ben az input szöveg alapján
|
||||||
autoRedact.tags=Elrejt,Elrejtés,kitakarás,fekete,fekete,marker,elrejtett
|
showJS.tags=Elrejt,Elrejtés,kitakarás,fekete,fekete,marker,elrejtett
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF to CSV
|
||||||
home.tableExtraxt.desc=Táblázatok kinyerése a PDF-ből CSV formátumra konvertálva
|
home.tableExtraxt.desc=Táblázatok kinyerése a PDF-ből CSV formátumra konvertálva
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=Érzékeny tartalom eltávolítása
|
|||||||
autoRedact.header=Érzékeny tartalom eltávolítása
|
autoRedact.header=Érzékeny tartalom eltávolítása
|
||||||
autoRedact.colorLabel=Szín
|
autoRedact.colorLabel=Szín
|
||||||
autoRedact.textsToRedactLabel=Kivonand szövegek (sorokra bontva)
|
autoRedact.textsToRedactLabel=Kivonand szövegek (sorokra bontva)
|
||||||
autoRedact.textsToRedactPlaceholder=például \nBizalmas \nLegfelsőbb Titok
|
autoRedact.textsToRedactPlaceholder=például \nBizalmas \nLegfelsőbb Titok
|
||||||
autoRedact.useRegexLabel=Reguláris kifejezés használata
|
autoRedact.useRegexLabel=Reguláris kifejezés használata
|
||||||
autoRedact.wholeWordSearchLabel=Teljes szó keresése
|
autoRedact.wholeWordSearchLabel=Teljes szó keresése
|
||||||
autoRedact.customPaddingLabel=Egyedi extra kitöltés
|
autoRedact.customPaddingLabel=Egyedi extra kitöltés
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=PDF tisztítása
|
sanitizePDF.title=PDF tisztítása
|
||||||
sanitizePDF.header=PDF fájl megtisztítása
|
sanitizePDF.header=PDF fájl megtisztítása
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=A fotók minimális kontúrterületének beállí
|
|||||||
ScannerImageSplit.selectText.9=Keret mérete:
|
ScannerImageSplit.selectText.9=Keret mérete:
|
||||||
ScannerImageSplit.selectText.10=A hozzáadott és eltávolított keret méretének beállítása a fehér keretek elkerülése érdekében a kimeneten (alapértelmezett: 1).
|
ScannerImageSplit.selectText.10=A hozzáadott és eltávolított keret méretének beállítása a fehér keretek elkerülése érdekében a kimeneten (alapértelmezett: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / szkennelés tisztázása
|
ocr.title=OCR / szkennelés tisztázása
|
||||||
ocr.header=Szkennelés tisztázása / OCR (Optikai karakterfelismerés)
|
ocr.header=Szkennelés tisztázása / OCR (Optikai karakterfelismerés)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=Automatikus forgatás PDF
|
|||||||
imageToPDF.selectText.3=Több fájl logika (csak akkor engedélyezett, ha több képpel dolgozik)
|
imageToPDF.selectText.3=Több fájl logika (csak akkor engedélyezett, ha több képpel dolgozik)
|
||||||
imageToPDF.selectText.4=Egyesítse egyetlen PDF-fé
|
imageToPDF.selectText.4=Egyesítse egyetlen PDF-fé
|
||||||
imageToPDF.selectText.5=Átalakítás különálló PDF-fé
|
imageToPDF.selectText.5=Átalakítás különálló PDF-fé
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF képpé alakítása
|
pdfToImage.title=PDF képpé alakítása
|
||||||
pdfToImage.header=PDF képpé alakítása
|
pdfToImage.header=PDF képpé alakítása
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=Kulcsszavak:
|
|||||||
changeMetadata.modDate=Módosítás dátuma (éééé/hh/nn ÓÓ:PP:MM):
|
changeMetadata.modDate=Módosítás dátuma (éééé/hh/nn ÓÓ:PP:MM):
|
||||||
changeMetadata.producer=Készítő:
|
changeMetadata.producer=Készítő:
|
||||||
changeMetadata.subject=Tárgy:
|
changeMetadata.subject=Tárgy:
|
||||||
|
changeMetadata.title=Cím:
|
||||||
changeMetadata.trapped=Trapped:
|
changeMetadata.trapped=Trapped:
|
||||||
changeMetadata.selectText.4=Egyéb metaadatok:
|
changeMetadata.selectText.4=Egyéb metaadatok:
|
||||||
changeMetadata.selectText.5=Egyedi metaadatbejegyzés hozzáadása
|
changeMetadata.selectText.5=Egyedi metaadatbejegyzés hozzáadása
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl=right to left)
|
# the direction that the language is written (ltr=left to right, rtl=right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=Pilih Gambar
|
|||||||
genericSubmit=Kirim
|
genericSubmit=Kirim
|
||||||
processTimeWarning=Peringatan: Proses ini dapat memakan waktu hingga satu menit, tergantung pada ukuran berkas
|
processTimeWarning=Peringatan: Proses ini dapat memakan waktu hingga satu menit, tergantung pada ukuran berkas
|
||||||
pageOrderPrompt=Urutan Halaman Khusus (Masukkan daftar nomor halaman yang dipisahkan dengan koma atau Fungsi seperti 2n + 1) :
|
pageOrderPrompt=Urutan Halaman Khusus (Masukkan daftar nomor halaman yang dipisahkan dengan koma atau Fungsi seperti 2n + 1) :
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=Ke
|
goToPage=Ke
|
||||||
true=Benar
|
true=Benar
|
||||||
false=Salah
|
false=Salah
|
||||||
@@ -20,7 +19,6 @@ save=Simpan
|
|||||||
close=Tutup
|
close=Tutup
|
||||||
filesSelected=berkas dipilih
|
filesSelected=berkas dipilih
|
||||||
noFavourites=Tidak ada favorit yang ditambahkan
|
noFavourites=Tidak ada favorit yang ditambahkan
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=Bosan Menunggu?
|
bored=Bosan Menunggu?
|
||||||
alphabet=Abjad
|
alphabet=Abjad
|
||||||
downloadPdf=Unduh PDF
|
downloadPdf=Unduh PDF
|
||||||
@@ -44,7 +42,7 @@ red=Merah
|
|||||||
green=Hijau
|
green=Hijau
|
||||||
blue=Biru
|
blue=Biru
|
||||||
custom=Kustom...
|
custom=Kustom...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=Pengaturan Akun
|
|||||||
account.adminSettings=Pengaturan Admin - Melihat dan Menambahkan Pengguna
|
account.adminSettings=Pengaturan Admin - Melihat dan Menambahkan Pengguna
|
||||||
account.userControlSettings=Pengaturan Kontrol Pengguna
|
account.userControlSettings=Pengaturan Kontrol Pengguna
|
||||||
account.changeUsername=Ubah Nama Pengguna
|
account.changeUsername=Ubah Nama Pengguna
|
||||||
account.newUsername=Nama pengguna baru
|
account.changeUsername=Ubah Nama Pengguna
|
||||||
account.password=Konfirmasi Kata sandi
|
account.password=Konfirmasi Kata sandi
|
||||||
account.oldPassword=Kata sandi lama
|
account.oldPassword=Kata sandi lama
|
||||||
account.newPassword=Kata Sandi Baru
|
account.newPassword=Kata Sandi Baru
|
||||||
@@ -364,11 +362,11 @@ PdfToSinglePage.tags=halaman tunggal
|
|||||||
|
|
||||||
home.showJS.title=Tampilkan Javascript
|
home.showJS.title=Tampilkan Javascript
|
||||||
home.showJS.desc=Mencari dan menampilkan JS apa pun yang disuntikkan ke dalam PDF
|
home.showJS.desc=Mencari dan menampilkan JS apa pun yang disuntikkan ke dalam PDF
|
||||||
showJS.tags=JS
|
showJS.tags=Hapus, Sembunyikan, padamkan, hitam, hitam, penanda, tersembunyi
|
||||||
|
|
||||||
home.autoRedact.title=Redaksional Otomatis
|
home.autoRedact.title=Redaksional Otomatis
|
||||||
home.autoRedact.desc=Menyunting Otomatis (Menghitamkan) teks dalam PDF berdasarkan teks masukan
|
home.autoRedact.desc=Menyunting Otomatis (Menghitamkan) teks dalam PDF berdasarkan teks masukan
|
||||||
autoRedact.tags=Hapus, Sembunyikan, padamkan, hitam, hitam, penanda, tersembunyi
|
showJS.tags=Hapus, Sembunyikan, padamkan, hitam, hitam, penanda, tersembunyi
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF ke CSV
|
home.tableExtraxt.title=PDF ke CSV
|
||||||
home.tableExtraxt.desc=Mengekstrak Tabel dari PDF yang mengonversinya menjadi CSV
|
home.tableExtraxt.desc=Mengekstrak Tabel dari PDF yang mengonversinya menjadi CSV
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=Bersihkan PDF
|
sanitizePDF.title=Bersihkan PDF
|
||||||
sanitizePDF.header=Membersihkan berkas PDF
|
sanitizePDF.header=Membersihkan berkas PDF
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=Menetapkan ambang batas area kontur minimum untuk
|
|||||||
ScannerImageSplit.selectText.9=Ukuran Batas:
|
ScannerImageSplit.selectText.9=Ukuran Batas:
|
||||||
ScannerImageSplit.selectText.10=Menetapkan ukuran batas yang ditambahkan dan dihapus untuk mencegah batas putih pada output (default: 1).
|
ScannerImageSplit.selectText.10=Menetapkan ukuran batas yang ditambahkan dan dihapus untuk mencegah batas putih pada output (default: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / Pembersihan Pindaian
|
ocr.title=OCR / Pembersihan Pindaian
|
||||||
ocr.header=Pemindaian Pembersihan / OCR (Pengenalan Karakter Optik)
|
ocr.header=Pemindaian Pembersihan / OCR (Pengenalan Karakter Optik)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=Putar PDF secara otomatis
|
|||||||
imageToPDF.selectText.3=Logika multi berkas (Hanya diaktifkan jika bekerja dengan banyak gambar)
|
imageToPDF.selectText.3=Logika multi berkas (Hanya diaktifkan jika bekerja dengan banyak gambar)
|
||||||
imageToPDF.selectText.4=Gabungkan menjadi satu PDF
|
imageToPDF.selectText.4=Gabungkan menjadi satu PDF
|
||||||
imageToPDF.selectText.5=Mengonversi ke PDF yang terpisah
|
imageToPDF.selectText.5=Mengonversi ke PDF yang terpisah
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF ke Gambar
|
pdfToImage.title=PDF ke Gambar
|
||||||
pdfToImage.header=PDF ke Gambar
|
pdfToImage.header=PDF ke Gambar
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=Kata kunci:
|
|||||||
changeMetadata.modDate=Tangal Diupdate (yyyy/MM/dd HH:mm:ss):
|
changeMetadata.modDate=Tangal Diupdate (yyyy/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=Produser:
|
changeMetadata.producer=Produser:
|
||||||
changeMetadata.subject=Subjek:
|
changeMetadata.subject=Subjek:
|
||||||
|
changeMetadata.title=Judul:
|
||||||
changeMetadata.trapped=Terperangkap:
|
changeMetadata.trapped=Terperangkap:
|
||||||
changeMetadata.selectText.4=Metadata Lain-lain:
|
changeMetadata.selectText.4=Metadata Lain-lain:
|
||||||
changeMetadata.selectText.5=Tambahkan Metadata Khusus
|
changeMetadata.selectText.5=Tambahkan Metadata Khusus
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=Scegli immagine/i
|
|||||||
genericSubmit=Invia
|
genericSubmit=Invia
|
||||||
processTimeWarning=Nota: Questo processo potrebbe richiedere fino a un minuto in base alla dimensione dei file
|
processTimeWarning=Nota: Questo processo potrebbe richiedere fino a un minuto in base alla dimensione dei file
|
||||||
pageOrderPrompt=Ordine delle pagine (inserisci una lista di numeri separati da virgola):
|
pageOrderPrompt=Ordine delle pagine (inserisci una lista di numeri separati da virgola):
|
||||||
pageSelectionPrompt=Selezione pagina personalizzata (inserisci un elenco separato da virgole di numeri di pagina 1,5,6 o funzioni come 2n+1) :
|
|
||||||
goToPage=Vai
|
goToPage=Vai
|
||||||
true=Vero
|
true=Vero
|
||||||
false=Falso
|
false=Falso
|
||||||
@@ -20,7 +19,6 @@ save=Salva
|
|||||||
close=Chiudi
|
close=Chiudi
|
||||||
filesSelected=file selezionati
|
filesSelected=file selezionati
|
||||||
noFavourites=Nessun preferito
|
noFavourites=Nessun preferito
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=Stanco di aspettare?
|
bored=Stanco di aspettare?
|
||||||
alphabet=Alfabeto
|
alphabet=Alfabeto
|
||||||
downloadPdf=Scarica PDF
|
downloadPdf=Scarica PDF
|
||||||
@@ -121,8 +119,8 @@ account.title=Impostazioni Account
|
|||||||
account.accountSettings=Impostazioni Account
|
account.accountSettings=Impostazioni Account
|
||||||
account.adminSettings=Impostazioni Admin - Aggiungi e Vedi Utenti
|
account.adminSettings=Impostazioni Admin - Aggiungi e Vedi Utenti
|
||||||
account.userControlSettings=Impostazioni Utente
|
account.userControlSettings=Impostazioni Utente
|
||||||
account.changeUsername=Cambia nome utente
|
account.changeUsername=Cambia Username
|
||||||
account.newUsername=Nuovo nome utente
|
account.changeUsername=Cambia Username
|
||||||
account.password=Conferma Password
|
account.password=Conferma Password
|
||||||
account.oldPassword=Vecchia Password
|
account.oldPassword=Vecchia Password
|
||||||
account.newPassword=Nuova Password
|
account.newPassword=Nuova Password
|
||||||
@@ -368,7 +366,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
|
showJS.tags=JS
|
||||||
|
|
||||||
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
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Sostituisci la coordinata Y
|
|||||||
AddStampRequest.customMargin=Margine personalizzato
|
AddStampRequest.customMargin=Margine personalizzato
|
||||||
AddStampRequest.customColor=Colore testo personalizzato
|
AddStampRequest.customColor=Colore testo personalizzato
|
||||||
AddStampRequest.submit=Invia
|
AddStampRequest.submit=Invia
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=Pulire PDF
|
sanitizePDF.title=Pulire PDF
|
||||||
sanitizePDF.header=Pulisci un file PDF
|
sanitizePDF.header=Pulisci un file PDF
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=Imposta l'area minima del contorno di una foto
|
|||||||
ScannerImageSplit.selectText.9=Spessore bordo:
|
ScannerImageSplit.selectText.9=Spessore bordo:
|
||||||
ScannerImageSplit.selectText.10=Imposta lo spessore del bordo aggiunto o rimosso per prevenire bordi bianchi nel risultato (predefinito: 1).
|
ScannerImageSplit.selectText.10=Imposta lo spessore del bordo aggiunto o rimosso per prevenire bordi bianchi nel risultato (predefinito: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / Pulisci scansioni
|
ocr.title=OCR / Pulisci scansioni
|
||||||
ocr.header=Pulisci scansioni / OCR (riconoscimento testo)
|
ocr.header=Pulisci scansioni / OCR (riconoscimento testo)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=Ruota automaticamente PDF
|
|||||||
imageToPDF.selectText.3=Logica multi-file (funziona solo se ci sono più immagini)
|
imageToPDF.selectText.3=Logica multi-file (funziona solo se ci sono più immagini)
|
||||||
imageToPDF.selectText.4=Unisci in un unico PDF
|
imageToPDF.selectText.4=Unisci in un unico PDF
|
||||||
imageToPDF.selectText.5=Converti in PDF separati
|
imageToPDF.selectText.5=Converti in PDF separati
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF a immagine
|
pdfToImage.title=PDF a immagine
|
||||||
pdfToImage.header=PDF a immagine
|
pdfToImage.header=PDF a immagine
|
||||||
@@ -869,6 +866,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.title=Titolo:
|
||||||
changeMetadata.trapped=Trapped:
|
changeMetadata.trapped=Trapped:
|
||||||
changeMetadata.selectText.4=Altre proprietà:
|
changeMetadata.selectText.4=Altre proprietà:
|
||||||
changeMetadata.selectText.5=Aggiungi proprietà personalizzata:
|
changeMetadata.selectText.5=Aggiungi proprietà personalizzata:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=画像を選択
|
|||||||
genericSubmit=送信
|
genericSubmit=送信
|
||||||
processTimeWarning=警告:この処理はファイルサイズによって1分程度かかることがあります
|
processTimeWarning=警告:この処理はファイルサイズによって1分程度かかることがあります
|
||||||
pageOrderPrompt=ページ順序 (ページ番号をカンマ区切り又は2n+1のような関数で入力):
|
pageOrderPrompt=ページ順序 (ページ番号をカンマ区切り又は2n+1のような関数で入力):
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=移動
|
goToPage=移動
|
||||||
true=True
|
true=True
|
||||||
false=False
|
false=False
|
||||||
@@ -20,7 +19,6 @@ save=保存
|
|||||||
close=閉じる
|
close=閉じる
|
||||||
filesSelected=選択されたファイル
|
filesSelected=選択されたファイル
|
||||||
noFavourites=お気に入りはありません
|
noFavourites=お気に入りはありません
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=待ち時間が退屈
|
bored=待ち時間が退屈
|
||||||
alphabet=\u30A2\u30EB\u30D5\u30A1\u30D9\u30C3\u30C8
|
alphabet=\u30A2\u30EB\u30D5\u30A1\u30D9\u30C3\u30C8
|
||||||
downloadPdf=PDFをダウンロード
|
downloadPdf=PDFをダウンロード
|
||||||
@@ -44,7 +42,7 @@ red=赤
|
|||||||
green=緑
|
green=緑
|
||||||
blue=青
|
blue=青
|
||||||
custom=カスタム...
|
custom=カスタム...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=アカウント設定
|
|||||||
account.adminSettings=管理者設定 - ユーザーの表示と追加
|
account.adminSettings=管理者設定 - ユーザーの表示と追加
|
||||||
account.userControlSettings=ユーザー制御設定
|
account.userControlSettings=ユーザー制御設定
|
||||||
account.changeUsername=ユーザー名を変更
|
account.changeUsername=ユーザー名を変更
|
||||||
account.newUsername=新しいユーザーネーム
|
account.changeUsername=ユーザー名を変更
|
||||||
account.password=確認用パスワード
|
account.password=確認用パスワード
|
||||||
account.oldPassword=旧パスワード
|
account.oldPassword=旧パスワード
|
||||||
account.newPassword=新パスワード
|
account.newPassword=新パスワード
|
||||||
@@ -368,7 +366,7 @@ showJS.tags=JS
|
|||||||
|
|
||||||
home.autoRedact.title=自動塗りつぶし
|
home.autoRedact.title=自動塗りつぶし
|
||||||
home.autoRedact.desc=入力したテキストに基づいてPDF内のテキストを自動で塗りつぶし(黒塗り)します。
|
home.autoRedact.desc=入力したテキストに基づいてPDF内のテキストを自動で塗りつぶし(黒塗り)します。
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
showJS.tags=JS
|
||||||
|
|
||||||
home.tableExtraxt.title=PDFをCSVに変換
|
home.tableExtraxt.title=PDFをCSVに変換
|
||||||
home.tableExtraxt.desc=PDFから表を抽出しCSVに変換します。
|
home.tableExtraxt.desc=PDFから表を抽出しCSVに変換します。
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=自動塗りつぶし
|
|||||||
autoRedact.header=自動塗りつぶし
|
autoRedact.header=自動塗りつぶし
|
||||||
autoRedact.colorLabel=カラー
|
autoRedact.colorLabel=カラー
|
||||||
autoRedact.textsToRedactLabel=編集するテキスト (line-separated)
|
autoRedact.textsToRedactLabel=編集するテキスト (line-separated)
|
||||||
autoRedact.textsToRedactPlaceholder=例 \n機密 \n極秘
|
autoRedact.textsToRedactPlaceholder=例 \n機密 \n極秘
|
||||||
autoRedact.useRegexLabel=正規表現を使用する
|
autoRedact.useRegexLabel=正規表現を使用する
|
||||||
autoRedact.wholeWordSearchLabel=単語単位の検索
|
autoRedact.wholeWordSearchLabel=単語単位の検索
|
||||||
autoRedact.customPaddingLabel=追加の余白
|
autoRedact.customPaddingLabel=追加の余白
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=PDFをサニタイズ
|
sanitizePDF.title=PDFをサニタイズ
|
||||||
sanitizePDF.header=PDFファイルをサニタイズ
|
sanitizePDF.header=PDFファイルをサニタイズ
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=画像の最小の輪郭面積のしきい値を
|
|||||||
ScannerImageSplit.selectText.9=境界線サイズ:
|
ScannerImageSplit.selectText.9=境界線サイズ:
|
||||||
ScannerImageSplit.selectText.10=出力に白い縁取りが出ないように追加・削除される境界線の大きさを設定 (初期値:1)。
|
ScannerImageSplit.selectText.10=出力に白い縁取りが出ないように追加・削除される境界線の大きさを設定 (初期値:1)。
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / クリーンアップ
|
ocr.title=OCR / クリーンアップ
|
||||||
ocr.header=クリーンアップ / OCR (光学式文字認識)
|
ocr.header=クリーンアップ / OCR (光学式文字認識)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=PDFの自動回転
|
|||||||
imageToPDF.selectText.3=マルチファイルの処理 (複数の画像を操作する場合に有効になります)
|
imageToPDF.selectText.3=マルチファイルの処理 (複数の画像を操作する場合に有効になります)
|
||||||
imageToPDF.selectText.4=1つのPDFに結合
|
imageToPDF.selectText.4=1つのPDFに結合
|
||||||
imageToPDF.selectText.5=個別のPDFに変換
|
imageToPDF.selectText.5=個別のPDFに変換
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDFを画像に変換
|
pdfToImage.title=PDFを画像に変換
|
||||||
pdfToImage.header=PDFを画像に変換
|
pdfToImage.header=PDFを画像に変換
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=キーワード:
|
|||||||
changeMetadata.modDate=変更日 (yyyy/MM/dd HH:mm:ss):
|
changeMetadata.modDate=変更日 (yyyy/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=プロデューサー:
|
changeMetadata.producer=プロデューサー:
|
||||||
changeMetadata.subject=主題:
|
changeMetadata.subject=主題:
|
||||||
|
changeMetadata.title=タイトル:
|
||||||
changeMetadata.trapped=トラッピング:
|
changeMetadata.trapped=トラッピング:
|
||||||
changeMetadata.selectText.4=その他のメタデータ:
|
changeMetadata.selectText.4=その他のメタデータ:
|
||||||
changeMetadata.selectText.5=カスタムメタデータの追加
|
changeMetadata.selectText.5=カスタムメタデータの追加
|
||||||
@@ -970,4 +968,3 @@ licenses.module=モジュール
|
|||||||
licenses.version=バージョン
|
licenses.version=バージョン
|
||||||
licenses.license=ライセンス
|
licenses.license=ライセンス
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=이미지 선택
|
|||||||
genericSubmit=확인
|
genericSubmit=확인
|
||||||
processTimeWarning=경고: 파일 크기에 따라 1분 정도 소요될 수 있습니다
|
processTimeWarning=경고: 파일 크기에 따라 1분 정도 소요될 수 있습니다
|
||||||
pageOrderPrompt=페이지 순서(쉼표로 구분된 페이지 번호 목록 입력):
|
pageOrderPrompt=페이지 순서(쉼표로 구분된 페이지 번호 목록 입력):
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=이동
|
goToPage=이동
|
||||||
true=참
|
true=참
|
||||||
false=거짓
|
false=거짓
|
||||||
@@ -20,7 +19,6 @@ save=저장
|
|||||||
close=닫기
|
close=닫기
|
||||||
filesSelected=개 파일 선택됨
|
filesSelected=개 파일 선택됨
|
||||||
noFavourites=즐겨찾기 없음
|
noFavourites=즐겨찾기 없음
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=기다리는 게 지루하신가요?
|
bored=기다리는 게 지루하신가요?
|
||||||
alphabet=\uC54C\uD30C\uBCB3
|
alphabet=\uC54C\uD30C\uBCB3
|
||||||
downloadPdf=PDF 다운로드
|
downloadPdf=PDF 다운로드
|
||||||
@@ -44,7 +42,7 @@ red=Red
|
|||||||
green=Green
|
green=Green
|
||||||
blue=Blue
|
blue=Blue
|
||||||
custom=Custom...
|
custom=Custom...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=계정 설정
|
|||||||
account.adminSettings=관리자 설정 - 사용자 추가 및 확인
|
account.adminSettings=관리자 설정 - 사용자 추가 및 확인
|
||||||
account.userControlSettings=User Control Settings
|
account.userControlSettings=User Control Settings
|
||||||
account.changeUsername=사용자명 변경
|
account.changeUsername=사용자명 변경
|
||||||
account.newUsername=새 사용자 이름
|
account.changeUsername=사용자명 변경
|
||||||
account.password=Confirmation Password
|
account.password=Confirmation Password
|
||||||
account.oldPassword=이전 비밀번호
|
account.oldPassword=이전 비밀번호
|
||||||
account.newPassword=새 비밀번호
|
account.newPassword=새 비밀번호
|
||||||
@@ -368,7 +366,7 @@ showJS.tags=JS
|
|||||||
|
|
||||||
home.autoRedact.title=자동 검열
|
home.autoRedact.title=자동 검열
|
||||||
home.autoRedact.desc=PDF 문서에서 입력된 텍스트들을 자동으로 검열(모자이크)합니다.
|
home.autoRedact.desc=PDF 문서에서 입력된 텍스트들을 자동으로 검열(모자이크)합니다.
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
showJS.tags=JS
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF to CSV
|
||||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=자동 검열
|
|||||||
autoRedact.header=자동 검열
|
autoRedact.header=자동 검열
|
||||||
autoRedact.colorLabel=색상
|
autoRedact.colorLabel=색상
|
||||||
autoRedact.textsToRedactLabel=검열할 텍스트 (줄바꿈으로 구분)
|
autoRedact.textsToRedactLabel=검열할 텍스트 (줄바꿈으로 구분)
|
||||||
autoRedact.textsToRedactPlaceholder=예: \n비밀 \n일급 기밀
|
autoRedact.textsToRedactPlaceholder=예: \n비밀 \n일급 기밀
|
||||||
autoRedact.useRegexLabel=정규표현식 사용
|
autoRedact.useRegexLabel=정규표현식 사용
|
||||||
autoRedact.wholeWordSearchLabel=전체 단어 일치
|
autoRedact.wholeWordSearchLabel=전체 단어 일치
|
||||||
autoRedact.customPaddingLabel=추가 윤곽(패딩)
|
autoRedact.customPaddingLabel=추가 윤곽(패딩)
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=PDF 정제
|
sanitizePDF.title=PDF 정제
|
||||||
sanitizePDF.header=PDF 문서 정제
|
sanitizePDF.header=PDF 문서 정제
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=사진의 최소 윤곽선 영역 임계값을
|
|||||||
ScannerImageSplit.selectText.9=테두리 크기:
|
ScannerImageSplit.selectText.9=테두리 크기:
|
||||||
ScannerImageSplit.selectText.10=출력에서 흰색 테두리를 방지하기 위해 추가 및 제거되는 테두리의 크기를 설정합니다(기본값: 1).
|
ScannerImageSplit.selectText.10=출력에서 흰색 테두리를 방지하기 위해 추가 및 제거되는 테두리의 크기를 설정합니다(기본값: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / 깔끔하게 스캔
|
ocr.title=OCR / 깔끔하게 스캔
|
||||||
ocr.header=OCR (광학 문자 인식) / 깔끔하게 스캔
|
ocr.header=OCR (광학 문자 인식) / 깔끔하게 스캔
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=PDF 자동 회전
|
|||||||
imageToPDF.selectText.3=다중 파일 처리 방법 (여러 이미지로 작업하는 경우에만 활성화됨)
|
imageToPDF.selectText.3=다중 파일 처리 방법 (여러 이미지로 작업하는 경우에만 활성화됨)
|
||||||
imageToPDF.selectText.4=단일 PDF로 병합
|
imageToPDF.selectText.4=단일 PDF로 병합
|
||||||
imageToPDF.selectText.5=별도의 PDF로 변환
|
imageToPDF.selectText.5=별도의 PDF로 변환
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF to Image
|
pdfToImage.title=PDF to Image
|
||||||
pdfToImage.header=PDF 문서를 이미지로 변환
|
pdfToImage.header=PDF 문서를 이미지로 변환
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=키워드:
|
|||||||
changeMetadata.modDate=수정일 (yyyy/MM/dd HH:mm:ss):
|
changeMetadata.modDate=수정일 (yyyy/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=생성자:
|
changeMetadata.producer=생성자:
|
||||||
changeMetadata.subject=주제:
|
changeMetadata.subject=주제:
|
||||||
|
changeMetadata.title=제목:
|
||||||
changeMetadata.trapped=잠긴 상태:
|
changeMetadata.trapped=잠긴 상태:
|
||||||
changeMetadata.selectText.4=기타 메타데이터:
|
changeMetadata.selectText.4=기타 메타데이터:
|
||||||
changeMetadata.selectText.5=사용자 정의 메타데이터 항목 추가
|
changeMetadata.selectText.5=사용자 정의 메타데이터 항목 추가
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=Selecteer afbeelding(en)
|
|||||||
genericSubmit=Indienen
|
genericSubmit=Indienen
|
||||||
processTimeWarning=Waarschuwing: Dit proces kan tot een minuut duren afhankelijk van de bestandsgrootte
|
processTimeWarning=Waarschuwing: Dit proces kan tot een minuut duren afhankelijk van de bestandsgrootte
|
||||||
pageOrderPrompt=Aangepaste pagina volgorde (Voer een komma-gescheiden lijst van paginanummers of functies in, zoals 2n+1) :
|
pageOrderPrompt=Aangepaste pagina volgorde (Voer een komma-gescheiden lijst van paginanummers of functies in, zoals 2n+1) :
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=Ga
|
goToPage=Ga
|
||||||
true=Waar
|
true=Waar
|
||||||
false=Onwaar
|
false=Onwaar
|
||||||
@@ -20,7 +19,6 @@ save=Opslaan
|
|||||||
close=Sluiten
|
close=Sluiten
|
||||||
filesSelected=Bestanden geselecteerd
|
filesSelected=Bestanden geselecteerd
|
||||||
noFavourites=Geen favorieten toegevoegd
|
noFavourites=Geen favorieten toegevoegd
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=Verveeld met wachten?
|
bored=Verveeld met wachten?
|
||||||
alphabet=Alfabet
|
alphabet=Alfabet
|
||||||
downloadPdf=Download PDF
|
downloadPdf=Download PDF
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=Account instellingen
|
|||||||
account.adminSettings=Beheerdersinstellingen - Gebruikers bekijken en toevoegen
|
account.adminSettings=Beheerdersinstellingen - Gebruikers bekijken en toevoegen
|
||||||
account.userControlSettings=Gebruikerscontrole instellingen
|
account.userControlSettings=Gebruikerscontrole instellingen
|
||||||
account.changeUsername=Wijzig gebruikersnaam
|
account.changeUsername=Wijzig gebruikersnaam
|
||||||
account.newUsername=Nieuwe gebruikersnaam
|
account.changeUsername=Wijzig gebruikersnaam
|
||||||
account.password=Bevestigingswachtwoord
|
account.password=Bevestigingswachtwoord
|
||||||
account.oldPassword=Oud wachtwoord
|
account.oldPassword=Oud wachtwoord
|
||||||
account.newPassword=Nieuw wachtwoord
|
account.newPassword=Nieuw wachtwoord
|
||||||
@@ -368,7 +366,7 @@ showJS.tags=JS
|
|||||||
|
|
||||||
home.autoRedact.title=Automatisch censureren
|
home.autoRedact.title=Automatisch censureren
|
||||||
home.autoRedact.desc=Automatisch censureren (onherkenbaar maken) van tekst in een PDF op basis van ingevoerde tekst
|
home.autoRedact.desc=Automatisch censureren (onherkenbaar maken) van tekst in een PDF op basis van ingevoerde tekst
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
showJS.tags=JS
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF naar CSV
|
home.tableExtraxt.title=PDF naar CSV
|
||||||
home.tableExtraxt.desc=Haalt tabellen uit een PDF en converteert ze naar CSV
|
home.tableExtraxt.desc=Haalt tabellen uit een PDF en converteert ze naar CSV
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=Automatisch censureren
|
|||||||
autoRedact.header=Automatisch censureren
|
autoRedact.header=Automatisch censureren
|
||||||
autoRedact.colorLabel=Kleur
|
autoRedact.colorLabel=Kleur
|
||||||
autoRedact.textsToRedactLabel=Tekst om te censureren (gescheiden door regels)
|
autoRedact.textsToRedactLabel=Tekst om te censureren (gescheiden door regels)
|
||||||
autoRedact.textsToRedactPlaceholder=bijv.\Vertrouwelijk \nTopgeheim
|
autoRedact.textsToRedactPlaceholder=bijv.\Vertrouwelijk \nTopgeheim
|
||||||
autoRedact.useRegexLabel=Gebruik regex
|
autoRedact.useRegexLabel=Gebruik regex
|
||||||
autoRedact.wholeWordSearchLabel=Zoeken op hele woorden
|
autoRedact.wholeWordSearchLabel=Zoeken op hele woorden
|
||||||
autoRedact.customPaddingLabel=Aangepaste extra ruimtevulling
|
autoRedact.customPaddingLabel=Aangepaste extra ruimtevulling
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Y coördinaat overschrijven
|
|||||||
AddStampRequest.customMargin=Aangepaste marge
|
AddStampRequest.customMargin=Aangepaste marge
|
||||||
AddStampRequest.customColor=Aangepaste tekstkleur
|
AddStampRequest.customColor=Aangepaste tekstkleur
|
||||||
AddStampRequest.submit=Indienen
|
AddStampRequest.submit=Indienen
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=PDF opschonen
|
sanitizePDF.title=PDF opschonen
|
||||||
sanitizePDF.header=Een PDF-bestand opschonen
|
sanitizePDF.header=Een PDF-bestand opschonen
|
||||||
@@ -522,7 +519,7 @@ addPageNumbers.selectText.4=Startnummer
|
|||||||
addPageNumbers.selectText.5=Pagina's om te nummeren
|
addPageNumbers.selectText.5=Pagina's om te nummeren
|
||||||
addPageNumbers.selectText.6=Aangepaste tekst
|
addPageNumbers.selectText.6=Aangepaste tekst
|
||||||
addPageNumbers.customTextDesc=Aangepaste tekst
|
addPageNumbers.customTextDesc=Aangepaste tekst
|
||||||
addPageNumbers.numberPagesDesc=Welke pagina's genummerd moeten worden, standaard 'all', accepteert ook 1-5 of 2,5,9 etc
|
addPageNumbers.numberPagesDesc=Welke pagina's genummerd moeten worden, standaard 'all', accepteert ook 1-5 of 2,5,9 etc
|
||||||
addPageNumbers.customNumberDesc=Standaard {n}, accepteert ook 'Pagina {n} van {total}', 'Tekst-{n}', '{filename}-{n}
|
addPageNumbers.customNumberDesc=Standaard {n}, accepteert ook 'Pagina {n} van {total}', 'Tekst-{n}', '{filename}-{n}
|
||||||
addPageNumbers.submit=Paginanummers toevoegen
|
addPageNumbers.submit=Paginanummers toevoegen
|
||||||
|
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=Stelt de minimale contour oppervlakte drempel in
|
|||||||
ScannerImageSplit.selectText.9=Randgrootte:
|
ScannerImageSplit.selectText.9=Randgrootte:
|
||||||
ScannerImageSplit.selectText.10=Stelt de grootte van de toegevoegde en verwijderde rand in om witte randen in de uitvoer te voorkomen (standaard: 1).
|
ScannerImageSplit.selectText.10=Stelt de grootte van de toegevoegde en verwijderde rand in om witte randen in de uitvoer te voorkomen (standaard: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / Scan opruimen
|
ocr.title=OCR / Scan opruimen
|
||||||
ocr.header=Scans opruimen / OCR (Optical Character Recognition)
|
ocr.header=Scans opruimen / OCR (Optical Character Recognition)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=PDF automatisch draaien
|
|||||||
imageToPDF.selectText.3=Meervoudige bestandslogica (Alleen ingeschakeld bij werken met meerdere afbeeldingen)
|
imageToPDF.selectText.3=Meervoudige bestandslogica (Alleen ingeschakeld bij werken met meerdere afbeeldingen)
|
||||||
imageToPDF.selectText.4=Voeg samen in één PDF
|
imageToPDF.selectText.4=Voeg samen in één PDF
|
||||||
imageToPDF.selectText.5=Zet om naar afzonderlijke PDF's
|
imageToPDF.selectText.5=Zet om naar afzonderlijke PDF's
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF naar afbeelding
|
pdfToImage.title=PDF naar afbeelding
|
||||||
pdfToImage.header=PDF naar afbeelding
|
pdfToImage.header=PDF naar afbeelding
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=Trefwoorden:
|
|||||||
changeMetadata.modDate=Wijzigingsdatum (yyyy/MM/dd HH:mm:ss):
|
changeMetadata.modDate=Wijzigingsdatum (yyyy/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=Producent:
|
changeMetadata.producer=Producent:
|
||||||
changeMetadata.subject=Onderwerp:
|
changeMetadata.subject=Onderwerp:
|
||||||
|
changeMetadata.title=Titel:
|
||||||
changeMetadata.trapped=Vastgezet:
|
changeMetadata.trapped=Vastgezet:
|
||||||
changeMetadata.selectText.4=Overige metadata:
|
changeMetadata.selectText.4=Overige metadata:
|
||||||
changeMetadata.selectText.5=Voeg aangepaste metadata-invoer toe
|
changeMetadata.selectText.5=Voeg aangepaste metadata-invoer toe
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=Wybierz obraz(y)
|
|||||||
genericSubmit=Wyślij
|
genericSubmit=Wyślij
|
||||||
processTimeWarning=Ostrzeżenie: Ten proces może potrwać do minuty, w zależności od rozmiaru pliku
|
processTimeWarning=Ostrzeżenie: Ten proces może potrwać do minuty, w zależności od rozmiaru pliku
|
||||||
pageOrderPrompt=Kolejność stron (wprowadź listę numerów stron oddzielonych przecinkami) :
|
pageOrderPrompt=Kolejność stron (wprowadź listę numerów stron oddzielonych przecinkami) :
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=Idź
|
goToPage=Idź
|
||||||
true=Tak
|
true=Tak
|
||||||
false=Nie
|
false=Nie
|
||||||
@@ -20,7 +19,6 @@ save=Zapisz
|
|||||||
close=Zamknij
|
close=Zamknij
|
||||||
filesSelected=wybrane pliki
|
filesSelected=wybrane pliki
|
||||||
noFavourites=Nie dodano ulubionych
|
noFavourites=Nie dodano ulubionych
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=Znudzony czekaniem?
|
bored=Znudzony czekaniem?
|
||||||
alphabet=Alfabet
|
alphabet=Alfabet
|
||||||
downloadPdf=Pobierz PDF
|
downloadPdf=Pobierz PDF
|
||||||
@@ -44,7 +42,7 @@ red=Red
|
|||||||
green=Green
|
green=Green
|
||||||
blue=Blue
|
blue=Blue
|
||||||
custom=Custom...
|
custom=Custom...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=Account Settings
|
|||||||
account.adminSettings=Admin Settings - View and Add Users
|
account.adminSettings=Admin Settings - View and Add Users
|
||||||
account.userControlSettings=User Control Settings
|
account.userControlSettings=User Control Settings
|
||||||
account.changeUsername=Change Username
|
account.changeUsername=Change Username
|
||||||
account.newUsername=New Username
|
account.changeUsername=Change Username
|
||||||
account.password=Confirmation Password
|
account.password=Confirmation Password
|
||||||
account.oldPassword=Old password
|
account.oldPassword=Old password
|
||||||
account.newPassword=New Password
|
account.newPassword=New Password
|
||||||
@@ -368,7 +366,7 @@ showJS.tags=JS
|
|||||||
|
|
||||||
home.autoRedact.title=Auto Redact
|
home.autoRedact.title=Auto Redact
|
||||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
showJS.tags=JS
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF to CSV
|
||||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=Auto Redact
|
|||||||
autoRedact.header=Auto Redact
|
autoRedact.header=Auto Redact
|
||||||
autoRedact.colorLabel=Colour
|
autoRedact.colorLabel=Colour
|
||||||
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
||||||
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
||||||
autoRedact.useRegexLabel=Use Regex
|
autoRedact.useRegexLabel=Use Regex
|
||||||
autoRedact.wholeWordSearchLabel=Whole Word Search
|
autoRedact.wholeWordSearchLabel=Whole Word Search
|
||||||
autoRedact.customPaddingLabel=Custom Extra Padding
|
autoRedact.customPaddingLabel=Custom Extra Padding
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=Sanitize PDF
|
sanitizePDF.title=Sanitize PDF
|
||||||
sanitizePDF.header=Sanitize a PDF file
|
sanitizePDF.header=Sanitize a PDF file
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=Ustawia próg minimalnego obszaru konturu dla zdj
|
|||||||
ScannerImageSplit.selectText.9=Rozmiar obramowania:
|
ScannerImageSplit.selectText.9=Rozmiar obramowania:
|
||||||
ScannerImageSplit.selectText.10=Ustawia rozmiar dodawanego i usuwanego obramowania, aby uniknąć białych obramowań na wyjściu (domyślnie: 1).
|
ScannerImageSplit.selectText.10=Ustawia rozmiar dodawanego i usuwanego obramowania, aby uniknąć białych obramowań na wyjściu (domyślnie: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / Zamiana na tekst
|
ocr.title=OCR / Zamiana na tekst
|
||||||
ocr.header=OCR / Zamiana na tekst (optyczne rozpoznawanie znaków)
|
ocr.header=OCR / Zamiana na tekst (optyczne rozpoznawanie znaków)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=Automatyczne obracanie PDF
|
|||||||
imageToPDF.selectText.3=Logika wielu plików (dostępna tylko w przypadku pracy z wieloma obrazami)
|
imageToPDF.selectText.3=Logika wielu plików (dostępna tylko w przypadku pracy z wieloma obrazami)
|
||||||
imageToPDF.selectText.4=Połącz w jeden dokument PDF
|
imageToPDF.selectText.4=Połącz w jeden dokument PDF
|
||||||
imageToPDF.selectText.5=Konwertuj na osobne dokumenty PDF
|
imageToPDF.selectText.5=Konwertuj na osobne dokumenty PDF
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF na Obraz
|
pdfToImage.title=PDF na Obraz
|
||||||
pdfToImage.header=PDF na Obraz
|
pdfToImage.header=PDF na Obraz
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=Słowa kluczowe:
|
|||||||
changeMetadata.modDate=Data modyfikacji (yyyy/MM/dd HH:mm:ss):
|
changeMetadata.modDate=Data modyfikacji (yyyy/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=Producent:
|
changeMetadata.producer=Producent:
|
||||||
changeMetadata.subject=Temat:
|
changeMetadata.subject=Temat:
|
||||||
|
changeMetadata.title=Tytuł:
|
||||||
changeMetadata.trapped=Zablokowany:
|
changeMetadata.trapped=Zablokowany:
|
||||||
changeMetadata.selectText.4=Inne metadane:
|
changeMetadata.selectText.4=Inne metadane:
|
||||||
changeMetadata.selectText.5=Dodaj niestandardowy wpis w metadanych
|
changeMetadata.selectText.5=Dodaj niestandardowy wpis w metadanych
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=Selecione a(s) imagem(ns)
|
|||||||
genericSubmit=Enviar
|
genericSubmit=Enviar
|
||||||
processTimeWarning=Aviso: esse processo pode levar até um minuto, dependendo do tamanho do arquivo
|
processTimeWarning=Aviso: esse processo pode levar até um minuto, dependendo do tamanho do arquivo
|
||||||
pageOrderPrompt=Ordem das páginas (digite uma lista separada por vírgulas de números de página):
|
pageOrderPrompt=Ordem das páginas (digite uma lista separada por vírgulas de números de página):
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=Ir
|
goToPage=Ir
|
||||||
true=Verdadeiro
|
true=Verdadeiro
|
||||||
false=Falso
|
false=Falso
|
||||||
@@ -20,7 +19,6 @@ save=Salvar
|
|||||||
close=Fechar
|
close=Fechar
|
||||||
filesSelected=arquivos selecionados
|
filesSelected=arquivos selecionados
|
||||||
noFavourites=Nenhum favorito adicionado
|
noFavourites=Nenhum favorito adicionado
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=Entediado esperando?
|
bored=Entediado esperando?
|
||||||
alphabet=Alfabeto
|
alphabet=Alfabeto
|
||||||
downloadPdf=baixar PDF
|
downloadPdf=baixar PDF
|
||||||
@@ -44,7 +42,7 @@ red=Red
|
|||||||
green=Green
|
green=Green
|
||||||
blue=Blue
|
blue=Blue
|
||||||
custom=Custom...
|
custom=Custom...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=Account Settings
|
|||||||
account.adminSettings=Admin Settings - View and Add Users
|
account.adminSettings=Admin Settings - View and Add Users
|
||||||
account.userControlSettings=User Control Settings
|
account.userControlSettings=User Control Settings
|
||||||
account.changeUsername=Change Username
|
account.changeUsername=Change Username
|
||||||
account.newUsername=New Username
|
account.changeUsername=Change Username
|
||||||
account.password=Confirmation Password
|
account.password=Confirmation Password
|
||||||
account.oldPassword=Old password
|
account.oldPassword=Old password
|
||||||
account.newPassword=New Password
|
account.newPassword=New Password
|
||||||
@@ -368,7 +366,7 @@ showJS.tags=JavaScript
|
|||||||
|
|
||||||
home.autoRedact.title=Auto Redact
|
home.autoRedact.title=Auto Redact
|
||||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
showJS.tags=JavaScript
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF to CSV
|
||||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=Auto Redact
|
|||||||
autoRedact.header=Auto Redact
|
autoRedact.header=Auto Redact
|
||||||
autoRedact.colorLabel=Colour
|
autoRedact.colorLabel=Colour
|
||||||
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
||||||
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
||||||
autoRedact.useRegexLabel=Use Regex
|
autoRedact.useRegexLabel=Use Regex
|
||||||
autoRedact.wholeWordSearchLabel=Whole Word Search
|
autoRedact.wholeWordSearchLabel=Whole Word Search
|
||||||
autoRedact.customPaddingLabel=Custom Extra Padding
|
autoRedact.customPaddingLabel=Custom Extra Padding
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=Sanitizar PDF
|
sanitizePDF.title=Sanitizar PDF
|
||||||
sanitizePDF.header=Sanitizar um arquivo PDF
|
sanitizePDF.header=Sanitizar um arquivo PDF
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=Define o limite mínimo da área de contorno para
|
|||||||
ScannerImageSplit.selectText.9=Tamanho da Borda:
|
ScannerImageSplit.selectText.9=Tamanho da Borda:
|
||||||
ScannerImageSplit.selectText.10=Define o tamanho da borda adicionada e removida para evitar bordas brancas na saída (padrão: 1).
|
ScannerImageSplit.selectText.10=Define o tamanho da borda adicionada e removida para evitar bordas brancas na saída (padrão: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / Limpeza de Digitalização
|
ocr.title=OCR / Limpeza de Digitalização
|
||||||
ocr.header=OCR / Limpeza de Digitalização (Reconhecimento Óptico de Caracteres)
|
ocr.header=OCR / Limpeza de Digitalização (Reconhecimento Óptico de Caracteres)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=Girar Automaticamente
|
|||||||
imageToPDF.selectText.3=Lógica de Vários Arquivos (Ativada apenas ao trabalhar com várias imagens)
|
imageToPDF.selectText.3=Lógica de Vários Arquivos (Ativada apenas ao trabalhar com várias imagens)
|
||||||
imageToPDF.selectText.4=Mesclar em um Único PDF
|
imageToPDF.selectText.4=Mesclar em um Único PDF
|
||||||
imageToPDF.selectText.5=Converter em PDFs Separados
|
imageToPDF.selectText.5=Converter em PDFs Separados
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF para Imagem
|
pdfToImage.title=PDF para Imagem
|
||||||
pdfToImage.header=Converter PDF para Imagem
|
pdfToImage.header=Converter PDF para Imagem
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=Palavras-chave:
|
|||||||
changeMetadata.modDate=Data de Modificação (aaaa/MM/dd HH:mm:ss):
|
changeMetadata.modDate=Data de Modificação (aaaa/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=Produtor:
|
changeMetadata.producer=Produtor:
|
||||||
changeMetadata.subject=Assunto:
|
changeMetadata.subject=Assunto:
|
||||||
|
changeMetadata.title=Título:
|
||||||
changeMetadata.trapped=Trapped:
|
changeMetadata.trapped=Trapped:
|
||||||
changeMetadata.selectText.4=Outros Metadados
|
changeMetadata.selectText.4=Outros Metadados
|
||||||
changeMetadata.selectText.5=Adicionar Entrada de Metadados Personalizados
|
changeMetadata.selectText.5=Adicionar Entrada de Metadados Personalizados
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=Selectează imagini
|
|||||||
genericSubmit=Trimite
|
genericSubmit=Trimite
|
||||||
processTimeWarning=Avertisment: Acest proces poate dura până la un minut în funcție de dimensiunea fișierului
|
processTimeWarning=Avertisment: Acest proces poate dura până la un minut în funcție de dimensiunea fișierului
|
||||||
pageOrderPrompt=Ordinea paginilor (Introdu o listă separată prin virgulă de numere de pagină):
|
pageOrderPrompt=Ordinea paginilor (Introdu o listă separată prin virgulă de numere de pagină):
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=Mergi la pagină
|
goToPage=Mergi la pagină
|
||||||
true=Adevărat
|
true=Adevărat
|
||||||
false=Fals
|
false=Fals
|
||||||
@@ -20,7 +19,6 @@ save=Salvează
|
|||||||
close=Închide
|
close=Închide
|
||||||
filesSelected=fișiere selectate
|
filesSelected=fișiere selectate
|
||||||
noFavourites=Niciun favorit adăugat
|
noFavourites=Niciun favorit adăugat
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=Plictisit așteptând?
|
bored=Plictisit așteptând?
|
||||||
alphabet=Alfabet
|
alphabet=Alfabet
|
||||||
downloadPdf=Descarcă PDF
|
downloadPdf=Descarcă PDF
|
||||||
@@ -44,7 +42,7 @@ red=Red
|
|||||||
green=Green
|
green=Green
|
||||||
blue=Blue
|
blue=Blue
|
||||||
custom=Custom...
|
custom=Custom...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=Account Settings
|
|||||||
account.adminSettings=Admin Settings - View and Add Users
|
account.adminSettings=Admin Settings - View and Add Users
|
||||||
account.userControlSettings=User Control Settings
|
account.userControlSettings=User Control Settings
|
||||||
account.changeUsername=Change Username
|
account.changeUsername=Change Username
|
||||||
account.newUsername=New Username
|
account.changeUsername=Change Username
|
||||||
account.password=Confirmation Password
|
account.password=Confirmation Password
|
||||||
account.oldPassword=Old password
|
account.oldPassword=Old password
|
||||||
account.newPassword=New Password
|
account.newPassword=New Password
|
||||||
@@ -368,7 +366,7 @@ showJS.tags=JS
|
|||||||
|
|
||||||
home.autoRedact.title=Auto Redact
|
home.autoRedact.title=Auto Redact
|
||||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
showJS.tags=JS
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF to CSV
|
||||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=Auto Redact
|
|||||||
autoRedact.header=Auto Redact
|
autoRedact.header=Auto Redact
|
||||||
autoRedact.colorLabel=Colour
|
autoRedact.colorLabel=Colour
|
||||||
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
||||||
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
||||||
autoRedact.useRegexLabel=Use Regex
|
autoRedact.useRegexLabel=Use Regex
|
||||||
autoRedact.wholeWordSearchLabel=Whole Word Search
|
autoRedact.wholeWordSearchLabel=Whole Word Search
|
||||||
autoRedact.customPaddingLabel=Custom Extra Padding
|
autoRedact.customPaddingLabel=Custom Extra Padding
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=Sanitize PDF
|
sanitizePDF.title=Sanitize PDF
|
||||||
sanitizePDF.header=Sanitize a PDF file
|
sanitizePDF.header=Sanitize a PDF file
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=Stabilește pragul minim de arie a conturului pen
|
|||||||
ScannerImageSplit.selectText.9=Mărimea marginii:
|
ScannerImageSplit.selectText.9=Mărimea marginii:
|
||||||
ScannerImageSplit.selectText.10=Stabilește mărimea marginii adăugate și eliminate pentru a evita marginile albe în rezultat (implicit: 1).
|
ScannerImageSplit.selectText.10=Stabilește mărimea marginii adăugate și eliminate pentru a evita marginile albe în rezultat (implicit: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / Curățare scanare
|
ocr.title=OCR / Curățare scanare
|
||||||
ocr.header=Curățare scanări / OCR (Recunoaștere optică a caracterelor)
|
ocr.header=Curățare scanări / OCR (Recunoaștere optică a caracterelor)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=Rotire automată a PDF-ului
|
|||||||
imageToPDF.selectText.3=Logica pentru mai multe fișiere (activată numai dacă se lucrează cu mai multe imagini)
|
imageToPDF.selectText.3=Logica pentru mai multe fișiere (activată numai dacă se lucrează cu mai multe imagini)
|
||||||
imageToPDF.selectText.4=Unifică într-un singur PDF
|
imageToPDF.selectText.4=Unifică într-un singur PDF
|
||||||
imageToPDF.selectText.5=Convertă în PDF-uri separate
|
imageToPDF.selectText.5=Convertă în PDF-uri separate
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF în Imagine
|
pdfToImage.title=PDF în Imagine
|
||||||
pdfToImage.header=PDF în Imagine
|
pdfToImage.header=PDF în Imagine
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=Cuvinte cheie:
|
|||||||
changeMetadata.modDate=Data modificării (yyyy/MM/dd HH:mm:ss):
|
changeMetadata.modDate=Data modificării (yyyy/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=Producător:
|
changeMetadata.producer=Producător:
|
||||||
changeMetadata.subject=Subiect:
|
changeMetadata.subject=Subiect:
|
||||||
|
changeMetadata.title=Titlu:
|
||||||
changeMetadata.trapped=Blocat:
|
changeMetadata.trapped=Blocat:
|
||||||
changeMetadata.selectText.4=Alte Metadate:
|
changeMetadata.selectText.4=Alte Metadate:
|
||||||
changeMetadata.selectText.5=Adăugați Intrare Metadate Personalizate
|
changeMetadata.selectText.5=Adăugați Intrare Metadate Personalizate
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=Выберите картинку(и)
|
|||||||
genericSubmit=Отправить
|
genericSubmit=Отправить
|
||||||
processTimeWarning=Внимание: Этот процесс может занять до минуты в зависимости от размера файла.
|
processTimeWarning=Внимание: Этот процесс может занять до минуты в зависимости от размера файла.
|
||||||
pageOrderPrompt=Порядок страниц (введите список номеров страниц через запятую):
|
pageOrderPrompt=Порядок страниц (введите список номеров страниц через запятую):
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=Вперед
|
goToPage=Вперед
|
||||||
true=Истина
|
true=Истина
|
||||||
false=Ложь
|
false=Ложь
|
||||||
@@ -20,7 +19,6 @@ save=Сохранить
|
|||||||
close=Закрыть
|
close=Закрыть
|
||||||
filesSelected=файлов выбрано
|
filesSelected=файлов выбрано
|
||||||
noFavourites=Нет избранного
|
noFavourites=Нет избранного
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=Скучно ждать?
|
bored=Скучно ждать?
|
||||||
alphabet=Алфавит
|
alphabet=Алфавит
|
||||||
downloadPdf=Скачать PDF
|
downloadPdf=Скачать PDF
|
||||||
@@ -44,7 +42,7 @@ red=Red
|
|||||||
green=Green
|
green=Green
|
||||||
blue=Blue
|
blue=Blue
|
||||||
custom=Custom...
|
custom=Custom...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=Account Settings
|
|||||||
account.adminSettings=Admin Settings - View and Add Users
|
account.adminSettings=Admin Settings - View and Add Users
|
||||||
account.userControlSettings=User Control Settings
|
account.userControlSettings=User Control Settings
|
||||||
account.changeUsername=Change Username
|
account.changeUsername=Change Username
|
||||||
account.newUsername=New Username
|
account.changeUsername=Change Username
|
||||||
account.password=Confirmation Password
|
account.password=Confirmation Password
|
||||||
account.oldPassword=Old password
|
account.oldPassword=Old password
|
||||||
account.newPassword=New Password
|
account.newPassword=New Password
|
||||||
@@ -368,7 +366,7 @@ showJS.tags=JS
|
|||||||
|
|
||||||
home.autoRedact.title=Auto Redact
|
home.autoRedact.title=Auto Redact
|
||||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
showJS.tags=JS
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF to CSV
|
||||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=Auto Redact
|
|||||||
autoRedact.header=Auto Redact
|
autoRedact.header=Auto Redact
|
||||||
autoRedact.colorLabel=Colour
|
autoRedact.colorLabel=Colour
|
||||||
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
||||||
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
||||||
autoRedact.useRegexLabel=Use Regex
|
autoRedact.useRegexLabel=Use Regex
|
||||||
autoRedact.wholeWordSearchLabel=Whole Word Search
|
autoRedact.wholeWordSearchLabel=Whole Word Search
|
||||||
autoRedact.customPaddingLabel=Custom Extra Padding
|
autoRedact.customPaddingLabel=Custom Extra Padding
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=Дезинфицировать PDF
|
sanitizePDF.title=Дезинфицировать PDF
|
||||||
sanitizePDF.header=Дезинфицировать PDF файл
|
sanitizePDF.header=Дезинфицировать PDF файл
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=Устанавливает минимальный
|
|||||||
ScannerImageSplit.selectText.9=Размер границы:
|
ScannerImageSplit.selectText.9=Размер границы:
|
||||||
ScannerImageSplit.selectText.10=Устанавливает размер добавляемой и удаляемой границы, чтобы предотвратить появление белых границ на выходе (по умолчанию: 1).
|
ScannerImageSplit.selectText.10=Устанавливает размер добавляемой и удаляемой границы, чтобы предотвратить появление белых границ на выходе (по умолчанию: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / Очистка сканирования
|
ocr.title=OCR / Очистка сканирования
|
||||||
ocr.header=Очистка сканирования / OCR (Optical Character Recognition) Распознавание текста
|
ocr.header=Очистка сканирования / OCR (Optical Character Recognition) Распознавание текста
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=Автоматический поворот PDF
|
|||||||
imageToPDF.selectText.3=Многофайловая логика (включена только при работе с несколькими изображениями)
|
imageToPDF.selectText.3=Многофайловая логика (включена только при работе с несколькими изображениями)
|
||||||
imageToPDF.selectText.4=Объединить в один PDF
|
imageToPDF.selectText.4=Объединить в один PDF
|
||||||
imageToPDF.selectText.5=Преобразование в отдельные PDF-файлы
|
imageToPDF.selectText.5=Преобразование в отдельные PDF-файлы
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF в изображение
|
pdfToImage.title=PDF в изображение
|
||||||
pdfToImage.header=PDF в изображение
|
pdfToImage.header=PDF в изображение
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=Ключевые слова:
|
|||||||
changeMetadata.modDate=Дата изменения (yyyy/MM/dd HH:mm:ss):
|
changeMetadata.modDate=Дата изменения (yyyy/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=Изготовитель:
|
changeMetadata.producer=Изготовитель:
|
||||||
changeMetadata.subject=Тема:
|
changeMetadata.subject=Тема:
|
||||||
|
changeMetadata.title=Заголовок:
|
||||||
changeMetadata.trapped=Trapped:
|
changeMetadata.trapped=Trapped:
|
||||||
changeMetadata.selectText.4=Другие метаданные:
|
changeMetadata.selectText.4=Другие метаданные:
|
||||||
changeMetadata.selectText.5=Добавить пользовательскую запись метаданных
|
changeMetadata.selectText.5=Добавить пользовательскую запись метаданных
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=Odaberi sliku (slike)
|
|||||||
genericSubmit=Prihvatiti
|
genericSubmit=Prihvatiti
|
||||||
processTimeWarning=Warning:Upozorenje: Ovaj proces može trajati i do minut, u zavisnosti od veličine dokumenta
|
processTimeWarning=Warning:Upozorenje: Ovaj proces može trajati i do minut, u zavisnosti od veličine dokumenta
|
||||||
pageOrderPrompt=Prilagođeni redosled stranica (unesi listu brojeva stranica ili funkcija, kao što su 2n+1, razdvojene zarezima) :
|
pageOrderPrompt=Prilagođeni redosled stranica (unesi listu brojeva stranica ili funkcija, kao što su 2n+1, razdvojene zarezima) :
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=Idi
|
goToPage=Idi
|
||||||
true=Tačno
|
true=Tačno
|
||||||
false=Netačno
|
false=Netačno
|
||||||
@@ -20,7 +19,6 @@ save=Sačuvaj
|
|||||||
close=Zatvori
|
close=Zatvori
|
||||||
filesSelected=odabrani fajlovi
|
filesSelected=odabrani fajlovi
|
||||||
noFavourites=Nema dodatih favorita
|
noFavourites=Nema dodatih favorita
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=Da li ti je dosadno dok čekaš?
|
bored=Da li ti je dosadno dok čekaš?
|
||||||
alphabet=Alfabet
|
alphabet=Alfabet
|
||||||
downloadPdf=Skini PDF
|
downloadPdf=Skini PDF
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=Podešavanja naloga
|
|||||||
account.adminSettings=Admin podešavanja - Pregled i dodavanje korisnika
|
account.adminSettings=Admin podešavanja - Pregled i dodavanje korisnika
|
||||||
account.userControlSettings=Podešavanja kontrole korisnika
|
account.userControlSettings=Podešavanja kontrole korisnika
|
||||||
account.changeUsername=Pormeni korisničko ime
|
account.changeUsername=Pormeni korisničko ime
|
||||||
account.newUsername=Novo korisničko ime
|
account.changeUsername=Pormeni korisničko ime
|
||||||
account.password=Potvrda lozinke
|
account.password=Potvrda lozinke
|
||||||
account.oldPassword=Stara lozinka
|
account.oldPassword=Stara lozinka
|
||||||
account.newPassword=Nova lozinka
|
account.newPassword=Nova lozinka
|
||||||
@@ -364,11 +362,11 @@ PdfToSinglePage.tags=jedna-stranica
|
|||||||
|
|
||||||
home.showJS.title=Prikaži JavaScript
|
home.showJS.title=Prikaži JavaScript
|
||||||
home.showJS.desc=Pretražuje i prikazuje bilo koji JavaScript ubačen u PDF
|
home.showJS.desc=Pretražuje i prikazuje bilo koji JavaScript ubačen u PDF
|
||||||
showJS.tags=JS
|
showJS.tags=Cenzura,Sakrij,prekrivanje,crna,marker,skriveno
|
||||||
|
|
||||||
home.autoRedact.title=Automatsko Cenzurisanje
|
home.autoRedact.title=Automatsko Cenzurisanje
|
||||||
home.autoRedact.desc=Automatsko cenzurisanje teksta u PDF-u na osnovu unetog teksta
|
home.autoRedact.desc=Automatsko cenzurisanje teksta u PDF-u na osnovu unetog teksta
|
||||||
autoRedact.tags=Cenzura,Sakrij,prekrivanje,crna,marker,skriveno
|
showJS.tags=Cenzura,Sakrij,prekrivanje,crna,marker,skriveno
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF u CSV
|
home.tableExtraxt.title=PDF u CSV
|
||||||
home.tableExtraxt.desc=Izdvaja tabele iz PDF-a pretvarajući ih u CSV
|
home.tableExtraxt.desc=Izdvaja tabele iz PDF-a pretvarajući ih u CSV
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=Sanitizacija PDF-a
|
sanitizePDF.title=Sanitizacija PDF-a
|
||||||
sanitizePDF.header=Sanitizacija PDF fajla
|
sanitizePDF.header=Sanitizacija PDF fajla
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=Postavlja minimalni prag površine konture za fot
|
|||||||
ScannerImageSplit.selectText.9=Veličina ivice:
|
ScannerImageSplit.selectText.9=Veličina ivice:
|
||||||
ScannerImageSplit.selectText.10=Postavlja veličinu ivice dodate i uklonjene kako bi se sprečile bele ivice u izlazu (podrazumevano: 1).
|
ScannerImageSplit.selectText.10=Postavlja veličinu ivice dodate i uklonjene kako bi se sprečile bele ivice u izlazu (podrazumevano: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / Čišćenje skeniranja
|
ocr.title=OCR / Čišćenje skeniranja
|
||||||
ocr.header=Čišćenje skeniranja / OCR (Optičko prepoznavanje znakova)
|
ocr.header=Čišćenje skeniranja / OCR (Optičko prepoznavanje znakova)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=Automatsko rotiranje PDF-a
|
|||||||
imageToPDF.selectText.3=Logika za više fajlova (Omogućeno samo ako radite sa više slika)
|
imageToPDF.selectText.3=Logika za više fajlova (Omogućeno samo ako radite sa više slika)
|
||||||
imageToPDF.selectText.4=Spoji u jedan PDF
|
imageToPDF.selectText.4=Spoji u jedan PDF
|
||||||
imageToPDF.selectText.5=Konvertuj u odvojene PDF-ove
|
imageToPDF.selectText.5=Konvertuj u odvojene PDF-ove
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF u sliku
|
pdfToImage.title=PDF u sliku
|
||||||
pdfToImage.header=PDF u sliku
|
pdfToImage.header=PDF u sliku
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=Ključne reči:
|
|||||||
changeMetadata.modDate=Datum izmene (gggg/MM/dd HH:mm:ss):
|
changeMetadata.modDate=Datum izmene (gggg/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=Proizvođač:
|
changeMetadata.producer=Proizvođač:
|
||||||
changeMetadata.subject=Tema:
|
changeMetadata.subject=Tema:
|
||||||
|
changeMetadata.title=Naslov:
|
||||||
changeMetadata.trapped=Zaglavljeno:
|
changeMetadata.trapped=Zaglavljeno:
|
||||||
changeMetadata.selectText.4=Drugi metapodaci:
|
changeMetadata.selectText.4=Drugi metapodaci:
|
||||||
changeMetadata.selectText.5=Dodaj prilagođeni unos metapodataka
|
changeMetadata.selectText.5=Dodaj prilagođeni unos metapodataka
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=Välj bild(er)
|
|||||||
genericSubmit=Skicka
|
genericSubmit=Skicka
|
||||||
processTimeWarning=Varning: Denna process kan ta upp till en minut beroende på filstorlek
|
processTimeWarning=Varning: Denna process kan ta upp till en minut beroende på filstorlek
|
||||||
pageOrderPrompt=Sidordning (Ange en kommaseparerad lista med sidnummer) :
|
pageOrderPrompt=Sidordning (Ange en kommaseparerad lista med sidnummer) :
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=Gå till
|
goToPage=Gå till
|
||||||
true=True
|
true=True
|
||||||
false=Falskt
|
false=Falskt
|
||||||
@@ -20,7 +19,6 @@ save=Spara
|
|||||||
close=Stäng
|
close=Stäng
|
||||||
filesSelected=filer valda
|
filesSelected=filer valda
|
||||||
noFavourites=Inga favoriter har lagts till
|
noFavourites=Inga favoriter har lagts till
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=Utråkad att vänta?
|
bored=Utråkad att vänta?
|
||||||
alphabet=Alfabet
|
alphabet=Alfabet
|
||||||
downloadPdf=Ladda ner PDF
|
downloadPdf=Ladda ner PDF
|
||||||
@@ -44,7 +42,7 @@ red=Red
|
|||||||
green=Green
|
green=Green
|
||||||
blue=Blue
|
blue=Blue
|
||||||
custom=Custom...
|
custom=Custom...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=Account Settings
|
|||||||
account.adminSettings=Admin Settings - View and Add Users
|
account.adminSettings=Admin Settings - View and Add Users
|
||||||
account.userControlSettings=User Control Settings
|
account.userControlSettings=User Control Settings
|
||||||
account.changeUsername=Change Username
|
account.changeUsername=Change Username
|
||||||
account.newUsername=New Username
|
account.changeUsername=Change Username
|
||||||
account.password=Confirmation Password
|
account.password=Confirmation Password
|
||||||
account.oldPassword=Old password
|
account.oldPassword=Old password
|
||||||
account.newPassword=New Password
|
account.newPassword=New Password
|
||||||
@@ -368,7 +366,7 @@ showJS.tags=JS
|
|||||||
|
|
||||||
home.autoRedact.title=Auto Redact
|
home.autoRedact.title=Auto Redact
|
||||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
showJS.tags=JS
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF to CSV
|
||||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=Auto Redact
|
|||||||
autoRedact.header=Auto Redact
|
autoRedact.header=Auto Redact
|
||||||
autoRedact.colorLabel=Colour
|
autoRedact.colorLabel=Colour
|
||||||
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
||||||
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
||||||
autoRedact.useRegexLabel=Use Regex
|
autoRedact.useRegexLabel=Use Regex
|
||||||
autoRedact.wholeWordSearchLabel=Whole Word Search
|
autoRedact.wholeWordSearchLabel=Whole Word Search
|
||||||
autoRedact.customPaddingLabel=Custom Extra Padding
|
autoRedact.customPaddingLabel=Custom Extra Padding
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=Sanitize PDF
|
sanitizePDF.title=Sanitize PDF
|
||||||
sanitizePDF.header=Sanitize a PDF file
|
sanitizePDF.header=Sanitize a PDF file
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=Ställer in minsta tröskelvärde för konturarea
|
|||||||
ScannerImageSplit.selectText.9=Kantstorlek:
|
ScannerImageSplit.selectText.9=Kantstorlek:
|
||||||
ScannerImageSplit.selectText.10=Ställer in storleken på kanten som läggs till och tas bort för att förhindra vita kanter i utdata (standard: 1).
|
ScannerImageSplit.selectText.10=Ställer in storleken på kanten som läggs till och tas bort för att förhindra vita kanter i utdata (standard: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / Scan Cleanup
|
ocr.title=OCR / Scan Cleanup
|
||||||
ocr.header=Rengöringsskanningar / OCR (Optical Character Recognition)
|
ocr.header=Rengöringsskanningar / OCR (Optical Character Recognition)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=Rotera PDF automatiskt
|
|||||||
imageToPDF.selectText.3=Multifillogik (Endast aktiverad om man arbetar med flera bilder)
|
imageToPDF.selectText.3=Multifillogik (Endast aktiverad om man arbetar med flera bilder)
|
||||||
imageToPDF.selectText.4=Slå samman till en enda PDF
|
imageToPDF.selectText.4=Slå samman till en enda PDF
|
||||||
imageToPDF.selectText.5=Konvertera till separata PDF-filer
|
imageToPDF.selectText.5=Konvertera till separata PDF-filer
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF till bild
|
pdfToImage.title=PDF till bild
|
||||||
pdfToImage.header=PDF till bild
|
pdfToImage.header=PDF till bild
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=Sökord:
|
|||||||
changeMetadata.modDate=Ändringsdatum (åååå/MM/dd HH:mm:ss):
|
changeMetadata.modDate=Ändringsdatum (åååå/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=Producent:
|
changeMetadata.producer=Producent:
|
||||||
changeMetadata.subject=Ämne:
|
changeMetadata.subject=Ämne:
|
||||||
|
changeMetadata.title=Titel:
|
||||||
changeMetadata.trapped=Fångad:
|
changeMetadata.trapped=Fångad:
|
||||||
changeMetadata.selectText.4=Andra metadata:
|
changeMetadata.selectText.4=Andra metadata:
|
||||||
changeMetadata.selectText.5=Lägg till anpassad metadatapost
|
changeMetadata.selectText.5=Lägg till anpassad metadatapost
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=Resim(leri) seçin
|
|||||||
genericSubmit=Gönder
|
genericSubmit=Gönder
|
||||||
processTimeWarning=Uyarı: Bu işlem, dosya boyutuna bağlı olarak bir dakikaya kadar sürebilir.
|
processTimeWarning=Uyarı: Bu işlem, dosya boyutuna bağlı olarak bir dakikaya kadar sürebilir.
|
||||||
pageOrderPrompt=Özel Sayfa Sırası (Virgülle ayrılmış sayfa numaraları veya 2n+1 gibi bir fonksiyon girin) :
|
pageOrderPrompt=Özel Sayfa Sırası (Virgülle ayrılmış sayfa numaraları veya 2n+1 gibi bir fonksiyon girin) :
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=Git
|
goToPage=Git
|
||||||
true=Doğru
|
true=Doğru
|
||||||
false=Yanlış
|
false=Yanlış
|
||||||
@@ -20,7 +19,6 @@ save=Kaydet
|
|||||||
close=Kapat
|
close=Kapat
|
||||||
filesSelected=dosya seçildi
|
filesSelected=dosya seçildi
|
||||||
noFavourites=Favori eklenmedi
|
noFavourites=Favori eklenmedi
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=Sıkıldınız mı?
|
bored=Sıkıldınız mı?
|
||||||
alphabet=Alfabe
|
alphabet=Alfabe
|
||||||
downloadPdf=PDF İndir
|
downloadPdf=PDF İndir
|
||||||
@@ -44,7 +42,7 @@ red=Kırmızı
|
|||||||
green=Yeşil
|
green=Yeşil
|
||||||
blue=Mavi
|
blue=Mavi
|
||||||
custom=Özel
|
custom=Özel
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=Hesap Ayarları
|
|||||||
account.adminSettings=Yönetici Ayarları - Kullanıcıları Görüntüle ve Ekle
|
account.adminSettings=Yönetici Ayarları - Kullanıcıları Görüntüle ve Ekle
|
||||||
account.userControlSettings=Kullanıcı Kontrol Ayarları
|
account.userControlSettings=Kullanıcı Kontrol Ayarları
|
||||||
account.changeUsername=Kullanıcı Adını Değiştir
|
account.changeUsername=Kullanıcı Adını Değiştir
|
||||||
account.newUsername=Yeni kullanıcı adı
|
account.changeUsername=Kullanıcı Adını Değiştir
|
||||||
account.password=Onay Şifresi
|
account.password=Onay Şifresi
|
||||||
account.oldPassword=Eski Şifre
|
account.oldPassword=Eski Şifre
|
||||||
account.newPassword=Yeni Şifre
|
account.newPassword=Yeni Şifre
|
||||||
@@ -364,11 +362,11 @@ PdfToSinglePage.tags=tek sayfa
|
|||||||
|
|
||||||
home.showJS.title=Javascript'i Göster
|
home.showJS.title=Javascript'i Göster
|
||||||
home.showJS.desc=Bir PDF'e enjekte edilen herhangi bir JS'i araştırır ve gösterir
|
home.showJS.desc=Bir PDF'e enjekte edilen herhangi bir JS'i araştırır ve gösterir
|
||||||
showJS.tags=JS
|
showJS.tags=Karart,Gizle,karartma,siyah,markör,gizli
|
||||||
|
|
||||||
home.autoRedact.title=Otomatik Karartma
|
home.autoRedact.title=Otomatik Karartma
|
||||||
home.autoRedact.desc=Giriş metnine dayanarak bir PDF'teki metni Otomatik Karartır (Redakte)
|
home.autoRedact.desc=Giriş metnine dayanarak bir PDF'teki metni Otomatik Karartır (Redakte)
|
||||||
autoRedact.tags=Karart,Gizle,karartma,siyah,markör,gizli
|
showJS.tags=Karart,Gizle,karartma,siyah,markör,gizli
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF to CSV
|
||||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=Otomatik Karartma
|
|||||||
autoRedact.header=Otomatik Karartma
|
autoRedact.header=Otomatik Karartma
|
||||||
autoRedact.colorLabel=Renk
|
autoRedact.colorLabel=Renk
|
||||||
autoRedact.textsToRedactLabel=Karartılacak Metin (satır ayrılmış)
|
autoRedact.textsToRedactLabel=Karartılacak Metin (satır ayrılmış)
|
||||||
autoRedact.textsToRedactPlaceholder=Örn. \nGizli \nÇok Gizli
|
autoRedact.textsToRedactPlaceholder=Örn. \nGizli \nÇok Gizli
|
||||||
autoRedact.useRegexLabel=Regex Kullan
|
autoRedact.useRegexLabel=Regex Kullan
|
||||||
autoRedact.wholeWordSearchLabel=Tam Kelime Arama
|
autoRedact.wholeWordSearchLabel=Tam Kelime Arama
|
||||||
autoRedact.customPaddingLabel=Özel Ekstra Dolgu
|
autoRedact.customPaddingLabel=Özel Ekstra Dolgu
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=PDF'i Temizle
|
sanitizePDF.title=PDF'i Temizle
|
||||||
sanitizePDF.header=PDF dosyasını temizle
|
sanitizePDF.header=PDF dosyasını temizle
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=Bir fotoğraf için minimum kontur alanı eşiği
|
|||||||
ScannerImageSplit.selectText.9=Kenar Boyutu:
|
ScannerImageSplit.selectText.9=Kenar Boyutu:
|
||||||
ScannerImageSplit.selectText.10=Çıktıda beyaz kenarların önlenmesi için eklenen ve kaldırılan kenarın boyutunu ayarlar (varsayılan: 1).
|
ScannerImageSplit.selectText.10=Çıktıda beyaz kenarların önlenmesi için eklenen ve kaldırılan kenarın boyutunu ayarlar (varsayılan: 1).
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / Tarama Temizleme
|
ocr.title=OCR / Tarama Temizleme
|
||||||
ocr.header=Taramaları Temizle / OCR (Optik Karakter Tanıma)
|
ocr.header=Taramaları Temizle / OCR (Optik Karakter Tanıma)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=PDF'yi otomatik döndür
|
|||||||
imageToPDF.selectText.3=Çoklu dosya mantığı (Yalnızca birden fazla resimle çalışırken etkinleştirilir)
|
imageToPDF.selectText.3=Çoklu dosya mantığı (Yalnızca birden fazla resimle çalışırken etkinleştirilir)
|
||||||
imageToPDF.selectText.4=Tek bir PDF'e birleştir
|
imageToPDF.selectText.4=Tek bir PDF'e birleştir
|
||||||
imageToPDF.selectText.5=Ayrı PDF'lere dönüştür
|
imageToPDF.selectText.5=Ayrı PDF'lere dönüştür
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF'den Resme
|
pdfToImage.title=PDF'den Resme
|
||||||
pdfToImage.header=PDF'den Resme
|
pdfToImage.header=PDF'den Resme
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=Anahtar Kelimeler:
|
|||||||
changeMetadata.modDate=Değişiklik Tarihi (yyyy/MM/dd HH:mm:ss):
|
changeMetadata.modDate=Değişiklik Tarihi (yyyy/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=Üretici:
|
changeMetadata.producer=Üretici:
|
||||||
changeMetadata.subject=Konu:
|
changeMetadata.subject=Konu:
|
||||||
|
changeMetadata.title=Başlık:
|
||||||
changeMetadata.trapped=Tuzak:
|
changeMetadata.trapped=Tuzak:
|
||||||
changeMetadata.selectText.4=Diğer Metaveri:
|
changeMetadata.selectText.4=Diğer Metaveri:
|
||||||
changeMetadata.selectText.5=Özel Metaveri Girişi Ekle
|
changeMetadata.selectText.5=Özel Metaveri Girişi Ekle
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=选择图像
|
|||||||
genericSubmit=提交
|
genericSubmit=提交
|
||||||
processTimeWarning=警告:此过程可能需要多达一分钟,具体时间取决于文件大小
|
processTimeWarning=警告:此过程可能需要多达一分钟,具体时间取决于文件大小
|
||||||
pageOrderPrompt=页面顺序(输入逗号分隔的页码列表):
|
pageOrderPrompt=页面顺序(输入逗号分隔的页码列表):
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=到
|
goToPage=到
|
||||||
true=对
|
true=对
|
||||||
false=错
|
false=错
|
||||||
@@ -20,7 +19,6 @@ save=保存
|
|||||||
close=关闭
|
close=关闭
|
||||||
filesSelected=选中的文件
|
filesSelected=选中的文件
|
||||||
noFavourites=没有添加收藏夹
|
noFavourites=没有添加收藏夹
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=无聊等待吗?
|
bored=无聊等待吗?
|
||||||
alphabet=字母表
|
alphabet=字母表
|
||||||
downloadPdf=下载PDF
|
downloadPdf=下载PDF
|
||||||
@@ -44,7 +42,7 @@ red=Red
|
|||||||
green=Green
|
green=Green
|
||||||
blue=Blue
|
blue=Blue
|
||||||
custom=Custom...
|
custom=Custom...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=帐号设定
|
|||||||
account.adminSettings=管理员设置 - 查看和添加用户
|
account.adminSettings=管理员设置 - 查看和添加用户
|
||||||
account.userControlSettings=用户控制设置
|
account.userControlSettings=用户控制设置
|
||||||
account.changeUsername=更改用户名
|
account.changeUsername=更改用户名
|
||||||
account.newUsername=新用户名
|
account.changeUsername=更改用户名
|
||||||
account.password=确认密码
|
account.password=确认密码
|
||||||
account.oldPassword=旧密码
|
account.oldPassword=旧密码
|
||||||
account.newPassword=新密码
|
account.newPassword=新密码
|
||||||
@@ -368,7 +366,7 @@ showJS.tags=JavaScript
|
|||||||
|
|
||||||
home.autoRedact.title=自动删除
|
home.autoRedact.title=自动删除
|
||||||
home.autoRedact.desc=根据输入文本自动删除(覆盖)PDF中的文本
|
home.autoRedact.desc=根据输入文本自动删除(覆盖)PDF中的文本
|
||||||
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
|
showJS.tags=JavaScript
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF to CSV
|
||||||
home.tableExtraxt.desc=从PDF中提取表格并将其转换为CSV
|
home.tableExtraxt.desc=从PDF中提取表格并将其转换为CSV
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=清理PDF
|
sanitizePDF.title=清理PDF
|
||||||
sanitizePDF.header=清理PDF文件
|
sanitizePDF.header=清理PDF文件
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=设置照片的最小轮廓面积阈值。
|
|||||||
ScannerImageSplit.selectText.9=边框尺寸:
|
ScannerImageSplit.selectText.9=边框尺寸:
|
||||||
ScannerImageSplit.selectText.10=设置添加和删除的边框大小,以防止输出中出现白边(默认值:1)。
|
ScannerImageSplit.selectText.10=设置添加和删除的边框大小,以防止输出中出现白边(默认值:1)。
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR/扫描清理
|
ocr.title=OCR/扫描清理
|
||||||
ocr.header=清理扫描件/OCR(光学字符识别)。
|
ocr.header=清理扫描件/OCR(光学字符识别)。
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=自动旋转PDF
|
|||||||
imageToPDF.selectText.3=多文件逻辑(仅在处理多个图像时启用)
|
imageToPDF.selectText.3=多文件逻辑(仅在处理多个图像时启用)
|
||||||
imageToPDF.selectText.4=合并成一个PDF文件
|
imageToPDF.selectText.4=合并成一个PDF文件
|
||||||
imageToPDF.selectText.5=转换为独立的PDF文件
|
imageToPDF.selectText.5=转换为独立的PDF文件
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF to Image
|
pdfToImage.title=PDF to Image
|
||||||
pdfToImage.header=PDF转图片
|
pdfToImage.header=PDF转图片
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=关键词:
|
|||||||
changeMetadata.modDate=修改日期(yyyy/MM/dd HH:mm:ss):
|
changeMetadata.modDate=修改日期(yyyy/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=生产者:
|
changeMetadata.producer=生产者:
|
||||||
changeMetadata.subject=主题:
|
changeMetadata.subject=主题:
|
||||||
|
changeMetadata.title=标题:
|
||||||
changeMetadata.trapped=被困:
|
changeMetadata.trapped=被困:
|
||||||
changeMetadata.selectText.4=其他元数据:
|
changeMetadata.selectText.4=其他元数据:
|
||||||
changeMetadata.selectText.5=添加自定义元数据条目
|
changeMetadata.selectText.5=添加自定义元数据条目
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
@@ -11,7 +11,6 @@ imgPrompt=選擇圖片
|
|||||||
genericSubmit=送出
|
genericSubmit=送出
|
||||||
processTimeWarning=警告:此過程可能需要長達一分鐘,具體取決於檔案大小
|
processTimeWarning=警告:此過程可能需要長達一分鐘,具體取決於檔案大小
|
||||||
pageOrderPrompt=自訂頁面順序(輸入以逗號分隔的頁碼或函式,如 2n+1):
|
pageOrderPrompt=自訂頁面順序(輸入以逗號分隔的頁碼或函式,如 2n+1):
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
|
||||||
goToPage=前往
|
goToPage=前往
|
||||||
true=是
|
true=是
|
||||||
false=否
|
false=否
|
||||||
@@ -20,7 +19,6 @@ save=儲存
|
|||||||
close=關閉
|
close=關閉
|
||||||
filesSelected=已選擇的檔案
|
filesSelected=已選擇的檔案
|
||||||
noFavourites=未新增收藏
|
noFavourites=未新增收藏
|
||||||
downloadComplete=Download Complete
|
|
||||||
bored=等待時覺得無聊?
|
bored=等待時覺得無聊?
|
||||||
alphabet=字母表
|
alphabet=字母表
|
||||||
downloadPdf=下載 PDF
|
downloadPdf=下載 PDF
|
||||||
@@ -44,7 +42,7 @@ red=紅色
|
|||||||
green=綠色
|
green=綠色
|
||||||
blue=藍色
|
blue=藍色
|
||||||
custom=自訂...
|
custom=自訂...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=Yes
|
||||||
no=No
|
no=No
|
||||||
@@ -122,7 +120,7 @@ account.accountSettings=帳戶設定
|
|||||||
account.adminSettings=管理設定 - 檢視和新增使用者
|
account.adminSettings=管理設定 - 檢視和新增使用者
|
||||||
account.userControlSettings=使用者控制設定
|
account.userControlSettings=使用者控制設定
|
||||||
account.changeUsername=修改使用者名稱
|
account.changeUsername=修改使用者名稱
|
||||||
account.newUsername=新使用者名稱
|
account.changeUsername=修改使用者名稱
|
||||||
account.password=確認密碼
|
account.password=確認密碼
|
||||||
account.oldPassword=舊密碼
|
account.oldPassword=舊密碼
|
||||||
account.newPassword=新密碼
|
account.newPassword=新密碼
|
||||||
@@ -364,11 +362,11 @@ PdfToSinglePage.tags=單一頁面
|
|||||||
|
|
||||||
home.showJS.title=顯示 JavaScript
|
home.showJS.title=顯示 JavaScript
|
||||||
home.showJS.desc=搜尋並顯示嵌入 PDF 中的任何 JS(JavaScript)
|
home.showJS.desc=搜尋並顯示嵌入 PDF 中的任何 JS(JavaScript)
|
||||||
showJS.tags=JS
|
showJS.tags=塗黑,隱藏,塗黑,黑色,標記,隱藏
|
||||||
|
|
||||||
home.autoRedact.title=自動塗黑
|
home.autoRedact.title=自動塗黑
|
||||||
home.autoRedact.desc=根據輸入的文字自動塗黑 PDF 中的文字
|
home.autoRedact.desc=根據輸入的文字自動塗黑 PDF 中的文字
|
||||||
autoRedact.tags=塗黑,隱藏,塗黑,黑色,標記,隱藏
|
showJS.tags=塗黑,隱藏,塗黑,黑色,標記,隱藏
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF 轉 CSV
|
home.tableExtraxt.title=PDF 轉 CSV
|
||||||
home.tableExtraxt.desc=從 PDF 中提取表格並將其轉換為 CSV
|
home.tableExtraxt.desc=從 PDF 中提取表格並將其轉換為 CSV
|
||||||
@@ -412,7 +410,7 @@ autoRedact.title=自動塗黑
|
|||||||
autoRedact.header=自動塗黑
|
autoRedact.header=自動塗黑
|
||||||
autoRedact.colorLabel=顏色
|
autoRedact.colorLabel=顏色
|
||||||
autoRedact.textsToRedactLabel=要塗黑的文字(以行分隔)
|
autoRedact.textsToRedactLabel=要塗黑的文字(以行分隔)
|
||||||
autoRedact.textsToRedactPlaceholder=例如 \n機密 \n最高機密
|
autoRedact.textsToRedactPlaceholder=例如 \n機密 \n最高機密
|
||||||
autoRedact.useRegexLabel=使用正則表達式
|
autoRedact.useRegexLabel=使用正則表達式
|
||||||
autoRedact.wholeWordSearchLabel=整個單詞搜尋
|
autoRedact.wholeWordSearchLabel=整個單詞搜尋
|
||||||
autoRedact.customPaddingLabel=自訂額外填充
|
autoRedact.customPaddingLabel=自訂額外填充
|
||||||
@@ -499,8 +497,7 @@ AddStampRequest.overrideY=Override Y Coordinate
|
|||||||
AddStampRequest.customMargin=Custom Margin
|
AddStampRequest.customMargin=Custom Margin
|
||||||
AddStampRequest.customColor=Custom Text Color
|
AddStampRequest.customColor=Custom Text Color
|
||||||
AddStampRequest.submit=Submit
|
AddStampRequest.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=清理 PDF
|
sanitizePDF.title=清理 PDF
|
||||||
sanitizePDF.header=清理 PDF 檔案
|
sanitizePDF.header=清理 PDF 檔案
|
||||||
@@ -659,7 +656,7 @@ ScannerImageSplit.selectText.8=設定照片的最小輪廓區域閾值
|
|||||||
ScannerImageSplit.selectText.9=邊框大小:
|
ScannerImageSplit.selectText.9=邊框大小:
|
||||||
ScannerImageSplit.selectText.10=設定新增和移除的邊框大小,以防止輸出中的白色邊框(預設:1)。
|
ScannerImageSplit.selectText.10=設定新增和移除的邊框大小,以防止輸出中的白色邊框(預設:1)。
|
||||||
|
|
||||||
|
|
||||||
#OCR
|
#OCR
|
||||||
ocr.title=OCR / 掃描清理
|
ocr.title=OCR / 掃描清理
|
||||||
ocr.header=清理掃描 / OCR(光學字元識別)
|
ocr.header=清理掃描 / OCR(光學字元識別)
|
||||||
@@ -778,8 +775,8 @@ imageToPDF.selectText.2=自動旋轉 PDF
|
|||||||
imageToPDF.selectText.3=多文件邏輯(僅在處理多個影像時啟用)
|
imageToPDF.selectText.3=多文件邏輯(僅在處理多個影像時啟用)
|
||||||
imageToPDF.selectText.4=合併為單一 PDF
|
imageToPDF.selectText.4=合併為單一 PDF
|
||||||
imageToPDF.selectText.5=轉換為單獨的 PDF
|
imageToPDF.selectText.5=轉換為單獨的 PDF
|
||||||
|
|
||||||
|
|
||||||
#pdfToImage
|
#pdfToImage
|
||||||
pdfToImage.title=PDF 轉圖片
|
pdfToImage.title=PDF 轉圖片
|
||||||
pdfToImage.header=PDF 轉圖片
|
pdfToImage.header=PDF 轉圖片
|
||||||
@@ -869,6 +866,7 @@ changeMetadata.keywords=關鍵字:
|
|||||||
changeMetadata.modDate=修改日期(yyyy/MM/dd HH:mm:ss):
|
changeMetadata.modDate=修改日期(yyyy/MM/dd HH:mm:ss):
|
||||||
changeMetadata.producer=製作人:
|
changeMetadata.producer=製作人:
|
||||||
changeMetadata.subject=主題:
|
changeMetadata.subject=主題:
|
||||||
|
changeMetadata.title=標題:
|
||||||
changeMetadata.trapped=陷阱:
|
changeMetadata.trapped=陷阱:
|
||||||
changeMetadata.selectText.4=其他中繼資料:
|
changeMetadata.selectText.4=其他中繼資料:
|
||||||
changeMetadata.selectText.5=新增自訂中繼資料項目
|
changeMetadata.selectText.5=新增自訂中繼資料項目
|
||||||
|
|||||||
@@ -7,15 +7,15 @@ security:
|
|||||||
csrfDisabled: true
|
csrfDisabled: true
|
||||||
loginAttemptCount: 5 # lock user account after 5 tries
|
loginAttemptCount: 5 # lock user account after 5 tries
|
||||||
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:
|
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)
|
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.
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
.buttons-container {
|
|
||||||
margin-top: 20px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
#box-drag-container {
|
|
||||||
position: relative;
|
|
||||||
margin: 20px 0;
|
|
||||||
}
|
|
||||||
#pdf-canvas {
|
|
||||||
box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.384);
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.draggable-buttons-box {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
padding: 10px;
|
|
||||||
width: 100%;
|
|
||||||
display: flex;
|
|
||||||
gap: 5px;
|
|
||||||
}
|
|
||||||
.draggable-buttons-box > button {
|
|
||||||
z-index: 10;
|
|
||||||
background-color: rgba(13, 110, 253, 0.1);
|
|
||||||
}
|
|
||||||
.draggable-canvas {
|
|
||||||
border: 1px solid red;
|
|
||||||
position: absolute;
|
|
||||||
touch-action: none;
|
|
||||||
user-select: none;
|
|
||||||
top: 0px;
|
|
||||||
left: 0;
|
|
||||||
}
|
|
||||||
@@ -1,11 +1,9 @@
|
|||||||
/* Dark Mode Styles */
|
/* Dark Mode Styles */
|
||||||
body,
|
body, select, textarea {
|
||||||
select,
|
--body-background-color: 51, 51, 51;
|
||||||
textarea {
|
--base-font-color: 255, 255, 255;
|
||||||
--body-background-color: 51, 51, 51;
|
background-color: rgb(var(--body-background-color)) !important;
|
||||||
--base-font-color: 255, 255, 255;
|
color: rgb(var(--base-font-color)) !important;
|
||||||
background-color: rgb(var(--body-background-color)) !important;
|
|
||||||
color: rgb(var(--base-font-color)) !important;
|
|
||||||
}
|
}
|
||||||
.card {
|
.card {
|
||||||
background-color: rgb(var(--body-background-color)) !important;
|
background-color: rgb(var(--body-background-color)) !important;
|
||||||
@@ -13,11 +11,11 @@ textarea {
|
|||||||
color: rgb(var(--base-font-color)) !important;
|
color: rgb(var(--base-font-color)) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: #add8e6;
|
color: #add8e6;
|
||||||
}
|
}
|
||||||
a:hover {
|
a:hover {
|
||||||
color: #87ceeb; /* Slightly brighter blue on hover for accessibility */
|
color: #87ceeb; /* Slightly brighter blue on hover for accessibility */
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark-card {
|
.dark-card {
|
||||||
@@ -38,7 +36,7 @@ a:hover {
|
|||||||
color: rgb(var(--base-font-color)) !important;
|
color: rgb(var(--base-font-color)) !important;
|
||||||
}
|
}
|
||||||
#support-section {
|
#support-section {
|
||||||
background-color: #444 !important;
|
background-color: #444 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pages-container-wrapper {
|
#pages-container-wrapper {
|
||||||
@@ -49,93 +47,89 @@ a:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.favorite-icon img {
|
.favorite-icon img {
|
||||||
filter: brightness(0) invert(1) !important;
|
filter: brightness(0) invert(1) !important;
|
||||||
}
|
}
|
||||||
table thead {
|
table thead {
|
||||||
background-color: #333 !important;
|
background-color: #333 !important;
|
||||||
border: 1px solid #444;
|
border: 1px solid #444;
|
||||||
}
|
}
|
||||||
table th,
|
table th, table td {
|
||||||
table td {
|
border: 1px solid #444 !important;
|
||||||
border: 1px solid #444 !important;
|
color: white;
|
||||||
color: white;
|
|
||||||
}
|
}
|
||||||
.btn {
|
.btn {
|
||||||
background-color: #444 !important;
|
background-color: #444 !important;
|
||||||
border: none;
|
border: none;
|
||||||
color: #fff !important;
|
color: #fff !important;
|
||||||
}
|
}
|
||||||
.btn-primary {
|
.btn-primary {
|
||||||
background-color: #007bff !important;
|
background-color: #007bff !important;
|
||||||
border: none;
|
border: none;
|
||||||
color: #fff !important;
|
color: #fff !important;
|
||||||
}
|
}
|
||||||
.btn-secondary {
|
.btn-secondary {
|
||||||
background-color: #6c757d !important;
|
background-color: #6c757d !important;
|
||||||
border: none;
|
border: none;
|
||||||
color: #fff !important;
|
color: #fff !important;
|
||||||
}
|
}
|
||||||
.btn-info {
|
.btn-info {
|
||||||
background-color: #17a2b8 !important;
|
background-color: #17a2b8 !important;
|
||||||
border: none;
|
border: none;
|
||||||
color: #fff !important;
|
color: #fff !important;
|
||||||
}
|
}
|
||||||
.btn-danger {
|
.btn-danger {
|
||||||
background-color: #dc3545 !important;
|
background-color: #dc3545 !important;
|
||||||
border: none;
|
border: none;
|
||||||
color: #fff !important;
|
color: #fff !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-warning {
|
.btn-warning {
|
||||||
background-color: #ffc107 !important;
|
background-color: #ffc107 !important;
|
||||||
border: none;
|
border: none;
|
||||||
color: #000 !important;
|
color: #000 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-outline-secondary {
|
.btn-outline-secondary {
|
||||||
color: #fff !important;
|
color: #fff !important;
|
||||||
border-color: #fff;
|
border-color: #fff;
|
||||||
}
|
}
|
||||||
.btn-outline-secondary:hover {
|
.btn-outline-secondary:hover {
|
||||||
background-color: #444 !important;
|
background-color: #444 !important;
|
||||||
color: #007bff !important;
|
color: #007bff !important;
|
||||||
border-color: #007bff;
|
border-color: #007bff;
|
||||||
}
|
}
|
||||||
.blackwhite-icon {
|
.blackwhite-icon {
|
||||||
filter: brightness(0) invert(1);
|
filter: brightness(0) invert(1);
|
||||||
}
|
}
|
||||||
hr {
|
hr {
|
||||||
border-color: rgba(255, 255, 255, 0.6); /* semi-transparent white */
|
border-color: rgba(255, 255, 255, 0.6); /* semi-transparent white */
|
||||||
background-color: rgba(255, 255, 255, 0.6); /* for some browsers that might use background instead of border for <hr> */
|
background-color: rgba(255, 255, 255, 0.6); /* for some browsers that might use background instead of border for <hr> */
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-content {
|
.modal-content {
|
||||||
color: #fff !important;
|
color: #fff !important;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,78 +1,78 @@
|
|||||||
#drag-container {
|
#drag-container {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
display: flex;
|
display:flex;
|
||||||
inset: 0;
|
inset: 0;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
z-index: 10000;
|
z-index: 10000;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
#drag-container:not(:empty) {
|
#drag-container:not(:empty) {
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
#drag-container .dragged-img {
|
#drag-container .dragged-img {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
max-width: 200px;
|
max-width: 200px;
|
||||||
max-height: 200px;
|
max-height: 200px;
|
||||||
box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.58);
|
box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.58);
|
||||||
transform-origin: top left;
|
transform-origin: top left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drag-manager_dragging {
|
.drag-manager_dragging {
|
||||||
width: 0px;
|
width: 0px;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drag-manager_draghover {
|
.drag-manager_draghover {
|
||||||
width: 375px !important;
|
width: 375px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drag-manager_draghover .insert-file-button-container {
|
.drag-manager_draghover .insert-file-button-container {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drag-manager_draghover .button-container {
|
.drag-manager_draghover .button-container {
|
||||||
visibility: hidden !important;
|
visibility: hidden !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[lang-direction="ltr"] .drag-manager_draghover img {
|
html[lang-direction=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[lang-direction=rtl] .drag-manager_draghover img {
|
||||||
left: 125px;
|
left: 125px
|
||||||
}
|
}
|
||||||
|
|
||||||
.drag-manager_dragging-container .hide-on-drag {
|
.drag-manager_dragging-container .hide-on-drag {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drag-manager_endpoint {
|
.drag-manager_endpoint {
|
||||||
width: 80px;
|
width: 80px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background-color: #ffffff10;
|
background-color: #FFFFFF10;
|
||||||
transition: width 0.1s;
|
transition: width 0.1s;
|
||||||
animation: end-drop-expand 0.3s ease;
|
animation: end-drop-expand .3s ease;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drag-manager_endpoint svg {
|
.drag-manager_endpoint svg {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drag-manager_endpoint.drag-manager_draghover {
|
.drag-manager_endpoint.drag-manager_draghover {
|
||||||
width: 150px !important;
|
width: 150px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes end-drop-expand {
|
@keyframes end-drop-expand {
|
||||||
from {
|
from {
|
||||||
width: 0;
|
width: 0;
|
||||||
}
|
}
|
||||||
to {
|
to {
|
||||||
width: 80px;
|
width: 80px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
h1 {
|
|
||||||
text-align: center;
|
|
||||||
margin-top: 10%;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
text-align: center;
|
|
||||||
margin-top: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button:hover {
|
|
||||||
background-color: #005b7f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.features-container {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(auto-fill, minmax(21rem, 3fr));
|
|
||||||
gap: 25px 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.feature-card {
|
|
||||||
border: 1px solid rgba(0, 0, 0, 0.125);
|
|
||||||
border-radius: 0.25rem;
|
|
||||||
padding: 1.25rem;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: flex-start;
|
|
||||||
}
|
|
||||||
|
|
||||||
.feature-card .card-text {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#support-section {
|
|
||||||
background-color: #f9f9f9;
|
|
||||||
padding: 4rem;
|
|
||||||
margin-top: 1rem;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#support-section h1 {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#support-section p {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#button-group {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
#github-button,
|
|
||||||
#discord-button {
|
|
||||||
display: inline-block;
|
|
||||||
padding: 1rem 2rem;
|
|
||||||
margin: 1rem;
|
|
||||||
background-color: #008cba;
|
|
||||||
color: #fff;
|
|
||||||
font-size: 1.2rem;
|
|
||||||
text-align: center;
|
|
||||||
text-decoration: none;
|
|
||||||
border-radius: 3rem;
|
|
||||||
transition: all 0.3s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
#github-button:hover,
|
|
||||||
#discord-button:hover,
|
|
||||||
#home-button:hover {
|
|
||||||
background-color: #005b7f;
|
|
||||||
}
|
|
||||||
|
|
||||||
#home-button {
|
|
||||||
display: block;
|
|
||||||
width: 200px;
|
|
||||||
height: 50px;
|
|
||||||
margin: 2em auto;
|
|
||||||
background-color: #008cba;
|
|
||||||
color: white;
|
|
||||||
text-align: center;
|
|
||||||
line-height: 50px;
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: bold;
|
|
||||||
border-radius: 25px;
|
|
||||||
transition: all 0.3s ease-in-out;
|
|
||||||
}
|
|
||||||
@@ -1,97 +1,94 @@
|
|||||||
#errorContainer {
|
#errorContainer {
|
||||||
margin: 20px; /* adjust this value as needed */
|
margin: 20px; /* adjust this value as needed */
|
||||||
}
|
}
|
||||||
|
|
||||||
#helpModalDialog {
|
#helpModalDialog {
|
||||||
width: 90%;
|
width: 90%;
|
||||||
max-width: 800px;
|
max-width: 800px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#helpModal h1 {
|
#helpModal h1 {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin-top: 10%;
|
margin-top: 10%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#helpModal p {
|
#helpModal p {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin-top: 2em;
|
margin-top: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#helpModal .button:hover {
|
#helpModal .button:hover {
|
||||||
background-color: #005b7f;
|
background-color: #005b7f;
|
||||||
}
|
}
|
||||||
|
|
||||||
#helpModal .features-container {
|
#helpModal .features-container {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(auto-fill, minmax(21rem, 3fr));
|
grid-template-columns: repeat(auto-fill, minmax(21rem, 3fr));
|
||||||
gap: 25px 30px;
|
gap: 25px 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#helpModal .feature-card {
|
#helpModal .feature-card {
|
||||||
border: 1px solid rgba(0, 0, 0, 0.125);
|
border: 1px solid rgba(0, 0, 0, .125);
|
||||||
border-radius: 0.25rem;
|
border-radius: 0.25rem;
|
||||||
padding: 1.25rem;
|
padding: 1.25rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
#helpModal .feature-card .card-text {
|
#helpModal .feature-card .card-text {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#support-section {
|
#support-section {
|
||||||
background-color: #f9f9f9;
|
background-color: #f9f9f9;
|
||||||
padding: 4rem;
|
padding: 4rem;
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
#support-section h1 {
|
#support-section h1 {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#support-section p {
|
#support-section p {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#button-group {
|
#button-group {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
#github-button,
|
#github-button, #discord-button {
|
||||||
#discord-button {
|
display: inline-block;
|
||||||
display: inline-block;
|
padding: 1rem 2rem;
|
||||||
padding: 1rem 2rem;
|
margin: 1rem;
|
||||||
margin: 1rem;
|
background-color: #008CBA;
|
||||||
background-color: #008cba;
|
color: #fff;
|
||||||
color: #fff;
|
font-size: 1.2rem;
|
||||||
font-size: 1.2rem;
|
text-align: center;
|
||||||
text-align: center;
|
text-decoration: none;
|
||||||
text-decoration: none;
|
border-radius: 3rem;
|
||||||
border-radius: 3rem;
|
transition: all 0.3s ease-in-out;
|
||||||
transition: all 0.3s ease-in-out;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#github-button:hover,
|
#github-button:hover, #discord-button:hover, #home-button:hover {
|
||||||
#discord-button:hover,
|
background-color: #005b7f;
|
||||||
#home-button:hover {
|
|
||||||
background-color: #005b7f;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#home-button {
|
#home-button {
|
||||||
display: block;
|
display: block;
|
||||||
width: 200px;
|
width: 200px;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
margin: 2em auto;
|
margin: 2em auto;
|
||||||
background-color: #008cba;
|
background-color: #008CBA;
|
||||||
color: white;
|
color: white;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 50px;
|
line-height: 50px;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
border-radius: 25px;
|
border-radius: 25px;
|
||||||
transition: all 0.3s ease-in-out;
|
transition: all 0.3s ease-in-out;
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
.custom-file-label {
|
.custom-file-label {
|
||||||
padding-right: 90px;
|
padding-right: 90px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.selected-files {
|
.selected-files {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
max-height: 150px;
|
max-height: 150px;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
}
|
}
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
#footer {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column; /* Stack children vertically */
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer-center {
|
|
||||||
display: flex;
|
|
||||||
align-items: center; /* Center children horizontally */
|
|
||||||
flex-grow: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer-powered-by {
|
|
||||||
margin-top: auto; /* Pushes the text to the bottom */
|
|
||||||
color: grey;
|
|
||||||
text-align: center; /* Centers the text inside the div */
|
|
||||||
width: 100%; /* Full width to center the text properly */
|
|
||||||
}
|
|
||||||
@@ -1,54 +1,49 @@
|
|||||||
#game-container {
|
#game-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100vh;
|
width: 100vh;
|
||||||
height: 0;
|
height: 0;
|
||||||
padding-bottom: 75%; /* 4:3 aspect ratio */
|
padding-bottom: 75%; /* 4:3 aspect ratio */
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
border: 2px solid black; /* Add border */
|
border: 2px solid black; /* Add border */
|
||||||
}
|
}
|
||||||
|
|
||||||
.pdf,
|
.pdf, .player, .projectile {
|
||||||
.player,
|
position: absolute;
|
||||||
.projectile {
|
|
||||||
position: absolute;
|
|
||||||
}
|
}
|
||||||
.pdf {
|
.pdf {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
}
|
}
|
||||||
.player {
|
.player {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
}
|
}
|
||||||
.projectile {
|
.projectile {
|
||||||
background-color: black !important;
|
background-color: black !important;
|
||||||
width: 5px;
|
width: 5px;
|
||||||
height: 10px;
|
height: 10px;
|
||||||
}
|
}
|
||||||
#score,
|
#score, #level, #lives, #high-score {
|
||||||
#level,
|
color: black;
|
||||||
#lives,
|
font-family: sans-serif;
|
||||||
#high-score {
|
position: absolute;
|
||||||
color: black;
|
font-size: calc(14px + 0.25vw); /* Reduced font size */
|
||||||
font-family: sans-serif;
|
|
||||||
position: absolute;
|
|
||||||
font-size: calc(14px + 0.25vw); /* Reduced font size */
|
|
||||||
}
|
}
|
||||||
#score {
|
#score {
|
||||||
top: 10px;
|
top: 10px;
|
||||||
left: 10px;
|
left: 10px;
|
||||||
}
|
}
|
||||||
#lives {
|
#lives {
|
||||||
top: 10px;
|
top: 10px;
|
||||||
left: calc(9vw); /* Adjusted position */
|
left: calc(7vw); /* Adjusted position */
|
||||||
}
|
}
|
||||||
#high-score {
|
#high-score {
|
||||||
top: 10px;
|
top: 10px;
|
||||||
left: calc(14vw); /* Adjusted position */
|
left: calc(14vw); /* Adjusted position */
|
||||||
}
|
}
|
||||||
#level {
|
#level {
|
||||||
top: 10px;
|
top: 10px;
|
||||||
right: 10px;
|
right: 10px;
|
||||||
}
|
}
|
||||||
@@ -1,94 +1,94 @@
|
|||||||
#page-container {
|
#page-container {
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
#content-wrap {
|
#content-wrap {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#footer {
|
#footer {
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
.navbar {
|
.navbar {
|
||||||
height: auto; /* Adjusts height automatically based on content */
|
height: auto; /* Adjusts height automatically based on content */
|
||||||
white-space: nowrap; /* Prevents wrapping of navbar contents */
|
white-space: nowrap; /* Prevents wrapping of navbar contents */
|
||||||
}
|
}
|
||||||
/* TODO enable later
|
/* TODO enable later
|
||||||
.navbar .container {
|
.navbar .container {
|
||||||
|
|
||||||
|
|
||||||
max-width: 100%; //Allows the container to expand up to full width
|
max-width: 100%; //Allows the container to expand up to full width
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
html[lang-direction="ltr"] * {
|
html[lang-direction=ltr] * {
|
||||||
direction: ltr;
|
direction: ltr;
|
||||||
}
|
}
|
||||||
html[lang-direction="rtl"] * {
|
html[lang-direction=rtl] * {
|
||||||
direction: rtl;
|
direction: rtl;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
.ignore-rtl {
|
.ignore-rtl {
|
||||||
direction: ltr !important;
|
direction: ltr !important;
|
||||||
text-align: left !important;
|
text-align: left !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.align-top {
|
.align-top {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
}
|
}
|
||||||
.align-center-right {
|
.align-center-right {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0;
|
right: 0;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.align-center-left {
|
.align-center-left {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.align-bottom {
|
.align-bottom {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-group > label:first-of-type {
|
.btn-group > label:first-of-type {
|
||||||
border-top-left-radius: 0.25rem !important;
|
border-top-left-radius: 0.25rem !important;
|
||||||
border-bottom-left-radius: 0.25rem !important;
|
border-bottom-left-radius: 0.25rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[lang-direction="rtl"] input.form-check-input {
|
html[lang-direction="rtl"] input.form-check-input {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-left: 0px;
|
margin-left: 0px;
|
||||||
}
|
}
|
||||||
html[lang-direction="rtl"] label.form-check-label {
|
html[lang-direction="rtl"] label.form-check-label {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
|
||||||
.margin-auto-parent {
|
.margin-auto-parent {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
.margin-center {
|
.margin-center {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
#pdf-canvas {
|
#pdf-canvas {
|
||||||
box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.384);
|
box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.384);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
.fixed-shadow-canvas {
|
.fixed-shadow-canvas {
|
||||||
box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.384);
|
box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.384);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
.shadow-canvas {
|
.shadow-canvas {
|
||||||
box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.384);
|
box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.384);
|
||||||
}
|
}
|
||||||
.hidden {
|
.hidden {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@@ -1,62 +1,64 @@
|
|||||||
#searchBar {
|
#searchBar {
|
||||||
background-image: url("../images/search.svg");
|
background-image: url('../images/search.svg');
|
||||||
background-position: 16px 16px;
|
background-position: 16px 16px;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
margin-bottom: 12px;
|
margin-bottom: 12px;
|
||||||
padding: 12px 20px 12px 40px;
|
padding: 12px 20px 12px 40px;
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #ddd;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
.dark-mode-search {
|
.dark-mode-search {
|
||||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' hei… 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z'/%3E%3C/svg%3E") !important;
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' hei… 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z'/%3E%3C/svg%3E") !important;
|
||||||
color: #f8f9fa !important;
|
color: #f8f9fa !important;
|
||||||
background-color: #212529 !important;
|
background-color: #212529 !important;
|
||||||
border-color: #343a40 !important;
|
border-color: #343a40 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.features-container {
|
.features-container {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(auto-fill, minmax(15rem, 3fr));
|
grid-template-columns: repeat(auto-fill, minmax(15rem, 3fr));
|
||||||
gap: 25px 30px;
|
gap: 25px 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.feature-card {
|
.feature-card {
|
||||||
border: 2px solid rgba(0, 0, 0, 0.25);
|
border: 2px solid rgba(0, 0, 0, .25);
|
||||||
border-radius: 0.25rem;
|
border-radius: 0.25rem;
|
||||||
padding: 1.25rem;
|
padding: 1.25rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
background: rgba(13, 110, 253, 0.05);
|
background: rgba(13, 110, 253, 0.05);
|
||||||
transition:
|
transition: transform 0.3s, border 0.3s;
|
||||||
transform 0.3s,
|
transform-origin: center center;
|
||||||
border 0.3s;
|
outline: 2px solid transparent;
|
||||||
transform-origin: center center;
|
|
||||||
outline: 2px solid transparent;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.feature-card a {
|
.feature-card a {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.feature-card .card-text {
|
.feature-card .card-text {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.feature-card:hover {
|
.feature-card:hover {
|
||||||
outline: 1px solid rgba(0, 0, 0, 0.5);
|
outline: 1px solid rgba(0, 0, 0, .5);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transform: scale(1.1);
|
transform: scale(1.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.feature-card:hover .card-title {
|
.feature-card:hover .card-title {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
.card-title.text-primary {
|
.card-title.text-primary {
|
||||||
color: #000; /* Replace with your desired shade of blue */
|
color: #000; /* Replace with your desired shade of blue */
|
||||||
@@ -65,27 +67,27 @@
|
|||||||
.home-card-icon {
|
.home-card-icon {
|
||||||
width: 30px;
|
width: 30px;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
transform: translateY(-5px);
|
transform: translateY(-5px);
|
||||||
}
|
}
|
||||||
.home-card-icon-colour {
|
.home-card-icon-colour {
|
||||||
filter: invert(0.2) sepia(2) saturate(50) hue-rotate(190deg);
|
filter: invert(0.2) sepia(2) saturate(50) hue-rotate(190deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.favorite-icon {
|
.favorite-icon {
|
||||||
display: none;
|
display: none;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 10px;
|
top: 10px;
|
||||||
right: 10px;
|
right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Only show the favorite icons when the parent card is being hovered over */
|
/* Only show the favorite icons when the parent card is being hovered over */
|
||||||
.feature-card:hover .favorite-icon {
|
.feature-card:hover .favorite-icon {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
.favorite-icon img {
|
.favorite-icon img {
|
||||||
filter: brightness(0);
|
filter: brightness(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
.jumbotron {
|
.jumbotron {
|
||||||
padding: 3rem 3rem; /* Reduce vertical padding */
|
padding: 3rem 3rem; /* Reduce vertical padding */
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,43 +1,40 @@
|
|||||||
|
|
||||||
#image-highlighter {
|
#image-highlighter {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
display: flex;
|
display:flex;
|
||||||
inset: 0;
|
inset: 0;
|
||||||
z-index: 10000;
|
z-index: 10000;
|
||||||
background-color: rgba(0, 0, 0, 0);
|
background-color: rgba(0, 0, 0, 0);
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
transition:
|
transition: visbility 0.1s linear, background-color 0.1s linear;
|
||||||
visbility 0.1s linear,
|
|
||||||
background-color 0.1s linear;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#image-highlighter > * {
|
#image-highlighter > * {
|
||||||
max-width: 80vw;
|
max-width: 80vw;
|
||||||
max-height: 80vh;
|
max-height: 80vh;
|
||||||
animation: image-highlight 0.1s linear;
|
animation: image-highlight .1s linear;
|
||||||
transition:
|
transition: transform .1s linear, opacity .1s linear;
|
||||||
transform 0.1s linear,
|
|
||||||
opacity 0.1s linear;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#image-highlighter > *.remove {
|
#image-highlighter > *.remove {
|
||||||
transform: scale(0.8) !important;
|
transform: scale(0.8) !important;
|
||||||
opacity: 0 !important;
|
opacity: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#image-highlighter:not(:empty) {
|
#image-highlighter:not(:empty) {
|
||||||
background-color: rgba(0, 0, 0, 0.37);
|
background-color: rgba(0, 0, 0, 0.37);
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes image-highlight {
|
@keyframes image-highlight {
|
||||||
from {
|
from {
|
||||||
transform: scale(0.8);
|
transform: scale(0.8);
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
to {
|
to {
|
||||||
transform: scale(1);
|
transform: scale(1);
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
td a {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
td a:hover,
|
|
||||||
td a:focus {
|
|
||||||
text-decoration: underline;
|
|
||||||
/* Adds underline on hover/focus for clarity */
|
|
||||||
}
|
|
||||||
@@ -1,13 +1,14 @@
|
|||||||
/* Dark Mode Styles */
|
/* Dark Mode Styles */
|
||||||
body {
|
body {
|
||||||
--body-background-color: 255, 255, 255;
|
--body-background-color: 255, 255, 255;
|
||||||
--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;*/
|
||||||
|
|||||||
@@ -1,111 +0,0 @@
|
|||||||
html,
|
|
||||||
body {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
padding-top: 40px;
|
|
||||||
padding-bottom: 40px;
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-signin {
|
|
||||||
width: 100%;
|
|
||||||
max-width: 330px;
|
|
||||||
padding: 15px;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-signin .checkbox {
|
|
||||||
font-weight: 400;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-signin .form-floating:focus-within {
|
|
||||||
z-index: 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-signin input[type="text"] {
|
|
||||||
margin-bottom: -1px;
|
|
||||||
border-bottom-right-radius: 0;
|
|
||||||
border-bottom-left-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-signin input[type="password"] {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
border-top-left-radius: 0;
|
|
||||||
border-top-right-radius: 0;
|
|
||||||
}
|
|
||||||
.container-flex {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
min-height: 100vh;
|
|
||||||
width: 100%; /* Set width to 100% */
|
|
||||||
align-items: center; /* Center its children horizontally */
|
|
||||||
}
|
|
||||||
.footer-bottom {
|
|
||||||
margin-top: auto;
|
|
||||||
}
|
|
||||||
body.light-mode input:-webkit-autofill,
|
|
||||||
body.light-mode input:-webkit-autofill:hover,
|
|
||||||
body.light-mode input:-webkit-autofill:focus,
|
|
||||||
body.light-mode input:-webkit-autofill:active {
|
|
||||||
-webkit-text-fill-color: #212529; /* Dark font color */
|
|
||||||
-webkit-box-shadow: 0 0 0 1000px #f8f9fa inset; /* Light background color */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Dark Mode */
|
|
||||||
body.dark-mode input:-webkit-autofill,
|
|
||||||
body.dark-mode input:-webkit-autofill:hover,
|
|
||||||
body.dark-mode input:-webkit-autofill:focus,
|
|
||||||
body.dark-mode input:-webkit-autofill:active {
|
|
||||||
-webkit-text-fill-color: #f8f9fa; /* Light font color */
|
|
||||||
-webkit-box-shadow: 0 0 0 1000px #212529 inset; /* Dark background color */
|
|
||||||
}
|
|
||||||
/* Light Mode */
|
|
||||||
body.light-mode .form-floating > input:focus + label {
|
|
||||||
color: #212529 !important; /* Dark text for light background */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Dark Mode */
|
|
||||||
body.dark-mode .form-floating > input:focus + label {
|
|
||||||
color: #fff !important; /* Light text for dark background */
|
|
||||||
}
|
|
||||||
|
|
||||||
body.light-mode .form-floating > label {
|
|
||||||
color: #212529 !important; /* Dark text for light background */
|
|
||||||
}
|
|
||||||
|
|
||||||
body.dark-mode .form-floating > label {
|
|
||||||
color: #fff !important; /* Light text for dark background */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Removing default styles for ul and li */
|
|
||||||
ul {
|
|
||||||
list-style: none;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Positioning the container of these elements to the top right */
|
|
||||||
.your-container-class {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Styling for the dropdown */
|
|
||||||
.dropdown-menu {
|
|
||||||
min-width: 200px; /* or whatever width you prefer */
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-icon {
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
.list-group-item {
|
.list-group-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -25,4 +25,5 @@
|
|||||||
.move-down span {
|
.move-down span {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,119 +0,0 @@
|
|||||||
.multi-tool-container {
|
|
||||||
max-width: 95vw;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#global-buttons-container {
|
|
||||||
display: flex;
|
|
||||||
gap: 10px;
|
|
||||||
align-items: start;
|
|
||||||
|
|
||||||
background-color: rgba(13, 110, 253, 0.1);
|
|
||||||
border: 1px solid rgba(0, 0, 0, 0.25);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
|
|
||||||
top: 10px;
|
|
||||||
z-index: 10;
|
|
||||||
padding: 10px;
|
|
||||||
border-radius: 8px;
|
|
||||||
}
|
|
||||||
#global-buttons-container > * {
|
|
||||||
padding: 0.6rem 0.75rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#global-buttons-container svg {
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
}
|
|
||||||
#export-button {
|
|
||||||
margin-left: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pages-container-wrapper {
|
|
||||||
--background-color: rgba(0, 0, 0, 0.025);
|
|
||||||
--scroll-bar-color: #f1f1f1;
|
|
||||||
--scroll-bar-thumb: #888;
|
|
||||||
--scroll-bar-thumb-hover: #555;
|
|
||||||
background-color: var(--background-color);
|
|
||||||
width: 100%;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
padding: 10px 25px;
|
|
||||||
border-radius: 10px;
|
|
||||||
overflow-y: hidden;
|
|
||||||
overflow-x: auto;
|
|
||||||
min-height: 275px;
|
|
||||||
margin: 0 0 30px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pages-container {
|
|
||||||
margin: auto;
|
|
||||||
gap: 0px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* width */
|
|
||||||
#pages-container-wrapper::-webkit-scrollbar {
|
|
||||||
width: 10px;
|
|
||||||
height: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Track */
|
|
||||||
#pages-container-wrapper::-webkit-scrollbar-track {
|
|
||||||
background: var(--scroll-bar-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Handle */
|
|
||||||
#pages-container-wrapper::-webkit-scrollbar-thumb {
|
|
||||||
border-radius: 10px;
|
|
||||||
background: var(--scroll-bar-thumb);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Handle on hover */
|
|
||||||
#pages-container-wrapper::-webkit-scrollbar-thumb:hover {
|
|
||||||
background: var(--scroll-bar-thumb-hover);
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container {
|
|
||||||
height: 250px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
flex-direction: column-reverse;
|
|
||||||
aspect-ratio: 1;
|
|
||||||
text-align: center;
|
|
||||||
position: relative;
|
|
||||||
user-select: none;
|
|
||||||
transition: width 1s linear;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container img {
|
|
||||||
/* max-width: calc(100% - 15px); */
|
|
||||||
max-height: calc(100% - 15px);
|
|
||||||
max-width: 237px;
|
|
||||||
display: block;
|
|
||||||
position: absolute;
|
|
||||||
left: 50%;
|
|
||||||
top: 50%;
|
|
||||||
translate: -50% -50%;
|
|
||||||
box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.384);
|
|
||||||
border-radius: 4px;
|
|
||||||
transition: rotate 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
#add-pdf-button {
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-number {
|
|
||||||
position: absolute;
|
|
||||||
top: 5px;
|
|
||||||
right: 5px;
|
|
||||||
color: white;
|
|
||||||
background-color: #007bff; /* Primary blue color */
|
|
||||||
padding: 3px 6px;
|
|
||||||
border-radius: 4px;
|
|
||||||
font-size: 12px;
|
|
||||||
z-index: 2;
|
|
||||||
}
|
|
||||||
@@ -1,116 +1,80 @@
|
|||||||
#navbarSearch {
|
|
||||||
top: 100%;
|
|
||||||
right: 0;
|
|
||||||
transition: all 0.3s;
|
|
||||||
max-height: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
#navbarSearch.show {
|
|
||||||
max-height: 300px; /* Adjust this to your desired max height */
|
#navbarSearch {
|
||||||
|
top: 100%;
|
||||||
|
right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#searchForm {
|
#searchForm {
|
||||||
width: 200px; /* Adjust this value as needed */
|
width: 200px; /* Adjust this value as needed */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Style the search results to match the navbar */
|
/* Style the search results to match the navbar */
|
||||||
#searchResults {
|
#searchResults {
|
||||||
max-height: 200px; /* Adjust this value as needed */
|
max-height: 200px; /* Adjust this value as needed */
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
max-width: 300px; /* Adjust to your preferred width */
|
|
||||||
transition: height 0.3s ease; /* Smooth height transition */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#searchResults .dropdown-item {
|
#searchResults .dropdown-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
height: 50px; /* Fixed height */
|
height: 50px; /* Fixed height */
|
||||||
overflow: hidden; /* Hide overflow */
|
overflow: hidden; /* Hide overflow */
|
||||||
}
|
}
|
||||||
|
|
||||||
#searchResults .icon {
|
#searchResults .icon {
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#searchResults .icon-text {
|
#searchResults .icon-text {
|
||||||
display: inline;
|
display: inline;
|
||||||
overflow: hidden; /* Hide overflow */
|
overflow: hidden; /* Hide overflow */
|
||||||
text-overflow: ellipsis; /* Add ellipsis for long text */
|
text-overflow: ellipsis; /* Add ellipsis for long text */
|
||||||
}
|
}
|
||||||
|
|
||||||
#search-icon i {
|
|
||||||
font-size: 24px; /* Adjust this to your desired size */
|
|
||||||
transition: color 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
#search-icon:hover i {
|
|
||||||
color: #666; /* Adjust this to your hover color */
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-input {
|
|
||||||
transition:
|
|
||||||
border 0.3s,
|
|
||||||
box-shadow 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-input:focus {
|
|
||||||
border-color: #666; /* Adjust this to your focus color */
|
|
||||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /* Adjust this to your desired shadow */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set a fixed height and styling for each search result item */
|
|
||||||
.search-results a {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 10px; /* space between icon and text */
|
|
||||||
height: 40px; /* Adjust based on your design */
|
|
||||||
overflow: hidden; /* Prevent content from overflowing */
|
|
||||||
white-space: nowrap; /* Prevent text from wrapping to next line */
|
|
||||||
text-overflow: ellipsis; /* Truncate text if it's too long */
|
|
||||||
}
|
|
||||||
|
|
||||||
.main-icon {
|
.main-icon {
|
||||||
width: 36px;
|
width: 36px;
|
||||||
height: 36px;
|
height: 36px;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon + .icon {
|
.icon+.icon {
|
||||||
margin-left: -4px;
|
margin-left: -4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon-text {
|
.icon-text {
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-item-separator {
|
.nav-item-separator {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin: 0 4px; /* Adjust the margin as needed */
|
margin: 0 4px; /* Adjust the margin as needed */
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-item-separator::before {
|
.nav-item-separator::before {
|
||||||
content: "";
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 10%; /* Adjust the top and bottom margins as needed */
|
top: 10%; /* Adjust the top and bottom margins as needed */
|
||||||
bottom: 10%;
|
bottom: 10%;
|
||||||
width: 1px;
|
width: 1px;
|
||||||
background-color: #ccc; /* Adjust the color as needed */
|
background-color: #ccc; /* Adjust the color as needed */
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-icon {
|
.navbar-icon {
|
||||||
width: 20px;
|
width: 20px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
}
|
}
|
||||||
@@ -1,85 +1,87 @@
|
|||||||
|
|
||||||
.pdf-actions_button-container {
|
.pdf-actions_button-container {
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
display: flex;
|
display:flex;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transition: opacity 0.1s linear;
|
transition: opacity 0.1s linear;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pdf-actions_container:hover .pdf-actions_button-container {
|
.pdf-actions_container:hover .pdf-actions_button-container {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pdf-actions_button-container > * {
|
.pdf-actions_button-container > * {
|
||||||
padding: 0.25rem 0.5rem;
|
padding: 0.25rem 0.5rem;
|
||||||
margin: 3px;
|
margin: 3px;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pdf-actions_container svg {
|
.pdf-actions_container svg {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
}
|
}
|
||||||
.pdf-actions_container:nth-child(1) .pdf-actions_move-left-button {
|
.pdf-actions_container:nth-child(1) .pdf-actions_move-left-button {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.pdf-actions_container:last-child .pdf-actions_move-right-button {
|
.pdf-actions_container:last-child .pdf-actions_move-right-button {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* "insert pdf" buttons that appear on the right when hover */
|
/* "insert pdf" buttons that appear on the right when hover */
|
||||||
.pdf-actions_insert-file-button-container {
|
.pdf-actions_insert-file-button-container {
|
||||||
translate: 0 -50%;
|
translate: 0 -50%;
|
||||||
width: 80px;
|
width: 80px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transition: opacity 0.2s;
|
transition: opacity 0.2s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pdf-actions_insert-file-button-container.left {
|
.pdf-actions_insert-file-button-container.left {
|
||||||
left: -20px;
|
left: -20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pdf-actions_insert-file-button-container.right {
|
.pdf-actions_insert-file-button-container.right {
|
||||||
right: -20px;
|
right: -20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[lang-direction="ltr"] .pdf-actions_insert-file-button-container.right {
|
html[lang-direction=ltr] .pdf-actions_insert-file-button-container.right {
|
||||||
display: none;
|
display:none;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[lang-direction="rtl"] .pdf-actions_insert-file-button-container.left {
|
html[lang-direction=rtl] .pdf-actions_insert-file-button-container.left {
|
||||||
display: none;
|
display:none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pdf-actions_insert-file-button-container.left .pdf-actions_insert-file-button {
|
.pdf-actions_insert-file-button-container.left .pdf-actions_insert-file-button {
|
||||||
left: 0;
|
left: 0;
|
||||||
translate: 0 -50%;
|
translate: 0 -50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pdf-actions_insert-file-button-container.right .pdf-actions_insert-file-button {
|
.pdf-actions_insert-file-button-container.right .pdf-actions_insert-file-button {
|
||||||
right: 0;
|
right: 0;
|
||||||
translate: 0 -50%;
|
translate: 0 -50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[lang-direction="ltr"] .pdf-actions_container:last-child > .pdf-actions_insert-file-button-container.right {
|
html[lang-direction=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 {
|
|
||||||
display: block;
|
html[lang-direction=rtl] .pdf-actions_container:last-child > .pdf-actions_insert-file-button-container.left {
|
||||||
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pdf-actions_insert-file-button-container:hover {
|
.pdf-actions_insert-file-button-container:hover {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
transition: opacity 0.05s;
|
transition: opacity 0.05s;
|
||||||
}
|
}
|
||||||
.pdf-actions_insert-file-button {
|
.pdf-actions_insert-file-button {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
right: 50%;
|
right: 50%;
|
||||||
translate: 50% -50%;
|
translate: 50% -50%;
|
||||||
aspect-ratio: 1;
|
aspect-ratio: 1;
|
||||||
border-radius: 100px;
|
border-radius: 100px;
|
||||||
}
|
}
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
.btn-margin {
|
|
||||||
margin-right: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bordered-box {
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
padding: 20px;
|
|
||||||
margin: 20px;
|
|
||||||
width: 70%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.center-element {
|
|
||||||
width: 80%;
|
|
||||||
text-align: center;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.element-margin {
|
|
||||||
margin: 10px 0;
|
|
||||||
/* Adjust this value to increase/decrease the margin as needed */
|
|
||||||
}
|
|
||||||
@@ -1,113 +1,37 @@
|
|||||||
/* Rainbow Mode Styles */
|
/* Rainbow Mode Styles */
|
||||||
body {
|
body {
|
||||||
background: linear-gradient(
|
background: linear-gradient(90deg, rgba(255,0,0,1) 0%, rgba(255,154,0,1) 10%, rgba(208,222,33,1) 20%, rgba(79,220,74,1) 30%, rgba(63,218,216,1) 40%, rgba(47,201,226,1) 50%, rgba(28,127,238,1) 60%, rgba(95,21,242,1) 70%, rgba(186,12,248,1) 80%, rgba(251,7,217,1) 90%, rgba(255,0,0,1) 100%);
|
||||||
90deg,
|
color: #fff !important;
|
||||||
rgba(255, 0, 0, 1) 0%,
|
--body-background-color: 255, 255, 255;
|
||||||
rgba(255, 154, 0, 1) 10%,
|
--base-font-color: 33, 37, 41;
|
||||||
rgba(208, 222, 33, 1) 20%,
|
|
||||||
rgba(79, 220, 74, 1) 30%,
|
|
||||||
rgba(63, 218, 216, 1) 40%,
|
|
||||||
rgba(47, 201, 226, 1) 50%,
|
|
||||||
rgba(28, 127, 238, 1) 60%,
|
|
||||||
rgba(95, 21, 242, 1) 70%,
|
|
||||||
rgba(186, 12, 248, 1) 80%,
|
|
||||||
rgba(251, 7, 217, 1) 90%,
|
|
||||||
rgba(255, 0, 0, 1) 100%
|
|
||||||
);
|
|
||||||
color: #fff !important;
|
|
||||||
--body-background-color: 255, 255, 255;
|
|
||||||
--base-font-color: 33, 37, 41;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark-card {
|
.dark-card {
|
||||||
background: linear-gradient(
|
background: linear-gradient(90deg, rgba(255,0,0,1) 0%, rgba(255,154,0,1) 10%, rgba(208,222,33,1) 20%, rgba(79,220,74,1) 30%, rgba(63,218,216,1) 40%, rgba(47,201,226,1) 50%, rgba(28,127,238,1) 60%, rgba(95,21,242,1) 70%, rgba(186,12,248,1) 80%, rgba(251,7,217,1) 90%, rgba(255,0,0,1) 100%) !important;
|
||||||
90deg,
|
color: white !important;
|
||||||
rgba(255, 0, 0, 1) 0%,
|
|
||||||
rgba(255, 154, 0, 1) 10%,
|
|
||||||
rgba(208, 222, 33, 1) 20%,
|
|
||||||
rgba(79, 220, 74, 1) 30%,
|
|
||||||
rgba(63, 218, 216, 1) 40%,
|
|
||||||
rgba(47, 201, 226, 1) 50%,
|
|
||||||
rgba(28, 127, 238, 1) 60%,
|
|
||||||
rgba(95, 21, 242, 1) 70%,
|
|
||||||
rgba(186, 12, 248, 1) 80%,
|
|
||||||
rgba(251, 7, 217, 1) 90%,
|
|
||||||
rgba(255, 0, 0, 1) 100%
|
|
||||||
) !important;
|
|
||||||
color: white !important;
|
|
||||||
}
|
}
|
||||||
.jumbotron {
|
.jumbotron {
|
||||||
background: linear-gradient(
|
background: linear-gradient(90deg, rgba(255,0,0,1) 0%, rgba(255,154,0,1) 10%, rgba(208,222,33,1) 20%, rgba(79,220,74,1) 30%, rgba(63,218,216,1) 40%, rgba(47,201,226,1) 50%, rgba(28,127,238,1) 60%, rgba(95,21,242,1) 70%, rgba(186,12,248,1) 80%, rgba(251,7,217,1) 90%, rgba(255,0,0,1) 100%);
|
||||||
90deg,
|
color: #fff !important;
|
||||||
rgba(255, 0, 0, 1) 0%,
|
|
||||||
rgba(255, 154, 0, 1) 10%,
|
|
||||||
rgba(208, 222, 33, 1) 20%,
|
|
||||||
rgba(79, 220, 74, 1) 30%,
|
|
||||||
rgba(63, 218, 216, 1) 40%,
|
|
||||||
rgba(47, 201, 226, 1) 50%,
|
|
||||||
rgba(28, 127, 238, 1) 60%,
|
|
||||||
rgba(95, 21, 242, 1) 70%,
|
|
||||||
rgba(186, 12, 248, 1) 80%,
|
|
||||||
rgba(251, 7, 217, 1) 90%,
|
|
||||||
rgba(255, 0, 0, 1) 100%
|
|
||||||
);
|
|
||||||
color: #fff !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-group {
|
.list-group {
|
||||||
background: linear-gradient(
|
background: linear-gradient(90deg, rgba(255,0,0,1) 0%, rgba(255,154,0,1) 10%, rgba(208,222,33,1) 20%, rgba(79,220,74,1) 30%, rgba(63,218,216,1) 40%, rgba(47,201,226,1) 50%, rgba(28,127,238,1) 60%, rgba(95,21,242,1) 70%, rgba(186,12,248,1) 80%, rgba(251,7,217,1) 90%, rgba(255,0,0,1) 100%) !important;
|
||||||
90deg,
|
color: fff !important;
|
||||||
rgba(255, 0, 0, 1) 0%,
|
|
||||||
rgba(255, 154, 0, 1) 10%,
|
|
||||||
rgba(208, 222, 33, 1) 20%,
|
|
||||||
rgba(79, 220, 74, 1) 30%,
|
|
||||||
rgba(63, 218, 216, 1) 40%,
|
|
||||||
rgba(47, 201, 226, 1) 50%,
|
|
||||||
rgba(28, 127, 238, 1) 60%,
|
|
||||||
rgba(95, 21, 242, 1) 70%,
|
|
||||||
rgba(186, 12, 248, 1) 80%,
|
|
||||||
rgba(251, 7, 217, 1) 90%,
|
|
||||||
rgba(255, 0, 0, 1) 100%
|
|
||||||
) !important;
|
|
||||||
color: fff !important;
|
|
||||||
}
|
}
|
||||||
.list-group-item {
|
.list-group-item {
|
||||||
background: linear-gradient(
|
background: linear-gradient(90deg, rgba(255,0,0,1) 0%, rgba(255,154,0,1) 10%, rgba(208,222,33,1) 20%, rgba(79,220,74,1) 30%, rgba(63,218,216,1) 40%, rgba(47,201,226,1) 50%, rgba(28,127,238,1) 60%, rgba(95,21,242,1) 70%, rgba(186,12,248,1) 80%, rgba(251,7,217,1) 90%, rgba(255,0,0,1) 100%) !important;
|
||||||
90deg,
|
color: fff !important;
|
||||||
rgba(255, 0, 0, 1) 0%,
|
|
||||||
rgba(255, 154, 0, 1) 10%,
|
|
||||||
rgba(208, 222, 33, 1) 20%,
|
|
||||||
rgba(79, 220, 74, 1) 30%,
|
|
||||||
rgba(63, 218, 216, 1) 40%,
|
|
||||||
rgba(47, 201, 226, 1) 50%,
|
|
||||||
rgba(28, 127, 238, 1) 60%,
|
|
||||||
rgba(95, 21, 242, 1) 70%,
|
|
||||||
rgba(186, 12, 248, 1) 80%,
|
|
||||||
rgba(251, 7, 217, 1) 90%,
|
|
||||||
rgba(255, 0, 0, 1) 100%
|
|
||||||
) !important;
|
|
||||||
color: fff !important;
|
|
||||||
}
|
}
|
||||||
#support-section {
|
#support-section {
|
||||||
background: linear-gradient(
|
background: linear-gradient(90deg, rgba(255,0,0,1) 0%, rgba(255,154,0,1) 10%, rgba(208,222,33,1) 20%, rgba(79,220,74,1) 30%, rgba(63,218,216,1) 40%, rgba(47,201,226,1) 50%, rgba(28,127,238,1) 60%, rgba(95,21,242,1) 70%, rgba(186,12,248,1) 80%, rgba(251,7,217,1) 90%, rgba(255,0,0,1) 100%) !important;
|
||||||
90deg,
|
|
||||||
rgba(255, 0, 0, 1) 0%,
|
|
||||||
rgba(255, 154, 0, 1) 10%,
|
|
||||||
rgba(208, 222, 33, 1) 20%,
|
|
||||||
rgba(79, 220, 74, 1) 30%,
|
|
||||||
rgba(63, 218, 216, 1) 40%,
|
|
||||||
rgba(47, 201, 226, 1) 50%,
|
|
||||||
rgba(28, 127, 238, 1) 60%,
|
|
||||||
rgba(95, 21, 242, 1) 70%,
|
|
||||||
rgba(186, 12, 248, 1) 80%,
|
|
||||||
rgba(251, 7, 217, 1) 90%,
|
|
||||||
rgba(255, 0, 0, 1) 100%
|
|
||||||
) !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#pages-container-wrapper {
|
#pages-container-wrapper {
|
||||||
--background-color: rgba(255, 255, 255, 0.046) !important;
|
--background-color: rgba(255, 255, 255, 0.046) !important;
|
||||||
--scroll-bar-color: #4c4c4c !important;
|
--scroll-bar-color: #4c4c4c !important;
|
||||||
--scroll-bar-thumb: #d3d3d3 !important;
|
--scroll-bar-thumb: #d3d3d3 !important;
|
||||||
--scroll-bar-thumb-hover: #ffffff !important;
|
--scroll-bar-thumb-hover: #ffffff !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
#pdf-preview {
|
|
||||||
margin: 0 auto;
|
|
||||||
display: block;
|
|
||||||
max-width: calc(100% - 30px);
|
|
||||||
max-height: calc(100% - 30px);
|
|
||||||
box-shadow: 0 0 4px rgba(100, 100, 100, 0.25);
|
|
||||||
transition: rotate 0.3s;
|
|
||||||
position: absolute;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
translate: -50% -50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.previewContainer {
|
|
||||||
aspect-ratio: 1;
|
|
||||||
width: 100%;
|
|
||||||
border: 1px solid rgba(0, 0, 0, 0.125);
|
|
||||||
border-radius: 0.25rem;
|
|
||||||
margin: 1rem 0;
|
|
||||||
padding: 15px;
|
|
||||||
display: block;
|
|
||||||
overflow: hidden;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.buttonContainer {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-around;
|
|
||||||
}
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
select#font-select,
|
|
||||||
select#font-select option {
|
|
||||||
height: 60px; /* Adjust as needed */
|
|
||||||
font-size: 30px; /* Adjust as needed */
|
|
||||||
}
|
|
||||||
|
|
||||||
.drawing-pad-container {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#drawing-pad-canvas {
|
|
||||||
background: rgba(125, 125, 125, 0.2);
|
|
||||||
width: 100%;
|
|
||||||
height: 300px;
|
|
||||||
}
|
|
||||||
#box-drag-container {
|
|
||||||
position: relative;
|
|
||||||
margin: 20px 0;
|
|
||||||
}
|
|
||||||
.draggable-buttons-box {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
padding: 10px;
|
|
||||||
width: 100%;
|
|
||||||
display: flex;
|
|
||||||
gap: 5px;
|
|
||||||
}
|
|
||||||
.draggable-buttons-box > button {
|
|
||||||
z-index: 10;
|
|
||||||
background-color: rgba(13, 110, 253, 0.1);
|
|
||||||
}
|
|
||||||
.draggable-canvas {
|
|
||||||
border: 1px solid red;
|
|
||||||
position: absolute;
|
|
||||||
touch-action: none;
|
|
||||||
user-select: none;
|
|
||||||
top: 0px;
|
|
||||||
left: 0;
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
.pdf-visual-aid {
|
|
||||||
width: 150px; /* Adjust as needed */
|
|
||||||
height: 200px; /* Adjust as needed */
|
|
||||||
border: 1px solid black; /* Represents the PDF page */
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.line {
|
|
||||||
position: absolute;
|
|
||||||
background-color: red; /* Line color */
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
.a4container {
|
|
||||||
position: relative;
|
|
||||||
width: 50%;
|
|
||||||
aspect-ratio: 0.707;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
box-sizing: border-box;
|
|
||||||
background-color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pageNumber {
|
|
||||||
position: absolute;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
font-size: 1em;
|
|
||||||
color: #333;
|
|
||||||
cursor: pointer;
|
|
||||||
background-color: #ccc;
|
|
||||||
width: 15%;
|
|
||||||
height: 15%;
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
}
|
|
||||||
|
|
||||||
.pageNumber:hover {
|
|
||||||
background-color: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myForm {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.selectedPosition {
|
|
||||||
background-color: #0a0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.selectedPosition.selectedHovered {
|
|
||||||
background-color: #006600;
|
|
||||||
}
|
|
||||||
@@ -1,24 +1,26 @@
|
|||||||
|
|
||||||
.tab-group {
|
.tab-group {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-container {
|
.tab-container {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.tab-container.active {
|
.tab-container.active {
|
||||||
display: block;
|
display: block;
|
||||||
border: 1px solid rgba(var(--base-font-color), 0.25);
|
border: 1px solid rgba(var(--base-font-color), 0.25);
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
}
|
}
|
||||||
.tab-buttons > button {
|
.tab-buttons > button {
|
||||||
margin-bottom: -1px;
|
margin-bottom: -1px;
|
||||||
background: 0 0;
|
background: 0 0;
|
||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
color: rgb(var(--base-font-color));
|
color: rgb(var(--base-font-color));
|
||||||
|
|
||||||
border-top-left-radius: 0.25rem;
|
border-top-left-radius: 0.25rem;
|
||||||
border-top-right-radius: 0.25rem;
|
border-top-right-radius: 0.25rem;
|
||||||
}
|
}
|
||||||
.tab-buttons > button.active {
|
.tab-buttons > button.active {
|
||||||
background-color: rgb(var(--body-background-color));
|
background-color: rgb(var(--body-background-color));
|
||||||
border-color: rgba(var(--base-font-color), 0.25) rgba(var(--base-font-color), 0.25) rgb(var(--body-background-color));
|
border-color: rgba(var(--base-font-color), 0.25) rgba(var(--base-font-color), 0.25) rgb(var(--body-background-color));
|
||||||
}
|
}
|
||||||
@@ -19,8 +19,8 @@
|
|||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"><defs
|
xmlns:svg="http://www.w3.org/2000/svg"><defs
|
||||||
id="defs173">
|
id="defs173">
|
||||||
|
|
||||||
|
|
||||||
<linearGradient
|
<linearGradient
|
||||||
id="XMLID_5_"
|
id="XMLID_5_"
|
||||||
gradientUnits="userSpaceOnUse"
|
gradientUnits="userSpaceOnUse"
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
style="stop-color:#C2C2C9"
|
style="stop-color:#C2C2C9"
|
||||||
id="stop158" />
|
id="stop158" />
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
|
|
||||||
</defs><sodipodi:namedview
|
</defs><sodipodi:namedview
|
||||||
id="namedview171"
|
id="namedview171"
|
||||||
pagecolor="#ffffff"
|
pagecolor="#ffffff"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
<svg width="35px" height="35px" viewBox="0 -0.5 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
<svg width="35px" height="35px" viewBox="0 -0.5 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
|
||||||
<title>Github-color</title>
|
<title>Github-color</title>
|
||||||
<desc>Created with Sketch.</desc>
|
<desc>Created with Sketch.</desc>
|
||||||
<defs>
|
<defs>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
<svg version="1.1" id="Icons" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
<svg version="1.1" id="Icons" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
viewBox="0 0 32 32" xml:space="preserve">
|
viewBox="0 0 32 32" xml:space="preserve">
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
.st0{fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
.st0{fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 690 B After Width: | Height: | Size: 691 B |
@@ -1,5 +1,5 @@
|
|||||||
var toggleCount = 0;
|
var toggleCount = 0
|
||||||
var lastToggleTime = Date.now();
|
var lastToggleTime = Date.now()
|
||||||
|
|
||||||
var elements = {
|
var elements = {
|
||||||
lightModeStyles: null,
|
lightModeStyles: null,
|
||||||
@@ -11,18 +11,18 @@ var elements = {
|
|||||||
navbar: null,
|
navbar: null,
|
||||||
navIcons: null,
|
navIcons: null,
|
||||||
navDropdownMenus: null,
|
navDropdownMenus: null,
|
||||||
};
|
}
|
||||||
|
|
||||||
function getElements() {
|
function getElements() {
|
||||||
elements.lightModeStyles = document.getElementById("light-mode-styles");
|
elements.lightModeStyles = document.getElementById("light-mode-styles")
|
||||||
elements.darkModeStyles = document.getElementById("dark-mode-styles");
|
elements.darkModeStyles = document.getElementById("dark-mode-styles")
|
||||||
elements.rainbowModeStyles = document.getElementById("rainbow-mode-styles");
|
elements.rainbowModeStyles = document.getElementById("rainbow-mode-styles")
|
||||||
elements.darkModeIcon = document.getElementById("dark-mode-icon");
|
elements.darkModeIcon = document.getElementById("dark-mode-icon")
|
||||||
elements.searchBar = document.getElementById("searchBar");
|
elements.searchBar = document.getElementById("searchBar")
|
||||||
elements.formControls = document.querySelectorAll(".form-control");
|
elements.formControls = document.querySelectorAll(".form-control")
|
||||||
elements.navbar = document.querySelectorAll("nav.navbar");
|
elements.navbar = document.querySelectorAll("nav.navbar")
|
||||||
elements.navIcons = document.querySelectorAll("nav .icon, .navbar-icon");
|
elements.navIcons = document.querySelectorAll("nav .icon, .navbar-icon")
|
||||||
elements.navDropdownMenus = document.querySelectorAll(".dropdown-menu");
|
elements.navDropdownMenus = document.querySelectorAll("nav .dropdown-menu")
|
||||||
}
|
}
|
||||||
function setMode(mode) {
|
function setMode(mode) {
|
||||||
var event = new CustomEvent("modeChanged", { detail: mode });
|
var event = new CustomEvent("modeChanged", { detail: mode });
|
||||||
@@ -48,22 +48,22 @@ function setMode(mode) {
|
|||||||
elements.searchBar.classList.add("dark-mode-search");
|
elements.searchBar.classList.add("dark-mode-search");
|
||||||
}
|
}
|
||||||
if (elements && elements.formControls) {
|
if (elements && elements.formControls) {
|
||||||
elements.formControls.forEach((input) => input.classList.add("bg-dark", "text-white"));
|
elements.formControls.forEach(input => input.classList.add("bg-dark", "text-white"));
|
||||||
}
|
}
|
||||||
if (elements && elements.navbar) {
|
if (elements && elements.navbar) {
|
||||||
elements.navbar.forEach((navElement) => {
|
elements.navbar.forEach(navElement => {
|
||||||
navElement.classList.remove("navbar-light", "bg-light");
|
navElement.classList.remove("navbar-light", "bg-light");
|
||||||
navElement.classList.add("navbar-dark", "bg-dark");
|
navElement.classList.add("navbar-dark", "bg-dark");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (elements && elements.navDropdownMenus) {
|
if (elements && elements.navDropdownMenus) {
|
||||||
elements.navDropdownMenus.forEach((menu) => menu.classList.add("dropdown-menu-dark"));
|
elements.navDropdownMenus.forEach(menu => menu.classList.add("dropdown-menu-dark"));
|
||||||
}
|
}
|
||||||
if (elements && elements.navIcons) {
|
if (elements && elements.navIcons) {
|
||||||
elements.navIcons.forEach((icon) => (icon.style.filter = "invert(1)"));
|
elements.navIcons.forEach(icon => (icon.style.filter = "invert(1)"));
|
||||||
}
|
}
|
||||||
var tables = document.querySelectorAll(".table");
|
var tables = document.querySelectorAll(".table");
|
||||||
tables.forEach((table) => {
|
tables.forEach(table => {
|
||||||
table.classList.add("table-dark");
|
table.classList.add("table-dark");
|
||||||
});
|
});
|
||||||
if (jumbotron) {
|
if (jumbotron) {
|
||||||
@@ -78,22 +78,22 @@ function setMode(mode) {
|
|||||||
elements.searchBar.classList.remove("dark-mode-search");
|
elements.searchBar.classList.remove("dark-mode-search");
|
||||||
}
|
}
|
||||||
if (elements && elements.formControls) {
|
if (elements && elements.formControls) {
|
||||||
elements.formControls.forEach((input) => input.classList.remove("bg-dark", "text-white"));
|
elements.formControls.forEach(input => input.classList.remove("bg-dark", "text-white"));
|
||||||
}
|
}
|
||||||
if (elements && elements.navbar) {
|
if (elements && elements.navbar) {
|
||||||
elements.navbar.forEach((navElement) => {
|
elements.navbar.forEach(navElement => {
|
||||||
navElement.classList.remove("navbar-dark", "bg-dark");
|
navElement.classList.remove("navbar-dark", "bg-dark");
|
||||||
navElement.classList.add("navbar-light", "bg-light");
|
navElement.classList.add("navbar-light", "bg-light");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (elements && elements.navDropdownMenus) {
|
if (elements && elements.navDropdownMenus) {
|
||||||
elements.navDropdownMenus.forEach((menu) => menu.classList.remove("dropdown-menu-dark"));
|
elements.navDropdownMenus.forEach(menu => menu.classList.remove("dropdown-menu-dark"));
|
||||||
}
|
}
|
||||||
if (elements && elements.navIcons) {
|
if (elements && elements.navIcons) {
|
||||||
elements.navIcons.forEach((icon) => (icon.style.filter = "none"));
|
elements.navIcons.forEach(icon => (icon.style.filter = "none"));
|
||||||
}
|
}
|
||||||
var tables = document.querySelectorAll(".table-dark");
|
var tables = document.querySelectorAll(".table-dark");
|
||||||
tables.forEach((table) => {
|
tables.forEach(table => {
|
||||||
table.classList.remove("table-dark");
|
table.classList.remove("table-dark");
|
||||||
});
|
});
|
||||||
if (jumbotron) {
|
if (jumbotron) {
|
||||||
@@ -108,43 +108,43 @@ function setMode(mode) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function toggleDarkMode() {
|
function toggleDarkMode() {
|
||||||
var currentTime = Date.now();
|
var currentTime = Date.now()
|
||||||
if (currentTime - lastToggleTime < 1000) {
|
if (currentTime - lastToggleTime < 1000) {
|
||||||
toggleCount++;
|
toggleCount++
|
||||||
} else {
|
} else {
|
||||||
toggleCount = 1;
|
toggleCount = 1
|
||||||
}
|
}
|
||||||
lastToggleTime = currentTime;
|
lastToggleTime = currentTime
|
||||||
|
|
||||||
if (toggleCount >= 18) {
|
if (toggleCount >= 18) {
|
||||||
localStorage.setItem("dark-mode", "rainbow");
|
localStorage.setItem("dark-mode", "rainbow")
|
||||||
setMode("rainbow");
|
setMode("rainbow")
|
||||||
} else if (localStorage.getItem("dark-mode") == "on") {
|
} else if (localStorage.getItem("dark-mode") == "on") {
|
||||||
localStorage.setItem("dark-mode", "off");
|
localStorage.setItem("dark-mode", "off")
|
||||||
setMode("off");
|
setMode("off")
|
||||||
} else {
|
} else {
|
||||||
localStorage.setItem("dark-mode", "on");
|
localStorage.setItem("dark-mode", "on")
|
||||||
setMode("on");
|
setMode("on")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", function () {
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
getElements();
|
getElements()
|
||||||
|
|
||||||
var currentMode = localStorage.getItem("dark-mode");
|
var currentMode = localStorage.getItem("dark-mode")
|
||||||
if (currentMode === "on" || currentMode === "off" || currentMode === "rainbow") {
|
if (currentMode === "on" || currentMode === "off" || currentMode === "rainbow") {
|
||||||
setMode(currentMode);
|
setMode(currentMode)
|
||||||
} else if (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches) {
|
} else if (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches) {
|
||||||
setMode("on");
|
setMode("on")
|
||||||
} else {
|
} else {
|
||||||
setMode("off");
|
setMode("off")
|
||||||
}
|
}
|
||||||
|
|
||||||
var darkModeToggle = document.getElementById("dark-mode-toggle");
|
var darkModeToggle = document.getElementById("dark-mode-toggle");
|
||||||
if (darkModeToggle !== null) {
|
if (darkModeToggle !== null) {
|
||||||
darkModeToggle.addEventListener("click", function (event) {
|
darkModeToggle.addEventListener("click", function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
toggleDarkMode();
|
toggleDarkMode();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
|
|||||||
@@ -1,265 +1,242 @@
|
|||||||
function showErrorBanner(message, stackTrace) {
|
function showErrorBanner(message, stackTrace) {
|
||||||
const errorContainer = document.getElementById("errorContainer");
|
const errorContainer = document.getElementById("errorContainer");
|
||||||
errorContainer.style.display = "block"; // Display the banner
|
errorContainer.style.display = "block"; // Display the banner
|
||||||
document.querySelector("#errorContainer .alert-heading").textContent = "Error";
|
document.querySelector("#errorContainer .alert-heading").textContent = "Error";
|
||||||
document.querySelector("#errorContainer p").textContent = message;
|
document.querySelector("#errorContainer p").textContent = message;
|
||||||
document.querySelector("#traceContent").textContent = stackTrace;
|
document.querySelector("#traceContent").textContent = stackTrace;
|
||||||
}
|
}
|
||||||
let firstErrorOccurred = false;
|
let firstErrorOccurred = false;
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function() {
|
||||||
$("form").submit(async function (event) {
|
$('form').submit(async function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
firstErrorOccurred = false;
|
firstErrorOccurred = false;
|
||||||
const url = this.action;
|
const url = this.action;
|
||||||
const files = $("#fileInput-input")[0].files;
|
const files = $('#fileInput-input')[0].files;
|
||||||
const formData = new FormData(this);
|
const formData = new FormData(this);
|
||||||
|
|
||||||
// Remove empty file entries
|
// Remove empty file entries
|
||||||
for (let [key, value] of formData.entries()) {
|
for (let [key, value] of formData.entries()) {
|
||||||
if (value instanceof File && !value.name) {
|
if (value instanceof File && !value.name) {
|
||||||
formData.delete(key);
|
formData.delete(key);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
const override = $("#override").val() || "";
|
|
||||||
const originalButtonText = $("#submitBtn").text();
|
|
||||||
$("#submitBtn").text("Processing...");
|
|
||||||
console.log(override);
|
|
||||||
|
|
||||||
// Set a timeout to show the game button if operation takes more than 5 seconds
|
|
||||||
const timeoutId = setTimeout(() => {
|
|
||||||
var boredWaiting = localStorage.getItem("boredWaiting") || "disabled";
|
|
||||||
const showGameBtn = document.getElementById("show-game-btn");
|
|
||||||
if (boredWaiting === "enabled" && showGameBtn) {
|
|
||||||
showGameBtn.style.display = "block";
|
|
||||||
}
|
|
||||||
}, 5000);
|
|
||||||
|
|
||||||
try {
|
|
||||||
if (remoteCall === true) {
|
|
||||||
if (override === "multi" || (!multiple && files.length > 1 && override !== "single")) {
|
|
||||||
await submitMultiPdfForm(url, files);
|
|
||||||
} else {
|
|
||||||
await handleSingleDownload(url, formData);
|
|
||||||
}
|
}
|
||||||
}
|
const override = $('#override').val() || '';
|
||||||
clearTimeout(timeoutId);
|
const originalButtonText = $('#submitBtn').text();
|
||||||
$("#submitBtn").text(originalButtonText);
|
$('#submitBtn').text('Processing...');
|
||||||
|
console.log(override);
|
||||||
// After process finishes, check for boredWaiting and gameDialog open status
|
try {
|
||||||
const boredWaiting = localStorage.getItem("boredWaiting") || "disabled";
|
if(remoteCall === true) {
|
||||||
const gameDialog = document.getElementById('game-container-wrapper');
|
if (override === 'multi' || (!multiple && files.length > 1) && override !== 'single' ) {
|
||||||
if (boredWaiting === "enabled" && gameDialog && gameDialog.open) {
|
await submitMultiPdfForm(url, files);
|
||||||
// Display a green banner at the bottom of the screen saying "Download complete"
|
} else {
|
||||||
let downloadCompleteText = "Download Complete";
|
await handleSingleDownload(url, formData);
|
||||||
if(window.downloadCompleteText){
|
}
|
||||||
downloadCompleteText = window.downloadCompleteText;
|
}
|
||||||
|
$('#submitBtn').text(originalButtonText);
|
||||||
|
} catch (error) {
|
||||||
|
handleDownloadError(error);
|
||||||
|
$('#submitBtn').text(originalButtonText);
|
||||||
|
console.error(error);
|
||||||
}
|
}
|
||||||
$("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() {
|
|
||||||
$("#download-complete-banner").fadeOut("slow", function() {
|
|
||||||
$(this).remove(); // Remove the banner after fading out
|
|
||||||
});
|
|
||||||
}, 5000); // Banner will fade out after 5 seconds
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (error) {
|
|
||||||
clearTimeout(timeoutId);
|
|
||||||
handleDownloadError(error);
|
|
||||||
$("#submitBtn").text(originalButtonText);
|
|
||||||
console.error(error);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
async function handleSingleDownload(url, formData, isMulti = false, isZip = false) {
|
|
||||||
try {
|
|
||||||
const response = await fetch(url, { method: "POST", body: formData });
|
|
||||||
const contentType = response.headers.get("content-type");
|
|
||||||
|
|
||||||
if (!response.ok) {
|
|
||||||
if (contentType && contentType.includes("application/json")) {
|
|
||||||
return handleJsonResponse(response);
|
|
||||||
console.error("Throwing error banner, response was not okay");
|
|
||||||
}
|
|
||||||
throw new Error(`HTTP error! status: ${response.status}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
const contentDisposition = response.headers.get("Content-Disposition");
|
async function handleSingleDownload(url, formData, isMulti = false , isZip = false) {
|
||||||
let filename = getFilenameFromContentDisposition(contentDisposition);
|
try {
|
||||||
|
const response = await fetch(url, { method: 'POST', body: formData });
|
||||||
|
const contentType = response.headers.get('content-type');
|
||||||
|
|
||||||
const blob = await response.blob();
|
if (!response.ok) {
|
||||||
if (contentType.includes("application/pdf") || contentType.includes("image/")) {
|
if (contentType && contentType.includes('application/json')) {
|
||||||
return handleResponse(blob, filename, !isMulti, isZip);
|
return handleJsonResponse(response);
|
||||||
} else {
|
console.error('Throwing error banner, response was not okay');
|
||||||
return handleResponse(blob, filename, false, isZip);
|
}
|
||||||
}
|
throw new Error(`HTTP error! status: ${response.status}`);
|
||||||
} catch (error) {
|
}
|
||||||
console.error("Error in handleSingleDownload:", error);
|
|
||||||
throw error; // Re-throw the error if you want it to be handled higher up.
|
const contentDisposition = response.headers.get('Content-Disposition');
|
||||||
}
|
let filename = getFilenameFromContentDisposition(contentDisposition);
|
||||||
|
|
||||||
|
const blob = await response.blob();
|
||||||
|
if (contentType.includes('application/pdf') || contentType.includes('image/')) {
|
||||||
|
return handleResponse(blob, filename, !isMulti, isZip);
|
||||||
|
} else {
|
||||||
|
return handleResponse(blob, filename, false, isZip);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error in handleSingleDownload:', error);
|
||||||
|
throw error; // Re-throw the error if you want it to be handled higher up.
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getFilenameFromContentDisposition(contentDisposition) {
|
function getFilenameFromContentDisposition(contentDisposition) {
|
||||||
let filename;
|
let filename;
|
||||||
|
|
||||||
if (contentDisposition && contentDisposition.indexOf("attachment") !== -1) {
|
if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) {
|
||||||
filename = decodeURIComponent(contentDisposition.split("filename=")[1].replace(/"/g, "")).trim();
|
filename = decodeURIComponent(contentDisposition.split('filename=')[1].replace(/"/g, '')).trim();
|
||||||
} else {
|
} else {
|
||||||
// If the Content-Disposition header is not present or does not contain the filename, use a default filename
|
// If the Content-Disposition header is not present or does not contain the filename, use a default filename
|
||||||
filename = "download";
|
filename = 'download';
|
||||||
}
|
}
|
||||||
|
|
||||||
return filename;
|
return filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async function handleJsonResponse(response) {
|
async function handleJsonResponse(response) {
|
||||||
const json = await response.json();
|
const json = await response.json();
|
||||||
const errorMessage = JSON.stringify(json, null, 2);
|
const errorMessage = JSON.stringify(json, null, 2);
|
||||||
if (
|
if (errorMessage.toLowerCase().includes('the password is incorrect') || errorMessage.toLowerCase().includes('Password is not provided') || errorMessage.toLowerCase().includes('PDF contains an encryption dictionary')) {
|
||||||
errorMessage.toLowerCase().includes("the password is incorrect") ||
|
if (!firstErrorOccurred) {
|
||||||
errorMessage.toLowerCase().includes("Password is not provided") ||
|
firstErrorOccurred = true;
|
||||||
errorMessage.toLowerCase().includes("PDF contains an encryption dictionary")
|
alert(pdfPasswordPrompt);
|
||||||
) {
|
}
|
||||||
if (!firstErrorOccurred) {
|
} else {
|
||||||
firstErrorOccurred = true;
|
showErrorBanner(json.error + ':' + json.message, json.trace);
|
||||||
alert(pdfPasswordPrompt);
|
}
|
||||||
}
|
|
||||||
} else {
|
|
||||||
showErrorBanner(json.error + ":" + json.message, json.trace);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async function handleResponse(blob, filename, considerViewOptions = false, isZip = false) {
|
async function handleResponse(blob, filename, considerViewOptions = false, isZip = false) {
|
||||||
if (!blob) return;
|
if (!blob) return;
|
||||||
const downloadOption = localStorage.getItem("downloadOption");
|
const downloadOption = localStorage.getItem('downloadOption');
|
||||||
if (considerViewOptions) {
|
if (considerViewOptions) {
|
||||||
if (downloadOption === "sameWindow") {
|
if (downloadOption === 'sameWindow') {
|
||||||
const url = URL.createObjectURL(blob);
|
const url = URL.createObjectURL(blob);
|
||||||
window.location.href = url;
|
window.location.href = url;
|
||||||
return;
|
return;
|
||||||
} else if (downloadOption === "newWindow") {
|
} else if (downloadOption === 'newWindow') {
|
||||||
const url = URL.createObjectURL(blob);
|
const url = URL.createObjectURL(blob);
|
||||||
window.open(url, "_blank");
|
window.open(url, '_blank');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!isZip) {
|
if(!isZip){
|
||||||
downloadFile(blob, filename);
|
downloadFile(blob, filename);
|
||||||
}
|
}
|
||||||
return { filename, blob };
|
return { filename, blob };
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleDownloadError(error) {
|
function handleDownloadError(error) {
|
||||||
const errorMessage = error.message;
|
const errorMessage = error.message;
|
||||||
showErrorBanner(errorMessage);
|
showErrorBanner(errorMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
let urls = []; // An array to hold all the URLs
|
let urls = []; // An array to hold all the URLs
|
||||||
|
|
||||||
function downloadFile(blob, filename) {
|
function downloadFile(blob, filename) {
|
||||||
if (!(blob instanceof Blob)) {
|
if (!(blob instanceof Blob)) {
|
||||||
console.error("Invalid blob passed to downloadFile function");
|
console.error('Invalid blob passed to downloadFile function');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const url = URL.createObjectURL(blob);
|
const url = URL.createObjectURL(blob);
|
||||||
const a = document.createElement("a");
|
const a = document.createElement('a');
|
||||||
a.href = url;
|
a.href = url;
|
||||||
a.download = filename;
|
a.download = filename;
|
||||||
a.click();
|
a.click();
|
||||||
urls.push(url); // Store the URL so it doesn't get garbage collected too soon
|
urls.push(url); // Store the URL so it doesn't get garbage collected too soon
|
||||||
|
|
||||||
return { filename, blob };
|
return { filename, blob };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async function submitMultiPdfForm(url, files) {
|
async function submitMultiPdfForm(url, files) {
|
||||||
const zipThreshold = parseInt(localStorage.getItem("zipThreshold"), 10) || 4;
|
const zipThreshold = parseInt(localStorage.getItem('zipThreshold'), 10) || 4;
|
||||||
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);
|
||||||
|
|
||||||
if (zipFiles) {
|
if (zipFiles) {
|
||||||
jszip = new JSZip();
|
jszip = new JSZip();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the form with the method attribute set to POST
|
|
||||||
let postForm = document.querySelector('form[method="POST"]');
|
// Get the form with the method attribute set to POST
|
||||||
|
let postForm = document.querySelector('form[method="POST"]');
|
||||||
// Get existing form data
|
|
||||||
let formData;
|
// Get existing form data
|
||||||
if (postForm) {
|
let formData;
|
||||||
formData = new FormData($(postForm)[0]); // Convert the form to a jQuery object and get the raw DOM element
|
if (postForm) {
|
||||||
} else {
|
formData = new FormData($(postForm)[0]); // Convert the form to a jQuery object and get the raw DOM element
|
||||||
console.log("No form with POST method found.");
|
} else {
|
||||||
}
|
console.log("No form with POST method found.");
|
||||||
//Remove file to reuse parameters for other runs
|
}
|
||||||
formData.delete("fileInput");
|
//Remove file to reuse parameters for other runs
|
||||||
// Remove empty file entries
|
formData.delete('fileInput');
|
||||||
for (let [key, value] of formData.entries()) {
|
// Remove empty file entries
|
||||||
if (value instanceof File && !value.name) {
|
for (let [key, value] of formData.entries()) {
|
||||||
formData.delete(key);
|
if (value instanceof File && !value.name) {
|
||||||
}
|
formData.delete(key);
|
||||||
}
|
|
||||||
const CONCURRENCY_LIMIT = 8;
|
|
||||||
const chunks = [];
|
|
||||||
for (let i = 0; i < Array.from(files).length; i += CONCURRENCY_LIMIT) {
|
|
||||||
chunks.push(Array.from(files).slice(i, i + CONCURRENCY_LIMIT));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const chunk of chunks) {
|
|
||||||
const promises = chunk.map(async (file) => {
|
|
||||||
let fileFormData = new FormData();
|
|
||||||
fileFormData.append("fileInput", file);
|
|
||||||
console.log(fileFormData);
|
|
||||||
// Add other form data
|
|
||||||
for (let pair of formData.entries()) {
|
|
||||||
fileFormData.append(pair[0], pair[1]);
|
|
||||||
console.log(pair[0] + ", " + pair[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
const downloadDetails = await handleSingleDownload(url, fileFormData, true, zipFiles);
|
|
||||||
console.log(downloadDetails);
|
|
||||||
if (zipFiles) {
|
|
||||||
jszip.file(downloadDetails.filename, downloadDetails.blob);
|
|
||||||
} else {
|
|
||||||
//downloadFile(downloadDetails.blob, downloadDetails.filename);
|
|
||||||
}
|
}
|
||||||
updateProgressBar(progressBar, Array.from(files).length);
|
|
||||||
} catch (error) {
|
|
||||||
handleDownloadError(error);
|
|
||||||
console.error(error);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
await Promise.all(promises);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (zipFiles) {
|
|
||||||
try {
|
|
||||||
const content = await jszip.generateAsync({ type: "blob" });
|
|
||||||
downloadFile(content, "files.zip");
|
|
||||||
} catch (error) {
|
|
||||||
console.error("Error generating ZIP file: " + error);
|
|
||||||
}
|
}
|
||||||
}
|
const CONCURRENCY_LIMIT = 8;
|
||||||
progressBar.css("width", "100%");
|
const chunks = [];
|
||||||
progressBar.attr("aria-valuenow", Array.from(files).length);
|
for (let i = 0; i < Array.from(files).length; i += CONCURRENCY_LIMIT) {
|
||||||
|
chunks.push(Array.from(files).slice(i, i + CONCURRENCY_LIMIT));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const chunk of chunks) {
|
||||||
|
const promises = chunk.map(async file => {
|
||||||
|
let fileFormData = new FormData();
|
||||||
|
fileFormData.append('fileInput', file);
|
||||||
|
console.log(fileFormData);
|
||||||
|
// Add other form data
|
||||||
|
for (let pair of formData.entries()) {
|
||||||
|
fileFormData.append(pair[0], pair[1]);
|
||||||
|
console.log(pair[0]+ ', ' + pair[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const downloadDetails = await handleSingleDownload(url, fileFormData, true, zipFiles);
|
||||||
|
console.log(downloadDetails);
|
||||||
|
if (zipFiles) {
|
||||||
|
jszip.file(downloadDetails.filename, downloadDetails.blob);
|
||||||
|
} else {
|
||||||
|
//downloadFile(downloadDetails.blob, downloadDetails.filename);
|
||||||
|
}
|
||||||
|
updateProgressBar(progressBar, Array.from(files).length);
|
||||||
|
} catch (error) {
|
||||||
|
handleDownloadError(error);
|
||||||
|
console.error(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
await Promise.all(promises);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (zipFiles) {
|
||||||
|
try {
|
||||||
|
const content = await jszip.generateAsync({ type: "blob" });
|
||||||
|
downloadFile(content, "files.zip");
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error generating ZIP file: ' + error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
progressBar.css('width', '100%');
|
||||||
|
progressBar.attr('aria-valuenow', Array.from(files).length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function updateProgressBar(progressBar, files) {
|
function updateProgressBar(progressBar, files) {
|
||||||
let progress = (progressBar.attr("aria-valuenow") / files.length) * 100 + 100 / files.length;
|
let progress = ((progressBar.attr('aria-valuenow') / files.length) * 100) + (100 / files.length);
|
||||||
progressBar.css("width", progress + "%");
|
progressBar.css('width', progress + '%');
|
||||||
progressBar.attr("aria-valuenow", parseInt(progressBar.attr("aria-valuenow")) + 1);
|
progressBar.attr('aria-valuenow', parseInt(progressBar.attr('aria-valuenow')) + 1);
|
||||||
}
|
}
|
||||||
window.addEventListener("unload", () => {
|
window.addEventListener('unload', () => {
|
||||||
for (const url of urls) {
|
for (const url of urls) {
|
||||||
URL.revokeObjectURL(url);
|
URL.revokeObjectURL(url);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,287 +1,282 @@
|
|||||||
const DraggableUtils = {
|
const DraggableUtils = {
|
||||||
boxDragContainer: document.getElementById("box-drag-container"),
|
|
||||||
pdfCanvas: document.getElementById("pdf-canvas"),
|
|
||||||
nextId: 0,
|
|
||||||
pdfDoc: null,
|
|
||||||
pageIndex: 0,
|
|
||||||
documentsMap: new Map(),
|
|
||||||
|
|
||||||
init() {
|
boxDragContainer: document.getElementById('box-drag-container'),
|
||||||
interact(".draggable-canvas")
|
pdfCanvas: document.getElementById('pdf-canvas'),
|
||||||
.draggable({
|
nextId: 0,
|
||||||
listeners: {
|
pdfDoc: null,
|
||||||
move: (event) => {
|
pageIndex: 0,
|
||||||
const target = event.target;
|
documentsMap: new Map(),
|
||||||
const x = (parseFloat(target.getAttribute("data-bs-x")) || 0) + event.dx;
|
|
||||||
const y = (parseFloat(target.getAttribute("data-bs-y")) || 0) + event.dy;
|
|
||||||
|
|
||||||
target.style.transform = `translate(${x}px, ${y}px)`;
|
init() {
|
||||||
target.setAttribute("data-bs-x", x);
|
interact('.draggable-canvas')
|
||||||
target.setAttribute("data-bs-y", y);
|
.draggable({
|
||||||
|
listeners: {
|
||||||
|
move: (event) => {
|
||||||
|
const target = event.target;
|
||||||
|
const x = (parseFloat(target.getAttribute('data-bs-x')) || 0) + event.dx;
|
||||||
|
const y = (parseFloat(target.getAttribute('data-bs-y')) || 0) + event.dy;
|
||||||
|
|
||||||
this.onInteraction(target);
|
target.style.transform = `translate(${x}px, ${y}px)`;
|
||||||
},
|
target.setAttribute('data-bs-x', x);
|
||||||
},
|
target.setAttribute('data-bs-y', y);
|
||||||
})
|
|
||||||
.resizable({
|
this.onInteraction(target);
|
||||||
edges: { left: true, right: true, bottom: true, top: true },
|
},
|
||||||
listeners: {
|
},
|
||||||
move: (event) => {
|
})
|
||||||
var target = event.target;
|
.resizable({
|
||||||
var x = parseFloat(target.getAttribute("data-bs-x")) || 0;
|
edges: { left: true, right: true, bottom: true, top: true },
|
||||||
var y = parseFloat(target.getAttribute("data-bs-y")) || 0;
|
listeners: {
|
||||||
|
move: (event) => {
|
||||||
|
var target = event.target
|
||||||
|
var x = (parseFloat(target.getAttribute('data-bs-x')) || 0)
|
||||||
|
var y = (parseFloat(target.getAttribute('data-bs-y')) || 0)
|
||||||
|
|
||||||
// check if control key is pressed
|
// check if control key is pressed
|
||||||
if (event.ctrlKey) {
|
if (event.ctrlKey) {
|
||||||
const aspectRatio = target.offsetWidth / target.offsetHeight;
|
const aspectRatio = target.offsetWidth / target.offsetHeight;
|
||||||
// preserve aspect ratio
|
// preserve aspect ratio
|
||||||
let width = event.rect.width;
|
let width = event.rect.width;
|
||||||
let height = event.rect.height;
|
let height = event.rect.height;
|
||||||
|
|
||||||
if (Math.abs(event.deltaRect.width) >= Math.abs(event.deltaRect.height)) {
|
if (Math.abs(event.deltaRect.width) >= Math.abs(event.deltaRect.height)) {
|
||||||
height = width / aspectRatio;
|
height = width / aspectRatio;
|
||||||
} else {
|
} else {
|
||||||
width = height * aspectRatio;
|
width = height * aspectRatio;
|
||||||
}
|
}
|
||||||
|
|
||||||
event.rect.width = width;
|
event.rect.width = width;
|
||||||
event.rect.height = height;
|
event.rect.height = height;
|
||||||
}
|
}
|
||||||
|
|
||||||
target.style.width = event.rect.width + "px";
|
target.style.width = event.rect.width + 'px'
|
||||||
target.style.height = event.rect.height + "px";
|
target.style.height = event.rect.height + 'px'
|
||||||
|
|
||||||
// translate when resizing from top or left edges
|
// translate when resizing from top or left edges
|
||||||
x += event.deltaRect.left;
|
x += event.deltaRect.left
|
||||||
y += event.deltaRect.top;
|
y += event.deltaRect.top
|
||||||
|
|
||||||
target.style.transform = "translate(" + x + "px," + y + "px)";
|
target.style.transform = 'translate(' + x + 'px,' + y + 'px)'
|
||||||
|
|
||||||
target.setAttribute("data-bs-x", x);
|
target.setAttribute('data-bs-x', x)
|
||||||
target.setAttribute("data-bs-y", y);
|
target.setAttribute('data-bs-y', y)
|
||||||
target.textContent = Math.round(event.rect.width) + "\u00D7" + Math.round(event.rect.height);
|
target.textContent = Math.round(event.rect.width) + '\u00D7' + Math.round(event.rect.height)
|
||||||
|
|
||||||
this.onInteraction(target);
|
this.onInteraction(target);
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
},
|
||||||
|
|
||||||
modifiers: [
|
modifiers: [
|
||||||
interact.modifiers.restrictSize({
|
interact.modifiers.restrictSize({
|
||||||
min: { width: 5, height: 5 },
|
min: { width: 5, height: 5 },
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
inertia: true,
|
inertia: true,
|
||||||
});
|
|
||||||
},
|
|
||||||
onInteraction(target) {
|
|
||||||
this.boxDragContainer.appendChild(target);
|
|
||||||
},
|
|
||||||
|
|
||||||
createDraggableCanvas() {
|
|
||||||
const createdCanvas = document.createElement("canvas");
|
|
||||||
createdCanvas.id = `draggable-canvas-${this.nextId++}`;
|
|
||||||
createdCanvas.classList.add("draggable-canvas");
|
|
||||||
|
|
||||||
const x = 0;
|
|
||||||
const y = 20;
|
|
||||||
createdCanvas.style.transform = `translate(${x}px, ${y}px)`;
|
|
||||||
createdCanvas.setAttribute("data-bs-x", x);
|
|
||||||
createdCanvas.setAttribute("data-bs-y", y);
|
|
||||||
|
|
||||||
createdCanvas.onclick = (e) => this.onInteraction(e.target);
|
|
||||||
|
|
||||||
this.boxDragContainer.appendChild(createdCanvas);
|
|
||||||
return createdCanvas;
|
|
||||||
},
|
|
||||||
createDraggableCanvasFromUrl(dataUrl) {
|
|
||||||
return new Promise((resolve) => {
|
|
||||||
var myImage = new Image();
|
|
||||||
myImage.src = dataUrl;
|
|
||||||
myImage.onload = () => {
|
|
||||||
var createdCanvas = this.createDraggableCanvas();
|
|
||||||
|
|
||||||
createdCanvas.width = myImage.width;
|
|
||||||
createdCanvas.height = myImage.height;
|
|
||||||
|
|
||||||
const imgAspect = myImage.width / myImage.height;
|
|
||||||
const pdfAspect = this.boxDragContainer.offsetWidth / this.boxDragContainer.offsetHeight;
|
|
||||||
|
|
||||||
var scaleMultiplier;
|
|
||||||
if (imgAspect > pdfAspect) {
|
|
||||||
scaleMultiplier = this.boxDragContainer.offsetWidth / myImage.width;
|
|
||||||
} else {
|
|
||||||
scaleMultiplier = this.boxDragContainer.offsetHeight / myImage.height;
|
|
||||||
}
|
|
||||||
|
|
||||||
var newWidth = createdCanvas.width;
|
|
||||||
var newHeight = createdCanvas.height;
|
|
||||||
if (scaleMultiplier < 1) {
|
|
||||||
newWidth = newWidth * scaleMultiplier;
|
|
||||||
newHeight = newHeight * scaleMultiplier;
|
|
||||||
}
|
|
||||||
|
|
||||||
createdCanvas.style.width = newWidth + "px";
|
|
||||||
createdCanvas.style.height = newHeight + "px";
|
|
||||||
|
|
||||||
var myContext = createdCanvas.getContext("2d");
|
|
||||||
myContext.drawImage(myImage, 0, 0);
|
|
||||||
resolve(createdCanvas);
|
|
||||||
};
|
|
||||||
});
|
|
||||||
},
|
|
||||||
deleteAllDraggableCanvases() {
|
|
||||||
this.boxDragContainer.querySelectorAll(".draggable-canvas").forEach((el) => el.remove());
|
|
||||||
},
|
|
||||||
deleteDraggableCanvas(element) {
|
|
||||||
if (element) {
|
|
||||||
element.remove();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
getLastInteracted() {
|
|
||||||
return this.boxDragContainer.querySelector(".draggable-canvas:last-of-type");
|
|
||||||
},
|
|
||||||
|
|
||||||
storePageContents() {
|
|
||||||
var pagesMap = this.documentsMap.get(this.pdfDoc);
|
|
||||||
if (!pagesMap) {
|
|
||||||
pagesMap = {};
|
|
||||||
}
|
|
||||||
|
|
||||||
const elements = [...this.boxDragContainer.querySelectorAll(".draggable-canvas")];
|
|
||||||
const draggablesData = elements.map((el) => {
|
|
||||||
return {
|
|
||||||
element: el,
|
|
||||||
offsetWidth: el.offsetWidth,
|
|
||||||
offsetHeight: el.offsetHeight,
|
|
||||||
};
|
|
||||||
});
|
|
||||||
elements.forEach((el) => this.boxDragContainer.removeChild(el));
|
|
||||||
|
|
||||||
pagesMap[this.pageIndex] = draggablesData;
|
|
||||||
pagesMap[this.pageIndex + "-offsetWidth"] = this.pdfCanvas.offsetWidth;
|
|
||||||
pagesMap[this.pageIndex + "-offsetHeight"] = this.pdfCanvas.offsetHeight;
|
|
||||||
|
|
||||||
this.documentsMap.set(this.pdfDoc, pagesMap);
|
|
||||||
},
|
|
||||||
loadPageContents() {
|
|
||||||
var pagesMap = this.documentsMap.get(this.pdfDoc);
|
|
||||||
this.deleteAllDraggableCanvases();
|
|
||||||
if (!pagesMap) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const draggablesData = pagesMap[this.pageIndex];
|
|
||||||
if (draggablesData) {
|
|
||||||
draggablesData.forEach((draggableData) => this.boxDragContainer.appendChild(draggableData.element));
|
|
||||||
}
|
|
||||||
|
|
||||||
this.documentsMap.set(this.pdfDoc, pagesMap);
|
|
||||||
},
|
|
||||||
|
|
||||||
async renderPage(pdfDocument, pageIdx) {
|
|
||||||
this.pdfDoc = pdfDocument ? pdfDocument : this.pdfDoc;
|
|
||||||
this.pageIndex = pageIdx;
|
|
||||||
|
|
||||||
// persist
|
|
||||||
const page = await this.pdfDoc.getPage(this.pageIndex + 1);
|
|
||||||
|
|
||||||
// set the canvas size to the size of the page
|
|
||||||
if (page.rotate == 90 || page.rotate == 270) {
|
|
||||||
this.pdfCanvas.width = page.view[3];
|
|
||||||
this.pdfCanvas.height = page.view[2];
|
|
||||||
} else {
|
|
||||||
this.pdfCanvas.width = page.view[2];
|
|
||||||
this.pdfCanvas.height = page.view[3];
|
|
||||||
}
|
|
||||||
|
|
||||||
// render the page onto the canvas
|
|
||||||
var renderContext = {
|
|
||||||
canvasContext: this.pdfCanvas.getContext("2d"),
|
|
||||||
viewport: page.getViewport({ scale: 1 }),
|
|
||||||
};
|
|
||||||
await page.render(renderContext).promise;
|
|
||||||
|
|
||||||
//return pdfCanvas.toDataURL();
|
|
||||||
},
|
|
||||||
async incrementPage() {
|
|
||||||
if (this.pageIndex < this.pdfDoc.numPages - 1) {
|
|
||||||
this.storePageContents();
|
|
||||||
await this.renderPage(this.pdfDoc, this.pageIndex + 1);
|
|
||||||
this.loadPageContents();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
async decrementPage() {
|
|
||||||
if (this.pageIndex > 0) {
|
|
||||||
this.storePageContents();
|
|
||||||
await this.renderPage(this.pdfDoc, this.pageIndex - 1);
|
|
||||||
this.loadPageContents();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
parseTransform(element) {},
|
|
||||||
async getOverlayedPdfDocument() {
|
|
||||||
const pdfBytes = await this.pdfDoc.getData();
|
|
||||||
const pdfDocModified = await PDFLib.PDFDocument.load(pdfBytes, {
|
|
||||||
ignoreEncryption: true,
|
|
||||||
});
|
|
||||||
this.storePageContents();
|
|
||||||
|
|
||||||
const pagesMap = this.documentsMap.get(this.pdfDoc);
|
|
||||||
for (let pageIdx in pagesMap) {
|
|
||||||
if (pageIdx.includes("offset")) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
console.log(typeof pageIdx);
|
|
||||||
|
|
||||||
const page = pdfDocModified.getPage(parseInt(pageIdx));
|
|
||||||
const draggablesData = pagesMap[pageIdx];
|
|
||||||
const offsetWidth = pagesMap[pageIdx + "-offsetWidth"];
|
|
||||||
const offsetHeight = pagesMap[pageIdx + "-offsetHeight"];
|
|
||||||
|
|
||||||
for (const draggableData of draggablesData) {
|
|
||||||
// embed the draggable canvas
|
|
||||||
const draggableElement = draggableData.element;
|
|
||||||
const response = await fetch(draggableElement.toDataURL());
|
|
||||||
const draggableImgBytes = await response.arrayBuffer();
|
|
||||||
const pdfImageObject = await pdfDocModified.embedPng(draggableImgBytes);
|
|
||||||
|
|
||||||
// calculate the position in the pdf document
|
|
||||||
const tansform = draggableElement.style.transform.replace(/[^.,-\d]/g, "");
|
|
||||||
const transformComponents = tansform.split(",");
|
|
||||||
const draggablePositionPixels = {
|
|
||||||
x: parseFloat(transformComponents[0]),
|
|
||||||
y: parseFloat(transformComponents[1]),
|
|
||||||
width: draggableData.offsetWidth,
|
|
||||||
height: draggableData.offsetHeight,
|
|
||||||
};
|
|
||||||
const draggablePositionRelative = {
|
|
||||||
x: draggablePositionPixels.x / offsetWidth,
|
|
||||||
y: draggablePositionPixels.y / offsetHeight,
|
|
||||||
width: draggablePositionPixels.width / offsetWidth,
|
|
||||||
height: draggablePositionPixels.height / offsetHeight,
|
|
||||||
};
|
|
||||||
const draggablePositionPdf = {
|
|
||||||
x: draggablePositionRelative.x * page.getWidth(),
|
|
||||||
y: draggablePositionRelative.y * page.getHeight(),
|
|
||||||
width: draggablePositionRelative.width * page.getWidth(),
|
|
||||||
height: draggablePositionRelative.height * page.getHeight(),
|
|
||||||
};
|
|
||||||
|
|
||||||
// draw the image
|
|
||||||
page.drawImage(pdfImageObject, {
|
|
||||||
x: draggablePositionPdf.x,
|
|
||||||
y: page.getHeight() - draggablePositionPdf.y - draggablePositionPdf.height,
|
|
||||||
width: draggablePositionPdf.width,
|
|
||||||
height: draggablePositionPdf.height,
|
|
||||||
});
|
});
|
||||||
}
|
},
|
||||||
}
|
onInteraction(target) {
|
||||||
|
this.boxDragContainer.appendChild(target);
|
||||||
|
},
|
||||||
|
|
||||||
this.loadPageContents();
|
createDraggableCanvas() {
|
||||||
return pdfDocModified;
|
const createdCanvas = document.createElement('canvas');
|
||||||
},
|
createdCanvas.id = `draggable-canvas-${this.nextId++}`;
|
||||||
};
|
createdCanvas.classList.add("draggable-canvas");
|
||||||
|
|
||||||
|
const x = 0;
|
||||||
|
const y = 20;
|
||||||
|
createdCanvas.style.transform = `translate(${x}px, ${y}px)`;
|
||||||
|
createdCanvas.setAttribute('data-bs-x', x);
|
||||||
|
createdCanvas.setAttribute('data-bs-y', y);
|
||||||
|
|
||||||
|
createdCanvas.onclick = e => this.onInteraction(e.target);
|
||||||
|
|
||||||
|
this.boxDragContainer.appendChild(createdCanvas);
|
||||||
|
return createdCanvas;
|
||||||
|
},
|
||||||
|
createDraggableCanvasFromUrl(dataUrl) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
var myImage = new Image();
|
||||||
|
myImage.src = dataUrl;
|
||||||
|
myImage.onload = () => {
|
||||||
|
var createdCanvas = this.createDraggableCanvas();
|
||||||
|
|
||||||
|
createdCanvas.width = myImage.width;
|
||||||
|
createdCanvas.height = myImage.height;
|
||||||
|
|
||||||
|
const imgAspect = myImage.width / myImage.height;
|
||||||
|
const pdfAspect = this.boxDragContainer.offsetWidth / this.boxDragContainer.offsetHeight;
|
||||||
|
|
||||||
|
var scaleMultiplier;
|
||||||
|
if (imgAspect > pdfAspect) {
|
||||||
|
scaleMultiplier = this.boxDragContainer.offsetWidth / myImage.width;
|
||||||
|
} else {
|
||||||
|
scaleMultiplier = this.boxDragContainer.offsetHeight / myImage.height;
|
||||||
|
}
|
||||||
|
|
||||||
|
var newWidth = createdCanvas.width;
|
||||||
|
var newHeight = createdCanvas.height;
|
||||||
|
if (scaleMultiplier < 1) {
|
||||||
|
newWidth = newWidth * scaleMultiplier;
|
||||||
|
newHeight = newHeight * scaleMultiplier;
|
||||||
|
}
|
||||||
|
|
||||||
|
createdCanvas.style.width = newWidth+"px";
|
||||||
|
createdCanvas.style.height = newHeight+"px";
|
||||||
|
|
||||||
|
var myContext = createdCanvas.getContext("2d");
|
||||||
|
myContext.drawImage(myImage,0,0);
|
||||||
|
resolve(createdCanvas);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
deleteAllDraggableCanvases() {
|
||||||
|
this.boxDragContainer.querySelectorAll(".draggable-canvas").forEach(el => el.remove());
|
||||||
|
},
|
||||||
|
deleteDraggableCanvas(element) {
|
||||||
|
if (element) {
|
||||||
|
element.remove();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getLastInteracted() {
|
||||||
|
return this.boxDragContainer.querySelector(".draggable-canvas:last-of-type");
|
||||||
|
},
|
||||||
|
|
||||||
|
storePageContents() {
|
||||||
|
var pagesMap = this.documentsMap.get(this.pdfDoc);
|
||||||
|
if (!pagesMap) {
|
||||||
|
pagesMap = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
const elements = [...this.boxDragContainer.querySelectorAll(".draggable-canvas")];
|
||||||
|
const draggablesData = elements.map(el => {return{element:el, offsetWidth:el.offsetWidth, offsetHeight:el.offsetHeight}});
|
||||||
|
elements.forEach(el => this.boxDragContainer.removeChild(el));
|
||||||
|
|
||||||
|
pagesMap[this.pageIndex] = draggablesData;
|
||||||
|
pagesMap[this.pageIndex+"-offsetWidth"] = this.pdfCanvas.offsetWidth;
|
||||||
|
pagesMap[this.pageIndex+"-offsetHeight"] = this.pdfCanvas.offsetHeight;
|
||||||
|
|
||||||
|
this.documentsMap.set(this.pdfDoc, pagesMap);
|
||||||
|
},
|
||||||
|
loadPageContents() {
|
||||||
|
var pagesMap = this.documentsMap.get(this.pdfDoc);
|
||||||
|
this.deleteAllDraggableCanvases();
|
||||||
|
if (!pagesMap) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const draggablesData = pagesMap[this.pageIndex];
|
||||||
|
if (draggablesData) {
|
||||||
|
draggablesData.forEach(draggableData => this.boxDragContainer.appendChild(draggableData.element));
|
||||||
|
}
|
||||||
|
|
||||||
|
this.documentsMap.set(this.pdfDoc, pagesMap);
|
||||||
|
},
|
||||||
|
|
||||||
|
async renderPage(pdfDocument, pageIdx) {
|
||||||
|
this.pdfDoc = pdfDocument ? pdfDocument : this.pdfDoc;
|
||||||
|
this.pageIndex = pageIdx;
|
||||||
|
|
||||||
|
// persist
|
||||||
|
const page = await this.pdfDoc.getPage(this.pageIndex+1);
|
||||||
|
|
||||||
|
// set the canvas size to the size of the page
|
||||||
|
if (page.rotate == 90 || page.rotate == 270) {
|
||||||
|
this.pdfCanvas.width = page.view[3];
|
||||||
|
this.pdfCanvas.height = page.view[2];
|
||||||
|
} else {
|
||||||
|
this.pdfCanvas.width = page.view[2];
|
||||||
|
this.pdfCanvas.height = page.view[3];
|
||||||
|
}
|
||||||
|
|
||||||
|
// render the page onto the canvas
|
||||||
|
var renderContext = {
|
||||||
|
canvasContext: this.pdfCanvas.getContext("2d"),
|
||||||
|
viewport: page.getViewport({ scale: 1 })
|
||||||
|
};
|
||||||
|
await page.render(renderContext).promise;
|
||||||
|
|
||||||
|
//return pdfCanvas.toDataURL();
|
||||||
|
},
|
||||||
|
async incrementPage() {
|
||||||
|
if (this.pageIndex < this.pdfDoc.numPages-1) {
|
||||||
|
this.storePageContents();
|
||||||
|
await this.renderPage(this.pdfDoc, this.pageIndex+1);
|
||||||
|
this.loadPageContents();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async decrementPage() {
|
||||||
|
if (this.pageIndex > 0) {
|
||||||
|
this.storePageContents();
|
||||||
|
await this.renderPage(this.pdfDoc, this.pageIndex-1);
|
||||||
|
this.loadPageContents();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
parseTransform(element) {
|
||||||
|
|
||||||
|
},
|
||||||
|
async getOverlayedPdfDocument() {
|
||||||
|
const pdfBytes = await this.pdfDoc.getData();
|
||||||
|
const pdfDocModified = await PDFLib.PDFDocument.load(pdfBytes, { ignoreEncryption: true });
|
||||||
|
this.storePageContents();
|
||||||
|
|
||||||
|
const pagesMap = this.documentsMap.get(this.pdfDoc);
|
||||||
|
for (let pageIdx in pagesMap) {
|
||||||
|
if (pageIdx.includes("offset")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
console.log(typeof pageIdx);
|
||||||
|
|
||||||
|
const page = pdfDocModified.getPage(parseInt(pageIdx));
|
||||||
|
const draggablesData = pagesMap[pageIdx];
|
||||||
|
const offsetWidth = pagesMap[pageIdx+"-offsetWidth"];
|
||||||
|
const offsetHeight = pagesMap[pageIdx+"-offsetHeight"];
|
||||||
|
|
||||||
|
for (const draggableData of draggablesData) {
|
||||||
|
// embed the draggable canvas
|
||||||
|
const draggableElement = draggableData.element;
|
||||||
|
const response = await fetch(draggableElement.toDataURL());
|
||||||
|
const draggableImgBytes = await response.arrayBuffer();
|
||||||
|
const pdfImageObject = await pdfDocModified.embedPng(draggableImgBytes);
|
||||||
|
|
||||||
|
// calculate the position in the pdf document
|
||||||
|
const tansform = draggableElement.style.transform.replace(/[^.,-\d]/g, '');
|
||||||
|
const transformComponents = tansform.split(",");
|
||||||
|
const draggablePositionPixels = {
|
||||||
|
x: parseFloat(transformComponents[0]),
|
||||||
|
y: parseFloat(transformComponents[1]),
|
||||||
|
width: draggableData.offsetWidth,
|
||||||
|
height: draggableData.offsetHeight,
|
||||||
|
};
|
||||||
|
const draggablePositionRelative = {
|
||||||
|
x: draggablePositionPixels.x / offsetWidth,
|
||||||
|
y: draggablePositionPixels.y / offsetHeight,
|
||||||
|
width: draggablePositionPixels.width / offsetWidth,
|
||||||
|
height: draggablePositionPixels.height / offsetHeight,
|
||||||
|
}
|
||||||
|
const draggablePositionPdf = {
|
||||||
|
x: draggablePositionRelative.x * page.getWidth(),
|
||||||
|
y: draggablePositionRelative.y * page.getHeight(),
|
||||||
|
width: draggablePositionRelative.width * page.getWidth(),
|
||||||
|
height: draggablePositionRelative.height * page.getHeight(),
|
||||||
|
}
|
||||||
|
|
||||||
|
// draw the image
|
||||||
|
page.drawImage(pdfImageObject, {
|
||||||
|
x: draggablePositionPdf.x,
|
||||||
|
y: page.getHeight() - draggablePositionPdf.y - draggablePositionPdf.height,
|
||||||
|
width: draggablePositionPdf.width,
|
||||||
|
height: draggablePositionPdf.height,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.loadPageContents();
|
||||||
|
return pdfDocModified;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", () => {
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
DraggableUtils.init();
|
DraggableUtils.init();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,50 +1,50 @@
|
|||||||
var traceVisible = false;
|
var traceVisible = false;
|
||||||
|
|
||||||
function toggletrace() {
|
function toggletrace() {
|
||||||
var traceDiv = document.getElementById("trace");
|
var traceDiv = document.getElementById("trace");
|
||||||
if (!traceVisible) {
|
if (!traceVisible) {
|
||||||
traceDiv.style.maxHeight = "500px";
|
traceDiv.style.maxHeight = "500px";
|
||||||
traceVisible = true;
|
traceVisible = true;
|
||||||
} else {
|
} else {
|
||||||
traceDiv.style.maxHeight = "0px";
|
traceDiv.style.maxHeight = "0px";
|
||||||
traceVisible = false;
|
traceVisible = false;
|
||||||
}
|
}
|
||||||
adjustContainerHeight();
|
adjustContainerHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
function copytrace() {
|
function copytrace() {
|
||||||
var flip = false;
|
var flip = false
|
||||||
if (!traceVisible) {
|
if (!traceVisible) {
|
||||||
toggletrace();
|
toggletrace()
|
||||||
flip = true;
|
flip = true
|
||||||
}
|
}
|
||||||
var traceContent = document.getElementById("traceContent");
|
var traceContent = document.getElementById("traceContent");
|
||||||
var range = document.createRange();
|
var range = document.createRange();
|
||||||
range.selectNode(traceContent);
|
range.selectNode(traceContent);
|
||||||
window.getSelection().removeAllRanges();
|
window.getSelection().removeAllRanges();
|
||||||
window.getSelection().addRange(range);
|
window.getSelection().addRange(range);
|
||||||
document.execCommand("copy");
|
document.execCommand("copy");
|
||||||
window.getSelection().removeAllRanges();
|
window.getSelection().removeAllRanges();
|
||||||
if (flip) {
|
if (flip) {
|
||||||
toggletrace();
|
toggletrace()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function dismissError() {
|
function dismissError() {
|
||||||
var errorContainer = document.getElementById("errorContainer");
|
var errorContainer = document.getElementById("errorContainer");
|
||||||
errorContainer.style.display = "none";
|
errorContainer.style.display = "none";
|
||||||
errorContainer.style.height = "0";
|
errorContainer.style.height = "0";
|
||||||
}
|
}
|
||||||
|
|
||||||
function adjustContainerHeight() {
|
function adjustContainerHeight() {
|
||||||
var errorContainer = document.getElementById("errorContainer");
|
var errorContainer = document.getElementById("errorContainer");
|
||||||
var traceDiv = document.getElementById("trace");
|
var traceDiv = document.getElementById("trace");
|
||||||
if (traceVisible) {
|
if (traceVisible) {
|
||||||
errorContainer.style.height = errorContainer.scrollHeight - traceDiv.scrollHeight + traceDiv.offsetHeight + "px";
|
errorContainer.style.height = errorContainer.scrollHeight - traceDiv.scrollHeight + traceDiv.offsetHeight + "px";
|
||||||
} else {
|
} else {
|
||||||
errorContainer.style.height = "auto";
|
errorContainer.style.height = "auto";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function showHelp() {
|
function showHelp() {
|
||||||
$("#helpModal").modal("show");
|
$('#helpModal').modal('show');
|
||||||
}
|
}
|
||||||
@@ -1,45 +1,45 @@
|
|||||||
function updateFavoritesDropdown() {
|
function updateFavoritesDropdown() {
|
||||||
var dropdown = document.querySelector("#favoritesDropdown");
|
var dropdown = document.querySelector('#favoritesDropdown');
|
||||||
|
|
||||||
// Check if dropdown exists
|
// Check if dropdown exists
|
||||||
if (!dropdown) {
|
if (!dropdown) {
|
||||||
console.error('Dropdown element with ID "favoritesDropdown" not found!');
|
console.error('Dropdown element with ID "favoritesDropdown" not found!');
|
||||||
return; // Exit the function
|
return; // Exit the function
|
||||||
}
|
|
||||||
dropdown.innerHTML = ""; // Clear the current favorites
|
|
||||||
|
|
||||||
var hasFavorites = false;
|
|
||||||
|
|
||||||
for (var i = 0; i < localStorage.length; i++) {
|
|
||||||
var key = localStorage.key(i);
|
|
||||||
if (localStorage.getItem(key) === "favorite") {
|
|
||||||
// Find the corresponding navbar entry
|
|
||||||
var navbarEntry = document.querySelector(`a[href='${key}']`);
|
|
||||||
if (navbarEntry) {
|
|
||||||
// Create a new dropdown entry
|
|
||||||
var dropdownItem = document.createElement("a");
|
|
||||||
dropdownItem.className = "dropdown-item";
|
|
||||||
dropdownItem.href = navbarEntry.href;
|
|
||||||
dropdownItem.innerHTML = navbarEntry.innerHTML;
|
|
||||||
dropdown.appendChild(dropdownItem);
|
|
||||||
hasFavorites = true;
|
|
||||||
} else {
|
|
||||||
console.warn(`Navbar entry not found for key: ${key}`);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
dropdown.innerHTML = ''; // Clear the current favorites
|
||||||
|
|
||||||
// Show or hide the default item based on whether there are any favorites
|
var hasFavorites = false;
|
||||||
if (!hasFavorites) {
|
|
||||||
var defaultItem = document.createElement("a");
|
for (var i = 0; i < localStorage.length; i++) {
|
||||||
defaultItem.className = "dropdown-item";
|
var key = localStorage.key(i);
|
||||||
defaultItem.textContent = noFavourites;
|
if (localStorage.getItem(key) === 'favorite') {
|
||||||
dropdown.appendChild(defaultItem);
|
// Find the corresponding navbar entry
|
||||||
}
|
var navbarEntry = document.querySelector(`a[href='${key}']`);
|
||||||
|
if (navbarEntry) {
|
||||||
|
// Create a new dropdown entry
|
||||||
|
var dropdownItem = document.createElement('a');
|
||||||
|
dropdownItem.className = 'dropdown-item';
|
||||||
|
dropdownItem.href = navbarEntry.href;
|
||||||
|
dropdownItem.innerHTML = navbarEntry.innerHTML;
|
||||||
|
dropdown.appendChild(dropdownItem);
|
||||||
|
hasFavorites = true;
|
||||||
|
} else {
|
||||||
|
console.warn(`Navbar entry not found for key: ${key}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show or hide the default item based on whether there are any favorites
|
||||||
|
if (!hasFavorites) {
|
||||||
|
var defaultItem = document.createElement('a');
|
||||||
|
defaultItem.className = 'dropdown-item';
|
||||||
|
defaultItem.textContent = noFavourites;
|
||||||
|
dropdown.appendChild(defaultItem);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure that the DOM content has been fully loaded before calling the function
|
// Ensure that the DOM content has been fully loaded before calling the function
|
||||||
document.addEventListener("DOMContentLoaded", function () {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
console.log("DOMContentLoaded event fired");
|
console.log('DOMContentLoaded event fired');
|
||||||
updateFavoritesDropdown();
|
updateFavoritesDropdown();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,107 +1,104 @@
|
|||||||
document.addEventListener("DOMContentLoaded", function () {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
document.querySelectorAll(".custom-file-chooser").forEach(setupFileInput);
|
document.querySelectorAll('.custom-file-chooser').forEach(setupFileInput);
|
||||||
});
|
});
|
||||||
|
|
||||||
function setupFileInput(chooser) {
|
function setupFileInput(chooser) {
|
||||||
const elementId = chooser.getAttribute("data-bs-element-id");
|
const elementId = chooser.getAttribute('data-bs-element-id');
|
||||||
const filesSelected = chooser.getAttribute("data-bs-files-selected");
|
const filesSelected = chooser.getAttribute('data-bs-files-selected');
|
||||||
const pdfPrompt = chooser.getAttribute("data-bs-pdf-prompt");
|
const pdfPrompt = chooser.getAttribute('data-bs-pdf-prompt');
|
||||||
|
|
||||||
let allFiles = [];
|
let allFiles = [];
|
||||||
let overlay;
|
let overlay;
|
||||||
let dragCounter = 0;
|
let dragCounter = 0;
|
||||||
|
|
||||||
const dragenterListener = function () {
|
const dragenterListener = function() {
|
||||||
dragCounter++;
|
dragCounter++;
|
||||||
if (!overlay) {
|
if (!overlay) {
|
||||||
overlay = document.createElement("div");
|
overlay = document.createElement('div');
|
||||||
overlay.style.position = "fixed";
|
overlay.style.position = 'fixed';
|
||||||
overlay.style.top = 0;
|
overlay.style.top = 0;
|
||||||
overlay.style.left = 0;
|
overlay.style.left = 0;
|
||||||
overlay.style.width = "100%";
|
overlay.style.width = '100%';
|
||||||
overlay.style.height = "100%";
|
overlay.style.height = '100%';
|
||||||
overlay.style.background = "rgba(0, 0, 0, 0.5)";
|
overlay.style.background = 'rgba(0, 0, 0, 0.5)';
|
||||||
overlay.style.color = "#fff";
|
overlay.style.color = '#fff';
|
||||||
overlay.style.zIndex = "1000";
|
overlay.style.zIndex = '1000';
|
||||||
overlay.style.display = "flex";
|
overlay.style.display = 'flex';
|
||||||
overlay.style.alignItems = "center";
|
overlay.style.alignItems = 'center';
|
||||||
overlay.style.justifyContent = "center";
|
overlay.style.justifyContent = 'center';
|
||||||
overlay.style.pointerEvents = "none";
|
overlay.style.pointerEvents = 'none';
|
||||||
overlay.innerHTML = "<p>Drop files anywhere to upload</p>";
|
overlay.innerHTML = '<p>Drop files anywhere to upload</p>';
|
||||||
document.getElementById("content-wrap").appendChild(overlay);
|
document.getElementById('content-wrap').appendChild(overlay);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const dragleaveListener = function () {
|
const dragleaveListener = function() {
|
||||||
dragCounter--;
|
dragCounter--;
|
||||||
if (dragCounter === 0) {
|
if (dragCounter === 0) {
|
||||||
if (overlay) {
|
if (overlay) {
|
||||||
overlay.remove();
|
overlay.remove();
|
||||||
overlay = null;
|
overlay = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const dropListener = function (e) {
|
const dropListener = function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
const dt = e.dataTransfer;
|
const dt = e.dataTransfer;
|
||||||
const files = dt.files;
|
const files = dt.files;
|
||||||
|
|
||||||
for (let i = 0; i < files.length; i++) {
|
for (let i = 0; i < files.length; i++) {
|
||||||
allFiles.push(files[i]);
|
allFiles.push(files[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
const dataTransfer = new DataTransfer();
|
const dataTransfer = new DataTransfer();
|
||||||
allFiles.forEach((file) => dataTransfer.items.add(file));
|
allFiles.forEach(file => dataTransfer.items.add(file));
|
||||||
|
|
||||||
const fileInput = document.getElementById(elementId);
|
const fileInput = document.getElementById(elementId);
|
||||||
fileInput.files = dataTransfer.files;
|
fileInput.files = dataTransfer.files;
|
||||||
|
|
||||||
if (overlay) {
|
if (overlay) {
|
||||||
overlay.remove();
|
overlay.remove();
|
||||||
overlay = null;
|
overlay = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
dragCounter = 0;
|
dragCounter = 0;
|
||||||
|
|
||||||
fileInput.dispatchEvent(new Event("change", { bubbles: true }));
|
fileInput.dispatchEvent(new Event('change', { bubbles: true }));
|
||||||
};
|
};
|
||||||
|
|
||||||
["dragenter", "dragover", "dragleave", "drop"].forEach((eventName) => {
|
['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
|
||||||
document.body.addEventListener(eventName, preventDefaults, false);
|
document.body.addEventListener(eventName, preventDefaults, false);
|
||||||
});
|
|
||||||
|
|
||||||
function preventDefaults(e) {
|
|
||||||
e.preventDefault();
|
|
||||||
e.stopPropagation();
|
|
||||||
}
|
|
||||||
|
|
||||||
document.body.addEventListener("dragenter", dragenterListener);
|
|
||||||
document.body.addEventListener("dragleave", dragleaveListener);
|
|
||||||
document.body.addEventListener("drop", dropListener);
|
|
||||||
|
|
||||||
$("#" + elementId).on("change", function (e) {
|
|
||||||
allFiles = Array.from(e.target.files);
|
|
||||||
handleFileInputChange(this);
|
|
||||||
});
|
|
||||||
|
|
||||||
function handleFileInputChange(inputElement) {
|
|
||||||
const files = allFiles;
|
|
||||||
const fileNames = files.map((f) => f.name);
|
|
||||||
const selectedFilesContainer = $(inputElement).siblings(".selected-files");
|
|
||||||
selectedFilesContainer.empty();
|
|
||||||
fileNames.forEach((fileName) => {
|
|
||||||
selectedFilesContainer.append("<div>" + fileName + "</div>");
|
|
||||||
});
|
});
|
||||||
if (fileNames.length === 1) {
|
|
||||||
$(inputElement).siblings(".custom-file-label").addClass("selected").html(fileNames[0]);
|
function preventDefaults(e) {
|
||||||
} else if (fileNames.length > 1) {
|
e.preventDefault();
|
||||||
$(inputElement)
|
e.stopPropagation();
|
||||||
.siblings(".custom-file-label")
|
}
|
||||||
.addClass("selected")
|
|
||||||
.html(fileNames.length + " " + filesSelected);
|
document.body.addEventListener('dragenter', dragenterListener);
|
||||||
} else {
|
document.body.addEventListener('dragleave', dragleaveListener);
|
||||||
$(inputElement).siblings(".custom-file-label").addClass("selected").html(pdfPrompt);
|
document.body.addEventListener('drop', dropListener);
|
||||||
|
|
||||||
|
$("#" + elementId).on("change", function(e) {
|
||||||
|
allFiles = Array.from(e.target.files);
|
||||||
|
handleFileInputChange(this);
|
||||||
|
});
|
||||||
|
|
||||||
|
function handleFileInputChange(inputElement) {
|
||||||
|
const files = allFiles;
|
||||||
|
const fileNames = files.map(f => f.name);
|
||||||
|
const selectedFilesContainer = $(inputElement).siblings(".selected-files");
|
||||||
|
selectedFilesContainer.empty();
|
||||||
|
fileNames.forEach(fileName => {
|
||||||
|
selectedFilesContainer.append("<div>" + fileName + "</div>");
|
||||||
|
});
|
||||||
|
if (fileNames.length === 1) {
|
||||||
|
$(inputElement).siblings(".custom-file-label").addClass("selected").html(fileNames[0]);
|
||||||
|
} else if (fileNames.length > 1) {
|
||||||
|
$(inputElement).siblings(".custom-file-label").addClass("selected").html(fileNames.length + " " + filesSelected);
|
||||||
|
} else {
|
||||||
|
$(inputElement).siblings(".custom-file-label").addClass("selected").html(pdfPrompt);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,276 +1,292 @@
|
|||||||
function initializeGame() {
|
function initializeGame() {
|
||||||
const gameContainer = document.getElementById("game-container");
|
const gameContainer = document.getElementById('game-container');
|
||||||
const player = document.getElementById("player");
|
const player = document.getElementById('player');
|
||||||
|
|
||||||
|
let playerSize = gameContainer.clientWidth * 0.0625; // 5% of container width
|
||||||
|
player.style.width = playerSize + 'px';
|
||||||
|
player.style.height = playerSize + 'px';
|
||||||
|
|
||||||
|
let playerX = gameContainer.clientWidth / 2 - playerSize / 2;
|
||||||
|
let playerY = gameContainer.clientHeight * 0.1;
|
||||||
|
const scoreElement = document.getElementById('score');
|
||||||
|
const levelElement = document.getElementById('level');
|
||||||
|
const livesElement = document.getElementById('lives');
|
||||||
|
const highScoreElement = document.getElementById('high-score');
|
||||||
|
|
||||||
let playerSize = gameContainer.clientWidth * 0.0625; // 5% of container width
|
let pdfSize = gameContainer.clientWidth * 0.0625; // 5% of container width
|
||||||
player.style.width = playerSize + "px";
|
let projectileWidth = gameContainer.clientWidth * 0.00625;// 0.00625; // 0.5% of container width
|
||||||
player.style.height = playerSize + "px";
|
let projectileHeight = gameContainer.clientHeight * 0.01667; // 1% of container height
|
||||||
|
|
||||||
let playerX = gameContainer.clientWidth / 2 - playerSize / 2;
|
let paused = false;
|
||||||
let playerY = gameContainer.clientHeight * 0.1;
|
|
||||||
const scoreElement = document.getElementById("score");
|
const fireRate = 200; // Time between shots in milliseconds
|
||||||
const levelElement = document.getElementById("level");
|
let lastProjectileTime = 0;
|
||||||
const livesElement = document.getElementById("lives");
|
let lives = 3;
|
||||||
const highScoreElement = document.getElementById("high-score");
|
|
||||||
|
|
||||||
|
let highScore = localStorage.getItem('highScore') ? parseInt(localStorage.getItem('highScore')) : 0;
|
||||||
|
updateHighScore();
|
||||||
|
|
||||||
let pdfSize = gameContainer.clientWidth * 0.0625; // 5% of container width
|
|
||||||
let projectileWidth = gameContainer.clientWidth * 0.00625; // 0.00625; // 0.5% of container width
|
|
||||||
let projectileHeight = gameContainer.clientHeight * 0.01667; // 1% of container height
|
|
||||||
|
|
||||||
let paused = false;
|
|
||||||
|
|
||||||
const fireRate = 200; // Time between shots in milliseconds
|
const keysPressed = {};
|
||||||
let lastProjectileTime = 0;
|
const pdfs = [];
|
||||||
let lives = 3;
|
const projectiles = [];
|
||||||
|
let score = 0;
|
||||||
|
let level = 1;
|
||||||
|
let pdfSpeed = 0.5;
|
||||||
|
let gameOver = false;
|
||||||
|
|
||||||
let highScore = localStorage.getItem("highScore") ? parseInt(localStorage.getItem("highScore")) : 0;
|
function handleKeys() {
|
||||||
updateHighScore();
|
if (keysPressed['ArrowLeft']) {
|
||||||
|
playerX -= 10;
|
||||||
|
}
|
||||||
|
if (keysPressed['ArrowRight']) {
|
||||||
|
playerX += 10;
|
||||||
|
}
|
||||||
|
if (keysPressed[' '] && !gameOver) {
|
||||||
|
const currentTime = new Date().getTime();
|
||||||
|
if (currentTime - lastProjectileTime >= fireRate) {
|
||||||
|
shootProjectile();
|
||||||
|
lastProjectileTime = currentTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
updatePlayerPosition();
|
||||||
|
}
|
||||||
|
|
||||||
const PLAYER_MOVE_SPEED = 5;
|
|
||||||
const BASE_PDF_SPEED = 1;
|
|
||||||
const LEVEL_INCREASE_PDF_SPEED = 0.2;
|
|
||||||
const BASE_SPAWN_INTERVAL_MS = 1250; // milliseconds before a new enemy spawns
|
|
||||||
const LEVEL_INCREASE_FACTOR_MS = 25; // milliseconds to decrease the spawn interval per level
|
|
||||||
const MAX_SPAWN_RATE_REDUCTION_MS = 800; // Max milliseconds from the base spawn interval
|
|
||||||
|
|
||||||
|
|
||||||
let keysPressed = {};
|
|
||||||
const pdfs = [];
|
|
||||||
const projectiles = [];
|
|
||||||
let score = 0;
|
|
||||||
let level = 1;
|
|
||||||
let pdfSpeed = BASE_PDF_SPEED;
|
|
||||||
let gameOver = false;
|
|
||||||
|
|
||||||
|
|
||||||
function handleKeys() {
|
|
||||||
if (keysPressed["ArrowLeft"]) {
|
|
||||||
playerX -= PLAYER_MOVE_SPEED;
|
|
||||||
playerX = Math.max(0, playerX)
|
|
||||||
}
|
|
||||||
if (keysPressed["ArrowRight"]) {
|
|
||||||
playerX += PLAYER_MOVE_SPEED;
|
|
||||||
playerX = Math.min(gameContainer.clientWidth - playerSize, playerX);
|
|
||||||
}
|
|
||||||
if (keysPressed[" "] && !gameOver) {
|
|
||||||
const currentTime = new Date().getTime();
|
|
||||||
if (currentTime - lastProjectileTime >= fireRate) {
|
|
||||||
shootProjectile();
|
|
||||||
lastProjectileTime = currentTime;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
updatePlayerPosition();
|
|
||||||
}
|
|
||||||
|
|
||||||
function onKeydown(event) {
|
|
||||||
if (event.key === " ") {
|
|
||||||
event.preventDefault();
|
|
||||||
}
|
|
||||||
keysPressed[event.key] = true;
|
|
||||||
handleKeys();
|
|
||||||
}
|
|
||||||
function onKeyUp(event) {
|
|
||||||
keysPressed[event.key] = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
document.removeEventListener("keydown", onKeydown);
|
|
||||||
document.removeEventListener("keyup", onKeyUp);
|
|
||||||
document.addEventListener("keydown", onKeydown);
|
|
||||||
document.addEventListener("keyup", onKeyUp);
|
|
||||||
|
|
||||||
function updatePlayerPosition() {
|
document.addEventListener('keydown', (event) => {
|
||||||
player.style.left = playerX + "px";
|
if (event.key === ' ') {
|
||||||
player.style.bottom = playerY + "px";
|
event.preventDefault();
|
||||||
}
|
|
||||||
|
|
||||||
function updateLives() {
|
|
||||||
livesElement.textContent = "Lives: " + lives;
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateHighScore() {
|
|
||||||
highScoreElement.textContent = "High Score: " + highScore;
|
|
||||||
}
|
|
||||||
|
|
||||||
function shootProjectile() {
|
|
||||||
const projectile = document.createElement("div");
|
|
||||||
projectile.classList.add("projectile");
|
|
||||||
projectile.style.backgroundColor = "black";
|
|
||||||
projectile.style.width = projectileWidth + "px";
|
|
||||||
projectile.style.height = projectileHeight + "px";
|
|
||||||
projectile.style.left = playerX + playerSize / 2 - projectileWidth / 2 + "px";
|
|
||||||
projectile.style.top = gameContainer.clientHeight - playerY - playerSize + "px";
|
|
||||||
gameContainer.appendChild(projectile);
|
|
||||||
projectiles.push(projectile);
|
|
||||||
}
|
|
||||||
|
|
||||||
function spawnPdf() {
|
|
||||||
const pdf = document.createElement("img");
|
|
||||||
pdf.src = "images/file-earmark-pdf.svg";
|
|
||||||
pdf.classList.add("pdf");
|
|
||||||
pdf.style.width = pdfSize + "px";
|
|
||||||
pdf.style.height = pdfSize + "px";
|
|
||||||
pdf.style.left = Math.floor(Math.random() * (gameContainer.clientWidth - (2*pdfSize))) + pdfSize + "px";
|
|
||||||
pdf.style.top = "0px";
|
|
||||||
gameContainer.appendChild(pdf);
|
|
||||||
pdfs.push(pdf);
|
|
||||||
}
|
|
||||||
|
|
||||||
function resetEnemies() {
|
|
||||||
pdfs.forEach((pdf) => gameContainer.removeChild(pdf));
|
|
||||||
pdfs.length = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateGame() {
|
|
||||||
if (gameOver || paused) return;
|
|
||||||
|
|
||||||
handleKeys();
|
|
||||||
for (let pdfIndex = 0; pdfIndex < pdfs.length; pdfIndex++) {
|
|
||||||
const pdf = pdfs[pdfIndex];
|
|
||||||
const pdfY = parseFloat(pdf.style.top) + pdfSpeed;
|
|
||||||
if (pdfY + 50 > gameContainer.clientHeight) {
|
|
||||||
gameContainer.removeChild(pdf);
|
|
||||||
pdfs.splice(pdfIndex, 1);
|
|
||||||
|
|
||||||
// Deduct 2 points when a PDF gets past the player
|
|
||||||
score -= 0;
|
|
||||||
updateScore();
|
|
||||||
|
|
||||||
// Decrease lives and check if game over
|
|
||||||
lives--;
|
|
||||||
updateLives();
|
|
||||||
if (lives <= 0) {
|
|
||||||
endGame();
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
} else {
|
keysPressed[event.key] = true;
|
||||||
pdf.style.top = pdfY + "px";
|
handleKeys();
|
||||||
|
|
||||||
// Check for collision with player
|
|
||||||
if (collisionDetected(player, pdf)) {
|
|
||||||
lives--;
|
|
||||||
updateLives();
|
|
||||||
resetEnemies();
|
|
||||||
if (lives <= 0) {
|
|
||||||
endGame();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
projectiles.forEach((projectile, projectileIndex) => {
|
|
||||||
const projectileY = parseInt(projectile.style.top) - 10;
|
|
||||||
if (projectileY < 0) {
|
|
||||||
gameContainer.removeChild(projectile);
|
|
||||||
projectiles.splice(projectileIndex, 1);
|
|
||||||
} else {
|
|
||||||
projectile.style.top = projectileY + "px";
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let pdfIndex = 0; pdfIndex < pdfs.length; pdfIndex++) {
|
|
||||||
const pdf = pdfs[pdfIndex];
|
|
||||||
if (collisionDetected(projectile, pdf)) {
|
|
||||||
gameContainer.removeChild(pdf);
|
|
||||||
gameContainer.removeChild(projectile);
|
|
||||||
pdfs.splice(pdfIndex, 1);
|
|
||||||
projectiles.splice(projectileIndex, 1);
|
|
||||||
score = score + 10;
|
|
||||||
updateScore();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
setTimeout(updateGame, 1000 / 60);
|
document.addEventListener('keyup', (event) => {
|
||||||
}
|
keysPressed[event.key] = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
function updatePlayerPosition() {
|
||||||
|
player.style.left = playerX + 'px';
|
||||||
|
player.style.bottom = playerY + 'px';
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateLives() {
|
||||||
|
livesElement.textContent = 'Lives: ' + lives;
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateHighScore() {
|
||||||
|
highScoreElement.textContent = 'High Score: ' + highScore;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function shootProjectile() {
|
||||||
|
const projectile = document.createElement('div');
|
||||||
|
projectile.classList.add('projectile');
|
||||||
|
projectile.style.backgroundColor = 'black';
|
||||||
|
projectile.style.width = projectileWidth + 'px';
|
||||||
|
projectile.style.height = projectileHeight + 'px';
|
||||||
|
projectile.style.left = (playerX + playerSize / 2 - projectileWidth / 2) + 'px';
|
||||||
|
projectile.style.top = (gameContainer.clientHeight - playerY - playerSize) + 'px';
|
||||||
|
gameContainer.appendChild(projectile);
|
||||||
|
projectiles.push(projectile);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function spawnPdf() {
|
||||||
|
const pdf = document.createElement('img');
|
||||||
|
pdf.src = 'images/file-earmark-pdf.svg';
|
||||||
|
pdf.classList.add('pdf');
|
||||||
|
pdf.style.width = pdfSize + 'px';
|
||||||
|
pdf.style.height = pdfSize + 'px';
|
||||||
|
pdf.style.left = Math.floor(Math.random() * (gameContainer.clientWidth - pdfSize)) + 'px';
|
||||||
|
pdf.style.top = '0px';
|
||||||
|
gameContainer.appendChild(pdf);
|
||||||
|
pdfs.push(pdf);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function resetEnemies() {
|
||||||
|
pdfs.forEach((pdf) => gameContainer.removeChild(pdf));
|
||||||
|
pdfs.length = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function updateGame() {
|
||||||
|
if (gameOver || paused) return;
|
||||||
|
|
||||||
|
for (let pdfIndex = 0; pdfIndex < pdfs.length; pdfIndex++) {
|
||||||
|
const pdf = pdfs[pdfIndex];
|
||||||
|
const pdfY = parseFloat(pdf.style.top) + pdfSpeed;
|
||||||
|
if (pdfY + 50 > gameContainer.clientHeight) {
|
||||||
|
gameContainer.removeChild(pdf);
|
||||||
|
pdfs.splice(pdfIndex, 1);
|
||||||
|
|
||||||
|
// Deduct 2 points when a PDF gets past the player
|
||||||
|
score -= 0;
|
||||||
|
updateScore();
|
||||||
|
|
||||||
|
// Decrease lives and check if game over
|
||||||
|
lives--;
|
||||||
|
updateLives();
|
||||||
|
if (lives <= 0) {
|
||||||
|
endGame();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
pdf.style.top = pdfY + 'px';
|
||||||
|
|
||||||
|
// Check for collision with player
|
||||||
|
if (collisionDetected(player, pdf)) {
|
||||||
|
lives--;
|
||||||
|
updateLives();
|
||||||
|
resetEnemies();
|
||||||
|
if (lives <= 0) {
|
||||||
|
endGame();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
projectiles.forEach((projectile, projectileIndex) => {
|
||||||
|
const projectileY = parseInt(projectile.style.top) - 10;
|
||||||
|
if (projectileY < 0) {
|
||||||
|
gameContainer.removeChild(projectile);
|
||||||
|
projectiles.splice(projectileIndex, 1);
|
||||||
|
} else {
|
||||||
|
projectile.style.top = projectileY + 'px';
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let pdfIndex = 0; pdfIndex < pdfs.length; pdfIndex++) {
|
||||||
|
const pdf = pdfs[pdfIndex];
|
||||||
|
if (collisionDetected(projectile, pdf)) {
|
||||||
|
gameContainer.removeChild(pdf);
|
||||||
|
gameContainer.removeChild(projectile);
|
||||||
|
pdfs.splice(pdfIndex, 1);
|
||||||
|
projectiles.splice(projectileIndex, 1);
|
||||||
|
score = score + 10;
|
||||||
|
updateScore();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
setTimeout(updateGame, 1000 / 60);
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetGame() {
|
||||||
|
playerX = gameContainer.clientWidth / 2;
|
||||||
|
playerY = 50;
|
||||||
|
updatePlayerPosition();
|
||||||
|
|
||||||
|
pdfs.forEach((pdf) => gameContainer.removeChild(pdf));
|
||||||
|
projectiles.forEach((projectile) => gameContainer.removeChild(projectile));
|
||||||
|
|
||||||
|
pdfs.length = 0;
|
||||||
|
projectiles.length = 0;
|
||||||
|
|
||||||
|
score = 0;
|
||||||
|
level = 1;
|
||||||
|
lives = 3;
|
||||||
|
|
||||||
|
gameOver = false;
|
||||||
|
|
||||||
|
updateScore();
|
||||||
|
updateLives();
|
||||||
|
levelElement.textContent = 'Level: ' + level;
|
||||||
|
pdfSpeed = 1;
|
||||||
|
clearTimeout(spawnPdfTimeout); // Clear the existing spawnPdfTimeout
|
||||||
|
setTimeout(updateGame, 1000 / 60);
|
||||||
|
spawnPdfInterval();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function updateScore() {
|
||||||
|
scoreElement.textContent = 'Score: ' + score;
|
||||||
|
checkLevelUp();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function checkLevelUp() {
|
||||||
|
const newLevel = Math.floor(score / 100) + 1;
|
||||||
|
if (newLevel > level) {
|
||||||
|
level = newLevel;
|
||||||
|
levelElement.textContent = 'Level: ' + level;
|
||||||
|
pdfSpeed += 0.2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function collisionDetected(a, b) {
|
||||||
|
const rectA = a.getBoundingClientRect();
|
||||||
|
const rectB = b.getBoundingClientRect();
|
||||||
|
return (
|
||||||
|
rectA.left < rectB.right &&
|
||||||
|
rectA.right > rectB.left &&
|
||||||
|
rectA.top < rectB.bottom &&
|
||||||
|
rectA.bottom > rectB.top
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function endGame() {
|
||||||
|
gameOver = true;
|
||||||
|
if (score > highScore) {
|
||||||
|
highScore = score;
|
||||||
|
localStorage.setItem('highScore', highScore);
|
||||||
|
updateHighScore();
|
||||||
|
}
|
||||||
|
alert('Game Over! Your final score is: ' + score);
|
||||||
|
document.getElementById('game-container-wrapper').close();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
let spawnPdfTimeout;
|
||||||
|
|
||||||
|
const BASE_SPAWN_INTERVAL_MS = 1250; // milliseconds before a new enemy spawns
|
||||||
|
const LEVEL_INCREASE_FACTOR_MS = 0; // milliseconds to decrease the spawn interval per level
|
||||||
|
const MAX_SPAWN_RATE_REDUCTION_MS = 800; // Max milliseconds from the base spawn interval
|
||||||
|
|
||||||
|
function spawnPdfInterval() {
|
||||||
|
console.log("spawnPdfInterval");
|
||||||
|
if (gameOver || paused) {
|
||||||
|
console.log("spawnPdfInterval 2");
|
||||||
|
clearTimeout(spawnPdfTimeout);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log("spawnPdfInterval 3");
|
||||||
|
spawnPdf();
|
||||||
|
let spawnRateReduction = Math.min(level * LEVEL_INCREASE_FACTOR_MS, MAX_SPAWN_RATE_REDUCTION_MS);
|
||||||
|
let spawnRate = BASE_SPAWN_INTERVAL_MS - spawnRateReduction;
|
||||||
|
spawnPdfTimeout = setTimeout(spawnPdfInterval, spawnRate);
|
||||||
|
}
|
||||||
|
|
||||||
function resetGame() {
|
|
||||||
playerX = gameContainer.clientWidth / 2;
|
|
||||||
playerY = 50;
|
|
||||||
updatePlayerPosition();
|
updatePlayerPosition();
|
||||||
|
updateGame();
|
||||||
pdfs.forEach((pdf) => gameContainer.removeChild(pdf));
|
|
||||||
projectiles.forEach((projectile) => gameContainer.removeChild(projectile));
|
|
||||||
|
|
||||||
pdfs.length = 0;
|
|
||||||
projectiles.length = 0;
|
|
||||||
|
|
||||||
score = 0;
|
|
||||||
level = 1;
|
|
||||||
lives = 3;
|
|
||||||
|
|
||||||
gameOver = false;
|
|
||||||
|
|
||||||
updateScore();
|
|
||||||
updateLives();
|
|
||||||
levelElement.textContent = "Level: " + level;
|
|
||||||
pdfSpeed = BASE_PDF_SPEED;
|
|
||||||
clearTimeout(spawnPdfTimeout); // Clear the existing spawnPdfTimeout
|
|
||||||
setTimeout(updateGame, 1000 / 60);
|
|
||||||
spawnPdfInterval();
|
spawnPdfInterval();
|
||||||
}
|
|
||||||
|
|
||||||
function updateScore() {
|
|
||||||
scoreElement.textContent = "Score: " + score;
|
|
||||||
checkLevelUp();
|
|
||||||
}
|
|
||||||
|
|
||||||
function checkLevelUp() {
|
document.addEventListener('visibilitychange', function() {
|
||||||
const newLevel = Math.floor(score / 100) + 1;
|
if (document.hidden) {
|
||||||
if (newLevel > level) {
|
paused = true;
|
||||||
level = newLevel;
|
} else {
|
||||||
levelElement.textContent = "Level: " + level;
|
paused = false;
|
||||||
pdfSpeed += LEVEL_INCREASE_PDF_SPEED;
|
updateGame();
|
||||||
}
|
spawnPdfInterval();
|
||||||
}
|
}
|
||||||
|
|
||||||
function collisionDetected(a, b) {
|
});
|
||||||
const rectA = a.getBoundingClientRect();
|
|
||||||
const rectB = b.getBoundingClientRect();
|
|
||||||
return rectA.left < rectB.right && rectA.right > rectB.left && rectA.top < rectB.bottom && rectA.bottom > rectB.top;
|
|
||||||
}
|
|
||||||
|
|
||||||
function endGame() {
|
window.resetGame = resetGame;
|
||||||
gameOver = true;
|
|
||||||
if (score > highScore) {
|
|
||||||
highScore = score;
|
|
||||||
localStorage.setItem("highScore", highScore);
|
|
||||||
updateHighScore();
|
|
||||||
}
|
|
||||||
alert("Game Over! Your final score is: " + score);
|
|
||||||
document.getElementById("game-container-wrapper").close();
|
|
||||||
}
|
|
||||||
|
|
||||||
let spawnPdfTimeout;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function spawnPdfInterval() {
|
|
||||||
if (gameOver || paused) {
|
|
||||||
clearTimeout(spawnPdfTimeout);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
spawnPdf();
|
|
||||||
let spawnRateReduction = Math.min(level * LEVEL_INCREASE_FACTOR_MS, MAX_SPAWN_RATE_REDUCTION_MS);
|
|
||||||
let spawnRate = BASE_SPAWN_INTERVAL_MS - spawnRateReduction;
|
|
||||||
spawnPdfTimeout = setTimeout(spawnPdfInterval, spawnRate);
|
|
||||||
}
|
|
||||||
|
|
||||||
updatePlayerPosition();
|
|
||||||
updateGame();
|
|
||||||
spawnPdfInterval();
|
|
||||||
|
|
||||||
document.addEventListener("visibilitychange", function () {
|
|
||||||
if (document.hidden) {
|
|
||||||
paused = true;
|
|
||||||
} else {
|
|
||||||
paused = false;
|
|
||||||
updateGame();
|
|
||||||
spawnPdfInterval();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
window.resetGame = resetGame;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
window.initializeGame = initializeGame;
|
window.initializeGame = initializeGame;
|
||||||
|
|||||||
@@ -1,52 +1,55 @@
|
|||||||
function compareVersions(version1, version2) {
|
function compareVersions(version1, version2) {
|
||||||
const v1 = version1.split(".");
|
const v1 = version1.split('.');
|
||||||
const v2 = version2.split(".");
|
const v2 = version2.split('.');
|
||||||
|
|
||||||
for (let i = 0; i < v1.length || i < v2.length; i++) {
|
for (let i = 0; i < v1.length || i < v2.length; i++) {
|
||||||
const n1 = parseInt(v1[i]) || 0;
|
const n1 = parseInt(v1[i]) || 0;
|
||||||
const n2 = parseInt(v2[i]) || 0;
|
const n2 = parseInt(v2[i]) || 0;
|
||||||
|
|
||||||
if (n1 > n2) {
|
if (n1 > n2) {
|
||||||
return 1;
|
return 1;
|
||||||
} else if (n1 < n2) {
|
} else if (n1 < n2) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async function getLatestReleaseVersion() {
|
async function getLatestReleaseVersion() {
|
||||||
const url = "https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest";
|
const url = "https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest";
|
||||||
try {
|
try {
|
||||||
const response = await fetch(url);
|
const response = await fetch(url);
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
return data.tag_name ? data.tag_name.substring(1) : "";
|
return data.tag_name ? data.tag_name.substring(1) : "";
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Failed to fetch latest version:", error);
|
console.error("Failed to fetch latest version:", error);
|
||||||
return ""; // Return an empty string if the fetch fails
|
return ""; // Return an empty string if the fetch fails
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function checkForUpdate() {
|
async function checkForUpdate() {
|
||||||
// Initialize the update button as hidden
|
// Initialize the update button as hidden
|
||||||
var updateBtn = document.getElementById("update-btn");
|
var updateBtn = document.getElementById("update-btn");
|
||||||
if (updateBtn !== null) {
|
if (updateBtn !== null) {
|
||||||
updateBtn.style.display = "none";
|
updateBtn.style.display = "none";
|
||||||
}
|
}
|
||||||
|
|
||||||
const latestVersion = await getLatestReleaseVersion();
|
|
||||||
console.log("latestVersion=" + latestVersion);
|
const latestVersion = await getLatestReleaseVersion();
|
||||||
console.log("currentVersion=" + currentVersion);
|
console.log("latestVersion=" + latestVersion)
|
||||||
console.log("compareVersions(latestVersion, currentVersion) > 0)=" + compareVersions(latestVersion, currentVersion));
|
console.log("currentVersion=" + currentVersion)
|
||||||
if (latestVersion && compareVersions(latestVersion, currentVersion) > 0) {
|
console.log("compareVersions(latestVersion, currentVersion) > 0)=" + compareVersions(latestVersion, currentVersion))
|
||||||
document.getElementById("update-btn").style.display = "block";
|
if (latestVersion && compareVersions(latestVersion, currentVersion) > 0) {
|
||||||
console.log("visible");
|
document.getElementById("update-btn").style.display = "block";
|
||||||
} else {
|
console.log("visible")
|
||||||
console.log("hidden");
|
} else {
|
||||||
}
|
console.log("hidden")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", (event) => {
|
|
||||||
checkForUpdate();
|
document.addEventListener('DOMContentLoaded', (event) => {
|
||||||
|
checkForUpdate();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,76 +1,78 @@
|
|||||||
function filterCards() {
|
function filterCards() {
|
||||||
var input = document.getElementById("searchBar");
|
var input = document.getElementById('searchBar');
|
||||||
var filter = input.value.toUpperCase();
|
var filter = input.value.toUpperCase();
|
||||||
var cards = document.querySelectorAll(".feature-card");
|
var cards = document.querySelectorAll('.feature-card');
|
||||||
|
|
||||||
for (var i = 0; i < cards.length; i++) {
|
for (var i = 0; i < cards.length; i++) {
|
||||||
var card = cards[i];
|
var card = cards[i];
|
||||||
var title = card.querySelector("h5.card-title").innerText;
|
var title = card.querySelector('h5.card-title').innerText;
|
||||||
var text = card.querySelector("p.card-text").innerText;
|
var text = card.querySelector('p.card-text').innerText;
|
||||||
|
|
||||||
|
// Get the navbar tags associated with the card
|
||||||
|
var navbarItem = document.querySelector(`a.dropdown-item[href="${card.id}"]`);
|
||||||
|
var navbarTags = navbarItem ? navbarItem.getAttribute('data-bs-tags') : '';
|
||||||
|
|
||||||
// Get the navbar tags associated with the card
|
var content = title + ' ' + text + ' ' + navbarTags;
|
||||||
var navbarItem = document.querySelector(`a.dropdown-item[href="${card.id}"]`);
|
|
||||||
var navbarTags = navbarItem ? navbarItem.getAttribute("data-bs-tags") : "";
|
|
||||||
|
|
||||||
var content = title + " " + text + " " + navbarTags;
|
if (content.toUpperCase().indexOf(filter) > -1) {
|
||||||
|
card.style.display = "";
|
||||||
if (content.toUpperCase().indexOf(filter) > -1) {
|
} else {
|
||||||
card.style.display = "";
|
card.style.display = "none";
|
||||||
} else {
|
}
|
||||||
card.style.display = "none";
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function toggleFavorite(element) {
|
function toggleFavorite(element) {
|
||||||
var img = element.querySelector("img");
|
var img = element.querySelector('img');
|
||||||
var card = element.closest(".feature-card");
|
var card = element.closest('.feature-card');
|
||||||
var cardId = card.id;
|
var cardId = card.id;
|
||||||
if (img.src.endsWith("star.svg")) {
|
if (img.src.endsWith('star.svg')) {
|
||||||
img.src = "images/star-fill.svg";
|
img.src = 'images/star-fill.svg';
|
||||||
card.classList.add("favorite");
|
card.classList.add('favorite');
|
||||||
localStorage.setItem(cardId, "favorite");
|
localStorage.setItem(cardId, 'favorite');
|
||||||
} else {
|
} else {
|
||||||
img.src = "images/star.svg";
|
img.src = 'images/star.svg';
|
||||||
card.classList.remove("favorite");
|
card.classList.remove('favorite');
|
||||||
localStorage.removeItem(cardId);
|
localStorage.removeItem(cardId);
|
||||||
}
|
}
|
||||||
reorderCards();
|
reorderCards();
|
||||||
updateFavoritesDropdown();
|
updateFavoritesDropdown();
|
||||||
filterCards();
|
filterCards();
|
||||||
}
|
}
|
||||||
|
|
||||||
function reorderCards() {
|
function reorderCards() {
|
||||||
var container = document.querySelector(".features-container");
|
var container = document.querySelector('.features-container');
|
||||||
var cards = Array.from(container.getElementsByClassName("feature-card"));
|
var cards = Array.from(container.getElementsByClassName('feature-card'));
|
||||||
cards.sort(function (a, b) {
|
cards.sort(function(a, b) {
|
||||||
var aIsFavorite = localStorage.getItem(a.id) === "favorite";
|
var aIsFavorite = localStorage.getItem(a.id) === 'favorite';
|
||||||
var bIsFavorite = localStorage.getItem(b.id) === "favorite";
|
var bIsFavorite = localStorage.getItem(b.id) === 'favorite';
|
||||||
if (aIsFavorite && !bIsFavorite) {
|
if (aIsFavorite && !bIsFavorite) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (!aIsFavorite && bIsFavorite) {
|
if (!aIsFavorite && bIsFavorite) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
});
|
});
|
||||||
cards.forEach(function (card) {
|
cards.forEach(function(card) {
|
||||||
container.appendChild(card);
|
container.appendChild(card);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function initializeCards() {
|
function initializeCards() {
|
||||||
var cards = document.querySelectorAll(".feature-card");
|
var cards = document.querySelectorAll('.feature-card');
|
||||||
cards.forEach(function (card) {
|
cards.forEach(function(card) {
|
||||||
var cardId = card.id;
|
var cardId = card.id;
|
||||||
var img = card.querySelector(".favorite-icon img");
|
var img = card.querySelector('.favorite-icon img');
|
||||||
if (localStorage.getItem(cardId) === "favorite") {
|
if (localStorage.getItem(cardId) === 'favorite') {
|
||||||
img.src = "images/star-fill.svg";
|
img.src = 'images/star-fill.svg';
|
||||||
card.classList.add("favorite");
|
card.classList.add('favorite');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
reorderCards();
|
reorderCards();
|
||||||
updateFavoritesDropdown();
|
updateFavoritesDropdown();
|
||||||
filterCards();
|
filterCards();
|
||||||
}
|
}
|
||||||
|
|
||||||
window.onload = initializeCards;
|
window.onload = initializeCards;
|
||||||
@@ -1,88 +1,80 @@
|
|||||||
document.addEventListener("DOMContentLoaded", function () {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
setLanguageForDropdown(".lang_dropdown-item");
|
setLanguageForDropdown('.lang_dropdown-item');
|
||||||
|
|
||||||
// Detect the browser's preferred language
|
// Detect the browser's preferred language
|
||||||
let browserLang = navigator.language || navigator.userLanguage;
|
let browserLang = navigator.language || navigator.userLanguage;
|
||||||
// Convert to a format consistent with your language codes (e.g., en-GB, fr-FR)
|
// Convert to a format consistent with your language codes (e.g., en-GB, fr-FR)
|
||||||
browserLang = browserLang.replace("-", "_");
|
browserLang = browserLang.replace('-', '_');
|
||||||
|
|
||||||
// Check if the dropdown contains the browser's language
|
// Check if the dropdown contains the browser's language
|
||||||
const dropdownLangExists = document.querySelector(`.lang_dropdown-item[data-language-code="${browserLang}"]`);
|
const dropdownLangExists = document.querySelector(`.lang_dropdown-item[data-language-code="${browserLang}"]`);
|
||||||
|
|
||||||
|
// Set the default language to browser's language or 'en_GB' if not found in the dropdown
|
||||||
|
const defaultLocale = dropdownLangExists ? browserLang : 'en_GB';
|
||||||
|
const storedLocale = localStorage.getItem('languageCode') || defaultLocale;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const dropdownItems = document.querySelectorAll('.lang_dropdown-item');
|
||||||
|
|
||||||
// Set the default language to browser's language or 'en_GB' if not found in the dropdown
|
for (let i = 0; i < dropdownItems.length; i++) {
|
||||||
const defaultLocale = dropdownLangExists ? browserLang : "en_GB";
|
const item = dropdownItems[i];
|
||||||
const storedLocale = localStorage.getItem("languageCode") || defaultLocale;
|
item.classList.remove('active');
|
||||||
|
if (item.dataset.languageCode === storedLocale) {
|
||||||
const dropdownItems = document.querySelectorAll(".lang_dropdown-item");
|
item.classList.add('active');
|
||||||
|
}
|
||||||
for (let i = 0; i < dropdownItems.length; i++) {
|
item.addEventListener('click', handleDropdownItemClick);
|
||||||
const item = dropdownItems[i];
|
}
|
||||||
item.classList.remove("active");
|
|
||||||
if (item.dataset.languageCode === storedLocale) {
|
|
||||||
item.classList.add("active");
|
|
||||||
}
|
|
||||||
item.addEventListener("click", handleDropdownItemClick);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
function setLanguageForDropdown(dropdownClass) {
|
function setLanguageForDropdown(dropdownClass) {
|
||||||
const defaultLocale = document.documentElement.language || "en_GB";
|
const defaultLocale = document.documentElement.lang || 'en_GB';
|
||||||
const storedLocale = localStorage.getItem("languageCode") || defaultLocale;
|
const storedLocale = localStorage.getItem('languageCode') || defaultLocale;
|
||||||
const dropdownItems = document.querySelectorAll(dropdownClass);
|
const dropdownItems = document.querySelectorAll(dropdownClass);
|
||||||
|
|
||||||
for (let i = 0; i < dropdownItems.length; i++) {
|
for (let i = 0; i < dropdownItems.length; i++) {
|
||||||
const item = dropdownItems[i];
|
const item = dropdownItems[i];
|
||||||
item.classList.remove("active");
|
item.classList.remove('active');
|
||||||
if (item.dataset.languageCode === storedLocale) {
|
if (item.dataset.languageCode === storedLocale) {
|
||||||
item.classList.add("active");
|
item.classList.add('active');
|
||||||
|
}
|
||||||
|
item.addEventListener('click', handleDropdownItemClick);
|
||||||
}
|
}
|
||||||
item.addEventListener("click", handleDropdownItemClick);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleDropdownItemClick(event) {
|
function handleDropdownItemClick(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const languageCode = event.currentTarget.dataset.bsLanguageCode; // change this to event.currentTarget
|
const languageCode = event.currentTarget.dataset.bsLanguageCode; // change this to event.currentTarget
|
||||||
if (languageCode) {
|
if (languageCode) {
|
||||||
localStorage.setItem("languageCode", languageCode);
|
localStorage.setItem('languageCode', languageCode);
|
||||||
|
|
||||||
const currentUrl = window.location.href;
|
const currentUrl = window.location.href;
|
||||||
if (currentUrl.indexOf("?lang=") === -1) {
|
if (currentUrl.indexOf('?lang=') === -1) {
|
||||||
window.location.href = currentUrl + "?lang=" + languageCode;
|
window.location.href = currentUrl + '?lang=' + languageCode;
|
||||||
|
} else {
|
||||||
|
window.location.href = currentUrl.replace(/\?lang=\w{2,}/, '?lang=' + languageCode);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
window.location.href = currentUrl.replace(/\?lang=\w{2,}/, "?lang=" + languageCode);
|
console.error("Language code is not set for this item."); // for debugging
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
console.error("Language code is not set for this item."); // for debugging
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", function () {
|
|
||||||
document.querySelectorAll(".nav-item.dropdown").forEach((element) => {
|
|
||||||
const dropdownMenu = element.querySelector(".dropdown-menu");
|
|
||||||
if (
|
|
||||||
dropdownMenu.id !== "favoritesDropdown" &&
|
|
||||||
dropdownMenu.children.length <= 2 &&
|
|
||||||
dropdownMenu.querySelectorAll("hr.dropdown-divider").length === dropdownMenu.children.length
|
|
||||||
) {
|
|
||||||
if (
|
|
||||||
element.previousElementSibling &&
|
|
||||||
element.previousElementSibling.classList.contains("nav-item") &&
|
|
||||||
element.previousElementSibling.classList.contains("nav-item-separator")
|
|
||||||
) {
|
|
||||||
element.previousElementSibling.remove();
|
|
||||||
}
|
|
||||||
element.remove();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
//Sort languages by alphabet
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
const list = Array.from(document.querySelector('.dropdown-menu[aria-labelledby="languageDropdown"]').children).filter(
|
document.querySelectorAll('.nav-item.dropdown').forEach((element) => {
|
||||||
(child) => child.matches("a"),
|
const dropdownMenu = element.querySelector(".dropdown-menu");
|
||||||
);
|
if (dropdownMenu.id !== 'favoritesDropdown' && dropdownMenu.children.length <= 2 && dropdownMenu.querySelectorAll("hr.dropdown-divider").length === dropdownMenu.children.length) {
|
||||||
list
|
if (element.previousElementSibling && element.previousElementSibling.classList.contains('nav-item') && element.previousElementSibling.classList.contains('nav-item-separator')) {
|
||||||
.sort(function (a, b) {
|
element.previousElementSibling.remove();
|
||||||
return a.textContent.toUpperCase().localeCompare(b.textContent.toUpperCase());
|
}
|
||||||
})
|
element.remove();
|
||||||
.forEach((node) => document.querySelector('.dropdown-menu[aria-labelledby="languageDropdown"]').appendChild(node));
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//Sort languages by alphabet
|
||||||
|
const list = Array.from(document.querySelector('.dropdown-menu[aria-labelledby="languageDropdown"]').children).filter(child => child.matches('a'));
|
||||||
|
list.sort(function(a, b) {
|
||||||
|
return a.textContent.toUpperCase().localeCompare(b.textContent.toUpperCase());
|
||||||
|
}).forEach(node => document.querySelector('.dropdown-menu[aria-labelledby="languageDropdown"]').appendChild(node));
|
||||||
|
|
||||||
|
});
|
||||||
@@ -1,47 +1,47 @@
|
|||||||
async function downloadFilesWithCallback(processFileCallback) {
|
async function downloadFilesWithCallback(processFileCallback) {
|
||||||
const fileInput = document.querySelector('input[type="file"]');
|
const fileInput = document.querySelector('input[type="file"]');
|
||||||
const files = fileInput.files;
|
const files = fileInput.files;
|
||||||
|
|
||||||
const zipThreshold = 4;
|
const zipThreshold = 4;
|
||||||
const zipFiles = files.length > zipThreshold;
|
const zipFiles = files.length > zipThreshold;
|
||||||
|
|
||||||
let jszip = null;
|
let jszip = null;
|
||||||
if (zipFiles) {
|
if (zipFiles) {
|
||||||
jszip = new JSZip();
|
jszip = new JSZip();
|
||||||
}
|
}
|
||||||
|
|
||||||
const promises = Array.from(files).map(async (file) => {
|
const promises = Array.from(files).map(async file => {
|
||||||
const { processedData, fileName } = await processFileCallback(file);
|
const { processedData, fileName } = await processFileCallback(file);
|
||||||
|
|
||||||
|
if (zipFiles) {
|
||||||
|
jszip.file(fileName, processedData);
|
||||||
|
} else {
|
||||||
|
const url = URL.createObjectURL(processedData);
|
||||||
|
const downloadOption = localStorage.getItem('downloadOption');
|
||||||
|
|
||||||
|
if (downloadOption === 'sameWindow') {
|
||||||
|
window.location.href = url;
|
||||||
|
} else if (downloadOption === 'newWindow') {
|
||||||
|
window.open(url, '_blank');
|
||||||
|
} else {
|
||||||
|
const downloadLink = document.createElement('a');
|
||||||
|
downloadLink.href = url;
|
||||||
|
downloadLink.download = fileName;
|
||||||
|
downloadLink.click();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
await Promise.all(promises);
|
||||||
|
|
||||||
if (zipFiles) {
|
if (zipFiles) {
|
||||||
jszip.file(fileName, processedData);
|
const content = await jszip.generateAsync({ type: "blob" });
|
||||||
} else {
|
const url = URL.createObjectURL(content);
|
||||||
const url = URL.createObjectURL(processedData);
|
const a = document.createElement('a');
|
||||||
const downloadOption = localStorage.getItem("downloadOption");
|
a.href = url;
|
||||||
|
a.download = "files.zip";
|
||||||
if (downloadOption === "sameWindow") {
|
document.body.appendChild(a);
|
||||||
window.location.href = url;
|
a.click();
|
||||||
} else if (downloadOption === "newWindow") {
|
a.remove();
|
||||||
window.open(url, "_blank");
|
|
||||||
} else {
|
|
||||||
const downloadLink = document.createElement("a");
|
|
||||||
downloadLink.href = url;
|
|
||||||
downloadLink.download = fileName;
|
|
||||||
downloadLink.click();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
await Promise.all(promises);
|
|
||||||
|
|
||||||
if (zipFiles) {
|
|
||||||
const content = await jszip.generateAsync({ type: "blob" });
|
|
||||||
const url = URL.createObjectURL(content);
|
|
||||||
const a = document.createElement("a");
|
|
||||||
a.href = url;
|
|
||||||
a.download = "files.zip";
|
|
||||||
document.body.appendChild(a);
|
|
||||||
a.click();
|
|
||||||
a.remove();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,27 +1,27 @@
|
|||||||
let currentSort = {
|
let currentSort = {
|
||||||
field: null,
|
field: null,
|
||||||
descending: false,
|
descending: false
|
||||||
};
|
};
|
||||||
|
|
||||||
document.getElementById("fileInput-input").addEventListener("change", function () {
|
document.getElementById("fileInput-input").addEventListener("change", function() {
|
||||||
var files = this.files;
|
var files = this.files;
|
||||||
displayFiles(files);
|
displayFiles(files);
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {FileList} files
|
* @param {FileList} files
|
||||||
*/
|
*/
|
||||||
function displayFiles(files) {
|
function displayFiles(files) {
|
||||||
const list = document.getElementById("selectedFiles");
|
const list = document.getElementById("selectedFiles");
|
||||||
|
|
||||||
while (list.firstChild) {
|
while (list.firstChild) {
|
||||||
list.removeChild(list.firstChild);
|
list.removeChild(list.firstChild);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 0; i < files.length; i++) {
|
for (let i = 0; i < files.length; i++) {
|
||||||
const item = document.createElement("li");
|
const item = document.createElement("li");
|
||||||
item.className = "list-group-item";
|
item.className = "list-group-item";
|
||||||
item.innerHTML = `
|
item.innerHTML = `
|
||||||
<div class="d-flex justify-content-between align-items-center w-100">
|
<div class="d-flex justify-content-between align-items-center w-100">
|
||||||
<div class="filename">${files[i].name}</div>
|
<div class="filename">${files[i].name}</div>
|
||||||
<div class="arrows d-flex">
|
<div class="arrows d-flex">
|
||||||
@@ -31,100 +31,100 @@ function displayFiles(files) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
list.appendChild(item);
|
list.appendChild(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
attachMoveButtons();
|
attachMoveButtons();
|
||||||
}
|
}
|
||||||
|
|
||||||
function attachMoveButtons() {
|
function attachMoveButtons() {
|
||||||
var moveUpButtons = document.querySelectorAll(".move-up");
|
var moveUpButtons = document.querySelectorAll(".move-up");
|
||||||
for (var i = 0; i < moveUpButtons.length; i++) {
|
for (var i = 0; i < moveUpButtons.length; i++) {
|
||||||
moveUpButtons[i].addEventListener("click", function (event) {
|
moveUpButtons[i].addEventListener("click", function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
var parent = this.closest(".list-group-item");
|
var parent = this.closest(".list-group-item");
|
||||||
var grandParent = parent.parentNode;
|
var grandParent = parent.parentNode;
|
||||||
if (parent.previousElementSibling) {
|
if (parent.previousElementSibling) {
|
||||||
grandParent.insertBefore(parent, parent.previousElementSibling);
|
grandParent.insertBefore(parent, parent.previousElementSibling);
|
||||||
updateFiles();
|
updateFiles();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var moveDownButtons = document.querySelectorAll(".move-down");
|
var moveDownButtons = document.querySelectorAll(".move-down");
|
||||||
for (var i = 0; i < moveDownButtons.length; i++) {
|
for (var i = 0; i < moveDownButtons.length; i++) {
|
||||||
moveDownButtons[i].addEventListener("click", function (event) {
|
moveDownButtons[i].addEventListener("click", function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
var parent = this.closest(".list-group-item");
|
var parent = this.closest(".list-group-item");
|
||||||
var grandParent = parent.parentNode;
|
var grandParent = parent.parentNode;
|
||||||
if (parent.nextElementSibling) {
|
if (parent.nextElementSibling) {
|
||||||
grandParent.insertBefore(parent.nextElementSibling, parent);
|
grandParent.insertBefore(parent.nextElementSibling, parent);
|
||||||
updateFiles();
|
updateFiles();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var removeButtons = document.querySelectorAll(".remove-file");
|
var removeButtons = document.querySelectorAll(".remove-file");
|
||||||
for (var i = 0; i < removeButtons.length; i++) {
|
for (var i = 0; i < removeButtons.length; i++) {
|
||||||
removeButtons[i].addEventListener("click", function (event) {
|
removeButtons[i].addEventListener("click", function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
var parent = this.closest(".list-group-item");
|
var parent = this.closest(".list-group-item");
|
||||||
parent.remove();
|
parent.remove();
|
||||||
updateFiles();
|
updateFiles();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
document.getElementById("sortByNameBtn").addEventListener("click", function () {
|
document.getElementById("sortByNameBtn").addEventListener("click", function() {
|
||||||
if (currentSort.field === "name" && !currentSort.descending) {
|
if (currentSort.field === "name" && !currentSort.descending) {
|
||||||
currentSort.descending = true;
|
currentSort.descending = true;
|
||||||
sortFiles((a, b) => b.name.localeCompare(a.name));
|
sortFiles((a, b) => b.name.localeCompare(a.name));
|
||||||
} else {
|
} else {
|
||||||
currentSort.field = "name";
|
currentSort.field = "name";
|
||||||
currentSort.descending = false;
|
currentSort.descending = false;
|
||||||
sortFiles((a, b) => a.name.localeCompare(b.name));
|
sortFiles((a, b) => a.name.localeCompare(b.name));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
document.getElementById("sortByDateBtn").addEventListener("click", function () {
|
document.getElementById("sortByDateBtn").addEventListener("click", function() {
|
||||||
if (currentSort.field === "lastModified" && !currentSort.descending) {
|
if (currentSort.field === "lastModified" && !currentSort.descending) {
|
||||||
currentSort.descending = true;
|
currentSort.descending = true;
|
||||||
sortFiles((a, b) => b.lastModified - a.lastModified);
|
sortFiles((a, b) => b.lastModified - a.lastModified);
|
||||||
} else {
|
} else {
|
||||||
currentSort.field = "lastModified";
|
currentSort.field = "lastModified";
|
||||||
currentSort.descending = false;
|
currentSort.descending = false;
|
||||||
sortFiles((a, b) => a.lastModified - b.lastModified);
|
sortFiles((a, b) => a.lastModified - b.lastModified);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function sortFiles(comparator) {
|
function sortFiles(comparator) {
|
||||||
// Convert FileList to array and sort
|
// Convert FileList to array and sort
|
||||||
const sortedFilesArray = Array.from(document.getElementById("fileInput-input").files).sort(comparator);
|
const sortedFilesArray = Array.from(document.getElementById("fileInput-input").files).sort(comparator);
|
||||||
|
|
||||||
// Refresh displayed list
|
// Refresh displayed list
|
||||||
displayFiles(sortedFilesArray);
|
displayFiles(sortedFilesArray);
|
||||||
|
|
||||||
// Update the files property
|
// Update the files property
|
||||||
const dataTransfer = new DataTransfer();
|
const dataTransfer = new DataTransfer();
|
||||||
sortedFilesArray.forEach((file) => dataTransfer.items.add(file));
|
sortedFilesArray.forEach(file => dataTransfer.items.add(file));
|
||||||
document.getElementById("fileInput-input").files = dataTransfer.files;
|
document.getElementById("fileInput-input").files = dataTransfer.files;
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateFiles() {
|
function updateFiles() {
|
||||||
var dataTransfer = new DataTransfer();
|
var dataTransfer = new DataTransfer();
|
||||||
var liElements = document.querySelectorAll("#selectedFiles li");
|
var liElements = document.querySelectorAll("#selectedFiles li");
|
||||||
const files = document.getElementById("fileInput-input").files;
|
const files = document.getElementById("fileInput-input").files;
|
||||||
|
|
||||||
for (var i = 0; i < liElements.length; i++) {
|
for (var i = 0; i < liElements.length; i++) {
|
||||||
var fileNameFromList = liElements[i].querySelector(".filename").innerText;
|
var fileNameFromList = liElements[i].querySelector(".filename").innerText;
|
||||||
var fileFromFiles;
|
var fileFromFiles;
|
||||||
for (var j = 0; j < files.length; j++) {
|
for (var j = 0; j < files.length; j++) {
|
||||||
var file = files[j];
|
var file = files[j];
|
||||||
if (file.name === fileNameFromList) {
|
if (file.name === fileNameFromList) {
|
||||||
dataTransfer.items.add(file);
|
dataTransfer.items.add(file);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
document.getElementById("fileInput-input").files = dataTransfer.files;
|
||||||
document.getElementById("fileInput-input").files = dataTransfer.files;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,123 +1,125 @@
|
|||||||
class DragDropManager {
|
class DragDropManager {
|
||||||
dragContainer;
|
dragContainer;
|
||||||
wrapper;
|
wrapper;
|
||||||
pageDirection;
|
pageDirection;
|
||||||
movePageTo;
|
movePageTo;
|
||||||
pageDragging;
|
pageDragging;
|
||||||
draggelEl;
|
draggelEl;
|
||||||
draggedImageEl;
|
draggedImageEl;
|
||||||
hoveredEl;
|
hoveredEl;
|
||||||
endInsertionElement;
|
endInsertionElement;
|
||||||
|
|
||||||
constructor(id, wrapperId) {
|
constructor(id, wrapperId) {
|
||||||
this.dragContainer = document.getElementById(id);
|
this.dragContainer = document.getElementById(id);
|
||||||
this.pageDirection = document.documentElement.getAttribute("lang-direction");
|
this.pageDirection = document.documentElement.getAttribute("lang-direction");
|
||||||
this.wrapper = document.getElementById(wrapperId);
|
this.wrapper = document.getElementById(wrapperId);
|
||||||
this.pageDragging = false;
|
this.pageDragging = false;
|
||||||
this.hoveredEl = undefined;
|
this.hoveredEl = undefined;
|
||||||
this.draggelEl = undefined;
|
this.draggelEl = undefined
|
||||||
this.draggedImageEl = undefined;
|
this.draggedImageEl = undefined;
|
||||||
|
|
||||||
var styleElement = document.createElement("link");
|
var styleElement = document.createElement('link');
|
||||||
styleElement.rel = "stylesheet";
|
styleElement.rel = 'stylesheet';
|
||||||
styleElement.href = "css/dragdrop.css";
|
styleElement.href = 'css/dragdrop.css'
|
||||||
|
|
||||||
document.head.appendChild(styleElement);
|
document.head.appendChild(styleElement);
|
||||||
|
|
||||||
const div = document.createElement("div");
|
const div = document.createElement('div');
|
||||||
div.classList.add("drag-manager_endpoint");
|
div.classList.add('drag-manager_endpoint');
|
||||||
div.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-arrow-down" viewBox="0 0 16 16">
|
div.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-arrow-down" viewBox="0 0 16 16">
|
||||||
<path d="M8.5 6.5a.5.5 0 0 0-1 0v3.793L6.354 9.146a.5.5 0 1 0-.708.708l2 2a.5.5 0 0 0 .708 0l2-2a.5.5 0 0 0-.708-.708L8.5 10.293V6.5z"/>
|
<path d="M8.5 6.5a.5.5 0 0 0-1 0v3.793L6.354 9.146a.5.5 0 1 0-.708.708l2 2a.5.5 0 0 0 .708 0l2-2a.5.5 0 0 0-.708-.708L8.5 10.293V6.5z"/>
|
||||||
<path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z"/>
|
<path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z"/>
|
||||||
</svg>`;
|
</svg>`
|
||||||
this.endInsertionElement = div;
|
this.endInsertionElement = div;
|
||||||
|
|
||||||
this.startDraggingPage = this.startDraggingPage.bind(this);
|
this.startDraggingPage = this.startDraggingPage.bind(this);
|
||||||
this.onDragEl = this.onDragEl.bind(this);
|
this.onDragEl = this.onDragEl.bind(this);
|
||||||
this.stopDraggingPage = this.stopDraggingPage.bind(this);
|
this.stopDraggingPage = this.stopDraggingPage.bind(this);
|
||||||
|
|
||||||
this.adapt(div);
|
this.adapt(div);
|
||||||
}
|
|
||||||
|
|
||||||
startDraggingPage(div) {
|
|
||||||
this.pageDragging = true;
|
|
||||||
this.draggedEl = div;
|
|
||||||
const img = div.querySelector("img");
|
|
||||||
div.classList.add("drag-manager_dragging");
|
|
||||||
const imageSrc = img.src;
|
|
||||||
|
|
||||||
const imgEl = document.createElement("img");
|
|
||||||
imgEl.classList.add("dragged-img");
|
|
||||||
imgEl.src = imageSrc;
|
|
||||||
this.draggedImageEl = imgEl;
|
|
||||||
imgEl.style.visibility = "hidden";
|
|
||||||
imgEl.style.transform = `rotate(${img.style.rotate === "" ? "0deg" : img.style.rotate}) translate(-50%, -50%)`;
|
|
||||||
this.dragContainer.appendChild(imgEl);
|
|
||||||
|
|
||||||
window.addEventListener("mouseup", this.stopDraggingPage);
|
|
||||||
window.addEventListener("mousemove", this.onDragEl);
|
|
||||||
this.wrapper.classList.add("drag-manager_dragging-container");
|
|
||||||
this.wrapper.appendChild(this.endInsertionElement);
|
|
||||||
}
|
|
||||||
|
|
||||||
onDragEl(mouseEvent) {
|
|
||||||
const { clientX, clientY } = mouseEvent;
|
|
||||||
if (this.draggedImageEl) {
|
|
||||||
this.draggedImageEl.style.visibility = "visible";
|
|
||||||
this.draggedImageEl.style.left = `${clientX}px`;
|
|
||||||
this.draggedImageEl.style.top = `${clientY}px`;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
stopDraggingPage() {
|
startDraggingPage(div,) {
|
||||||
window.removeEventListener("mousemove", this.onDragEl);
|
this.pageDragging = true;
|
||||||
this.wrapper.classList.remove("drag-manager_dragging-container");
|
this.draggedEl = div;
|
||||||
this.wrapper.removeChild(this.endInsertionElement);
|
const img = div.querySelector('img');
|
||||||
window.removeEventListener("mouseup", this.stopDraggingPage);
|
div.classList.add('drag-manager_dragging');
|
||||||
this.draggedImageEl = undefined;
|
const imageSrc = img.src;
|
||||||
this.pageDragging = false;
|
|
||||||
this.draggedEl.classList.remove("drag-manager_dragging");
|
const imgEl = document.createElement('img');
|
||||||
this.hoveredEl?.classList.remove("drag-manager_draghover");
|
imgEl.classList.add('dragged-img');
|
||||||
this.dragContainer.childNodes.forEach((dragChild) => {
|
imgEl.src = imageSrc;
|
||||||
this.dragContainer.removeChild(dragChild);
|
this.draggedImageEl = imgEl;
|
||||||
});
|
imgEl.style.visibility = 'hidden';
|
||||||
if (!this.hoveredEl) {
|
imgEl.style.transform = `rotate(${img.style.rotate === '' ? '0deg' : img.style.rotate}) translate(-50%, -50%)`;
|
||||||
return;
|
this.dragContainer.appendChild(imgEl);
|
||||||
|
|
||||||
|
window.addEventListener('mouseup', this.stopDraggingPage)
|
||||||
|
window.addEventListener('mousemove', this.onDragEl)
|
||||||
|
this.wrapper.classList.add('drag-manager_dragging-container');
|
||||||
|
this.wrapper.appendChild(this.endInsertionElement);
|
||||||
}
|
}
|
||||||
if (this.hoveredEl === this.endInsertionElement) {
|
|
||||||
this.movePageTo(this.draggedEl);
|
onDragEl(mouseEvent) {
|
||||||
return;
|
const { clientX, clientY } = mouseEvent;
|
||||||
|
if(this.draggedImageEl) {
|
||||||
|
this.draggedImageEl.style.visibility = 'visible';
|
||||||
|
this.draggedImageEl.style.left = `${clientX}px`;
|
||||||
|
this.draggedImageEl.style.top = `${clientY}px`;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
this.movePageTo(this.draggedEl, this.hoveredEl);
|
|
||||||
}
|
|
||||||
|
|
||||||
setActions({ movePageTo }) {
|
|
||||||
this.movePageTo = movePageTo;
|
|
||||||
}
|
|
||||||
|
|
||||||
adapt(div) {
|
stopDraggingPage() {
|
||||||
const onDragStart = () => {
|
window.removeEventListener('mousemove', this.onDragEl);
|
||||||
this.startDraggingPage(div);
|
this.wrapper.classList.remove('drag-manager_dragging-container');
|
||||||
};
|
this.wrapper.removeChild(this.endInsertionElement);
|
||||||
|
window.removeEventListener('mouseup', this.stopDraggingPage)
|
||||||
|
this.draggedImageEl = undefined;
|
||||||
|
this.pageDragging = false;
|
||||||
|
this.draggedEl.classList.remove('drag-manager_dragging');
|
||||||
|
this.hoveredEl?.classList.remove('drag-manager_draghover');
|
||||||
|
this.dragContainer.childNodes.forEach((dragChild) => {
|
||||||
|
this.dragContainer.removeChild(dragChild);
|
||||||
|
})
|
||||||
|
if(!this.hoveredEl) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(this.hoveredEl === this.endInsertionElement) {
|
||||||
|
this.movePageTo(this.draggedEl);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.movePageTo(this.draggedEl, this.hoveredEl);
|
||||||
|
}
|
||||||
|
|
||||||
const onMouseEnter = () => {
|
setActions({ movePageTo }) {
|
||||||
if (this.pageDragging) {
|
this.movePageTo = movePageTo;
|
||||||
this.hoveredEl = div;
|
}
|
||||||
div.classList.add("drag-manager_draghover");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const onMouseLeave = () => {
|
|
||||||
this.hoveredEl = undefined;
|
|
||||||
div.classList.remove("drag-manager_draghover");
|
|
||||||
};
|
|
||||||
|
|
||||||
div.addEventListener("dragstart", onDragStart);
|
adapt(div) {
|
||||||
div.addEventListener("mouseenter", onMouseEnter);
|
const onDragStart = () => {
|
||||||
div.addEventListener("mouseleave", onMouseLeave);
|
this.startDraggingPage(div);
|
||||||
|
}
|
||||||
|
|
||||||
return div;
|
const onMouseEnter = () => {
|
||||||
}
|
if (this.pageDragging) {
|
||||||
|
this.hoveredEl = div;
|
||||||
|
div.classList.add('drag-manager_draghover');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const onMouseLeave = () => {
|
||||||
|
this.hoveredEl = undefined
|
||||||
|
div.classList.remove('drag-manager_draghover');
|
||||||
|
}
|
||||||
|
|
||||||
|
div.addEventListener('dragstart', onDragStart);
|
||||||
|
div.addEventListener('mouseenter', onMouseEnter);
|
||||||
|
div.addEventListener('mouseleave', onMouseLeave);
|
||||||
|
|
||||||
|
return div;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default DragDropManager;
|
export default DragDropManager;
|
||||||
|
|||||||