Merge branch 'main' into fatDocker
8
.github/workflows/build.yml
vendored
|
@ -3,14 +3,8 @@ name: "Build repo"
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: ["main"]
|
branches: ["main"]
|
||||||
paths-ignore:
|
|
||||||
- ".github/**"
|
|
||||||
- "**/*.md"
|
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: ["main"]
|
branches: ["main"]
|
||||||
paths-ignore:
|
|
||||||
- ".github/**"
|
|
||||||
- "**/*.md"
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
@ -36,7 +30,7 @@ jobs:
|
||||||
|
|
||||||
- uses: gradle/actions/setup-gradle@v3
|
- uses: gradle/actions/setup-gradle@v3
|
||||||
with:
|
with:
|
||||||
gradle-version: 7.6
|
gradle-version: 8.7
|
||||||
|
|
||||||
- name: Build with Gradle
|
- name: Build with Gradle
|
||||||
run: ./gradlew build --no-build-cache
|
run: ./gradlew build --no-build-cache
|
||||||
|
|
2
.github/workflows/push-docker.yml
vendored
|
@ -24,7 +24,7 @@ jobs:
|
||||||
|
|
||||||
- uses: gradle/actions/setup-gradle@v3
|
- uses: gradle/actions/setup-gradle@v3
|
||||||
with:
|
with:
|
||||||
gradle-version: 7.6
|
gradle-version: 8.7
|
||||||
|
|
||||||
- name: Run Gradle Command
|
- name: Run Gradle Command
|
||||||
run: ./gradlew clean build
|
run: ./gradlew clean build
|
||||||
|
|
2
.github/workflows/releaseArtifacts.yml
vendored
|
@ -29,7 +29,7 @@ jobs:
|
||||||
|
|
||||||
- uses: gradle/actions/setup-gradle@v3
|
- uses: gradle/actions/setup-gradle@v3
|
||||||
with:
|
with:
|
||||||
gradle-version: 7.6
|
gradle-version: 8.7
|
||||||
|
|
||||||
- name: Generate jar (With Security=${{ matrix.enable_security }})
|
- name: Generate jar (With Security=${{ matrix.enable_security }})
|
||||||
run: ./gradlew clean createExe
|
run: ./gradlew clean createExe
|
||||||
|
|
9
.github/workflows/test.yml
vendored
|
@ -32,6 +32,15 @@ jobs:
|
||||||
sudo curl -SL "https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
sudo curl -SL "https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||||||
# sudo chmod +x /usr/local/bin/docker-compose
|
# sudo chmod +x /usr/local/bin/docker-compose
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: "3.7"
|
||||||
|
|
||||||
|
- name: Pip requirements
|
||||||
|
run: |
|
||||||
|
pip install -r ./cucumber/requirements.txt
|
||||||
|
|
||||||
- name: Run Docker Compose Tests
|
- name: Run Docker Compose Tests
|
||||||
run: |
|
run: |
|
||||||
chmod +x ./test.sh
|
chmod +x ./test.sh
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
| Operation | PageOps | Convert | Security | Other | CLI | Python | OpenCV | LibreOffice | OCRmyPDF | Java | Javascript |
|
| Operation | PageOps | Convert | Security | Other | CLI | Python | OpenCV | LibreOffice | OCRmyPDF | Java | Javascript |
|
||||||
|---------------------|---------|---------|----------|-------|------|--------|--------|-------------|----------|----------|------------|
|
| ------------------- | ------- | ------- | -------- | ----- | --- | ------ | ------ | ----------- | -------- | ---- | ---------- |
|
||||||
| adjust-contrast | ✔️ | | | | | | | | | | ✔️ |
|
| adjust-contrast | ✔️ | | | | | | | | | | ✔️ |
|
||||||
| auto-split-pdf | ✔️ | | | | | | | | | ✔️ | |
|
| auto-split-pdf | ✔️ | | | | | | | | | ✔️ | |
|
||||||
| crop | ✔️ | | | | | | | | | ✔️ | |
|
| crop | ✔️ | | | | | | | | | ✔️ | |
|
||||||
|
@ -26,6 +26,7 @@
|
||||||
| add-password | | | ✔️ | | | | | | | ✔️ | |
|
| add-password | | | ✔️ | | | | | | | ✔️ | |
|
||||||
| add-watermark | | | ✔️ | | | | | | | ✔️ | |
|
| add-watermark | | | ✔️ | | | | | | | ✔️ | |
|
||||||
| cert-sign | | | ✔️ | | | | | | | ✔️ | |
|
| cert-sign | | | ✔️ | | | | | | | ✔️ | |
|
||||||
|
| remove-cert-sign | | | ✔️ | | | | | | | ✔️ | |
|
||||||
| change-permissions | | | ✔️ | | | | | | | ✔️ | |
|
| change-permissions | | | ✔️ | | | | | | | ✔️ | |
|
||||||
| remove-password | | | ✔️ | | | | | | | ✔️ | |
|
| remove-password | | | ✔️ | | | | | | | ✔️ | |
|
||||||
| sanitize-pdf | | | ✔️ | | | | | | | ✔️ | |
|
| sanitize-pdf | | | ✔️ | | | | | | | ✔️ | |
|
||||||
|
|
41
README.md
|
@ -165,33 +165,34 @@ Stirling PDF currently supports 28!
|
||||||
| ------------------------------------------- | -------------------------------------- |
|
| ------------------------------------------- | -------------------------------------- |
|
||||||
| English (English) (en_GB) | ![100%](https://geps.dev/progress/100) |
|
| English (English) (en_GB) | ![100%](https://geps.dev/progress/100) |
|
||||||
| English (US) (en_US) | ![100%](https://geps.dev/progress/100) |
|
| English (US) (en_US) | ![100%](https://geps.dev/progress/100) |
|
||||||
| Arabic (العربية) (ar_AR) | ![41%](https://geps.dev/progress/41) |
|
| Arabic (العربية) (ar_AR) | ![40%](https://geps.dev/progress/40) |
|
||||||
| German (Deutsch) (de_DE) | ![100%](https://geps.dev/progress/100) |
|
| German (Deutsch) (de_DE) | ![99%](https://geps.dev/progress/99) |
|
||||||
| French (Français) (fr_FR) | ![94%](https://geps.dev/progress/94) |
|
| French (Français) (fr_FR) | ![94%](https://geps.dev/progress/94) |
|
||||||
| Spanish (Español) (es_ES) | ![96%](https://geps.dev/progress/96) |
|
| Spanish (Español) (es_ES) | ![95%](https://geps.dev/progress/95) |
|
||||||
| Simplified Chinese (简体中文) (zh_CN) | ![96%](https://geps.dev/progress/96) |
|
| Simplified Chinese (简体中文) (zh_CN) | ![95%](https://geps.dev/progress/95) |
|
||||||
| Traditional Chinese (繁體中文) (zh_TW) | ![95%](https://geps.dev/progress/95) |
|
| Traditional Chinese (繁體中文) (zh_TW) | ![94%](https://geps.dev/progress/94) |
|
||||||
| Catalan (Català) (ca_CA) | ![49%](https://geps.dev/progress/49) |
|
| Catalan (Català) (ca_CA) | ![49%](https://geps.dev/progress/49) |
|
||||||
| Italian (Italiano) (it_IT) | ![99%](https://geps.dev/progress/99) |
|
| Italian (Italiano) (it_IT) | ![98%](https://geps.dev/progress/98) |
|
||||||
| Swedish (Svenska) (sv_SE) | ![41%](https://geps.dev/progress/41) |
|
| Swedish (Svenska) (sv_SE) | ![40%](https://geps.dev/progress/40) |
|
||||||
| Polish (Polski) (pl_PL) | ![43%](https://geps.dev/progress/43) |
|
| Polish (Polski) (pl_PL) | ![43%](https://geps.dev/progress/43) |
|
||||||
| Romanian (Română) (ro_RO) | ![40%](https://geps.dev/progress/40) |
|
| Romanian (Română) (ro_RO) | ![40%](https://geps.dev/progress/40) |
|
||||||
| Korean (한국어) (ko_KR) | ![88%](https://geps.dev/progress/88) |
|
| Korean (한국어) (ko_KR) | ![87%](https://geps.dev/progress/87) |
|
||||||
| Portuguese Brazilian (Português) (pt_BR) | ![62%](https://geps.dev/progress/62) |
|
| Portuguese Brazilian (Português) (pt_BR) | ![61%](https://geps.dev/progress/61) |
|
||||||
| Russian (Русский) (ru_RU) | ![88%](https://geps.dev/progress/88) |
|
| Russian (Русский) (ru_RU) | ![87%](https://geps.dev/progress/87) |
|
||||||
| Basque (Euskara) (eu_ES) | ![64%](https://geps.dev/progress/64) |
|
| Basque (Euskara) (eu_ES) | ![63%](https://geps.dev/progress/63) |
|
||||||
| Japanese (日本語) (ja_JP) | ![88%](https://geps.dev/progress/88) |
|
| Japanese (日本語) (ja_JP) | ![87%](https://geps.dev/progress/87) |
|
||||||
| Dutch (Nederlands) (nl_NL) | ![86%](https://geps.dev/progress/86) |
|
| Dutch (Nederlands) (nl_NL) | ![85%](https://geps.dev/progress/85) |
|
||||||
| Greek (Ελληνικά) (el_GR) | ![86%](https://geps.dev/progress/86) |
|
| Greek (Ελληνικά) (el_GR) | ![85%](https://geps.dev/progress/85) |
|
||||||
| Turkish (Türkçe) (tr_TR) | ![99%](https://geps.dev/progress/99) |
|
| Turkish (Türkçe) (tr_TR) | ![98%](https://geps.dev/progress/98) |
|
||||||
| Indonesia (Bahasa Indonesia) (id_ID) | ![79%](https://geps.dev/progress/79) |
|
| Indonesia (Bahasa Indonesia) (id_ID) | ![79%](https://geps.dev/progress/79) |
|
||||||
| Hindi (हिंदी) (hi_IN) | ![80%](https://geps.dev/progress/80) |
|
| Hindi (हिंदी) (hi_IN) | ![79%](https://geps.dev/progress/79) |
|
||||||
| Hungarian (Magyar) (hu_HU) | ![79%](https://geps.dev/progress/79) |
|
| Hungarian (Magyar) (hu_HU) | ![78%](https://geps.dev/progress/78) |
|
||||||
| Bulgarian (Български) (bg_BG) | ![96%](https://geps.dev/progress/96) |
|
| Bulgarian (Български) (bg_BG) | ![98%](https://geps.dev/progress/98) |
|
||||||
| Sebian Latin alphabet (Srpski) (sr_LATN_RS) | ![81%](https://geps.dev/progress/81) |
|
| Sebian Latin alphabet (Srpski) (sr_LATN_RS) | ![81%](https://geps.dev/progress/81) |
|
||||||
| Ukrainian (Українська) (uk_UA) | ![87%](https://geps.dev/progress/87) |
|
| Ukrainian (Українська) (uk_UA) | ![87%](https://geps.dev/progress/87) |
|
||||||
| Slovakian (Slovensky) (sk_SK) | ![96%](https://geps.dev/progress/96) |
|
| Slovakian (Slovensky) (sk_SK) | ![96%](https://geps.dev/progress/96) |
|
||||||
| Czech (Česky) (cs_CZ) | ![94%](https://geps.dev/progress/94) |
|
| Czech (Česky) (cs_CZ) | ![94%](https://geps.dev/progress/94) |
|
||||||
|
| Croatian (Hrvatski) (hr_HR) | ![94%](https://geps.dev/progress/94) |
|
||||||
|
|
||||||
## Contributing (creating issues, translations, fixing bugs, etc.)
|
## Contributing (creating issues, translations, fixing bugs, etc.)
|
||||||
|
|
||||||
|
@ -213,10 +214,10 @@ For example in the settings.yml you have
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
system:
|
system:
|
||||||
defaultLocale: 'en-US'
|
enableLogin: 'true'
|
||||||
```
|
```
|
||||||
|
|
||||||
To have this via an environment variable you would have ``SYSTEM_DEFAULTLOCALE``
|
To have this via an environment variable you would have ``SYSTEM_ENABLELOGIN``
|
||||||
|
|
||||||
The Current list of settings is
|
The Current list of settings is
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
| Technology | Ultra-Lite | Full |
|
| Technology | Ultra-Lite | Full |
|
||||||
|----------------|:----------:|:----:|
|
| ---------- | :--------: | :---: |
|
||||||
| Java | ✔️ | ✔️ |
|
| Java | ✔️ | ✔️ |
|
||||||
| JavaScript | ✔️ | ✔️ |
|
| JavaScript | ✔️ | ✔️ |
|
||||||
| Libre | | ✔️ |
|
| Libre | | ✔️ |
|
||||||
|
@ -7,46 +7,47 @@
|
||||||
| OpenCV | | ✔️ |
|
| OpenCV | | ✔️ |
|
||||||
| OCRmyPDF | | ✔️ |
|
| OCRmyPDF | | ✔️ |
|
||||||
|
|
||||||
Operation | Ultra-Lite | Full
|
| Operation | Ultra-Lite | Full |
|
||||||
-------------------------|------------|-----
|
| ---------------------- | ---------- | ---- |
|
||||||
add-page-numbers | ✔️ | ✔️
|
| add-page-numbers | ✔️ | ✔️ |
|
||||||
add-password | ✔️ | ✔️
|
| add-password | ✔️ | ✔️ |
|
||||||
add-image | ✔️ | ✔️
|
| add-image | ✔️ | ✔️ |
|
||||||
add-watermark | ✔️ | ✔️
|
| add-watermark | ✔️ | ✔️ |
|
||||||
adjust-contrast | ✔️ | ✔️
|
| adjust-contrast | ✔️ | ✔️ |
|
||||||
auto-split-pdf | ✔️ | ✔️
|
| auto-split-pdf | ✔️ | ✔️ |
|
||||||
auto-redact | ✔️ | ✔️
|
| auto-redact | ✔️ | ✔️ |
|
||||||
auto-rename | ✔️ | ✔️
|
| auto-rename | ✔️ | ✔️ |
|
||||||
cert-sign | ✔️ | ✔️
|
| cert-sign | ✔️ | ✔️ |
|
||||||
crop | ✔️ | ✔️
|
| remove-cert-sign | ✔️ | ✔️ |
|
||||||
change-metadata | ✔️ | ✔️
|
| crop | ✔️ | ✔️ |
|
||||||
change-permissions | ✔️ | ✔️
|
| change-metadata | ✔️ | ✔️ |
|
||||||
compare | ✔️ | ✔️
|
| change-permissions | ✔️ | ✔️ |
|
||||||
extract-page | ✔️ | ✔️
|
| compare | ✔️ | ✔️ |
|
||||||
extract-images | ✔️ | ✔️
|
| extract-page | ✔️ | ✔️ |
|
||||||
flatten | ✔️ | ✔️
|
| extract-images | ✔️ | ✔️ |
|
||||||
get-info-on-pdf | ✔️ | ✔️
|
| flatten | ✔️ | ✔️ |
|
||||||
img-to-pdf | ✔️ | ✔️
|
| get-info-on-pdf | ✔️ | ✔️ |
|
||||||
markdown-to-pdf | ✔️ | ✔️
|
| img-to-pdf | ✔️ | ✔️ |
|
||||||
merge-pdfs | ✔️ | ✔️
|
| markdown-to-pdf | ✔️ | ✔️ |
|
||||||
multi-page-layout | ✔️ | ✔️
|
| merge-pdfs | ✔️ | ✔️ |
|
||||||
overlay-pdf | ✔️ | ✔️
|
| multi-page-layout | ✔️ | ✔️ |
|
||||||
pdf-organizer | ✔️ | ✔️
|
| overlay-pdf | ✔️ | ✔️ |
|
||||||
pdf-to-csv | ✔️ | ✔️
|
| pdf-organizer | ✔️ | ✔️ |
|
||||||
pdf-to-img | ✔️ | ✔️
|
| pdf-to-csv | ✔️ | ✔️ |
|
||||||
pdf-to-single-page | ✔️ | ✔️
|
| pdf-to-img | ✔️ | ✔️ |
|
||||||
remove-pages | ✔️ | ✔️
|
| pdf-to-single-page | ✔️ | ✔️ |
|
||||||
remove-password | ✔️ | ✔️
|
| remove-pages | ✔️ | ✔️ |
|
||||||
rotate-pdf | ✔️ | ✔️
|
| remove-password | ✔️ | ✔️ |
|
||||||
sanitize-pdf | ✔️ | ✔️
|
| rotate-pdf | ✔️ | ✔️ |
|
||||||
scale-pages | ✔️ | ✔️
|
| sanitize-pdf | ✔️ | ✔️ |
|
||||||
sign | ✔️ | ✔️
|
| scale-pages | ✔️ | ✔️ |
|
||||||
show-javascript | ✔️ | ✔️
|
| sign | ✔️ | ✔️ |
|
||||||
split-by-size-or-count | ✔️ | ✔️
|
| show-javascript | ✔️ | ✔️ |
|
||||||
split-pdf-by-sections | ✔️ | ✔️
|
| split-by-size-or-count | ✔️ | ✔️ |
|
||||||
split-pdfs | ✔️ | ✔️
|
| split-pdf-by-sections | ✔️ | ✔️ |
|
||||||
compress-pdf | | ✔️
|
| split-pdfs | ✔️ | ✔️ |
|
||||||
extract-image-scans | | ✔️
|
| compress-pdf | | ✔️ |
|
||||||
ocr-pdf | | ✔️
|
| extract-image-scans | | ✔️ |
|
||||||
pdf-to-pdfa | | ✔️
|
| ocr-pdf | | ✔️ |
|
||||||
remove-blanks | | ✔️
|
| pdf-to-pdfa | | ✔️ |
|
||||||
|
| remove-blanks | | ✔️ |
|
||||||
|
|
|
@ -12,7 +12,7 @@ plugins {
|
||||||
import com.github.jk1.license.render.*
|
import com.github.jk1.license.render.*
|
||||||
|
|
||||||
group = 'stirling.software'
|
group = 'stirling.software'
|
||||||
version = '0.24.6'
|
version = '0.25.0'
|
||||||
|
|
||||||
//17 is lowest but we support and recommend 21
|
//17 is lowest but we support and recommend 21
|
||||||
sourceCompatibility = '17'
|
sourceCompatibility = '17'
|
||||||
|
@ -21,7 +21,6 @@ repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
licenseReport {
|
licenseReport {
|
||||||
renderers = [new JsonReportRenderer()]
|
renderers = [new JsonReportRenderer()]
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
appVersion: 0.24.6
|
appVersion: 0.25.0
|
||||||
description: locally hosted web application that allows you to perform various operations
|
description: locally hosted web application that allows you to perform various operations
|
||||||
on PDF files
|
on PDF files
|
||||||
home: https://github.com/Stirling-Tools/Stirling-PDF
|
home: https://github.com/Stirling-Tools/Stirling-PDF
|
||||||
|
|
|
@ -28,7 +28,28 @@ Feature: API Validation
|
||||||
And the response file should have size greater than 0
|
And the response file should have size greater than 0
|
||||||
And the response status code should be 200
|
And the response status code should be 200
|
||||||
|
|
||||||
|
|
||||||
@ocr @positive
|
@ocr @positive
|
||||||
|
Scenario: Extract Image Scans
|
||||||
|
Given I generate a PDF file as "fileInput"
|
||||||
|
And the pdf contains 3 images on 2 pages
|
||||||
|
And the request data includes
|
||||||
|
| parameter | value |
|
||||||
|
| angleThreshold | 5 |
|
||||||
|
| tolerance | 20 |
|
||||||
|
| minArea | 8000 |
|
||||||
|
| minContourArea | 500 |
|
||||||
|
| borderSize | 1 |
|
||||||
|
When I send the API request to the endpoint "/api/v1/misc/extract-image-scans"
|
||||||
|
Then the response content type should be "application/octet-stream"
|
||||||
|
And the response file should have extension ".zip"
|
||||||
|
And the response ZIP should contain 2 files
|
||||||
|
And the response file should have size greater than 0
|
||||||
|
And the response status code should be 200
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ocr @negative
|
||||||
Scenario: Process PDF with text and OCR with type normal
|
Scenario: Process PDF with text and OCR with type normal
|
||||||
Given I generate a PDF file as "fileInput"
|
Given I generate a PDF file as "fileInput"
|
||||||
And the pdf contains 3 pages with random text
|
And the pdf contains 3 pages with random text
|
||||||
|
@ -79,6 +100,7 @@ Feature: API Validation
|
||||||
When I send the API request to the endpoint "/api/v1/misc/ocr-pdf"
|
When I send the API request to the endpoint "/api/v1/misc/ocr-pdf"
|
||||||
Then the response content type should be "application/octet-stream"
|
Then the response content type should be "application/octet-stream"
|
||||||
And the response file should have extension ".zip"
|
And the response file should have extension ".zip"
|
||||||
|
And the response ZIP should contain 2 files
|
||||||
And the response file should have size greater than 0
|
And the response file should have size greater than 0
|
||||||
And the response status code should be 200
|
And the response status code should be 200
|
||||||
|
|
||||||
|
@ -101,7 +123,29 @@ Feature: API Validation
|
||||||
| odt | .odt |
|
| odt | .odt |
|
||||||
| doc | .doc |
|
| doc | .doc |
|
||||||
|
|
||||||
|
@ocr
|
||||||
|
Scenario: PDFA
|
||||||
|
Given I generate a PDF file as "fileInput"
|
||||||
|
And the pdf contains 3 pages with random text
|
||||||
|
And the request data includes
|
||||||
|
| parameter | value |
|
||||||
|
| outputFormat | pdfa |
|
||||||
|
When I send the API request to the endpoint "/api/v1/convert/pdf/pdfa"
|
||||||
|
Then the response status code should be 200
|
||||||
|
And the response file should have extension ".pdf"
|
||||||
|
And the response file should have size greater than 100
|
||||||
|
|
||||||
|
@ocr
|
||||||
|
Scenario: PDFA1
|
||||||
|
Given I generate a PDF file as "fileInput"
|
||||||
|
And the pdf contains 3 pages with random text
|
||||||
|
And the request data includes
|
||||||
|
| parameter | value |
|
||||||
|
| outputFormat | pdfa-1 |
|
||||||
|
When I send the API request to the endpoint "/api/v1/convert/pdf/pdfa"
|
||||||
|
Then the response status code should be 200
|
||||||
|
And the response file should have extension ".pdf"
|
||||||
|
And the response file should have size greater than 100
|
||||||
|
|
||||||
@compress @ghostscript @positive
|
@compress @ghostscript @positive
|
||||||
Scenario: Compress
|
Scenario: Compress
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
@general
|
@general
|
||||||
Feature: API Validation
|
Feature: API Validation
|
||||||
|
|
||||||
@split-pdf-by-sections
|
|
||||||
|
@split-pdf-by-sections @positive
|
||||||
Scenario Outline: split-pdf-by-sections with different parameters
|
Scenario Outline: split-pdf-by-sections with different parameters
|
||||||
Given I generate a PDF file as "fileInput"
|
Given I generate a PDF file as "fileInput"
|
||||||
And the pdf contains 2 pages
|
And the pdf contains 2 pages
|
||||||
|
@ -23,7 +24,7 @@ Feature: API Validation
|
||||||
| 1 | 2 | 12 |
|
| 1 | 2 | 12 |
|
||||||
| 2 | 2 | 18 |
|
| 2 | 2 | 18 |
|
||||||
|
|
||||||
@split-pdf-by-sections
|
@split-pdf-by-sections @positive
|
||||||
Scenario Outline: split-pdf-by-sections with different parameters
|
Scenario Outline: split-pdf-by-sections with different parameters
|
||||||
Given I generate a PDF file as "fileInput"
|
Given I generate a PDF file as "fileInput"
|
||||||
And the pdf contains 2 pages
|
And the pdf contains 2 pages
|
||||||
|
@ -47,7 +48,7 @@ Feature: API Validation
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@split-pdf-by-pages
|
@split-pdf-by-pages @positive
|
||||||
Scenario Outline: split-pdf-by-pages with different parameters
|
Scenario Outline: split-pdf-by-pages with different parameters
|
||||||
Given I generate a PDF file as "fileInput"
|
Given I generate a PDF file as "fileInput"
|
||||||
And the pdf contains 20 pages
|
And the pdf contains 20 pages
|
||||||
|
@ -70,7 +71,7 @@ Feature: API Validation
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@split-pdf-by-size-or-count
|
@split-pdf-by-size-or-count @positive
|
||||||
Scenario Outline: split-pdf-by-size-or-count with different parameters
|
Scenario Outline: split-pdf-by-size-or-count with different parameters
|
||||||
Given I generate a PDF file as "fileInput"
|
Given I generate a PDF file as "fileInput"
|
||||||
And the pdf contains 20 pages
|
And the pdf contains 20 pages
|
||||||
|
|
|
@ -66,6 +66,59 @@ def step_pdf_contains_blank_pages(context, page_count):
|
||||||
context.files[context.param_name].close()
|
context.files[context.param_name].close()
|
||||||
context.files[context.param_name] = open(context.file_name, 'rb')
|
context.files[context.param_name] = open(context.file_name, 'rb')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def create_black_box_image(file_name, size):
|
||||||
|
can = canvas.Canvas(file_name, pagesize=size)
|
||||||
|
width, height = size
|
||||||
|
can.setFillColorRGB(0, 0, 0)
|
||||||
|
can.rect(0, 0, width, height, fill=1)
|
||||||
|
can.showPage()
|
||||||
|
can.save()
|
||||||
|
|
||||||
|
def create_pdf_with_black_boxes(file_name, image_count, page_count):
|
||||||
|
page_width, page_height = letter
|
||||||
|
box_size = 72 # 1 inch by 1 inch black box
|
||||||
|
boxes_per_page = image_count // page_count + (1 if image_count % page_count != 0 else 0)
|
||||||
|
|
||||||
|
writer = PdfWriter()
|
||||||
|
box_counter = 0
|
||||||
|
|
||||||
|
for page in range(page_count):
|
||||||
|
packet = io.BytesIO()
|
||||||
|
can = canvas.Canvas(packet, pagesize=letter)
|
||||||
|
|
||||||
|
for i in range(boxes_per_page):
|
||||||
|
if box_counter >= image_count:
|
||||||
|
break
|
||||||
|
x = (i % (page_width // box_size)) * box_size
|
||||||
|
y = page_height - ((i // (page_width // box_size) + 1) * box_size)
|
||||||
|
can.setFillColorRGB(0, 0, 0)
|
||||||
|
can.rect(x, y, box_size, box_size, fill=1)
|
||||||
|
box_counter += 1
|
||||||
|
|
||||||
|
can.showPage()
|
||||||
|
can.save()
|
||||||
|
packet.seek(0)
|
||||||
|
new_pdf = PdfReader(packet)
|
||||||
|
writer.add_page(new_pdf.pages[0])
|
||||||
|
|
||||||
|
with open(file_name, 'wb') as f:
|
||||||
|
writer.write(f)
|
||||||
|
|
||||||
|
@given('the pdf contains {image_count:d} images on {page_count:d} pages')
|
||||||
|
def step_pdf_contains_images(context, image_count, page_count):
|
||||||
|
if not hasattr(context, 'param_name'):
|
||||||
|
context.param_name = "default"
|
||||||
|
context.file_name = "genericNonCustomisableName.pdf"
|
||||||
|
create_pdf_with_black_boxes(context.file_name, image_count, page_count)
|
||||||
|
if not hasattr(context, 'files'):
|
||||||
|
context.files = {}
|
||||||
|
if context.param_name in context.files:
|
||||||
|
context.files[context.param_name].close()
|
||||||
|
context.files[context.param_name] = open(context.file_name, 'rb')
|
||||||
|
|
||||||
|
|
||||||
@given('the pdf contains {page_count:d} pages with random text')
|
@given('the pdf contains {page_count:d} pages with random text')
|
||||||
def step_pdf_contains_pages_with_random_text(context, page_count):
|
def step_pdf_contains_pages_with_random_text(context, page_count):
|
||||||
buffer = io.BytesIO()
|
buffer = io.BytesIO()
|
||||||
|
|
|
@ -2,3 +2,4 @@ behave
|
||||||
requests
|
requests
|
||||||
PyPDF2
|
PyPDF2
|
||||||
reportlab
|
reportlab
|
||||||
|
PyCryptodome
|
||||||
|
|
|
@ -27,6 +27,8 @@ services:
|
||||||
SECURITY_OAUTH2_CLIENTID: "<YOUR CLIENT ID>.apps.googleusercontent.com" # Client ID from your provider
|
SECURITY_OAUTH2_CLIENTID: "<YOUR CLIENT ID>.apps.googleusercontent.com" # Client ID from your provider
|
||||||
SECURITY_OAUTH2_CLIENTSECRET: "<YOUR CLIENT SECRET>" # Client Secret from your provider
|
SECURITY_OAUTH2_CLIENTSECRET: "<YOUR CLIENT SECRET>" # Client Secret from your provider
|
||||||
SECURITY_OAUTH2_SCOPES: "openid,profile,email" # Expected OAuth2 Scope
|
SECURITY_OAUTH2_SCOPES: "openid,profile,email" # Expected OAuth2 Scope
|
||||||
|
SECURITY_OAUTH2_USEASUSERNAME: "email" # Default is 'email'; custom fields can be used as the username
|
||||||
|
SECURITY_OAUTH2_PROVIDER: "google" # Set this to your OAuth provider's name, e.g., 'google' or 'keycloak'
|
||||||
PUID: 1002
|
PUID: 1002
|
||||||
PGID: 1002
|
PGID: 1002
|
||||||
UMASK: "022"
|
UMASK: "022"
|
||||||
|
|
|
@ -2,8 +2,10 @@ package stirling.software.SPDF.config;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
|
||||||
|
@ -108,4 +110,28 @@ public class AppConfig {
|
||||||
public boolean missingActivSecurity() {
|
public boolean missingActivSecurity() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean(name = "watchedFoldersDir")
|
||||||
|
public String watchedFoldersDir() {
|
||||||
|
return "./pipeline/watchedFolders/";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "finishedFoldersDir")
|
||||||
|
public String finishedFoldersDir() {
|
||||||
|
return "./pipeline/finishedFolders/";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "directoryFilter")
|
||||||
|
public Predicate<Path> processPDFOnlyFilter() {
|
||||||
|
return path -> {
|
||||||
|
if (Files.isDirectory(path)) {
|
||||||
|
return !path.toString()
|
||||||
|
.contains(
|
||||||
|
"processing");
|
||||||
|
} else {
|
||||||
|
String fileName = path.getFileName().toString();
|
||||||
|
return fileName.endsWith(".pdf");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
package stirling.software.SPDF.config;
|
package stirling.software.SPDF.config;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
@ -45,15 +47,27 @@ public class ConfigInitializer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Path templatePath =
|
// Load the template content from classpath
|
||||||
Paths.get(
|
List<String> templateLines;
|
||||||
getClass()
|
try (InputStream in =
|
||||||
.getClassLoader()
|
getClass().getClassLoader().getResourceAsStream("settings.yml.template")) {
|
||||||
.getResource("settings.yml.template")
|
if (in == null) {
|
||||||
.toURI());
|
throw new FileNotFoundException(
|
||||||
Path userPath = Paths.get("configs", "settings.yml");
|
"Resource file not found: settings.yml.template");
|
||||||
|
}
|
||||||
|
templateLines = new ArrayList<>();
|
||||||
|
try (var reader = new InputStreamReader(in)) {
|
||||||
|
try (var bufferedReader = new BufferedReader(reader)) {
|
||||||
|
String line;
|
||||||
|
while ((line = bufferedReader.readLine()) != null) {
|
||||||
|
templateLines.add(line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
List<String> templateLines = Files.readAllLines(templatePath);
|
// Read the user settings file if it exists
|
||||||
|
Path userPath = Paths.get("configs", "settings.yml");
|
||||||
List<String> userLines =
|
List<String> userLines =
|
||||||
Files.exists(userPath) ? Files.readAllLines(userPath) : new ArrayList<>();
|
Files.exists(userPath) ? Files.readAllLines(userPath) : new ArrayList<>();
|
||||||
|
|
||||||
|
@ -87,6 +101,7 @@ public class ConfigInitializer
|
||||||
Files.write(userPath, resultLines);
|
Files.write(userPath, resultLines);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ensure the custom settings file exists
|
||||||
Path customSettingsPath = Paths.get("configs", "custom_settings.yml");
|
Path customSettingsPath = Paths.get("configs", "custom_settings.yml");
|
||||||
if (!Files.exists(customSettingsPath)) {
|
if (!Files.exists(customSettingsPath)) {
|
||||||
Files.createFile(customSettingsPath);
|
Files.createFile(customSettingsPath);
|
||||||
|
|
|
@ -116,6 +116,7 @@ public class EndpointConfiguration {
|
||||||
addEndpointToGroup("Security", "change-permissions");
|
addEndpointToGroup("Security", "change-permissions");
|
||||||
addEndpointToGroup("Security", "add-watermark");
|
addEndpointToGroup("Security", "add-watermark");
|
||||||
addEndpointToGroup("Security", "cert-sign");
|
addEndpointToGroup("Security", "cert-sign");
|
||||||
|
addEndpointToGroup("Security", "remove-cert-sign");
|
||||||
addEndpointToGroup("Security", "sanitize-pdf");
|
addEndpointToGroup("Security", "sanitize-pdf");
|
||||||
addEndpointToGroup("Security", "auto-redact");
|
addEndpointToGroup("Security", "auto-redact");
|
||||||
|
|
||||||
|
@ -200,6 +201,7 @@ public class EndpointConfiguration {
|
||||||
addEndpointToGroup("Java", "extract-images");
|
addEndpointToGroup("Java", "extract-images");
|
||||||
addEndpointToGroup("Java", "change-metadata");
|
addEndpointToGroup("Java", "change-metadata");
|
||||||
addEndpointToGroup("Java", "cert-sign");
|
addEndpointToGroup("Java", "cert-sign");
|
||||||
|
addEndpointToGroup("Java", "remove-cert-sign");
|
||||||
addEndpointToGroup("Java", "multi-page-layout");
|
addEndpointToGroup("Java", "multi-page-layout");
|
||||||
addEndpointToGroup("Java", "scale-pages");
|
addEndpointToGroup("Java", "scale-pages");
|
||||||
addEndpointToGroup("Java", "add-page-numbers");
|
addEndpointToGroup("Java", "add-page-numbers");
|
||||||
|
|
|
@ -3,7 +3,6 @@ package stirling.software.SPDF.controller.api.converters;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.StandardCopyOption;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -41,11 +40,12 @@ public class ConvertOfficeController {
|
||||||
// Save the uploaded file to a temporary location
|
// Save the uploaded file to a temporary location
|
||||||
Path tempInputFile =
|
Path tempInputFile =
|
||||||
Files.createTempFile("input_", "." + FilenameUtils.getExtension(originalFilename));
|
Files.createTempFile("input_", "." + FilenameUtils.getExtension(originalFilename));
|
||||||
Files.copy(inputFile.getInputStream(), tempInputFile, StandardCopyOption.REPLACE_EXISTING);
|
inputFile.transferTo(tempInputFile);
|
||||||
|
|
||||||
// Prepare the output file path
|
// Prepare the output file path
|
||||||
Path tempOutputFile = Files.createTempFile("output_", ".pdf");
|
Path tempOutputFile = Files.createTempFile("output_", ".pdf");
|
||||||
|
|
||||||
|
try {
|
||||||
// Run the LibreOffice command
|
// Run the LibreOffice command
|
||||||
List<String> command =
|
List<String> command =
|
||||||
new ArrayList<>(
|
new ArrayList<>(
|
||||||
|
@ -63,12 +63,12 @@ public class ConvertOfficeController {
|
||||||
|
|
||||||
// Read the converted PDF file
|
// Read the converted PDF file
|
||||||
byte[] pdfBytes = Files.readAllBytes(tempOutputFile);
|
byte[] pdfBytes = Files.readAllBytes(tempOutputFile);
|
||||||
|
|
||||||
// Clean up the temporary files
|
|
||||||
Files.delete(tempInputFile);
|
|
||||||
Files.delete(tempOutputFile);
|
|
||||||
|
|
||||||
return pdfBytes;
|
return pdfBytes;
|
||||||
|
} finally {
|
||||||
|
// Clean up the temporary files
|
||||||
|
if (tempInputFile != null) Files.deleteIfExists(tempInputFile);
|
||||||
|
Files.deleteIfExists(tempOutputFile);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isValidFileExtension(String fileExtension) {
|
private boolean isValidFileExtension(String fileExtension) {
|
||||||
|
|
|
@ -61,8 +61,8 @@ public class ConvertPDFToPDFA {
|
||||||
byte[] pdfBytes = Files.readAllBytes(tempOutputFile);
|
byte[] pdfBytes = Files.readAllBytes(tempOutputFile);
|
||||||
|
|
||||||
// Clean up the temporary files
|
// Clean up the temporary files
|
||||||
Files.delete(tempInputFile);
|
Files.deleteIfExists(tempInputFile);
|
||||||
Files.delete(tempOutputFile);
|
Files.deleteIfExists(tempOutputFile);
|
||||||
|
|
||||||
// Return the optimized PDF as a response
|
// Return the optimized PDF as a response
|
||||||
String outputFilename =
|
String outputFilename =
|
||||||
|
|
|
@ -136,10 +136,10 @@ public class CompressController {
|
||||||
// Increase optimization level for next iteration
|
// Increase optimization level for next iteration
|
||||||
optimizeLevel++;
|
optimizeLevel++;
|
||||||
if (autoMode && optimizeLevel > 4) {
|
if (autoMode && optimizeLevel > 4) {
|
||||||
System.out.println("Skipping level 5 due to bad results in auto mode");
|
logger.info("Skipping level 5 due to bad results in auto mode");
|
||||||
sizeMet = true;
|
sizeMet = true;
|
||||||
} else {
|
} else {
|
||||||
System.out.println(
|
logger.info(
|
||||||
"Increasing ghostscript optimisation level to " + optimizeLevel);
|
"Increasing ghostscript optimisation level to " + optimizeLevel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -230,10 +230,10 @@ public class CompressController {
|
||||||
if (currentSize > expectedOutputSize) {
|
if (currentSize > expectedOutputSize) {
|
||||||
// Log the current file size and scaleFactor
|
// Log the current file size and scaleFactor
|
||||||
|
|
||||||
System.out.println(
|
logger.info(
|
||||||
"Current file size: "
|
"Current file size: "
|
||||||
+ FileUtils.byteCountToDisplaySize(currentSize));
|
+ FileUtils.byteCountToDisplaySize(currentSize));
|
||||||
System.out.println("Current scale factor: " + scaleFactor);
|
logger.info("Current scale factor: " + scaleFactor);
|
||||||
|
|
||||||
// The file is still too large, reduce scaleFactor and try again
|
// The file is still too large, reduce scaleFactor and try again
|
||||||
scaleFactor *= 0.9f; // reduce scaleFactor by 10%
|
scaleFactor *= 0.9f; // reduce scaleFactor by 10%
|
||||||
|
@ -256,7 +256,6 @@ public class CompressController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read the optimized PDF file
|
// Read the optimized PDF file
|
||||||
pdfBytes = Files.readAllBytes(tempOutputFile);
|
pdfBytes = Files.readAllBytes(tempOutputFile);
|
||||||
|
|
||||||
|
@ -269,17 +268,18 @@ public class CompressController {
|
||||||
// Read the original file again
|
// Read the original file again
|
||||||
pdfBytes = Files.readAllBytes(tempInputFile);
|
pdfBytes = Files.readAllBytes(tempInputFile);
|
||||||
}
|
}
|
||||||
} finally {
|
|
||||||
// Clean up the temporary files
|
|
||||||
Files.delete(tempInputFile);
|
|
||||||
Files.delete(tempOutputFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return the optimized PDF as a response
|
// Return the optimized PDF as a response
|
||||||
String outputFilename =
|
String outputFilename =
|
||||||
Filenames.toSimpleFileName(inputFile.getOriginalFilename())
|
Filenames.toSimpleFileName(inputFile.getOriginalFilename())
|
||||||
.replaceFirst("[.][^.]+$", "")
|
.replaceFirst("[.][^.]+$", "")
|
||||||
+ "_Optimized.pdf";
|
+ "_Optimized.pdf";
|
||||||
return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename);
|
return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename);
|
||||||
|
|
||||||
|
} finally {
|
||||||
|
// Clean up the temporary files
|
||||||
|
// deleted by multipart file handler deu to transferTo?
|
||||||
|
// Files.deleteIfExists(tempInputFile);
|
||||||
|
Files.deleteIfExists(tempOutputFile);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,6 @@ import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.StandardCopyOption;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -103,10 +102,7 @@ public class ExtractImageScansController {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
tempInputFile = Files.createTempFile("input_", "." + extension);
|
tempInputFile = Files.createTempFile("input_", "." + extension);
|
||||||
Files.copy(
|
form.getFileInput().transferTo(tempInputFile);
|
||||||
form.getFileInput().getInputStream(),
|
|
||||||
tempInputFile,
|
|
||||||
StandardCopyOption.REPLACE_EXISTING);
|
|
||||||
// Add input file path to images list
|
// Add input file path to images list
|
||||||
images.add(tempInputFile.toString());
|
images.add(tempInputFile.toString());
|
||||||
}
|
}
|
||||||
|
@ -176,11 +172,15 @@ public class ExtractImageScansController {
|
||||||
byte[] zipBytes = Files.readAllBytes(tempZipFile);
|
byte[] zipBytes = Files.readAllBytes(tempZipFile);
|
||||||
|
|
||||||
// Clean up the temporary zip file
|
// Clean up the temporary zip file
|
||||||
Files.delete(tempZipFile);
|
Files.deleteIfExists(tempZipFile);
|
||||||
|
|
||||||
return WebResponseUtils.bytesToWebResponse(
|
return WebResponseUtils.bytesToWebResponse(
|
||||||
zipBytes, outputZipFilename, MediaType.APPLICATION_OCTET_STREAM);
|
zipBytes, outputZipFilename, MediaType.APPLICATION_OCTET_STREAM);
|
||||||
|
}
|
||||||
|
if (processedImageBytes.size() == 0) {
|
||||||
|
throw new IllegalArgumentException("No images detected");
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// Return the processed image as a response
|
// Return the processed image as a response
|
||||||
byte[] imageBytes = processedImageBytes.get(0);
|
byte[] imageBytes = processedImageBytes.get(0);
|
||||||
return WebResponseUtils.bytesToWebResponse(
|
return WebResponseUtils.bytesToWebResponse(
|
||||||
|
@ -201,7 +201,7 @@ public class ExtractImageScansController {
|
||||||
|
|
||||||
if (tempZipFile != null && Files.exists(tempZipFile)) {
|
if (tempZipFile != null && Files.exists(tempZipFile)) {
|
||||||
try {
|
try {
|
||||||
Files.delete(tempZipFile);
|
Files.deleteIfExists(tempZipFile);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
logger.error("Failed to delete temporary zip file: " + tempZipFile, e);
|
logger.error("Failed to delete temporary zip file: " + tempZipFile, e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,6 @@ import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.StandardCopyOption;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
@ -91,14 +90,12 @@ public class OCRController {
|
||||||
}
|
}
|
||||||
// Save the uploaded file to a temporary location
|
// Save the uploaded file to a temporary location
|
||||||
Path tempInputFile = Files.createTempFile("input_", ".pdf");
|
Path tempInputFile = Files.createTempFile("input_", ".pdf");
|
||||||
Files.copy(inputFile.getInputStream(), tempInputFile, StandardCopyOption.REPLACE_EXISTING);
|
|
||||||
|
|
||||||
// Prepare the output file path
|
|
||||||
Path tempOutputFile = Files.createTempFile("output_", ".pdf");
|
Path tempOutputFile = Files.createTempFile("output_", ".pdf");
|
||||||
|
|
||||||
// Prepare the output file path
|
|
||||||
Path sidecarTextPath = null;
|
Path sidecarTextPath = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
inputFile.transferTo(tempInputFile.toFile());
|
||||||
|
|
||||||
// Run OCR Command
|
// Run OCR Command
|
||||||
String languageOption = String.join("+", selectedLanguages);
|
String languageOption = String.join("+", selectedLanguages);
|
||||||
|
|
||||||
|
@ -151,7 +148,8 @@ public class OCRController {
|
||||||
.runCommandWithOutputHandling(command);
|
.runCommandWithOutputHandling(command);
|
||||||
if (result.getRc() != 0
|
if (result.getRc() != 0
|
||||||
&& result.getMessages().contains("multiprocessing/synchronize.py")
|
&& result.getMessages().contains("multiprocessing/synchronize.py")
|
||||||
&& result.getMessages().contains("OSError: [Errno 38] Function not implemented")) {
|
&& result.getMessages()
|
||||||
|
.contains("OSError: [Errno 38] Function not implemented")) {
|
||||||
command.add("--jobs");
|
command.add("--jobs");
|
||||||
command.add("1");
|
command.add("1");
|
||||||
result =
|
result =
|
||||||
|
@ -178,8 +176,6 @@ public class OCRController {
|
||||||
}
|
}
|
||||||
// Read the OCR processed PDF file
|
// Read the OCR processed PDF file
|
||||||
byte[] pdfBytes = Files.readAllBytes(tempOutputFile);
|
byte[] pdfBytes = Files.readAllBytes(tempOutputFile);
|
||||||
// Clean up the temporary files
|
|
||||||
Files.delete(tempInputFile);
|
|
||||||
|
|
||||||
// Return the OCR processed PDF as a response
|
// Return the OCR processed PDF as a response
|
||||||
String outputFilename =
|
String outputFilename =
|
||||||
|
@ -213,17 +209,26 @@ public class OCRController {
|
||||||
byte[] zipBytes = Files.readAllBytes(tempZipFile);
|
byte[] zipBytes = Files.readAllBytes(tempZipFile);
|
||||||
|
|
||||||
// Clean up the temporary zip file
|
// Clean up the temporary zip file
|
||||||
Files.delete(tempZipFile);
|
Files.deleteIfExists(tempZipFile);
|
||||||
Files.delete(tempOutputFile);
|
Files.deleteIfExists(tempOutputFile);
|
||||||
Files.delete(sidecarTextPath);
|
Files.deleteIfExists(sidecarTextPath);
|
||||||
|
|
||||||
// Return the zip file containing both the PDF and the text file
|
// Return the zip file containing both the PDF and the text file
|
||||||
return WebResponseUtils.bytesToWebResponse(
|
return WebResponseUtils.bytesToWebResponse(
|
||||||
zipBytes, outputZipFilename, MediaType.APPLICATION_OCTET_STREAM);
|
zipBytes, outputZipFilename, MediaType.APPLICATION_OCTET_STREAM);
|
||||||
} else {
|
} else {
|
||||||
// Return the OCR processed PDF as a response
|
// Return the OCR processed PDF as a response
|
||||||
Files.delete(tempOutputFile);
|
Files.deleteIfExists(tempOutputFile);
|
||||||
return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename);
|
return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename);
|
||||||
}
|
}
|
||||||
|
} finally {
|
||||||
|
// Clean up the temporary files
|
||||||
|
Files.deleteIfExists(tempOutputFile);
|
||||||
|
// Comment out as transferTo makes multipart handle cleanup
|
||||||
|
// Files.deleteIfExists(tempInputFile);
|
||||||
|
if (sidecarTextPath != null) {
|
||||||
|
Files.deleteIfExists(sidecarTextPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,10 +41,10 @@ public class RepairController {
|
||||||
MultipartFile inputFile = request.getFileInput();
|
MultipartFile inputFile = request.getFileInput();
|
||||||
// Save the uploaded file to a temporary location
|
// Save the uploaded file to a temporary location
|
||||||
Path tempInputFile = Files.createTempFile("input_", ".pdf");
|
Path tempInputFile = Files.createTempFile("input_", ".pdf");
|
||||||
inputFile.transferTo(tempInputFile.toFile());
|
|
||||||
|
|
||||||
// Prepare the output file path
|
|
||||||
Path tempOutputFile = Files.createTempFile("output_", ".pdf");
|
Path tempOutputFile = Files.createTempFile("output_", ".pdf");
|
||||||
|
byte[] pdfBytes = null;
|
||||||
|
inputFile.transferTo(tempInputFile.toFile());
|
||||||
|
try {
|
||||||
|
|
||||||
List<String> command = new ArrayList<>();
|
List<String> command = new ArrayList<>();
|
||||||
command.add("gs");
|
command.add("gs");
|
||||||
|
@ -58,11 +58,7 @@ public class RepairController {
|
||||||
.runCommandWithOutputHandling(command);
|
.runCommandWithOutputHandling(command);
|
||||||
|
|
||||||
// Read the optimized PDF file
|
// Read the optimized PDF file
|
||||||
byte[] pdfBytes = Files.readAllBytes(tempOutputFile);
|
pdfBytes = Files.readAllBytes(tempOutputFile);
|
||||||
|
|
||||||
// Clean up the temporary files
|
|
||||||
Files.delete(tempInputFile);
|
|
||||||
Files.delete(tempOutputFile);
|
|
||||||
|
|
||||||
// Return the optimized PDF as a response
|
// Return the optimized PDF as a response
|
||||||
String outputFilename =
|
String outputFilename =
|
||||||
|
@ -70,5 +66,10 @@ public class RepairController {
|
||||||
.replaceFirst("[.][^.]+$", "")
|
.replaceFirst("[.][^.]+$", "")
|
||||||
+ "_repaired.pdf";
|
+ "_repaired.pdf";
|
||||||
return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename);
|
return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename);
|
||||||
|
} finally {
|
||||||
|
// Clean up the temporary files
|
||||||
|
Files.deleteIfExists(tempInputFile);
|
||||||
|
Files.deleteIfExists(tempOutputFile);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@ import java.util.stream.Stream;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.core.io.ByteArrayResource;
|
import org.springframework.core.io.ByteArrayResource;
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
@ -28,6 +29,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.PipelineConfig;
|
import stirling.software.SPDF.model.PipelineConfig;
|
||||||
import stirling.software.SPDF.model.PipelineOperation;
|
import stirling.software.SPDF.model.PipelineOperation;
|
||||||
|
import stirling.software.SPDF.utils.FileMonitor;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class PipelineDirectoryProcessor {
|
public class PipelineDirectoryProcessor {
|
||||||
|
@ -35,11 +37,18 @@ public class PipelineDirectoryProcessor {
|
||||||
private static final Logger logger = LoggerFactory.getLogger(PipelineDirectoryProcessor.class);
|
private static final Logger logger = LoggerFactory.getLogger(PipelineDirectoryProcessor.class);
|
||||||
@Autowired private ObjectMapper objectMapper;
|
@Autowired private ObjectMapper objectMapper;
|
||||||
@Autowired private ApiDocService apiDocService;
|
@Autowired private ApiDocService apiDocService;
|
||||||
|
|
||||||
final String watchedFoldersDir = "./pipeline/watchedFolders/";
|
|
||||||
final String finishedFoldersDir = "./pipeline/finishedFolders/";
|
|
||||||
|
|
||||||
@Autowired PipelineProcessor processor;
|
@Autowired PipelineProcessor processor;
|
||||||
|
@Autowired FileMonitor fileMonitor;
|
||||||
|
|
||||||
|
final String watchedFoldersDir;
|
||||||
|
final String finishedFoldersDir;
|
||||||
|
|
||||||
|
public PipelineDirectoryProcessor(
|
||||||
|
@Qualifier("watchedFoldersDir") String watchedFoldersDir,
|
||||||
|
@Qualifier("finishedFoldersDir") String finishedFoldersDir) {
|
||||||
|
this.watchedFoldersDir = watchedFoldersDir;
|
||||||
|
this.finishedFoldersDir = finishedFoldersDir;
|
||||||
|
}
|
||||||
|
|
||||||
@Scheduled(fixedRate = 60000)
|
@Scheduled(fixedRate = 60000)
|
||||||
public void scanFolders() {
|
public void scanFolders() {
|
||||||
|
@ -130,7 +139,7 @@ public class PipelineDirectoryProcessor {
|
||||||
throws IOException {
|
throws IOException {
|
||||||
try (Stream<Path> paths = Files.list(dir)) {
|
try (Stream<Path> paths = Files.list(dir)) {
|
||||||
if ("automated".equals(operation.getParameters().get("fileInput"))) {
|
if ("automated".equals(operation.getParameters().get("fileInput"))) {
|
||||||
return paths.filter(path -> !Files.isDirectory(path) && !path.equals(jsonFile))
|
return paths.filter(path -> !Files.isDirectory(path) && !path.equals(jsonFile) && fileMonitor.isFileReadyForProcessing(path))
|
||||||
.map(Path::toFile)
|
.map(Path::toFile)
|
||||||
.toArray(File[]::new);
|
.toArray(File[]::new);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
package stirling.software.SPDF.controller.api.security;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
|
||||||
|
import org.apache.pdfbox.Loader;
|
||||||
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
|
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
|
||||||
|
import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
|
||||||
|
import org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import io.github.pixee.security.Filenames;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
|
||||||
|
import stirling.software.SPDF.model.api.PDFFile;
|
||||||
|
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/v1/security")
|
||||||
|
@Tag(name = "Security", description = "Security APIs")
|
||||||
|
public class RemoveCertSignController {
|
||||||
|
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(RemoveCertSignController.class);
|
||||||
|
|
||||||
|
@PostMapping(consumes = "multipart/form-data", value = "/remove-cert-sign")
|
||||||
|
@Operation(
|
||||||
|
summary = "Remove digital signature from PDF",
|
||||||
|
description =
|
||||||
|
"This endpoint accepts a PDF file and returns the PDF file without the digital signature. Input: PDF, Output: PDF")
|
||||||
|
public ResponseEntity<byte[]> removeCertSignPDF(@ModelAttribute PDFFile request)
|
||||||
|
throws Exception {
|
||||||
|
MultipartFile pdf = request.getFileInput();
|
||||||
|
|
||||||
|
// Convert MultipartFile to byte[]
|
||||||
|
byte[] pdfBytes = pdf.getBytes();
|
||||||
|
|
||||||
|
// Create a ByteArrayOutputStream to hold the resulting PDF
|
||||||
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
|
|
||||||
|
// Load the PDF document
|
||||||
|
PDDocument document = Loader.loadPDF(pdfBytes);
|
||||||
|
|
||||||
|
// Get the document catalog
|
||||||
|
PDDocumentCatalog catalog = document.getDocumentCatalog();
|
||||||
|
|
||||||
|
// Get the AcroForm
|
||||||
|
PDAcroForm acroForm = catalog.getAcroForm();
|
||||||
|
if (acroForm != null) {
|
||||||
|
// Remove signature fields
|
||||||
|
acroForm.getFields().removeIf(field -> field instanceof PDSignatureField);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save the modified document to the ByteArrayOutputStream
|
||||||
|
document.save(baos);
|
||||||
|
document.close();
|
||||||
|
|
||||||
|
// Return the modified PDF as a response
|
||||||
|
return WebResponseUtils.boasToWebResponse(
|
||||||
|
baos,
|
||||||
|
Filenames.toSimpleFileName(pdf.getOriginalFilename()).replaceFirst("[.][^.]+$", "")
|
||||||
|
+ "_unsigned.pdf");
|
||||||
|
}
|
||||||
|
}
|
|
@ -129,6 +129,8 @@ public class AccountWebController {
|
||||||
case "invalid_request":
|
case "invalid_request":
|
||||||
erroroauth = "login.oauth2invalidRequest";
|
erroroauth = "login.oauth2invalidRequest";
|
||||||
break;
|
break;
|
||||||
|
case "invalid_id_token":
|
||||||
|
erroroauth = "login.oauth2InvalidIdToken";
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,6 +53,13 @@ public class SecurityWebController {
|
||||||
return "security/cert-sign";
|
return "security/cert-sign";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/remove-cert-sign")
|
||||||
|
@Hidden
|
||||||
|
public String certUnSignForm(Model model) {
|
||||||
|
model.addAttribute("currentPage", "remove-cert-sign");
|
||||||
|
return "security/remove-cert-sign";
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/sanitize-pdf")
|
@GetMapping("/sanitize-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String sanitizeForm(Model model) {
|
public String sanitizeForm(Model model) {
|
||||||
|
|
|
@ -357,7 +357,7 @@ public class ApplicationProperties {
|
||||||
|
|
||||||
public Provider get(String registrationId) throws Exception {
|
public Provider get(String registrationId) throws Exception {
|
||||||
switch (registrationId) {
|
switch (registrationId) {
|
||||||
case "gogole":
|
case "google":
|
||||||
return getGoogle();
|
return getGoogle();
|
||||||
case "github":
|
case "github":
|
||||||
return getGithub();
|
return getGithub();
|
||||||
|
|
167
src/main/java/stirling/software/SPDF/utils/FileMonitor.java
Normal file
|
@ -0,0 +1,167 @@
|
||||||
|
package stirling.software.SPDF.utils;
|
||||||
|
|
||||||
|
import static java.nio.file.StandardWatchEventKinds.*;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class FileMonitor {
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(FileMonitor.class);
|
||||||
|
private final Map<Path, WatchKey> path2KeyMapping;
|
||||||
|
private final Set<Path> newlyDiscoveredFiles;
|
||||||
|
private final ConcurrentHashMap.KeySetView<Path, Boolean> readyForProcessingFiles;
|
||||||
|
private final WatchService watchService;
|
||||||
|
private final Predicate<Path> pathFilter;
|
||||||
|
private final Path rootDir;
|
||||||
|
private Set<Path> stagingFiles;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param rootDirectory the root directory to monitor
|
||||||
|
* @param pathFilter the filter to apply to the paths, return true if the path should be monitored, false otherwise
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
public FileMonitor(
|
||||||
|
@Qualifier("watchedFoldersDir") String rootDirectory,
|
||||||
|
@Qualifier("directoryFilter") Predicate<Path> pathFilter)
|
||||||
|
throws IOException {
|
||||||
|
this.newlyDiscoveredFiles = new HashSet<>();
|
||||||
|
this.path2KeyMapping = new HashMap<>();
|
||||||
|
this.stagingFiles = new HashSet<>();
|
||||||
|
this.pathFilter = pathFilter;
|
||||||
|
this.readyForProcessingFiles = ConcurrentHashMap.newKeySet();
|
||||||
|
this.watchService = FileSystems.getDefault().newWatchService();
|
||||||
|
this.rootDir = Path.of(rootDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean shouldNotProcess(Path path) {
|
||||||
|
return !pathFilter.test(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void recursivelyRegisterEntry(Path dir) throws IOException {
|
||||||
|
WatchKey key = dir.register(watchService, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
|
||||||
|
path2KeyMapping.put(dir, key);
|
||||||
|
logger.info("Registered directory: {}", dir);
|
||||||
|
|
||||||
|
try (Stream<Path> directoryVisitor = Files.walk(dir, 1)) {
|
||||||
|
final Iterator<Path> iterator = directoryVisitor.iterator();
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
Path path = iterator.next();
|
||||||
|
if (path.equals(dir) || shouldNotProcess(path)) continue;
|
||||||
|
|
||||||
|
if (Files.isDirectory(path)) {
|
||||||
|
recursivelyRegisterEntry(path);
|
||||||
|
} else if (Files.isRegularFile(path)) {
|
||||||
|
handleFileCreation(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Scheduled(fixedRate = 5000)
|
||||||
|
public void trackFiles() {
|
||||||
|
/*
|
||||||
|
All files observed changes in the last iteration will be considered as staging files.
|
||||||
|
If those files are not modified in current iteration, they will be considered as ready for processing.
|
||||||
|
*/
|
||||||
|
stagingFiles = new HashSet<>(newlyDiscoveredFiles);
|
||||||
|
readyForProcessingFiles.clear();
|
||||||
|
|
||||||
|
if (path2KeyMapping.isEmpty()) {
|
||||||
|
logger.warn(
|
||||||
|
"not monitoring any directory, even the root directory itself: {}", rootDir);
|
||||||
|
if (Files.exists(
|
||||||
|
rootDir)) { // if the root directory exists, re-register the root directory
|
||||||
|
try {
|
||||||
|
recursivelyRegisterEntry(rootDir);
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.error("unable to register monitoring", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WatchKey key;
|
||||||
|
while ((key = watchService.poll()) != null) {
|
||||||
|
final Path watchingDir = (Path) key.watchable();
|
||||||
|
key.pollEvents()
|
||||||
|
.forEach(
|
||||||
|
(evt) -> {
|
||||||
|
final Path path = (Path) evt.context();
|
||||||
|
final WatchEvent.Kind<?> kind = evt.kind();
|
||||||
|
if (shouldNotProcess(path)) return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (Files.isDirectory(path)) {
|
||||||
|
if (kind == ENTRY_CREATE) {
|
||||||
|
handleDirectoryCreation(path);
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
we don't need to handle directory deletion or modification
|
||||||
|
- directory deletion will be handled by key.reset()
|
||||||
|
- directory modification indicates a new file creation or deletion, which is handled by below
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
Path relativePathFromRoot = watchingDir.resolve(path);
|
||||||
|
if (kind == ENTRY_CREATE) {
|
||||||
|
handleFileCreation(relativePathFromRoot);
|
||||||
|
} else if (kind == ENTRY_DELETE) {
|
||||||
|
handleFileRemoval(relativePathFromRoot);
|
||||||
|
} else if (kind == ENTRY_MODIFY) {
|
||||||
|
handleFileModification(relativePathFromRoot);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("Error while processing file: {}", path, e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
boolean isKeyValid = key.reset();
|
||||||
|
if (!isKeyValid) { // key is invalid when the directory itself is no longer exists
|
||||||
|
path2KeyMapping.remove((Path) key.watchable());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
readyForProcessingFiles.addAll(stagingFiles);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleDirectoryCreation(Path dir) throws IOException {
|
||||||
|
WatchKey key = dir.register(watchService, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
|
||||||
|
path2KeyMapping.put(dir, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleFileRemoval(Path path) {
|
||||||
|
newlyDiscoveredFiles.remove(path);
|
||||||
|
stagingFiles.remove(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleFileCreation(Path path) {
|
||||||
|
newlyDiscoveredFiles.add(path);
|
||||||
|
stagingFiles.remove(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleFileModification(Path path) {
|
||||||
|
// the logic is the same
|
||||||
|
handleFileCreation(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the file is ready for processing.
|
||||||
|
*
|
||||||
|
* <p>A file is ready for processing if it is not being modified for 5000ms.
|
||||||
|
*
|
||||||
|
* @param path the path of the file
|
||||||
|
* @return true if the file is ready for processing, false otherwise
|
||||||
|
*/
|
||||||
|
public boolean isFileReadyForProcessing(Path path) {
|
||||||
|
return readyForProcessingFiles.contains(path);
|
||||||
|
}
|
||||||
|
}
|
|
@ -42,6 +42,7 @@ public class FileToPdf {
|
||||||
List<String> command = new ArrayList<>();
|
List<String> command = new ArrayList<>();
|
||||||
if (!htmlFormatsInstalled) {
|
if (!htmlFormatsInstalled) {
|
||||||
command.add("weasyprint");
|
command.add("weasyprint");
|
||||||
|
command.add("-e utf-8");
|
||||||
command.add(tempInputFile.toString());
|
command.add(tempInputFile.toString());
|
||||||
command.add(tempOutputFile.toString());
|
command.add(tempOutputFile.toString());
|
||||||
|
|
||||||
|
@ -79,8 +80,8 @@ public class FileToPdf {
|
||||||
} finally {
|
} finally {
|
||||||
|
|
||||||
// Clean up temporary files
|
// Clean up temporary files
|
||||||
Files.delete(tempOutputFile);
|
Files.deleteIfExists(tempOutputFile);
|
||||||
Files.delete(tempInputFile);
|
Files.deleteIfExists(tempInputFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
return pdfBytes;
|
return pdfBytes;
|
||||||
|
|
|
@ -6,7 +6,6 @@ import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.StandardCopyOption;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -47,8 +46,7 @@ public class PDFToFile {
|
||||||
try {
|
try {
|
||||||
// Save the uploaded file to a temporary location
|
// Save the uploaded file to a temporary location
|
||||||
tempInputFile = Files.createTempFile("input_", ".pdf");
|
tempInputFile = Files.createTempFile("input_", ".pdf");
|
||||||
Files.copy(
|
inputFile.transferTo(tempInputFile);
|
||||||
inputFile.getInputStream(), tempInputFile, StandardCopyOption.REPLACE_EXISTING);
|
|
||||||
|
|
||||||
// Prepare the output directory
|
// Prepare the output directory
|
||||||
tempOutputDir = Files.createTempDirectory("output_");
|
tempOutputDir = Files.createTempDirectory("output_");
|
||||||
|
@ -85,7 +83,7 @@ public class PDFToFile {
|
||||||
|
|
||||||
} finally {
|
} finally {
|
||||||
// Clean up the temporary files
|
// Clean up the temporary files
|
||||||
if (tempInputFile != null) Files.delete(tempInputFile);
|
if (tempInputFile != null) Files.deleteIfExists(tempInputFile);
|
||||||
if (tempOutputDir != null) FileUtils.deleteDirectory(tempOutputDir.toFile());
|
if (tempOutputDir != null) FileUtils.deleteDirectory(tempOutputDir.toFile());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,8 +125,7 @@ public class PDFToFile {
|
||||||
try {
|
try {
|
||||||
// Save the uploaded file to a temporary location
|
// Save the uploaded file to a temporary location
|
||||||
tempInputFile = Files.createTempFile("input_", ".pdf");
|
tempInputFile = Files.createTempFile("input_", ".pdf");
|
||||||
Files.copy(
|
inputFile.transferTo(tempInputFile);
|
||||||
inputFile.getInputStream(), tempInputFile, StandardCopyOption.REPLACE_EXISTING);
|
|
||||||
|
|
||||||
// Prepare the output directory
|
// Prepare the output directory
|
||||||
tempOutputDir = Files.createTempDirectory("output_");
|
tempOutputDir = Files.createTempDirectory("output_");
|
||||||
|
@ -180,7 +177,7 @@ public class PDFToFile {
|
||||||
|
|
||||||
} finally {
|
} finally {
|
||||||
// Clean up the temporary files
|
// Clean up the temporary files
|
||||||
if (tempInputFile != null) Files.delete(tempInputFile);
|
Files.deleteIfExists(tempInputFile);
|
||||||
if (tempOutputDir != null) FileUtils.deleteDirectory(tempOutputDir.toFile());
|
if (tempOutputDir != null) FileUtils.deleteDirectory(tempOutputDir.toFile());
|
||||||
}
|
}
|
||||||
System.out.println("fileBytes=" + fileBytes.length);
|
System.out.println("fileBytes=" + fileBytes.length);
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Sign with Certificate
|
||||||
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Multi-Page Layout
|
home.pageLayout.title=Multi-Page Layout
|
||||||
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Download
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Crop
|
crop.title=Crop
|
||||||
crop.header=Crop Image
|
crop.header=Crop PDF
|
||||||
crop.submit=Submit
|
crop.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=الاسم
|
||||||
certSign.submit=تسجيل PDF
|
certSign.submit=تسجيل PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=إزالة الفراغات
|
removeBlanks.title=إزالة الفراغات
|
||||||
removeBlanks.header=إزالة الصفحات الفارغة
|
removeBlanks.header=إزالة الصفحات الفارغة
|
||||||
|
|
|
@ -59,8 +59,8 @@ deleteCurrentUserMessage=Не може да се изтрие вписания
|
||||||
deleteUsernameExistsMessage=Потребителското име не съществува и не може да бъде изтрито.
|
deleteUsernameExistsMessage=Потребителското име не съществува и не може да бъде изтрито.
|
||||||
downgradeCurrentUserMessage=Не може да се понижи ролята на текущия потребител
|
downgradeCurrentUserMessage=Не може да се понижи ролята на текущия потребител
|
||||||
downgradeCurrentUserLongMessage=Не може да се понижи ролята на текущия потребител. Следователно текущият потребител няма да бъде показан.
|
downgradeCurrentUserLongMessage=Не може да се понижи ролята на текущия потребител. Следователно текущият потребител няма да бъде показан.
|
||||||
userAlreadyExistsOAuthMessage=The user already exists as an OAuth2 user.
|
userAlreadyExistsOAuthMessage=Потребителят вече съществува като OAuth2 потребител.
|
||||||
userAlreadyExistsWebMessage=The user already exists as an web user.
|
userAlreadyExistsWebMessage=Потребителят вече съществува като уеб-потребител.
|
||||||
error=Грешка
|
error=Грешка
|
||||||
oops=Опаа!
|
oops=Опаа!
|
||||||
help=Помощ
|
help=Помощ
|
||||||
|
@ -105,18 +105,18 @@ pipelineOptions.validateButton=Валидирай
|
||||||
#############
|
#############
|
||||||
# NAVBAR #
|
# NAVBAR #
|
||||||
#############
|
#############
|
||||||
navbar.favorite=Favorites
|
navbar.favorite=Любими
|
||||||
navbar.darkmode=Тъмна тема
|
navbar.darkmode=Тъмна тема
|
||||||
navbar.language=Languages
|
navbar.language=Езици
|
||||||
navbar.settings=Настройки
|
navbar.settings=Настройки
|
||||||
navbar.allTools=Tools
|
navbar.allTools=Инструменти
|
||||||
navbar.multiTool=Multi Tools
|
navbar.multiTool=Мулти инструменти
|
||||||
navbar.sections.organize=Organize
|
navbar.sections.organize=Организирайте
|
||||||
navbar.sections.convertTo=Convert to PDF
|
navbar.sections.convertTo=Преобразуване в PDF
|
||||||
navbar.sections.convertFrom=Convert from PDF
|
navbar.sections.convertFrom=Преобразуване от PDF
|
||||||
navbar.sections.security=Sign & Security
|
navbar.sections.security=Подписване и сигурност
|
||||||
navbar.sections.advance=Advanced
|
navbar.sections.advance=Разширено
|
||||||
navbar.sections.edit=View & Edit
|
navbar.sections.edit=Преглед и редактиране
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# SETTINGS #
|
# SETTINGS #
|
||||||
|
@ -185,7 +185,7 @@ adminUserSettings.internalApiUser=Вътрешен API потребител
|
||||||
adminUserSettings.forceChange=Принудете потребителя да промени потребителското име/парола при влизане
|
adminUserSettings.forceChange=Принудете потребителя да промени потребителското име/парола при влизане
|
||||||
adminUserSettings.submit=Съхранете потребителя
|
adminUserSettings.submit=Съхранете потребителя
|
||||||
adminUserSettings.changeUserRole=Промяна на ролята на потребителя
|
adminUserSettings.changeUserRole=Промяна на ролята на потребителя
|
||||||
adminUserSettings.authenticated=Authenticated
|
adminUserSettings.authenticated=Удостоверен
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# HOME-PAGE #
|
# HOME-PAGE #
|
||||||
|
@ -267,7 +267,7 @@ home.fileToPDF.desc=Преобразуване почти всеки файл к
|
||||||
fileToPDF.tags=трансформация,формат,документ,изображение,слайд,текст,преобразуване,офис,документи,word,excel,powerpoint
|
fileToPDF.tags=трансформация,формат,документ,изображение,слайд,текст,преобразуване,офис,документи,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=OCR / Почистващи сканирания
|
home.ocr.title=OCR / Почистващи сканирания
|
||||||
home.ocr.desc=Почистване, сканира и открива текст от изображения към PDF и го добавя отново като текст.
|
home.ocr.desc=Почиства, сканира и открива текст от изображения в PDF и го добавя отново като текст.
|
||||||
ocr.tags=разпознаване,текст,изображение,сканиране,четене,идентифициране,откриване,редактиране
|
ocr.tags=разпознаване,текст,изображение,сканиране,четене,идентифициране,откриване,редактиране
|
||||||
|
|
||||||
|
|
||||||
|
@ -313,7 +313,7 @@ home.flatten.desc=Премахнете всички интерактивни е
|
||||||
flatten.tags=статичен,деактивиран,неинтерактивен,рационализиран
|
flatten.tags=статичен,деактивиран,неинтерактивен,рационализиран
|
||||||
|
|
||||||
home.repair.title=Поправи
|
home.repair.title=Поправи
|
||||||
home.repair.desc=Опитва се да поправи повреден/счупен PDF
|
home.repair.desc=Опитва се да поправи повреден PDF
|
||||||
repair.tags=поправка,възстановяване,корекция,възстановяване
|
repair.tags=поправка,възстановяване,корекция,възстановяване
|
||||||
|
|
||||||
home.removeBlanks.title=Премахване на празни страници
|
home.removeBlanks.title=Премахване на празни страници
|
||||||
|
@ -332,6 +332,10 @@ home.certSign.title=Подпишете със сертификат
|
||||||
home.certSign.desc=Подписва PDF със сертификат/ключ (PEM/P12)
|
home.certSign.desc=Подписва PDF със сертификат/ключ (PEM/P12)
|
||||||
certSign.tags=удостоверяване,PEM,P12,официален,шифроване
|
certSign.tags=удостоверяване,PEM,P12,официален,шифроване
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Оформление с няколко страници
|
home.pageLayout.title=Оформление с няколко страници
|
||||||
home.pageLayout.desc=Слейте няколко страници от PDF документ в една страница
|
home.pageLayout.desc=Слейте няколко страници от PDF документ в една страница
|
||||||
pageLayout.tags=сливане,комбиниран,единичен изглед,организиране
|
pageLayout.tags=сливане,комбиниран,единичен изглед,организиране
|
||||||
|
@ -364,7 +368,7 @@ home.autoSplitPDF.title=Автоматично разделяне на стра
|
||||||
home.autoSplitPDF.desc=Автоматично разделяне на сканиран PDF файл с QR код за разделяне на физически сканирани страници
|
home.autoSplitPDF.desc=Автоматично разделяне на сканиран PDF файл с QR код за разделяне на физически сканирани страници
|
||||||
autoSplitPDF.tags=QR-базиран,отделен,сканиране-сегмент,организиране
|
autoSplitPDF.tags=QR-базиран,отделен,сканиране-сегмент,организиране
|
||||||
|
|
||||||
home.sanitizePdf.title=Дезинфенкцирам
|
home.sanitizePdf.title=Обеззаразяване
|
||||||
home.sanitizePdf.desc=Премахване на скриптове и други елементи от PDF файлове
|
home.sanitizePdf.desc=Премахване на скриптове и други елементи от PDF файлове
|
||||||
sanitizePdf.tags=чисти,сигурни,безопасни,премахване-заплахи
|
sanitizePdf.tags=чисти,сигурни,безопасни,премахване-заплахи
|
||||||
|
|
||||||
|
@ -382,8 +386,8 @@ home.MarkdownToPDF.desc=Преобразува всеки Markdown файл къ
|
||||||
MarkdownToPDF.tags=маркиране,уеб-съдържание,трансформация,преобразуване
|
MarkdownToPDF.tags=маркиране,уеб-съдържание,трансформация,преобразуване
|
||||||
|
|
||||||
|
|
||||||
home.getPdfInfo.title=Вземете ЦЯЛАТА информация към PDF
|
home.getPdfInfo.title=Вземете ЦЯЛАТА информация от PDF
|
||||||
home.getPdfInfo.desc=Взема всяка възможна информация от PDF файлове
|
home.getPdfInfo.desc=Взима всяка възможна информация от PDF файлове
|
||||||
getPdfInfo.tags=информация,данни,статистики,статистика
|
getPdfInfo.tags=информация,данни,статистики,статистика
|
||||||
|
|
||||||
|
|
||||||
|
@ -405,7 +409,7 @@ home.autoRedact.title=Автоматично редактиране
|
||||||
home.autoRedact.desc=Автоматично редактира (зачернява) текст в PDF въз основа на въведен текст
|
home.autoRedact.desc=Автоматично редактира (зачернява) текст в PDF въз основа на въведен текст
|
||||||
autoRedact.tags=Редактиране,Скриване,затъмняване,черен,маркер,скрит
|
autoRedact.tags=Редактиране,Скриване,затъмняване,черен,маркер,скрит
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF to CSV
|
home.tableExtraxt.title=PDF в CSV
|
||||||
home.tableExtraxt.desc=Извлича таблици от PDF, като ги конвертира в CSV
|
home.tableExtraxt.desc=Извлича таблици от PDF, като ги конвертира в CSV
|
||||||
tableExtraxt.tags=CSV,извличане на таблица,извличане,конвертиране
|
tableExtraxt.tags=CSV,извличане на таблица,извличане,конвертиране
|
||||||
|
|
||||||
|
@ -452,11 +456,12 @@ login.locked=Вашият акаунт е заключен.
|
||||||
login.signinTitle=Моля впишете се
|
login.signinTitle=Моля впишете се
|
||||||
login.ssoSignIn=Влизане чрез еднократно влизане
|
login.ssoSignIn=Влизане чрез еднократно влизане
|
||||||
login.oauth2AutoCreateDisabled=OAUTH2 Автоматично създаване на потребител е деактивирано
|
login.oauth2AutoCreateDisabled=OAUTH2 Автоматично създаване на потребител е деактивирано
|
||||||
login.oauth2RequestNotFound=Authorization request not found
|
login.oauth2RequestNotFound=Заявката за оторизация не е намерена
|
||||||
login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
login.oauth2InvalidUserInfoResponse=Невалидна информация за потребителя
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Невалидна заявка
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Отказан достъп
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Невалиден отговор на токена
|
||||||
|
login.oauth2InvalidIdToken=Невалиден токен за идентификатор
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Изтегли
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Изрязване
|
crop.title=Изрязване
|
||||||
crop.header=Изрязване на изображение
|
crop.header=Изрязване на PDF
|
||||||
crop.submit=Подайте
|
crop.submit=Подайте
|
||||||
|
|
||||||
|
|
||||||
|
@ -637,7 +642,7 @@ scalePages.submit=Подайте
|
||||||
|
|
||||||
|
|
||||||
#certSign
|
#certSign
|
||||||
certSign.title=Подписване на сертификат
|
certSign.title=Подписване със сертификат
|
||||||
certSign.header=Подпишете PDF с вашия сертификат (В процес на работа)
|
certSign.header=Подпишете PDF с вашия сертификат (В процес на работа)
|
||||||
certSign.selectPDF=Изберете PDF файл за подписване:
|
certSign.selectPDF=Изберете PDF файл за подписване:
|
||||||
certSign.jksNote=Забележка: Ако вашият тип сертификат не е в списъка по-долу, моля, конвертирайте го във файл на Java Keystore (.jks) с помощта на инструмента за команден ред keytool. След това изберете опцията за .jks файл по-долу.
|
certSign.jksNote=Забележка: Ако вашият тип сертификат не е в списъка по-долу, моля, конвертирайте го във файл на Java Keystore (.jks) с помощта на инструмента за команден ред keytool. След това изберете опцията за .jks файл по-долу.
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Име
|
||||||
certSign.submit=Подпишете PDF
|
certSign.submit=Подпишете PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Премахване на празни места
|
removeBlanks.title=Премахване на празни места
|
||||||
removeBlanks.header=Премахване на празни страници
|
removeBlanks.header=Премахване на празни страници
|
||||||
|
@ -757,7 +769,7 @@ extractImages.submit=Извличане
|
||||||
fileToPDF.title=Файл към PDF
|
fileToPDF.title=Файл към PDF
|
||||||
fileToPDF.header=Конвертирайте всеки файл към PDF
|
fileToPDF.header=Конвертирайте всеки файл към PDF
|
||||||
fileToPDF.credit=Тази услуга използва LibreOffice и Unoconv за преобразуване на файлове.
|
fileToPDF.credit=Тази услуга използва LibreOffice и Unoconv за преобразуване на файлове.
|
||||||
fileToPDF.supportedFileTypesInfo=Supported File types
|
fileToPDF.supportedFileTypesInfo=Поддържание файлови типове
|
||||||
fileToPDF.supportedFileTypes=Поддържаните типове файлове трябва да включват по-долу, но за пълен актуализиран списък на поддържаните формати, моля, вижте документацията на LibreOffice
|
fileToPDF.supportedFileTypes=Поддържаните типове файлове трябва да включват по-долу, но за пълен актуализиран списък на поддържаните формати, моля, вижте документацията на LibreOffice
|
||||||
fileToPDF.submit=Преобразуване към PDF
|
fileToPDF.submit=Преобразуване към PDF
|
||||||
|
|
||||||
|
@ -766,10 +778,10 @@ fileToPDF.submit=Преобразуване към PDF
|
||||||
compress.title=Компресиране
|
compress.title=Компресиране
|
||||||
compress.header=Компресиране на PDF
|
compress.header=Компресиране на PDF
|
||||||
compress.credit=Тази услуга използва Ghostscript за PDF компресиране/оптимизиране.
|
compress.credit=Тази услуга използва Ghostscript за PDF компресиране/оптимизиране.
|
||||||
compress.selectText.1=Ръчен режим - От 1 до 4
|
compress.selectText.1=Ръчен режим - от 1 до 4
|
||||||
compress.selectText.2=Ниво на оптимизация:
|
compress.selectText.2=Ниво на оптимизация:
|
||||||
compress.selectText.3=4 (Ужасно за текстови изображения)
|
compress.selectText.3=4 (Ужасно за текстови изображения)
|
||||||
compress.selectText.4=Автоматичен режим - Автоматично настройва качеството, за да получи PDF точен размер
|
compress.selectText.4=Автоматичен режим - Автоматично настройва качеството, за да получи PDF с точен размер
|
||||||
compress.selectText.5=Очакван PDF размер (напр. 25МБ, 10.8МБ, 25КБ)
|
compress.selectText.5=Очакван PDF размер (напр. 25МБ, 10.8МБ, 25КБ)
|
||||||
compress.submit=Компресиране
|
compress.submit=Компресиране
|
||||||
|
|
||||||
|
@ -810,7 +822,7 @@ pdfOrganiser.placeholder=(напр. 1,3,2 или 4-8,2,10-12 или 2n-1)
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=PDF Мулти инструмент
|
multiTool.title=PDF Мулти инструмент
|
||||||
multiTool.header=PDF Мулти инструмент
|
multiTool.header=PDF Мулти инструмент
|
||||||
multiTool.uploadPrompts=File Name
|
multiTool.uploadPrompts=Име на файл
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=Преглед на PDF
|
viewPdf.title=Преглед на PDF
|
||||||
|
@ -909,8 +921,8 @@ watermark.selectText.7=Непрозрачност (0% - 100%):
|
||||||
watermark.selectText.8=Тип воден знак:
|
watermark.selectText.8=Тип воден знак:
|
||||||
watermark.selectText.9=Изображение за воден знак:
|
watermark.selectText.9=Изображение за воден знак:
|
||||||
watermark.submit=Добавяне на воден знак
|
watermark.submit=Добавяне на воден знак
|
||||||
watermark.type.1=Text
|
watermark.type.1=Текст
|
||||||
watermark.type.2=Image
|
watermark.type.2=Изображение
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Signa amb Certificat
|
||||||
home.certSign.desc=Sign PDF amb Certificate/Clau (PEM/P12)
|
home.certSign.desc=Sign PDF amb Certificate/Clau (PEM/P12)
|
||||||
certSign.tags=authentica,PEM,P12,official,encripta
|
certSign.tags=authentica,PEM,P12,official,encripta
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Multi-Page Layout
|
home.pageLayout.title=Multi-Page Layout
|
||||||
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Download
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Talla
|
crop.title=Talla
|
||||||
crop.header=Talla Imatge
|
crop.header=Talla PDF
|
||||||
crop.submit=Submit
|
crop.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Nom
|
||||||
certSign.submit=Firma PDF
|
certSign.submit=Firma PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Elimina els espais en blanc
|
removeBlanks.title=Elimina els espais en blanc
|
||||||
removeBlanks.header=Elimina les pàgines en blanc
|
removeBlanks.header=Elimina les pàgines en blanc
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Podpis s certifikátem
|
||||||
home.certSign.desc=Podpis PDF s certifikátem/klíčem (PEM/P12)
|
home.certSign.desc=Podpis PDF s certifikátem/klíčem (PEM/P12)
|
||||||
certSign.tags=autentizace,PEM,P12,oficiální,šifrování
|
certSign.tags=autentizace,PEM,P12,oficiální,šifrování
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Vícestránkové rozložení
|
home.pageLayout.title=Vícestránkové rozložení
|
||||||
home.pageLayout.desc=Sloučení více stránek dokumentu PDF do jedné stránky
|
home.pageLayout.desc=Sloučení více stránek dokumentu PDF do jedné stránky
|
||||||
pageLayout.tags=sloučit,kompozitní,jedno zobrazení,organizovat
|
pageLayout.tags=sloučit,kompozitní,jedno zobrazení,organizovat
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Stáhnout
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Oříznout
|
crop.title=Oříznout
|
||||||
crop.header=Oříznout obrázek
|
crop.header=Oříznout PDF
|
||||||
crop.submit=Odeslat
|
crop.submit=Odeslat
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Název
|
||||||
certSign.submit=Podepsat PDF
|
certSign.submit=Podepsat PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Odebrat prázdné stránky
|
removeBlanks.title=Odebrat prázdné stránky
|
||||||
removeBlanks.header=Odebrat prázdné stránky
|
removeBlanks.header=Odebrat prázdné stránky
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Mit Zertifikat signieren
|
||||||
home.certSign.desc=Ein PDF mit einem Zertifikat/Schlüssel (PEM/P12) signieren
|
home.certSign.desc=Ein PDF mit einem Zertifikat/Schlüssel (PEM/P12) signieren
|
||||||
certSign.tags=authentifizieren,pem,p12,offiziell,verschlüsseln
|
certSign.tags=authentifizieren,pem,p12,offiziell,verschlüsseln
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Mehrseitiges Layout
|
home.pageLayout.title=Mehrseitiges Layout
|
||||||
home.pageLayout.desc=Mehrere Seiten eines PDF zu einer Seite zusammenführen
|
home.pageLayout.desc=Mehrere Seiten eines PDF zu einer Seite zusammenführen
|
||||||
pageLayout.tags=zusammenführen,zusammensetzen,einzelansicht,organisieren
|
pageLayout.tags=zusammenführen,zusammensetzen,einzelansicht,organisieren
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Ungültige Benutzerinformationsantwort
|
||||||
login.oauth2invalidRequest=ungültige Anfrage
|
login.oauth2invalidRequest=ungültige Anfrage
|
||||||
login.oauth2AccessDenied=Zugriff abgelehnt
|
login.oauth2AccessDenied=Zugriff abgelehnt
|
||||||
login.oauth2InvalidTokenResponse=Ungültige Token-Antwort
|
login.oauth2InvalidTokenResponse=Ungültige Token-Antwort
|
||||||
|
login.oauth2InvalidIdToken=Ungültiges ID-Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Herunterladen
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Zuschneiden
|
crop.title=Zuschneiden
|
||||||
crop.header=Bild zuschneiden
|
crop.header=PDF zuschneiden
|
||||||
crop.submit=Abschicken
|
crop.submit=Abschicken
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Name
|
||||||
certSign.submit=PDF signieren
|
certSign.submit=PDF signieren
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Leere Seiten entfernen
|
removeBlanks.title=Leere Seiten entfernen
|
||||||
removeBlanks.header=Leere Seiten entfernen
|
removeBlanks.header=Leere Seiten entfernen
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Υπογραφή με Πιστοποιητικό
|
||||||
home.certSign.desc=Υπογραφή ενός PDF αρχείου με ένα Πιστοποιητικό/Κλειδί (PEM/P12)
|
home.certSign.desc=Υπογραφή ενός PDF αρχείου με ένα Πιστοποιητικό/Κλειδί (PEM/P12)
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Διάταξη πολλών σελίδων
|
home.pageLayout.title=Διάταξη πολλών σελίδων
|
||||||
home.pageLayout.desc=Συγχώνευση πολλαπλών σελίδων ενός εγγράφου PDF σε μία μόνο σελίδα
|
home.pageLayout.desc=Συγχώνευση πολλαπλών σελίδων ενός εγγράφου PDF σε μία μόνο σελίδα
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Λήψη
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Κοπή
|
crop.title=Κοπή
|
||||||
crop.header=Κοπή Εικόνας
|
crop.header=Περικοπή PDF
|
||||||
crop.submit=Υποβολή
|
crop.submit=Υποβολή
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Όνομα
|
||||||
certSign.submit=Υπογραφή PDF
|
certSign.submit=Υπογραφή PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Αφαίρεση Κενών
|
removeBlanks.title=Αφαίρεση Κενών
|
||||||
removeBlanks.header=Αφαίρεση Κενών Σελίδων
|
removeBlanks.header=Αφαίρεση Κενών Σελίδων
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Sign with Certificate
|
||||||
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Multi-Page Layout
|
home.pageLayout.title=Multi-Page Layout
|
||||||
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Download
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Crop
|
crop.title=Crop
|
||||||
crop.header=Crop Image
|
crop.header=Crop PDF
|
||||||
crop.submit=Submit
|
crop.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Name
|
||||||
certSign.submit=Sign PDF
|
certSign.submit=Sign PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Remove Blanks
|
removeBlanks.title=Remove Blanks
|
||||||
removeBlanks.header=Remove Blank Pages
|
removeBlanks.header=Remove Blank Pages
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Sign with Certificate
|
||||||
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Multi-Page Layout
|
home.pageLayout.title=Multi-Page Layout
|
||||||
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Download
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Crop
|
crop.title=Crop
|
||||||
crop.header=Crop Image
|
crop.header=Crop PDF
|
||||||
crop.submit=Submit
|
crop.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Name
|
||||||
certSign.submit=Sign PDF
|
certSign.submit=Sign PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Remove Blanks
|
removeBlanks.title=Remove Blanks
|
||||||
removeBlanks.header=Remove Blank Pages
|
removeBlanks.header=Remove Blank Pages
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Firmar con certificado
|
||||||
home.certSign.desc=Firmar un PDF con un Certificado/Clave (PEM/P12)
|
home.certSign.desc=Firmar un PDF con un Certificado/Clave (PEM/P12)
|
||||||
certSign.tags=autentificar,PEM,P12,oficial,encriptar
|
certSign.tags=autentificar,PEM,P12,oficial,encriptar
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Diseño de varias páginas
|
home.pageLayout.title=Diseño de varias páginas
|
||||||
home.pageLayout.desc=Unir varias páginas de un documento PDF en una sola página
|
home.pageLayout.desc=Unir varias páginas de un documento PDF en una sola página
|
||||||
pageLayout.tags=unir,compuesto,vista única,organizar
|
pageLayout.tags=unir,compuesto,vista única,organizar
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Descargar
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Recortar
|
crop.title=Recortar
|
||||||
crop.header=Recortar Imagen
|
crop.header=Recortar PDF
|
||||||
crop.submit=Entregar
|
crop.submit=Entregar
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Nombre
|
||||||
certSign.submit=Firmar PDF
|
certSign.submit=Firmar PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Eliminar espacios en blanco
|
removeBlanks.title=Eliminar espacios en blanco
|
||||||
removeBlanks.header=Eliminar páginas en blanco
|
removeBlanks.header=Eliminar páginas en blanco
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Sinatu ziurtagiriarekin
|
||||||
home.certSign.desc=Sinatu PDF bat Ziurtagiri/Gako batekin (PEM/P12)
|
home.certSign.desc=Sinatu PDF bat Ziurtagiri/Gako batekin (PEM/P12)
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Zenbait orrialderen diseinua
|
home.pageLayout.title=Zenbait orrialderen diseinua
|
||||||
home.pageLayout.desc=Elkartu orri bakar batean PDF dokumentu baten zenbait orrialde
|
home.pageLayout.desc=Elkartu orri bakar batean PDF dokumentu baten zenbait orrialde
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Distira
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Moztu
|
crop.title=Moztu
|
||||||
crop.header=Irudia Moztu
|
crop.header=Moztu PDF
|
||||||
crop.submit=Bidali
|
crop.submit=Bidali
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Izena
|
||||||
certSign.submit=Sinatu PDFa
|
certSign.submit=Sinatu PDFa
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Ezabatu zuriuneak
|
removeBlanks.title=Ezabatu zuriuneak
|
||||||
removeBlanks.header=Ezabatu orrialde zuriak
|
removeBlanks.header=Ezabatu orrialde zuriak
|
||||||
|
|
|
@ -22,18 +22,18 @@ close=Fermer
|
||||||
filesSelected=fichiers sélectionnés
|
filesSelected=fichiers sélectionnés
|
||||||
noFavourites=Aucun favori ajouté
|
noFavourites=Aucun favori ajouté
|
||||||
downloadComplete=Téléchargement terminé
|
downloadComplete=Téléchargement terminé
|
||||||
bored=Ennuyé d’attendre ?
|
bored=Marre d’attendre ?
|
||||||
alphabet=Alphabet
|
alphabet=Alphabet
|
||||||
downloadPdf=Télécharger le PDF
|
downloadPdf=Télécharger le PDF
|
||||||
text=Texte
|
text=Texte
|
||||||
font=Police
|
font=Police
|
||||||
selectFillter=-- Sélectionnez --
|
selectFillter=-- Sélectionnez --
|
||||||
pageNum=numéro de page
|
pageNum=Numéro de page
|
||||||
sizes.small=Petit
|
sizes.small=Petit
|
||||||
sizes.medium=Moyen
|
sizes.medium=Moyen
|
||||||
sizes.large=Grand
|
sizes.large=Grand
|
||||||
sizes.x-large=Très grand
|
sizes.x-large=Très grand
|
||||||
error.pdfPassword=Le document PDF est protégé par un mot de passe et le mot de passe n’a pas été fourni ou était incorrect
|
error.pdfPassword=Le document PDF est protégé par un mot de passe qui n’a pas été fourni ou était incorrect
|
||||||
delete=Supprimer
|
delete=Supprimer
|
||||||
username=Nom d’utilisateur
|
username=Nom d’utilisateur
|
||||||
password=Mot de passe
|
password=Mot de passe
|
||||||
|
@ -78,13 +78,13 @@ info=Info
|
||||||
###############
|
###############
|
||||||
# Pipeline #
|
# Pipeline #
|
||||||
###############
|
###############
|
||||||
pipeline.header=Menu Pipeline (Alpha)
|
pipeline.header=Menu Pipeline (Beta)
|
||||||
pipeline.uploadButton=Charger une personnalisation
|
pipeline.uploadButton=Charger une personnalisation
|
||||||
pipeline.configureButton=Configurer
|
pipeline.configureButton=Configurer
|
||||||
pipeline.defaultOption=Personnaliser
|
pipeline.defaultOption=Personnaliser
|
||||||
pipeline.submitButton=Soumettre
|
pipeline.submitButton=Soumettre
|
||||||
pipeline.help=Pipeline Help
|
pipeline.help=Aide Pipeline
|
||||||
pipeline.scanHelp=Folder Scanning Help
|
pipeline.scanHelp=Aide analyse de dossier
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
|
@ -107,16 +107,16 @@ pipelineOptions.validateButton=Valider
|
||||||
#############
|
#############
|
||||||
navbar.favorite=Favoris
|
navbar.favorite=Favoris
|
||||||
navbar.darkmode=Mode sombre
|
navbar.darkmode=Mode sombre
|
||||||
navbar.language=Langages
|
navbar.language=Langues
|
||||||
navbar.settings=Paramètres
|
navbar.settings=Paramètres
|
||||||
navbar.allTools=OUtils
|
navbar.allTools=Outils
|
||||||
navbar.multiTool=Multi Outils
|
navbar.multiTool=Outils Multiples
|
||||||
navbar.sections.organize=Oragnisation
|
navbar.sections.organize=Organisation
|
||||||
navbar.sections.convertTo=Convertir en PDF
|
navbar.sections.convertTo=Convertir en PDF
|
||||||
navbar.sections.convertFrom=Convertir depuis PDF
|
navbar.sections.convertFrom=Convertir depuis PDF
|
||||||
navbar.sections.security=Signature et sécurité
|
navbar.sections.security=Signature et sécurité
|
||||||
navbar.sections.advance=Mode avancé
|
navbar.sections.advance=Mode avancé
|
||||||
navbar.sections.edit=Voir la modification
|
navbar.sections.edit=Voir et modifier
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# SETTINGS #
|
# SETTINGS #
|
||||||
|
@ -132,7 +132,7 @@ settings.downloadOption.3=Télécharger le fichier
|
||||||
settings.zipThreshold=Compresser les fichiers en ZIP lorsque le nombre de fichiers téléchargés dépasse
|
settings.zipThreshold=Compresser les fichiers en ZIP lorsque le nombre de fichiers téléchargés dépasse
|
||||||
settings.signOut=Déconnexion
|
settings.signOut=Déconnexion
|
||||||
settings.accountSettings=Paramètres du compte
|
settings.accountSettings=Paramètres du compte
|
||||||
settings.bored.help=Enables easter egg game
|
settings.bored.help=Activer les jeux cachés
|
||||||
settings.cacheInputs.name=Sauvegarder les entrées du formulaire
|
settings.cacheInputs.name=Sauvegarder les entrées du formulaire
|
||||||
settings.cacheInputs.help=Permet de stocker les entrées précédemment utilisées pour les exécutions futures
|
settings.cacheInputs.help=Permet de stocker les entrées précédemment utilisées pour les exécutions futures
|
||||||
|
|
||||||
|
@ -181,7 +181,7 @@ adminUserSettings.apiUser=Utilisateur API limité
|
||||||
adminUserSettings.extraApiUser=Utilisateur limité supplémentaire de l’API
|
adminUserSettings.extraApiUser=Utilisateur limité supplémentaire de l’API
|
||||||
adminUserSettings.webOnlyUser=Utilisateur Web uniquement
|
adminUserSettings.webOnlyUser=Utilisateur Web uniquement
|
||||||
adminUserSettings.demoUser=Demo User (Paramètres par défaut)
|
adminUserSettings.demoUser=Demo User (Paramètres par défaut)
|
||||||
adminUserSettings.internalApiUser=Internal API User
|
adminUserSettings.internalApiUser=Utilisateur de l'API interne
|
||||||
adminUserSettings.forceChange=Forcer l’utilisateur à changer son nom d’utilisateur/mot de passe lors de la connexion
|
adminUserSettings.forceChange=Forcer l’utilisateur à changer son nom d’utilisateur/mot de passe lors de la connexion
|
||||||
adminUserSettings.submit=Ajouter
|
adminUserSettings.submit=Ajouter
|
||||||
adminUserSettings.changeUserRole=Changer le rôle de l'utilisateur
|
adminUserSettings.changeUserRole=Changer le rôle de l'utilisateur
|
||||||
|
@ -332,6 +332,10 @@ home.certSign.title=Signer avec un certificat
|
||||||
home.certSign.desc=Signez un PDF avec un certificat ou une clé (PEM/P12).
|
home.certSign.desc=Signez un PDF avec un certificat ou une clé (PEM/P12).
|
||||||
certSign.tags=signer,chiffrer,certificat,authenticate,PEM,P12,official,encrypt
|
certSign.tags=signer,chiffrer,certificat,authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Fusionner des pages
|
home.pageLayout.title=Fusionner des pages
|
||||||
home.pageLayout.desc=Fusionnez plusieurs pages d’un PDF en une seule.
|
home.pageLayout.desc=Fusionnez plusieurs pages d’un PDF en une seule.
|
||||||
pageLayout.tags=fusionner,merge,composite,single-view,organize
|
pageLayout.tags=fusionner,merge,composite,single-view,organize
|
||||||
|
@ -357,7 +361,7 @@ home.adjust-contrast.desc=Ajustez le contraste, la saturation et la luminosité
|
||||||
adjust-contrast.tags=ajuster,couleurs,amélioration,color-correction,tune,modify,enhance
|
adjust-contrast.tags=ajuster,couleurs,amélioration,color-correction,tune,modify,enhance
|
||||||
|
|
||||||
home.crop.title=Redimensionner
|
home.crop.title=Redimensionner
|
||||||
home.crop.desc=Redimmensionnez un PDF pour réduire sa taille (en conservant le texte !).
|
home.crop.desc=Redimensionnez un PDF pour réduire sa taille (en conservant le texte !).
|
||||||
crop.tags=redimensionner,trim,shrink,edit,shape
|
crop.tags=redimensionner,trim,shrink,edit,shape
|
||||||
|
|
||||||
home.autoSplitPDF.title=Séparer automatiquement les pages
|
home.autoSplitPDF.title=Séparer automatiquement les pages
|
||||||
|
@ -428,11 +432,11 @@ home.AddStampRequest.desc=Ajouter un texte ou l’image d’un tampon à un empl
|
||||||
AddStampRequest.tags=Tampon,Ajouter,Stamp,Add image,center image,Watermark,PDF,Embed,Customize
|
AddStampRequest.tags=Tampon,Ajouter,Stamp,Add image,center image,Watermark,PDF,Embed,Customize
|
||||||
|
|
||||||
|
|
||||||
home.PDFToBook.title=PDF to Book
|
home.PDFToBook.title=PDF vers eBook
|
||||||
home.PDFToBook.desc=Convertit le PDF en formats livre/bande dessinée à l'aide de calibre
|
home.PDFToBook.desc=Convertit le PDF en formats livre/bande dessinée à l'aide de calibre
|
||||||
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
home.BookToPDF.title=Book to PDF
|
home.BookToPDF.title=eBook vers PDF
|
||||||
home.BookToPDF.desc=Convertit les formats de livres/bandes dessinées en PDF à l'aide de calibre
|
home.BookToPDF.desc=Convertit les formats de livres/bandes dessinées en PDF à l'aide de calibre
|
||||||
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -480,8 +485,8 @@ showJS.submit=Afficher
|
||||||
|
|
||||||
|
|
||||||
#pdfToSinglePage
|
#pdfToSinglePage
|
||||||
pdfToSinglePage.title=Fusionner des pages
|
pdfToSinglePage.title=Fusionner les pages
|
||||||
pdfToSinglePage.header=Fusionner des pages
|
pdfToSinglePage.header=Fusionner les pages
|
||||||
pdfToSinglePage.submit=Convertir en une seule page
|
pdfToSinglePage.submit=Convertir en une seule page
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Nom
|
||||||
certSign.submit=Signer
|
certSign.submit=Signer
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Supprimer les pages vierges
|
removeBlanks.title=Supprimer les pages vierges
|
||||||
removeBlanks.header=Supprimer les pages vierges
|
removeBlanks.header=Supprimer les pages vierges
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=प्रमाणपत्र के साथ हस्त
|
||||||
home.certSign.desc=पीडीएफ़ को प्रमाणपत्र/कुंजी (PEM/P12) के साथ हस्ताक्षरित करता है।
|
home.certSign.desc=पीडीएफ़ को प्रमाणपत्र/कुंजी (PEM/P12) के साथ हस्ताक्षरित करता है।
|
||||||
certSign.tags=प्रमाणीकरण, PEM, P12, आधिकारिक, एन्क्रिप्ट
|
certSign.tags=प्रमाणीकरण, PEM, P12, आधिकारिक, एन्क्रिप्ट
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=मल्टी-पेज लेआउट
|
home.pageLayout.title=मल्टी-पेज लेआउट
|
||||||
home.pageLayout.desc=पीडीएफ़ दस्तावेज़ के कई पेजों को एक ही पेज में मर्ज करता है।
|
home.pageLayout.desc=पीडीएफ़ दस्तावेज़ के कई पेजों को एक ही पेज में मर्ज करता है।
|
||||||
pageLayout.tags=मर्ज, संयोजित, एकल दृश्य, संगठित
|
pageLayout.tags=मर्ज, संयोजित, एकल दृश्य, संगठित
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=डाउनलोड
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=कटौती
|
crop.title=कटौती
|
||||||
crop.header=छवि काटो
|
crop.header=क्रॉप पीडीएफ़
|
||||||
crop.submit=प्रस्तुत करें
|
crop.submit=प्रस्तुत करें
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=नाम
|
||||||
certSign.submit=पीडीएफ़ पर हस्ताक्षर करें
|
certSign.submit=पीडीएफ़ पर हस्ताक्षर करें
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=खाली पेज हटाएं
|
removeBlanks.title=खाली पेज हटाएं
|
||||||
removeBlanks.header=खाली पेज हटाएं
|
removeBlanks.header=खाली पेज हटाएं
|
||||||
|
|
1081
src/main/resources/messages_hr_HR.properties
Normal file
|
@ -332,6 +332,10 @@ home.certSign.title=Aláírás Tanúsítvánnyal
|
||||||
home.certSign.desc=PDF aláírása tanúsítvánnyal/kulccsal (PEM/P12)
|
home.certSign.desc=PDF aláírása tanúsítvánnyal/kulccsal (PEM/P12)
|
||||||
certSign.tags=hitelesítés,PEM,P12,hivatalos,segitít,álca
|
certSign.tags=hitelesítés,PEM,P12,hivatalos,segitít,álca
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Több oldal elrendezése
|
home.pageLayout.title=Több oldal elrendezése
|
||||||
home.pageLayout.desc=Több oldal egyesítése egy PDF dokumentumban egyetlen oldallá
|
home.pageLayout.desc=Több oldal egyesítése egy PDF dokumentumban egyetlen oldallá
|
||||||
pageLayout.tags=egyesítés,kompozit,egy oldal,megszervez
|
pageLayout.tags=egyesítés,kompozit,egy oldal,megszervez
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Letöltés
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Körülvágás
|
crop.title=Körülvágás
|
||||||
crop.header=Kép körülvégésa
|
crop.header=Crop PDF
|
||||||
crop.submit=Elküldés
|
crop.submit=Elküldés
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Név
|
||||||
certSign.submit=PDF aláírása
|
certSign.submit=PDF aláírása
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Üres oldalak eltávolítása
|
removeBlanks.title=Üres oldalak eltávolítása
|
||||||
removeBlanks.header=Üres oldalak eltávolítása
|
removeBlanks.header=Üres oldalak eltávolítása
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Tanda tangani dengan Sertifikat
|
||||||
home.certSign.desc=Menandatangani PDF dengan Certificate/Key (PEM/P12)
|
home.certSign.desc=Menandatangani PDF dengan Certificate/Key (PEM/P12)
|
||||||
certSign.tags=mengotentikasi, PEM, P12, resmi, mengenkripsi
|
certSign.tags=mengotentikasi, PEM, P12, resmi, mengenkripsi
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Tata Letak Multi-Halaman
|
home.pageLayout.title=Tata Letak Multi-Halaman
|
||||||
home.pageLayout.desc=Menggabungkan beberapa halaman dokumen PDF menjadi satu halaman
|
home.pageLayout.desc=Menggabungkan beberapa halaman dokumen PDF menjadi satu halaman
|
||||||
pageLayout.tags=menggabungkan, komposit, tampilan tunggal, mengatur
|
pageLayout.tags=menggabungkan, komposit, tampilan tunggal, mengatur
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Unduh
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Pangkas
|
crop.title=Pangkas
|
||||||
crop.header=Pangkas Gambar
|
crop.header=Pangkas PDF
|
||||||
crop.submit=Kirim
|
crop.submit=Kirim
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Nama
|
||||||
certSign.submit=Tanda tangani PDF
|
certSign.submit=Tanda tangani PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Hapus Halaman Kosong
|
removeBlanks.title=Hapus Halaman Kosong
|
||||||
removeBlanks.header=Remove Blank Pages
|
removeBlanks.header=Remove Blank Pages
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Firma con certificato
|
||||||
home.certSign.desc=Firma un PDF con un certificato/chiave (PEM/P12)
|
home.certSign.desc=Firma un PDF con un certificato/chiave (PEM/P12)
|
||||||
certSign.tags=autenticare,PEM,P12,ufficiale,crittografare
|
certSign.tags=autenticare,PEM,P12,ufficiale,crittografare
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Layout multipagina
|
home.pageLayout.title=Layout multipagina
|
||||||
home.pageLayout.desc=Unisci più pagine di un documento PDF in un'unica pagina
|
home.pageLayout.desc=Unisci più pagine di un documento PDF in un'unica pagina
|
||||||
pageLayout.tags=unire,comporre,visualizzazione singola,organizzare
|
pageLayout.tags=unire,comporre,visualizzazione singola,organizzare
|
||||||
|
@ -417,7 +421,7 @@ autoSizeSplitPDF.tags=pdf,diviso,documento,organizzazione
|
||||||
|
|
||||||
home.overlay-pdfs.title=Sovrapposizione di PDF
|
home.overlay-pdfs.title=Sovrapposizione di PDF
|
||||||
home.overlay-pdfs.desc=Sovrappone i PDF sopra un altro PDF
|
home.overlay-pdfs.desc=Sovrappone i PDF sopra un altro PDF
|
||||||
overlay-pdfs.tags=Svrapponi
|
overlay-pdfs.tags=Sovrapponi
|
||||||
|
|
||||||
home.split-by-sections.title=Dividi PDF per sezioni
|
home.split-by-sections.title=Dividi PDF per sezioni
|
||||||
home.split-by-sections.desc=Dividi ciascuna pagina di un PDF in sezioni orizzontali e verticali più piccole
|
home.split-by-sections.desc=Dividi ciascuna pagina di un PDF in sezioni orizzontali e verticali più piccole
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Risposta relativa alle informazioni utente n
|
||||||
login.oauth2invalidRequest=Richiesta non valida
|
login.oauth2invalidRequest=Richiesta non valida
|
||||||
login.oauth2AccessDenied=Accesso negato
|
login.oauth2AccessDenied=Accesso negato
|
||||||
login.oauth2InvalidTokenResponse=Risposta token non valida
|
login.oauth2InvalidTokenResponse=Risposta token non valida
|
||||||
|
login.oauth2InvalidIdToken=Id Token non valido
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Download
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Ritaglia
|
crop.title=Ritaglia
|
||||||
crop.header=Ritaglia l'immagine
|
crop.header=Ritaglia PDF
|
||||||
crop.submit=Invia
|
crop.submit=Invia
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Nome
|
||||||
certSign.submit=Firma PDF
|
certSign.submit=Firma PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Rimuovi spazi vuoti
|
removeBlanks.title=Rimuovi spazi vuoti
|
||||||
removeBlanks.header=Rimuovi pagine vuote
|
removeBlanks.header=Rimuovi pagine vuote
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=証明書による署名
|
||||||
home.certSign.desc=証明書/キーを使用してPDFに署名します。 (PEM/P12)
|
home.certSign.desc=証明書/キーを使用してPDFに署名します。 (PEM/P12)
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=マルチページレイアウト
|
home.pageLayout.title=マルチページレイアウト
|
||||||
home.pageLayout.desc=PDFの複数のページを1ページに結合します。
|
home.pageLayout.desc=PDFの複数のページを1ページに結合します。
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=ダウンロード
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=切り抜き
|
crop.title=切り抜き
|
||||||
crop.header=画像の切り抜き
|
crop.header=PDFのトリミング
|
||||||
crop.submit=送信
|
crop.submit=送信
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=名前
|
||||||
certSign.submit=PDFに署名
|
certSign.submit=PDFに署名
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=空白の削除
|
removeBlanks.title=空白の削除
|
||||||
removeBlanks.header=空白ページの削除
|
removeBlanks.header=空白ページの削除
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=인증서로 서명
|
||||||
home.certSign.desc=PDF 문서에 인증서 또는 키로 서명합니다. (PEM/P12)
|
home.certSign.desc=PDF 문서에 인증서 또는 키로 서명합니다. (PEM/P12)
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=다중 페이지 레이아웃
|
home.pageLayout.title=다중 페이지 레이아웃
|
||||||
home.pageLayout.desc=PDF 문서의 여러 페이지를 한 페이지로 합칩니다.
|
home.pageLayout.desc=PDF 문서의 여러 페이지를 한 페이지로 합칩니다.
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=다운로드
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=잘라내기
|
crop.title=잘라내기
|
||||||
crop.header=잘라내기
|
crop.header=PDF 잘라내기
|
||||||
crop.submit=확인
|
crop.submit=확인
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=이름
|
||||||
certSign.submit=PDF 서명
|
certSign.submit=PDF 서명
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=빈 페이지 제거
|
removeBlanks.title=빈 페이지 제거
|
||||||
removeBlanks.header=빈 페이지 제거
|
removeBlanks.header=빈 페이지 제거
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Ondertekenen met certificaat
|
||||||
home.certSign.desc=Ondertekent een PDF met een certificaat/sleutel (PEM/P12)
|
home.certSign.desc=Ondertekent een PDF met een certificaat/sleutel (PEM/P12)
|
||||||
certSign.tags=authenticeren,PEM,P12,officieel,versleutelen
|
certSign.tags=authenticeren,PEM,P12,officieel,versleutelen
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Multi-pagina indeling
|
home.pageLayout.title=Multi-pagina indeling
|
||||||
home.pageLayout.desc=Voeg meerdere pagina's van een PDF-document samen op één pagina
|
home.pageLayout.desc=Voeg meerdere pagina's van een PDF-document samen op één pagina
|
||||||
pageLayout.tags=samenvoegen,composiet,enkel-zicht,organiseren
|
pageLayout.tags=samenvoegen,composiet,enkel-zicht,organiseren
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Downloaden
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Bijwerken
|
crop.title=Bijwerken
|
||||||
crop.header=Afbeelding bijwerken
|
crop.header=PDF bijsnijden
|
||||||
crop.submit=Indienen
|
crop.submit=Indienen
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Naam
|
||||||
certSign.submit=PDF ondertekenen
|
certSign.submit=PDF ondertekenen
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Verwijder blanco's
|
removeBlanks.title=Verwijder blanco's
|
||||||
removeBlanks.header=Verwijder lege pagina's
|
removeBlanks.header=Verwijder lege pagina's
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Podpisz certyfikatem
|
||||||
home.certSign.desc=Podpisz dokument PDF za pomocą certyfikatu/klucza prywatnego (PEM/P12)
|
home.certSign.desc=Podpisz dokument PDF za pomocą certyfikatu/klucza prywatnego (PEM/P12)
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Układ wielu stron
|
home.pageLayout.title=Układ wielu stron
|
||||||
home.pageLayout.desc=Scal wiele stron dokumentu PDF w jedną stronę
|
home.pageLayout.desc=Scal wiele stron dokumentu PDF w jedną stronę
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Download
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Crop
|
crop.title=Crop
|
||||||
crop.header=Crop Image
|
crop.header=Crop PDF
|
||||||
crop.submit=Submit
|
crop.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Nazwa
|
||||||
certSign.submit=Podpisz PDF
|
certSign.submit=Podpisz PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Usuń puste
|
removeBlanks.title=Usuń puste
|
||||||
removeBlanks.header=Usuń puste strony
|
removeBlanks.header=Usuń puste strony
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Assinar com Certificado
|
||||||
home.certSign.desc=Assinar um PDF com um Certificado/Chave (PEM/P12)
|
home.certSign.desc=Assinar um PDF com um Certificado/Chave (PEM/P12)
|
||||||
certSign.tags=autenticar,PEM,P12,oficial,criptografar
|
certSign.tags=autenticar,PEM,P12,oficial,criptografar
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Layout de Múltiplas Páginas
|
home.pageLayout.title=Layout de Múltiplas Páginas
|
||||||
home.pageLayout.desc=Mesclar várias páginas de um documento PDF em uma única página
|
home.pageLayout.desc=Mesclar várias páginas de um documento PDF em uma única página
|
||||||
pageLayout.tags=mesclar,composto,vista-única,organizar
|
pageLayout.tags=mesclar,composto,vista-única,organizar
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Download
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Cortar
|
crop.title=Cortar
|
||||||
crop.header=Cortar Imagem
|
crop.header=Cortar PDF
|
||||||
crop.submit=Enviar
|
crop.submit=Enviar
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Nome
|
||||||
certSign.submit=Assinar PDF
|
certSign.submit=Assinar PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Remover Páginas em Branco
|
removeBlanks.title=Remover Páginas em Branco
|
||||||
removeBlanks.header=Remover Páginas em Branco
|
removeBlanks.header=Remover Páginas em Branco
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Assinar com Certificado
|
||||||
home.certSign.desc=Assinar um PDF com um Certificado/Chave (PEM/P12)
|
home.certSign.desc=Assinar um PDF com um Certificado/Chave (PEM/P12)
|
||||||
certSign.tags=autenticar,PEM,P12,oficial,criptografar
|
certSign.tags=autenticar,PEM,P12,oficial,criptografar
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Layout de Múltiplas Páginas
|
home.pageLayout.title=Layout de Múltiplas Páginas
|
||||||
home.pageLayout.desc=Juntar várias páginas de um documento PDF em uma única página
|
home.pageLayout.desc=Juntar várias páginas de um documento PDF em uma única página
|
||||||
pageLayout.tags=juntar,composto,vista-única,organizar
|
pageLayout.tags=juntar,composto,vista-única,organizar
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Download
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Cortar
|
crop.title=Cortar
|
||||||
crop.header=Cortar Imagem
|
crop.header=Cortar PDF
|
||||||
crop.submit=Enviar
|
crop.submit=Enviar
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Nome
|
||||||
certSign.submit=Assinar PDF
|
certSign.submit=Assinar PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Remover Páginas em Branco
|
removeBlanks.title=Remover Páginas em Branco
|
||||||
removeBlanks.header=Remover Páginas em Branco
|
removeBlanks.header=Remover Páginas em Branco
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Semnare cu certificat
|
||||||
home.certSign.desc=Semnează un PDF cu un certificat/cheie (PEM/P12)
|
home.certSign.desc=Semnează un PDF cu un certificat/cheie (PEM/P12)
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Multi-Page Layout
|
home.pageLayout.title=Multi-Page Layout
|
||||||
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Download
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Crop
|
crop.title=Crop
|
||||||
crop.header=Crop Image
|
crop.header=Crop PDF
|
||||||
crop.submit=Submit
|
crop.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Numele
|
||||||
certSign.submit=Semnează PDF
|
certSign.submit=Semnează PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Elimină pagini goale
|
removeBlanks.title=Elimină pagini goale
|
||||||
removeBlanks.header=Elimină pagini goale
|
removeBlanks.header=Elimină pagini goale
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Подписать сертификатом
|
||||||
home.certSign.desc=Подписать PDF сертификатом/ключом (PEM/P12)
|
home.certSign.desc=Подписать PDF сертификатом/ключом (PEM/P12)
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Объединить страницы
|
home.pageLayout.title=Объединить страницы
|
||||||
home.pageLayout.desc=Объединение нескольких страниц документа PDF в одну страницу
|
home.pageLayout.desc=Объединение нескольких страниц документа PDF в одну страницу
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Скачать
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Обрезать
|
crop.title=Обрезать
|
||||||
crop.header=Обрезать изображение
|
crop.header=Обрезать PDF-файл
|
||||||
crop.submit=Отправить
|
crop.submit=Отправить
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Имя
|
||||||
certSign.submit=Подписать PDF
|
certSign.submit=Подписать PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Удалить Пустые
|
removeBlanks.title=Удалить Пустые
|
||||||
removeBlanks.header=Удалить Пустые Страницы
|
removeBlanks.header=Удалить Пустые Страницы
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Podpísať s certifikátom
|
||||||
home.certSign.desc=Podpísať PDF s certifikátom/kľúčom (PEM/P12)
|
home.certSign.desc=Podpísať PDF s certifikátom/kľúčom (PEM/P12)
|
||||||
certSign.tags=autentifikovať,PEM,P12,oficiálne,šifrovať
|
certSign.tags=autentifikovať,PEM,P12,oficiálne,šifrovať
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Viacstranové usporiadanie
|
home.pageLayout.title=Viacstranové usporiadanie
|
||||||
home.pageLayout.desc=Zlúčte viacero stránok PDF dokumentu do jednej stránky
|
home.pageLayout.desc=Zlúčte viacero stránok PDF dokumentu do jednej stránky
|
||||||
pageLayout.tags=zlúčiť,zjednotiť,jednostranový pohľad,organizovať
|
pageLayout.tags=zlúčiť,zjednotiť,jednostranový pohľad,organizovať
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Stiahnuť
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Orezať
|
crop.title=Orezať
|
||||||
crop.header=Orezať obrázok
|
crop.header=Orezať PDF
|
||||||
crop.submit=Odoslať
|
crop.submit=Odoslať
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Meno
|
||||||
certSign.submit=Podpísať PDF
|
certSign.submit=Podpísať PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Odstrániť prázdne stránky
|
removeBlanks.title=Odstrániť prázdne stránky
|
||||||
removeBlanks.header=Odstrániť prázdne stránky
|
removeBlanks.header=Odstrániť prázdne stránky
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Potpis sa sertifikatom
|
||||||
home.certSign.desc=Potpisuje PDF sa sertifikatom/ključem (PEM/P12)
|
home.certSign.desc=Potpisuje PDF sa sertifikatom/ključem (PEM/P12)
|
||||||
certSign.tags=autentifikacija,PEM,P12,zvanično,šifrovanje
|
certSign.tags=autentifikacija,PEM,P12,zvanično,šifrovanje
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Višestruki prikaz stranica
|
home.pageLayout.title=Višestruki prikaz stranica
|
||||||
home.pageLayout.desc=Spaja više stranica PDF dokumenta u jednu stranicu
|
home.pageLayout.desc=Spaja više stranica PDF dokumenta u jednu stranicu
|
||||||
pageLayout.tags=spajanje,kompozit,pojedinačan-prikaz,organizacija
|
pageLayout.tags=spajanje,kompozit,pojedinačan-prikaz,organizacija
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Preuzmi
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Iseci
|
crop.title=Iseci
|
||||||
crop.header=Iseci Sliku
|
crop.header=Skraćivanje PDF-a
|
||||||
crop.submit=Potvrdi
|
crop.submit=Potvrdi
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Ime
|
||||||
certSign.submit=Potpiši PDF
|
certSign.submit=Potpiši PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Ukloni prazne stranice
|
removeBlanks.title=Ukloni prazne stranice
|
||||||
removeBlanks.header=Ukloni prazne stranice
|
removeBlanks.header=Ukloni prazne stranice
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Sign with Certificate
|
||||||
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Multi-Page Layout
|
home.pageLayout.title=Multi-Page Layout
|
||||||
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Download
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Crop
|
crop.title=Crop
|
||||||
crop.header=Crop Image
|
crop.header=Crop PDF
|
||||||
crop.submit=Submit
|
crop.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Namn
|
||||||
certSign.submit=Skriv under PDF
|
certSign.submit=Skriv under PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Ta bort tomrum
|
removeBlanks.title=Ta bort tomrum
|
||||||
removeBlanks.header=Ta bort tomma sidor
|
removeBlanks.header=Ta bort tomma sidor
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Sertifika ile İmzala
|
||||||
home.certSign.desc=Bir PDF'i Sertifika/Anahtar (PEM/P12) ile imzalar
|
home.certSign.desc=Bir PDF'i Sertifika/Anahtar (PEM/P12) ile imzalar
|
||||||
certSign.tags=doğrula,PEM,P12,resmi,şifrele
|
certSign.tags=doğrula,PEM,P12,resmi,şifrele
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Çoklu-Sayfa Düzeni
|
home.pageLayout.title=Çoklu-Sayfa Düzeni
|
||||||
home.pageLayout.desc=Bir PDF belgesinin çoklu sayfalarını tek bir sayfada birleştirir
|
home.pageLayout.desc=Bir PDF belgesinin çoklu sayfalarını tek bir sayfada birleştirir
|
||||||
pageLayout.tags=birleştir,kompozit,tek-görünüm,düzenle
|
pageLayout.tags=birleştir,kompozit,tek-görünüm,düzenle
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=İndir
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Kırp
|
crop.title=Kırp
|
||||||
crop.header=Resmi Kırp
|
crop.header=PDF'i Kırp
|
||||||
crop.submit=Gönder
|
crop.submit=Gönder
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=İsim
|
||||||
certSign.submit=PDF'i İmzala
|
certSign.submit=PDF'i İmzala
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Boşları Kaldır
|
removeBlanks.title=Boşları Kaldır
|
||||||
removeBlanks.header=Boş Sayfaları Kaldır
|
removeBlanks.header=Boş Sayfaları Kaldır
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=Підписати сертифікатом
|
||||||
home.certSign.desc=Підписати PDF сертифікатом/ключем (PEM/P12)
|
home.certSign.desc=Підписати PDF сертифікатом/ключем (PEM/P12)
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Об'єднати сторінки
|
home.pageLayout.title=Об'єднати сторінки
|
||||||
home.pageLayout.desc=Об'єднання кількох сторінок документа PDF в одну сторінку
|
home.pageLayout.desc=Об'єднання кількох сторінок документа PDF в одну сторінку
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=Завантажити
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Обрізати
|
crop.title=Обрізати
|
||||||
crop.header=Обрізати зображення
|
crop.header=Обрізати PDF-файл
|
||||||
crop.submit=Надіслати
|
crop.submit=Надіслати
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=Ім'я
|
||||||
certSign.submit=Підписати PDF
|
certSign.submit=Підписати PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Видалити порожні
|
removeBlanks.title=Видалити порожні
|
||||||
removeBlanks.header=Видалити порожні сторінки
|
removeBlanks.header=Видалити порожні сторінки
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=使用证书签署
|
||||||
home.certSign.desc=使用证书/密钥(PEM/P12)对PDF进行签署
|
home.certSign.desc=使用证书/密钥(PEM/P12)对PDF进行签署
|
||||||
certSign.tags=身份验证、PEM、P12、官方、加密
|
certSign.tags=身份验证、PEM、P12、官方、加密
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=多页布局
|
home.pageLayout.title=多页布局
|
||||||
home.pageLayout.desc=将PDF文档的多个页面合并成一页
|
home.pageLayout.desc=将PDF文档的多个页面合并成一页
|
||||||
pageLayout.tags=合并、组合、单视图、整理
|
pageLayout.tags=合并、组合、单视图、整理
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=下载
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=裁剪
|
crop.title=裁剪
|
||||||
crop.header=裁剪图像
|
crop.header=裁剪PDF
|
||||||
crop.submit=提交
|
crop.submit=提交
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=名称
|
||||||
certSign.submit=签署 PDF
|
certSign.submit=签署 PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=删除空白
|
removeBlanks.title=删除空白
|
||||||
removeBlanks.header=删除空白页
|
removeBlanks.header=删除空白页
|
||||||
|
|
|
@ -332,6 +332,10 @@ home.certSign.title=使用憑證簽章
|
||||||
home.certSign.desc=使用憑證/金鑰(PEM/P12)簽章 PDF
|
home.certSign.desc=使用憑證/金鑰(PEM/P12)簽章 PDF
|
||||||
certSign.tags=驗證,PEM,P12,官方,加密
|
certSign.tags=驗證,PEM,P12,官方,加密
|
||||||
|
|
||||||
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=多頁面版面配置
|
home.pageLayout.title=多頁面版面配置
|
||||||
home.pageLayout.desc=將 PDF 檔案的多個頁面合併到單一頁面
|
home.pageLayout.desc=將 PDF 檔案的多個頁面合併到單一頁面
|
||||||
pageLayout.tags=合併,複合,單一檢視,組織
|
pageLayout.tags=合併,複合,單一檢視,組織
|
||||||
|
@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Invalid Request
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Access Denied
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Invalid Token Response
|
||||||
|
login.oauth2InvalidIdToken=Invalid Id Token
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
|
@ -597,7 +602,7 @@ adjustContrast.download=下載
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=裁剪
|
crop.title=裁剪
|
||||||
crop.header=裁剪影像
|
crop.header=裁剪 PDF
|
||||||
crop.submit=送出
|
crop.submit=送出
|
||||||
|
|
||||||
|
|
||||||
|
@ -654,6 +659,13 @@ certSign.name=名稱
|
||||||
certSign.submit=簽章 PDF
|
certSign.submit=簽章 PDF
|
||||||
|
|
||||||
|
|
||||||
|
#removeCertSign
|
||||||
|
removeCertSign.title=Remove Certificate Signature
|
||||||
|
removeCertSign.header=Remove the digital certificate from the PDF
|
||||||
|
removeCertSign.selectPDF=Select a PDF file:
|
||||||
|
removeCertSign.submit=Remove Signature
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=移除空白頁面
|
removeBlanks.title=移除空白頁面
|
||||||
removeBlanks.header=移除空白頁面
|
removeBlanks.header=移除空白頁面
|
||||||
|
|
|
@ -343,6 +343,13 @@
|
||||||
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
||||||
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "jakarta.servlet:jakarta.servlet-api",
|
||||||
|
"moduleUrl": "https://www.eclipse.org",
|
||||||
|
"moduleVersion": "6.0.0",
|
||||||
|
"moduleLicense": "GPL2 w/ CPE",
|
||||||
|
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "jakarta.transaction:jakarta.transaction-api",
|
"moduleName": "jakarta.transaction:jakarta.transaction-api",
|
||||||
"moduleUrl": "https://projects.eclipse.org/projects/ee4j.jta",
|
"moduleUrl": "https://projects.eclipse.org/projects/ee4j.jta",
|
||||||
|
@ -357,6 +364,20 @@
|
||||||
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
||||||
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "jakarta.websocket:jakarta.websocket-api",
|
||||||
|
"moduleUrl": "https://www.eclipse.org",
|
||||||
|
"moduleVersion": "2.1.1",
|
||||||
|
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
||||||
|
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "jakarta.websocket:jakarta.websocket-client-api",
|
||||||
|
"moduleUrl": "https://www.eclipse.org",
|
||||||
|
"moduleVersion": "2.1.1",
|
||||||
|
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
||||||
|
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "jakarta.xml.bind:jakarta.xml.bind-api",
|
"moduleName": "jakarta.xml.bind:jakarta.xml.bind-api",
|
||||||
"moduleUrl": "https://www.eclipse.org",
|
"moduleUrl": "https://www.eclipse.org",
|
||||||
|
@ -452,13 +473,6 @@
|
||||||
"moduleLicense": "Apache-2.0",
|
"moduleLicense": "Apache-2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"moduleName": "org.apache.tomcat.embed:tomcat-embed-core",
|
|
||||||
"moduleUrl": "https://tomcat.apache.org/",
|
|
||||||
"moduleVersion": "10.1.19",
|
|
||||||
"moduleLicense": "Eclipse Public License - v 2.0",
|
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"moduleName": "org.apache.tomcat.embed:tomcat-embed-el",
|
"moduleName": "org.apache.tomcat.embed:tomcat-embed-el",
|
||||||
"moduleUrl": "https://tomcat.apache.org/",
|
"moduleUrl": "https://tomcat.apache.org/",
|
||||||
|
@ -466,13 +480,6 @@
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"moduleName": "org.apache.tomcat.embed:tomcat-embed-websocket",
|
|
||||||
"moduleUrl": "https://tomcat.apache.org/",
|
|
||||||
"moduleVersion": "10.1.19",
|
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"moduleName": "org.apache.xmlgraphics:batik-all",
|
"moduleName": "org.apache.xmlgraphics:batik-all",
|
||||||
"moduleVersion": "1.17",
|
"moduleVersion": "1.17",
|
||||||
|
@ -540,6 +547,188 @@
|
||||||
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
||||||
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-client",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-common",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-server",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-servlet",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty.ee10:jetty-ee10-annotations",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty.ee10:jetty-ee10-plus",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty.ee10:jetty-ee10-servlet",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty.ee10:jetty-ee10-servlets",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty.ee10:jetty-ee10-webapp",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-client",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-common",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-server",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty.websocket:jetty-websocket-jetty-api",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty.websocket:jetty-websocket-jetty-common",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty:jetty-alpn-client",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty:jetty-client",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty:jetty-http",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty:jetty-io",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty:jetty-jndi",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty:jetty-plus",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty:jetty-security",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty:jetty-server",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty:jetty-session",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty:jetty-util",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty:jetty-xml",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.7",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.glassfish.jaxb:jaxb-core",
|
"moduleName": "org.glassfish.jaxb:jaxb-core",
|
||||||
"moduleUrl": "https://www.eclipse.org",
|
"moduleUrl": "https://www.eclipse.org",
|
||||||
|
@ -599,7 +788,21 @@
|
||||||
{
|
{
|
||||||
"moduleName": "org.ow2.asm:asm",
|
"moduleName": "org.ow2.asm:asm",
|
||||||
"moduleUrl": "http://asm.ow2.org",
|
"moduleUrl": "http://asm.ow2.org",
|
||||||
"moduleVersion": "9.3",
|
"moduleVersion": "9.6",
|
||||||
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.ow2.asm:asm-commons",
|
||||||
|
"moduleUrl": "http://asm.ow2.org",
|
||||||
|
"moduleVersion": "9.6",
|
||||||
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.ow2.asm:asm-tree",
|
||||||
|
"moduleUrl": "http://asm.ow2.org",
|
||||||
|
"moduleVersion": "9.6",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
|
@ -705,6 +908,13 @@
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.springframework.boot:spring-boot-starter-jetty",
|
||||||
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
|
"moduleVersion": "3.2.4",
|
||||||
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-json",
|
"moduleName": "org.springframework.boot:spring-boot-starter-json",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
|
@ -740,13 +950,6 @@
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-tomcat",
|
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
|
||||||
"moduleVersion": "3.2.4",
|
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-web",
|
"moduleName": "org.springframework.boot:spring-boot-starter-web",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
padding: 0.75rem 3.5rem;
|
padding: 0.75rem 3.5rem;
|
||||||
border: 0.1rem solid var(--md-sys-color-outline-variant);
|
border: 1px solid var(--md-sys-color-outline-variant);
|
||||||
border-radius: 3rem;
|
border-radius: 3rem;
|
||||||
outline-color: var(--md-sys-color-outline-variant);
|
outline-color: var(--md-sys-color-outline-variant);
|
||||||
}
|
}
|
||||||
|
@ -19,12 +19,12 @@
|
||||||
.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: 30px 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.feature-card {
|
.feature-card {
|
||||||
border: 2px solid var(--md-sys-color-surface-5);
|
border: 1px solid var(--md-sys-color-surface-5);
|
||||||
border-radius: 2rem;
|
border-radius: 1.75rem;
|
||||||
padding: 1.25rem;
|
padding: 1.25rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
@ -47,13 +47,13 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.feature-card .card-text {
|
.feature-card .card-text {
|
||||||
flex: 1;
|
font-size: .875rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.feature-card:hover {
|
.feature-card:hover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transform: scale(1.1);
|
transform: scale(1.08);
|
||||||
box-shadow: var(--md-sys-elevation-3);
|
box-shadow: var(--md-sys-elevation-2);
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-title.text-primary {
|
.card-title.text-primary {
|
||||||
|
@ -79,11 +79,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#tool-text {
|
#tool-text {
|
||||||
margin: 0.5rem 0.5rem 0rem;
|
margin: 0.0rem 0 0 1.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-title {
|
.card-title {
|
||||||
margin-bottom: 1rem;
|
margin-bottom: 1rem;
|
||||||
|
font-size: 1.1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 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 */
|
||||||
|
|
|
@ -75,7 +75,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon-text {
|
.icon-text {
|
||||||
margin-left: 4px;
|
margin-left: 8px;
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
|
@ -187,8 +187,8 @@ td {
|
||||||
.feature-card .nav-icon {
|
.feature-card .nav-icon {
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
font-size: 2rem !important;
|
font-size: 2rem !important;
|
||||||
padding: 0.5rem;
|
padding: 0.75rem;
|
||||||
border-radius: 1.25rem;
|
border-radius: 0.9rem;
|
||||||
color: var(--md-sys-color-surface);
|
color: var(--md-sys-color-surface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -798,6 +798,8 @@ textarea.form-control {
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-link {
|
.nav-link {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
transition: none !important;
|
transition: none !important;
|
||||||
padding: 0.5rem 1rem !important;
|
padding: 0.5rem 1rem !important;
|
||||||
border: 1px transparent;
|
border: 1px transparent;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
.material-symbols-rounded {
|
.material-symbols-rounded {
|
||||||
font-family: 'Material Symbols Rounded';
|
font-family: 'Material Symbols Rounded';
|
||||||
font-weight: normal;
|
font-weight: 300;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
|
|
|
@ -30,5 +30,5 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.no-fill {
|
.no-fill {
|
||||||
font-variation-settings: var(--md-sys-icon-fill-0);
|
/* font-variation-settings: var(--md-sys-icon-fill-0); */
|
||||||
}
|
}
|
58
src/main/resources/static/images/flags/hr.svg
Normal file
After Width: | Height: | Size: 40 KiB |
|
@ -138,7 +138,7 @@ class PdfContainer {
|
||||||
}
|
}
|
||||||
|
|
||||||
async toRenderer(objectUrl) {
|
async toRenderer(objectUrl) {
|
||||||
pdfjsLib.GlobalWorkerOptions.workerSrc = "pdfjs/pdf.worker.js";
|
pdfjsLib.GlobalWorkerOptions.workerSrc = "./pdfjs/pdf.worker.mjs";
|
||||||
const pdf = await pdfjsLib.getDocument(objectUrl).promise;
|
const pdf = await pdfjsLib.getDocument(objectUrl).promise;
|
||||||
return {
|
return {
|
||||||
document: pdf,
|
document: pdf,
|
||||||
|
|
6499
src/main/resources/static/pdfjs/css/viewer.css
vendored
|
@ -1,4 +1,3 @@
|
||||||
<svg width="12" height="13" viewBox="0 0 12 13" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="12" height="13" viewBox="0 0 12 13" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M5.375 7.625V11.875C5.375 12.0408 5.44085 12.1997 5.55806 12.3169C5.67527 12.4342 5.83424 12.5 6 12.5C6.16576 12.5 6.32473 12.4342 6.44194 12.3169C6.55915 12.1997 6.625 12.0408 6.625 11.875V7.625L7.125 7.125H11.375C11.5408 7.125 11.6997 7.05915 11.8169 6.94194C11.9342 6.82473 12 6.66576 12 6.5C12 6.33424 11.9342 6.17527 11.8169 6.05806C11.6997 5.94085 11.5408 5.875 11.375 5.875H7.125L6.625 5.375V1.125C6.625 0.95924 6.55915 0.800269 6.44194 0.683058C6.32473 0.565848 6.16576 0.5 6 0.5C5.83424 0.5 5.67527 0.565848 5.55806 0.683058C5.44085 0.800269 5.375 0.95924 5.375 1.125V5.375L4.875 5.875H0.625C0.45924 5.875 0.300269 5.94085 0.183058 6.05806C0.065848 6.17527 0 6.33424 0 6.5C0 6.66576 0.065848 6.82473 0.183058 6.94194C0.300269 7.05915 0.45924 7.125 0.625 7.125H4.762L5.375 7.625Z"
|
<path d="M5.375 7.625V11.875C5.375 12.0408 5.44085 12.1997 5.55806 12.3169C5.67527 12.4342 5.83424 12.5 6 12.5C6.16576 12.5 6.32473 12.4342 6.44194 12.3169C6.55915 12.1997 6.625 12.0408 6.625 11.875V7.625L7.125 7.125H11.375C11.5408 7.125 11.6997 7.05915 11.8169 6.94194C11.9342 6.82473 12 6.66576 12 6.5C12 6.33424 11.9342 6.17527 11.8169 6.05806C11.6997 5.94085 11.5408 5.875 11.375 5.875H7.125L6.625 5.375V1.125C6.625 0.95924 6.55915 0.800269 6.44194 0.683058C6.32473 0.565848 6.16576 0.5 6 0.5C5.83424 0.5 5.67527 0.565848 5.55806 0.683058C5.44085 0.800269 5.375 0.95924 5.375 1.125V5.375L4.875 5.875H0.625C0.45924 5.875 0.300269 5.94085 0.183058 6.05806C0.065848 6.17527 0 6.33424 0 6.5C0 6.66576 0.065848 6.82473 0.183058 6.94194C0.300269 7.05915 0.45924 7.125 0.625 7.125H4.762L5.375 7.625Z" fill="black"/>
|
||||||
fill="black"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 930 B After Width: | Height: | Size: 920 B |
|
@ -1,4 +1,3 @@
|
||||||
<svg width="12" height="13" viewBox="0 0 12 13" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="12" height="13" viewBox="0 0 12 13" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M6 0.5C5.21207 0.5 4.43185 0.655195 3.7039 0.956723C2.97595 1.25825 2.31451 1.70021 1.75736 2.25736C1.20021 2.81451 0.758251 3.47595 0.456723 4.2039C0.155195 4.93185 0 5.71207 0 6.5C0 7.28793 0.155195 8.06815 0.456723 8.7961C0.758251 9.52405 1.20021 10.1855 1.75736 10.7426C2.31451 11.2998 2.97595 11.7417 3.7039 12.0433C4.43185 12.3448 5.21207 12.5 6 12.5C7.5913 12.5 9.11742 11.8679 10.2426 10.7426C11.3679 9.61742 12 8.0913 12 6.5C12 4.9087 11.3679 3.38258 10.2426 2.25736C9.11742 1.13214 7.5913 0.5 6 0.5ZM5.06 8.9L2.9464 6.7856C2.85273 6.69171 2.80018 6.56446 2.80033 6.43183C2.80048 6.29921 2.85331 6.17207 2.9472 6.0784C3.04109 5.98473 3.16834 5.93218 3.30097 5.93233C3.43359 5.93248 3.56073 5.98531 3.6544 6.0792L5.3112 7.7368L8.3464 4.7008C8.44109 4.6109 8.56715 4.56153 8.69771 4.56322C8.82827 4.56492 8.95301 4.61754 9.04534 4.70986C9.13766 4.80219 9.19028 4.92693 9.19198 5.05749C9.19367 5.18805 9.1443 5.31411 9.0544 5.4088L5.5624 8.9H5.06Z"
|
<path d="M6 0.5C5.21207 0.5 4.43185 0.655195 3.7039 0.956723C2.97595 1.25825 2.31451 1.70021 1.75736 2.25736C1.20021 2.81451 0.758251 3.47595 0.456723 4.2039C0.155195 4.93185 0 5.71207 0 6.5C0 7.28793 0.155195 8.06815 0.456723 8.7961C0.758251 9.52405 1.20021 10.1855 1.75736 10.7426C2.31451 11.2998 2.97595 11.7417 3.7039 12.0433C4.43185 12.3448 5.21207 12.5 6 12.5C7.5913 12.5 9.11742 11.8679 10.2426 10.7426C11.3679 9.61742 12 8.0913 12 6.5C12 4.9087 11.3679 3.38258 10.2426 2.25736C9.11742 1.13214 7.5913 0.5 6 0.5ZM5.06 8.9L2.9464 6.7856C2.85273 6.69171 2.80018 6.56446 2.80033 6.43183C2.80048 6.29921 2.85331 6.17207 2.9472 6.0784C3.04109 5.98473 3.16834 5.93218 3.30097 5.93233C3.43359 5.93248 3.56073 5.98531 3.6544 6.0792L5.3112 7.7368L8.3464 4.7008C8.44109 4.6109 8.56715 4.56153 8.69771 4.56322C8.82827 4.56492 8.95301 4.61754 9.04534 4.70986C9.13766 4.80219 9.19028 4.92693 9.19198 5.05749C9.19367 5.18805 9.1443 5.31411 9.0544 5.4088L5.5624 8.9H5.06Z" fill="#FBFBFE"/>
|
||||||
fill="#FBFBFE"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
@ -7,5 +7,5 @@
|
||||||
<path
|
<path
|
||||||
d="M 1.5006714,23.536225 6.8925879,18.994244 14.585721,26.037937 34.019683,4.5410479 38.499329,9.2235032 14.585721,35.458952 z"
|
d="M 1.5006714,23.536225 6.8925879,18.994244 14.585721,26.037937 34.019683,4.5410479 38.499329,9.2235032 14.585721,35.458952 z"
|
||||||
id="path4"
|
id="path4"
|
||||||
style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1.25402856;stroke-opacity:1"/>
|
style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1.25402856;stroke-opacity:1" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 449 B After Width: | Height: | Size: 415 B |
|
@ -9,7 +9,7 @@
|
||||||
width="33.76017"
|
width="33.76017"
|
||||||
height="33.76017"
|
height="33.76017"
|
||||||
x="3.119915"
|
x="3.119915"
|
||||||
y="3.119915"/>
|
y="3.119915" />
|
||||||
<path
|
<path
|
||||||
d="m 20.677967,8.54499 c -7.342801,0 -13.295293,4.954293 -13.295293,11.065751 0,2.088793 0.3647173,3.484376 1.575539,5.150563 L 6.0267418,31.45501 13.560595,29.011117 c 2.221262,1.387962 4.125932,1.665377 7.117372,1.665377 7.3428,0 13.295291,-4.954295 13.295291,-11.065753 0,-6.111458 -5.952491,-11.065751 -13.295291,-11.065751 z"
|
d="m 20.677967,8.54499 c -7.342801,0 -13.295293,4.954293 -13.295293,11.065751 0,2.088793 0.3647173,3.484376 1.575539,5.150563 L 6.0267418,31.45501 13.560595,29.011117 c 2.221262,1.387962 4.125932,1.665377 7.117372,1.665377 7.3428,0 13.295291,-4.954295 13.295291,-11.065753 0,-6.111458 -5.952491,-11.065751 -13.295291,-11.065751 z"
|
||||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.93031836;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/>
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.93031836;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/>
|
||||||
|
|
Before Width: | Height: | Size: 937 B After Width: | Height: | Size: 883 B |
|
@ -12,15 +12,15 @@
|
||||||
height="34.805603"
|
height="34.805603"
|
||||||
x="1.7695236"
|
x="1.7695236"
|
||||||
y="62.597198"
|
y="62.597198"
|
||||||
style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.30826771;stroke-opacity:1"/>
|
style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.30826771;stroke-opacity:1" />
|
||||||
<g
|
<g
|
||||||
transform="matrix(0.88763677,0,0,0.88763677,2.2472646,8.9890584)">
|
transform="matrix(0.88763677,0,0,0.88763677,2.2472646,8.9890584)">
|
||||||
<path
|
<path
|
||||||
d="M 20,64.526342 C 11.454135,64.526342 4.5263421,71.454135 4.5263421,80 4.5263421,88.545865 11.454135,95.473658 20,95.473658 28.545865,95.473658 35.473658,88.545865 35.473658,80 35.473658,71.454135 28.545865,64.526342 20,64.526342 z m -0.408738,9.488564 c 3.527079,0 6.393832,2.84061 6.393832,6.335441 0,3.494831 -2.866753,6.335441 -6.393832,6.335441 -3.527079,0 -6.393832,-2.84061 -6.393832,-6.335441 0,-3.494831 2.866753,-6.335441 6.393832,-6.335441 z"
|
d="M 20,64.526342 C 11.454135,64.526342 4.5263421,71.454135 4.5263421,80 4.5263421,88.545865 11.454135,95.473658 20,95.473658 28.545865,95.473658 35.473658,88.545865 35.473658,80 35.473658,71.454135 28.545865,64.526342 20,64.526342 z m -0.408738,9.488564 c 3.527079,0 6.393832,2.84061 6.393832,6.335441 0,3.494831 -2.866753,6.335441 -6.393832,6.335441 -3.527079,0 -6.393832,-2.84061 -6.393832,-6.335441 0,-3.494831 2.866753,-6.335441 6.393832,-6.335441 z"
|
||||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.02768445;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/>
|
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.02768445;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
<path
|
<path
|
||||||
d="m 7.2335209,71.819938 4.9702591,4.161823 c -1.679956,2.581606 -1.443939,6.069592 0.159325,8.677725 l -5.1263071,3.424463 c 0.67516,1.231452 3.0166401,3.547686 4.2331971,4.194757 l 3.907728,-4.567277 c 2.541952,1.45975 5.730694,1.392161 8.438683,-0.12614 l 3.469517,6.108336 c 1.129779,-0.44367 4.742234,-3.449633 5.416358,-5.003859 l -5.46204,-4.415541 c 1.44319,-2.424098 1.651175,-5.267515 0.557303,-7.748623 l 5.903195,-3.833951 C 33.14257,71.704996 30.616217,69.018606 29.02952,67.99296 l -4.118813,4.981678 C 22.411934,71.205099 18.900853,70.937534 16.041319,72.32916 l -3.595408,-5.322091 c -1.345962,0.579488 -4.1293881,2.921233 -5.2123901,4.812869 z m 8.1010311,3.426672 c 2.75284,-2.446266 6.769149,-2.144694 9.048998,0.420874 2.279848,2.56557 2.113919,6.596919 -0.638924,9.043185 -2.752841,2.446267 -6.775754,2.13726 -9.055604,-0.428308 -2.279851,-2.565568 -2.107313,-6.589485 0.64553,-9.035751 z"
|
d="m 7.2335209,71.819938 4.9702591,4.161823 c -1.679956,2.581606 -1.443939,6.069592 0.159325,8.677725 l -5.1263071,3.424463 c 0.67516,1.231452 3.0166401,3.547686 4.2331971,4.194757 l 3.907728,-4.567277 c 2.541952,1.45975 5.730694,1.392161 8.438683,-0.12614 l 3.469517,6.108336 c 1.129779,-0.44367 4.742234,-3.449633 5.416358,-5.003859 l -5.46204,-4.415541 c 1.44319,-2.424098 1.651175,-5.267515 0.557303,-7.748623 l 5.903195,-3.833951 C 33.14257,71.704996 30.616217,69.018606 29.02952,67.99296 l -4.118813,4.981678 C 22.411934,71.205099 18.900853,70.937534 16.041319,72.32916 l -3.595408,-5.322091 c -1.345962,0.579488 -4.1293881,2.921233 -5.2123901,4.812869 z m 8.1010311,3.426672 c 2.75284,-2.446266 6.769149,-2.144694 9.048998,0.420874 2.279848,2.56557 2.113919,6.596919 -0.638924,9.043185 -2.752841,2.446267 -6.775754,2.13726 -9.055604,-0.428308 -2.279851,-2.565568 -2.107313,-6.589485 0.64553,-9.035751 z"
|
||||||
style="fill:#000000;fill-opacity:1;stroke:none"/>
|
style="fill:#000000;fill-opacity:1;stroke:none" />
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.1 KiB |
|
@ -6,5 +6,5 @@
|
||||||
viewBox="0 0 64 64">
|
viewBox="0 0 64 64">
|
||||||
<path
|
<path
|
||||||
d="M 32.003143,1.4044602 57.432701,62.632577 6.5672991,62.627924 z"
|
d="M 32.003143,1.4044602 57.432701,62.632577 6.5672991,62.627924 z"
|
||||||
style="fill:#ffff00;fill-opacity:0.94117647;fill-rule:nonzero;stroke:#000000;stroke-width:1.00493038;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/>
|
style="fill:#ffff00;fill-opacity:0.94117647;fill-rule:nonzero;stroke:#000000;stroke-width:1.00493038;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 443 B After Width: | Height: | Size: 408 B |
|
@ -7,5 +7,5 @@
|
||||||
<path
|
<path
|
||||||
d="M 25.470843,9.4933766 C 25.30219,12.141818 30.139101,14.445969 34.704831,13.529144 40.62635,12.541995 41.398833,7.3856498 35.97505,5.777863 31.400921,4.1549155 25.157674,6.5445892 25.470843,9.4933766 z M 4.5246282,17.652051 C 4.068249,11.832873 9.2742983,5.9270407 18.437379,3.0977088 29.751911,-0.87185184 45.495663,1.4008022 53.603953,7.1104009 c 9.275765,6.1889221 7.158128,16.2079421 -3.171076,21.5939521 -1.784316,1.635815 -6.380222,1.21421 -7.068351,3.186186 -1.04003,0.972427 -1.288046,2.050158 -1.232864,3.168203 1.015111,2.000108 -3.831548,1.633216 -3.270553,3.759574 0.589477,5.264544 -0.179276,10.53738 -0.362842,15.806257 -0.492006,2.184998 1.163456,4.574232 -0.734888,6.610642 -2.482919,2.325184 -7.30604,2.189143 -9.193497,-0.274767 -2.733688,-1.740626 -8.254447,-3.615254 -6.104247,-6.339626 3.468112,-1.708686 -2.116197,-3.449897 0.431242,-5.080274 5.058402,-1.39256 -2.393215,-2.304318 -0.146889,-4.334645 3.069198,-0.977415 2.056986,-2.518352 -0.219121,-3.540397 1.876567,-1.807151 1.484149,-4.868919 -2.565455,-5.942205 0.150866,-1.805474 2.905737,-4.136876 -1.679967,-5.20493 C 10.260902,27.882167 4.6872697,22.95045 4.5245945,17.652051 z"
|
d="M 25.470843,9.4933766 C 25.30219,12.141818 30.139101,14.445969 34.704831,13.529144 40.62635,12.541995 41.398833,7.3856498 35.97505,5.777863 31.400921,4.1549155 25.157674,6.5445892 25.470843,9.4933766 z M 4.5246282,17.652051 C 4.068249,11.832873 9.2742983,5.9270407 18.437379,3.0977088 29.751911,-0.87185184 45.495663,1.4008022 53.603953,7.1104009 c 9.275765,6.1889221 7.158128,16.2079421 -3.171076,21.5939521 -1.784316,1.635815 -6.380222,1.21421 -7.068351,3.186186 -1.04003,0.972427 -1.288046,2.050158 -1.232864,3.168203 1.015111,2.000108 -3.831548,1.633216 -3.270553,3.759574 0.589477,5.264544 -0.179276,10.53738 -0.362842,15.806257 -0.492006,2.184998 1.163456,4.574232 -0.734888,6.610642 -2.482919,2.325184 -7.30604,2.189143 -9.193497,-0.274767 -2.733688,-1.740626 -8.254447,-3.615254 -6.104247,-6.339626 3.468112,-1.708686 -2.116197,-3.449897 0.431242,-5.080274 5.058402,-1.39256 -2.393215,-2.304318 -0.146889,-4.334645 3.069198,-0.977415 2.056986,-2.518352 -0.219121,-3.540397 1.876567,-1.807151 1.484149,-4.868919 -2.565455,-5.942205 0.150866,-1.805474 2.905737,-4.136876 -1.679967,-5.20493 C 10.260902,27.882167 4.6872697,22.95045 4.5245945,17.652051 z"
|
||||||
id="path604"
|
id="path604"
|
||||||
style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1.72665179;stroke-opacity:1"/>
|
style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1.72665179;stroke-opacity:1" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.4 KiB |
|
@ -7,5 +7,5 @@
|
||||||
<path
|
<path
|
||||||
d="M 32.003143,10.913072 57.432701,53.086929 6.567299,53.083723 z"
|
d="M 32.003143,10.913072 57.432701,53.086929 6.567299,53.083723 z"
|
||||||
id="path2985"
|
id="path2985"
|
||||||
style="fill:#ffff00;fill-opacity:0.94117647;fill-rule:nonzero;stroke:#000000;stroke-width:0.83403099;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/>
|
style="fill:#ffff00;fill-opacity:0.94117647;fill-rule:nonzero;stroke:#000000;stroke-width:0.83403099;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 468 B After Width: | Height: | Size: 426 B |
|
@ -10,33 +10,33 @@
|
||||||
x="1.962286"
|
x="1.962286"
|
||||||
y="4.4517088"
|
y="4.4517088"
|
||||||
id="rect4"
|
id="rect4"
|
||||||
style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.23004246;stroke-opacity:1"/>
|
style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.23004246;stroke-opacity:1" />
|
||||||
<rect
|
<rect
|
||||||
width="27.96859"
|
width="27.96859"
|
||||||
height="1.5012145"
|
height="1.5012145"
|
||||||
x="6.0157046"
|
x="6.0157046"
|
||||||
y="10.285"
|
y="10.285"
|
||||||
id="rect6"
|
id="rect6"
|
||||||
style="fill:#000000;fill-opacity:1;stroke:none"/>
|
style="fill:#000000;fill-opacity:1;stroke:none" />
|
||||||
<rect
|
<rect
|
||||||
width="27.96859"
|
width="27.96859"
|
||||||
height="0.85783684"
|
height="0.85783684"
|
||||||
x="6.0157056"
|
x="6.0157056"
|
||||||
y="23.21689"
|
y="23.21689"
|
||||||
id="rect8"
|
id="rect8"
|
||||||
style="fill:#000000;fill-opacity:1;stroke:none"/>
|
style="fill:#000000;fill-opacity:1;stroke:none" />
|
||||||
<rect
|
<rect
|
||||||
width="27.96859"
|
width="27.96859"
|
||||||
height="0.85783684"
|
height="0.85783684"
|
||||||
x="5.8130345"
|
x="5.8130345"
|
||||||
y="28.964394"
|
y="28.964394"
|
||||||
id="rect10"
|
id="rect10"
|
||||||
style="fill:#000000;fill-opacity:1;stroke:none"/>
|
style="fill:#000000;fill-opacity:1;stroke:none" />
|
||||||
<rect
|
<rect
|
||||||
width="27.96859"
|
width="27.96859"
|
||||||
height="0.85783684"
|
height="0.85783684"
|
||||||
x="6.0157046"
|
x="6.0157046"
|
||||||
y="17.426493"
|
y="17.426493"
|
||||||
id="rect12"
|
id="rect12"
|
||||||
style="fill:#000000;fill-opacity:1;stroke:none"/>
|
style="fill:#000000;fill-opacity:1;stroke:none" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1 KiB |
|
@ -9,8 +9,8 @@
|
||||||
height="33.76017"
|
height="33.76017"
|
||||||
x="3.119915"
|
x="3.119915"
|
||||||
y="3.119915"
|
y="3.119915"
|
||||||
style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/>
|
style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
<path
|
<path
|
||||||
d="m 17.692678,34.50206 0,-16.182224 c -1.930515,-0.103225 -3.455824,-0.730383 -4.57593,-1.881473 -1.12011,-1.151067 -1.680164,-2.619596 -1.680164,-4.405591 0,-1.992435 0.621995,-3.5796849 1.865988,-4.7617553 1.243989,-1.1820288 3.06352,-1.7730536 5.458598,-1.7730764 l 9.802246,0 0,2.6789711 -2.229895,0 0,26.3251486 -2.632515,0 0,-26.3251486 -3.45324,0 0,26.3251486 z"
|
d="m 17.692678,34.50206 0,-16.182224 c -1.930515,-0.103225 -3.455824,-0.730383 -4.57593,-1.881473 -1.12011,-1.151067 -1.680164,-2.619596 -1.680164,-4.405591 0,-1.992435 0.621995,-3.5796849 1.865988,-4.7617553 1.243989,-1.1820288 3.06352,-1.7730536 5.458598,-1.7730764 l 9.802246,0 0,2.6789711 -2.229895,0 0,26.3251486 -2.632515,0 0,-26.3251486 -3.45324,0 0,26.3251486 z"
|
||||||
style="font-size:29.42051125px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.07795751;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial"/>
|
style="font-size:29.42051125px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.07795751;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.1 KiB |
6
src/main/resources/static/pdfjs/images/cursor-editorFreeHighlight.svg
vendored
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<svg width="18" height="19" viewBox="0 0 18 19" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.2 3.09C12.28 3.01 12.43 3 12.43 3C12.48 3 12.58 3.02 12.66 3.1L14.45 4.89C14.58 5.02 14.58 5.22 14.45 5.35L11.7713 8.02872L9.51628 5.77372L12.2 3.09ZM13.2658 5.12L11.7713 6.6145L10.9305 5.77372L12.425 4.27921L13.2658 5.12Z" fill="#FBFBFE"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.98 9.32L8.23 11.57L10.7106 9.08938L8.45562 6.83438L5.98 9.31V9.32ZM8.23 10.1558L9.29641 9.08938L8.45562 8.24859L7.38921 9.315L8.23 10.1558Z" fill="#FBFBFE"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.1526 13.1816L16.2125 7.1217C16.7576 6.58919 17.05 5.8707 17.05 5.12C17.05 4.36931 16.7576 3.65084 16.2126 3.11834L14.4317 1.33747C13.8992 0.79242 13.1807 0.5 12.43 0.5C11.6643 0.5 10.9529 0.812929 10.4329 1.33289L3.68289 8.08289C3.04127 8.72452 3.00459 9.75075 3.57288 10.4363L1.29187 12.7239C1.09186 12.9245 0.990263 13.1957 1.0007 13.4685L1 14.5C0.447715 14.5 0 14.9477 0 15.5V17.5C0 18.0523 0.447715 18.5 1 18.5H16C16.5523 18.5 17 18.0523 17 17.5V15.5C17 14.9477 16.5523 14.5 16 14.5H10.2325C9.83594 14.5 9.39953 13.9347 10.1526 13.1816ZM4.39 9.85L4.9807 10.4407L2.39762 13.0312H6.63877L7.10501 12.565L7.57125 13.0312H8.88875L15.51 6.41C15.86 6.07 16.05 5.61 16.05 5.12C16.05 4.63 15.86 4.17 15.51 3.83L13.72 2.04C13.38 1.69 12.92 1.5 12.43 1.5C11.94 1.5 11.48 1.7 11.14 2.04L4.39 8.79C4.1 9.08 4.1 9.56 4.39 9.85ZM16 17.5V15.5H1V17.5H16Z" fill="#FBFBFE"/>
|
||||||
|
<path d="M15.1616 6.05136L15.1616 6.05132L15.1564 6.05645L8.40645 12.8064C8.35915 12.8537 8.29589 12.88 8.23 12.88C8.16411 12.88 8.10085 12.8537 8.05355 12.8064L7.45857 12.2115L7.10501 11.8579L6.75146 12.2115L6.03289 12.93H3.20465L5.33477 10.7937L5.6873 10.4402L5.33426 10.0871L4.74355 9.49645C4.64882 9.40171 4.64882 9.23829 4.74355 9.14355L11.4936 2.39355C11.7436 2.14354 12.0779 2 12.43 2C12.7883 2 13.1179 2.13776 13.3614 2.38839L13.3613 2.38843L13.3664 2.39355L15.1564 4.18355L15.1564 4.18359L15.1616 4.18864C15.4122 4.43211 15.55 4.76166 15.55 5.12C15.55 5.47834 15.4122 5.80789 15.1616 6.05136ZM7.87645 11.9236L8.23 12.2771L8.58355 11.9236L11.0642 9.44293L11.4177 9.08938L11.0642 8.73582L8.80918 6.48082L8.45562 6.12727L8.10207 6.48082L5.62645 8.95645L5.48 9.10289V9.31V9.32V9.52711L5.62645 9.67355L7.87645 11.9236ZM11.4177 8.38227L11.7713 8.73582L12.1248 8.38227L14.8036 5.70355C15.1288 5.37829 15.1288 4.86171 14.8036 4.53645L13.0136 2.74645C12.8186 2.55146 12.5792 2.5 12.43 2.5H12.4134L12.3967 2.50111L12.43 3C12.3967 2.50111 12.3966 2.50112 12.3965 2.50112L12.3963 2.50114L12.3957 2.50117L12.3947 2.50125L12.3924 2.50142L12.387 2.50184L12.3732 2.50311C12.3628 2.50416 12.3498 2.50567 12.3346 2.50784C12.3049 2.51208 12.2642 2.51925 12.2178 2.53146C12.1396 2.55202 11.9797 2.60317 11.8464 2.73645L9.16273 5.42016L8.80918 5.77372L9.16273 6.12727L11.4177 8.38227ZM1.5 16H15.5V17H1.5V16Z" stroke="#15141A"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.9 KiB |
|
@ -1,4 +1,3 @@
|
||||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M12 2.75H12.5V2.25V1V0.5H12H10.358C9.91165 0.5 9.47731 0.625661 9.09989 0.860442L9.09886 0.861087L8 1.54837L6.89997 0.860979L6.89911 0.860443C6.5218 0.625734 6.08748 0.5 5.642 0.5H4H3.5V1V2.25V2.75H4H5.642C5.66478 2.75 5.6885 2.75641 5.71008 2.76968C5.71023 2.76977 5.71038 2.76986 5.71053 2.76995L6.817 3.461C6.81704 3.46103 6.81709 3.46105 6.81713 3.46108C6.81713 3.46108 6.81713 3.46108 6.81714 3.46109C6.8552 3.48494 6.876 3.52285 6.876 3.567V8V12.433C6.876 12.4771 6.85523 12.515 6.81722 12.5389C6.81715 12.5389 6.81707 12.539 6.817 12.539L5.70953 13.23C5.70941 13.2301 5.70929 13.2302 5.70917 13.2303C5.68723 13.2438 5.6644 13.25 5.641 13.25H4H3.5V13.75V15V15.5H4H5.642C6.08835 15.5 6.52269 15.3743 6.90011 15.1396L6.90086 15.1391L8 14.4526L9.10003 15.14L9.10089 15.1406C9.47831 15.3753 9.91265 15.501 10.359 15.501H12H12.5V15.001V13.751V13.251H12H10.358C10.3352 13.251 10.3115 13.2446 10.2899 13.2313C10.2897 13.2312 10.2896 13.2311 10.2895 13.231L9.183 12.54C9.18298 12.54 9.18295 12.54 9.18293 12.54C9.18291 12.5399 9.18288 12.5399 9.18286 12.5399C9.14615 12.5169 9.125 12.4797 9.125 12.434V8V3.567C9.125 3.52266 9.14603 3.48441 9.18364 3.4606C9.18377 3.46052 9.1839 3.46043 9.18404 3.46035L10.2895 2.76995C10.2896 2.76985 10.2898 2.76975 10.2899 2.76966C10.3119 2.75619 10.3346 2.75 10.358 2.75H12Z"
|
<path d="M12 2.75H12.5V2.25V1V0.5H12H10.358C9.91165 0.5 9.47731 0.625661 9.09989 0.860442L9.09886 0.861087L8 1.54837L6.89997 0.860979L6.89911 0.860443C6.5218 0.625734 6.08748 0.5 5.642 0.5H4H3.5V1V2.25V2.75H4H5.642C5.66478 2.75 5.6885 2.75641 5.71008 2.76968C5.71023 2.76977 5.71038 2.76986 5.71053 2.76995L6.817 3.461C6.81704 3.46103 6.81709 3.46105 6.81713 3.46108C6.81713 3.46108 6.81713 3.46108 6.81714 3.46109C6.8552 3.48494 6.876 3.52285 6.876 3.567V8V12.433C6.876 12.4771 6.85523 12.515 6.81722 12.5389C6.81715 12.5389 6.81707 12.539 6.817 12.539L5.70953 13.23C5.70941 13.2301 5.70929 13.2302 5.70917 13.2303C5.68723 13.2438 5.6644 13.25 5.641 13.25H4H3.5V13.75V15V15.5H4H5.642C6.08835 15.5 6.52269 15.3743 6.90011 15.1396L6.90086 15.1391L8 14.4526L9.10003 15.14L9.10089 15.1406C9.47831 15.3753 9.91265 15.501 10.359 15.501H12H12.5V15.001V13.751V13.251H12H10.358C10.3352 13.251 10.3115 13.2446 10.2899 13.2313C10.2897 13.2312 10.2896 13.2311 10.2895 13.231L9.183 12.54C9.18298 12.54 9.18295 12.54 9.18293 12.54C9.18291 12.5399 9.18288 12.5399 9.18286 12.5399C9.14615 12.5169 9.125 12.4797 9.125 12.434V8V3.567C9.125 3.52266 9.14603 3.48441 9.18364 3.4606C9.18377 3.46052 9.1839 3.46043 9.18404 3.46035L10.2895 2.76995C10.2896 2.76985 10.2898 2.76975 10.2899 2.76966C10.3119 2.75619 10.3346 2.75 10.358 2.75H12Z" fill="black" stroke="white"/>
|
||||||
fill="black" stroke="white"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
@ -1,6 +1,4 @@
|
||||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M0.0189877 13.6645L0.612989 10.4635C0.687989 10.0545 0.884989 9.6805 1.18099 9.3825L9.98199 0.5805C10.756 -0.1925 12.015 -0.1945 12.792 0.5805L14.42 2.2085C15.194 2.9835 15.194 4.2435 14.42 5.0185L5.61599 13.8215C5.31999 14.1165 4.94599 14.3125 4.53799 14.3875L1.33599 14.9815C1.26599 14.9935 1.19799 15.0005 1.12999 15.0005C0.832989 15.0005 0.544988 14.8835 0.330988 14.6695C0.0679874 14.4055 -0.0490122 14.0305 0.0189877 13.6645Z"
|
<path d="M0.0189877 13.6645L0.612989 10.4635C0.687989 10.0545 0.884989 9.6805 1.18099 9.3825L9.98199 0.5805C10.756 -0.1925 12.015 -0.1945 12.792 0.5805L14.42 2.2085C15.194 2.9835 15.194 4.2435 14.42 5.0185L5.61599 13.8215C5.31999 14.1165 4.94599 14.3125 4.53799 14.3875L1.33599 14.9815C1.26599 14.9935 1.19799 15.0005 1.12999 15.0005C0.832989 15.0005 0.544988 14.8835 0.330988 14.6695C0.0679874 14.4055 -0.0490122 14.0305 0.0189877 13.6645Z" fill="white"/>
|
||||||
fill="white"/>
|
<path d="M0.0189877 13.6645L0.612989 10.4635C0.687989 10.0545 0.884989 9.6805 1.18099 9.3825L9.98199 0.5805C10.756 -0.1925 12.015 -0.1945 12.792 0.5805L14.42 2.2085C15.194 2.9835 15.194 4.2435 14.42 5.0185L5.61599 13.8215C5.31999 14.1165 4.94599 14.3125 4.53799 14.3875L1.33599 14.9815C1.26599 14.9935 1.19799 15.0005 1.12999 15.0005C0.832989 15.0005 0.544988 14.8835 0.330988 14.6695C0.0679874 14.4055 -0.0490122 14.0305 0.0189877 13.6645ZM12.472 5.1965L13.632 4.0365L13.631 3.1885L11.811 1.3675L10.963 1.3685L9.80299 2.5285L12.472 5.1965ZM4.31099 13.1585C4.47099 13.1285 4.61799 13.0515 4.73399 12.9345L11.587 6.0815L8.91899 3.4135L2.06599 10.2655C1.94899 10.3835 1.87199 10.5305 1.84099 10.6915L1.36699 13.2485L1.75199 13.6335L4.31099 13.1585Z" fill="black"/>
|
||||||
<path d="M0.0189877 13.6645L0.612989 10.4635C0.687989 10.0545 0.884989 9.6805 1.18099 9.3825L9.98199 0.5805C10.756 -0.1925 12.015 -0.1945 12.792 0.5805L14.42 2.2085C15.194 2.9835 15.194 4.2435 14.42 5.0185L5.61599 13.8215C5.31999 14.1165 4.94599 14.3125 4.53799 14.3875L1.33599 14.9815C1.26599 14.9935 1.19799 15.0005 1.12999 15.0005C0.832989 15.0005 0.544988 14.8835 0.330988 14.6695C0.0679874 14.4055 -0.0490122 14.0305 0.0189877 13.6645ZM12.472 5.1965L13.632 4.0365L13.631 3.1885L11.811 1.3675L10.963 1.3685L9.80299 2.5285L12.472 5.1965ZM4.31099 13.1585C4.47099 13.1285 4.61799 13.0515 4.73399 12.9345L11.587 6.0815L8.91899 3.4135L2.06599 10.2655C1.94899 10.3835 1.87199 10.5305 1.84099 10.6915L1.36699 13.2485L1.75199 13.6335L4.31099 13.1585Z"
|
|
||||||
fill="black"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
8
src/main/resources/static/pdfjs/images/cursor-editorTextHighlight.svg
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<svg width="29" height="32" viewBox="0 0 29 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M28 16.75C28.2761 16.75 28.5 16.5261 28.5 16.25V15C28.5 14.7239 28.2761 14.5 28 14.5H26.358C25.9117 14.5 25.4773 14.6257 25.0999 14.8604L25.0989 14.8611L24 15.5484L22.9 14.861L22.8991 14.8604C22.5218 14.6257 22.0875 14.5 21.642 14.5H20C19.7239 14.5 19.5 14.7239 19.5 15V16.25C19.5 16.5261 19.7239 16.75 20 16.75H21.642C21.6648 16.75 21.6885 16.7564 21.7101 16.7697C21.7102 16.7698 21.7104 16.7699 21.7105 16.77L22.817 17.461C22.817 17.461 22.8171 17.4611 22.8171 17.4611C22.8171 17.4611 22.8171 17.4611 22.8171 17.4611C22.8552 17.4849 22.876 17.5229 22.876 17.567V22.625V27.683C22.876 27.7271 22.8552 27.765 22.8172 27.7889C22.8171 27.7889 22.8171 27.789 22.817 27.789L21.7095 28.48C21.7094 28.4801 21.7093 28.4802 21.7092 28.4803C21.6872 28.4938 21.6644 28.5 21.641 28.5H20C19.7239 28.5 19.5 28.7239 19.5 29V30.25C19.5 30.5261 19.7239 30.75 20 30.75H21.642C22.0883 30.75 22.5227 30.6243 22.9001 30.3896L22.9009 30.3891L24 29.7026L25.1 30.39L25.1009 30.3906C25.4783 30.6253 25.9127 30.751 26.359 30.751H28C28.2761 30.751 28.5 30.5271 28.5 30.251V29.001C28.5 28.7249 28.2761 28.501 28 28.501H26.358C26.3352 28.501 26.3115 28.4946 26.2899 28.4813C26.2897 28.4812 26.2896 28.4811 26.2895 28.481L25.183 27.79C25.183 27.79 25.183 27.79 25.1829 27.79C25.1829 27.7899 25.1829 27.7899 25.1829 27.7899C25.1462 27.7669 25.125 27.7297 25.125 27.684V22.625V17.567C25.125 17.5227 25.146 17.4844 25.1836 17.4606C25.1838 17.4605 25.1839 17.4604 25.184 17.4603L26.2895 16.77C26.2896 16.7699 26.2898 16.7698 26.2899 16.7697C26.3119 16.7562 26.3346 16.75 26.358 16.75H28Z" fill="black" stroke="#FBFBFE" stroke-linejoin="round"/>
|
||||||
|
<path d="M24.625 17.567C24.625 17.35 24.735 17.152 24.918 17.037L26.026 16.345C26.126 16.283 26.24 16.25 26.358 16.25H28V15H26.358C26.006 15 25.663 15.099 25.364 15.285L24.256 15.978C24.161 16.037 24.081 16.113 24 16.187C23.918 16.113 23.839 16.037 23.744 15.978L22.635 15.285C22.336 15.099 21.993 15 21.642 15H20V16.25H21.642C21.759 16.25 21.874 16.283 21.974 16.345L23.082 17.037C23.266 17.152 23.376 17.35 23.376 17.567V22.625V27.683C23.376 27.9 23.266 28.098 23.082 28.213L21.973 28.905C21.873 28.967 21.759 29 21.641 29H20V30.25H21.642C21.994 30.25 22.337 30.151 22.636 29.965L23.744 29.273C23.84 29.213 23.919 29.137 24 29.064C24.081 29.137 24.161 29.213 24.256 29.273L25.365 29.966C25.664 30.152 26.007 30.251 26.359 30.251H28V29.001H26.358C26.241 29.001 26.126 28.968 26.026 28.906L24.918 28.214C24.734 28.099 24.625 27.901 24.625 27.684V22.625V17.567Z" fill="black"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.2 2.59C12.28 2.51 12.43 2.5 12.43 2.5C12.48 2.5 12.58 2.52 12.66 2.6L14.45 4.39C14.58 4.52 14.58 4.72 14.45 4.85L11.7713 7.52872L9.51628 5.27372L12.2 2.59ZM13.2658 4.62L11.7713 6.1145L10.9305 5.27372L12.425 3.77921L13.2658 4.62Z" fill="#FBFBFE"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.98 8.82L8.23 11.07L10.7106 8.58938L8.45562 6.33438L5.98 8.81V8.82ZM8.23 9.65579L9.29641 8.58938L8.45562 7.74859L7.38921 8.815L8.23 9.65579Z" fill="#FBFBFE"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.1526 12.6816L16.2125 6.6217C16.7576 6.08919 17.05 5.3707 17.05 4.62C17.05 3.86931 16.7576 3.15084 16.2126 2.61834L14.4317 0.837474C13.8992 0.29242 13.1807 0 12.43 0C11.6643 0 10.9529 0.312929 10.4329 0.832893L3.68289 7.58289C3.04127 8.22452 3.00459 9.25075 3.57288 9.93634L1.29187 12.2239C1.09186 12.4245 0.990263 12.6957 1.0007 12.9685L1 14C0.447715 14 0 14.4477 0 15V17C0 17.5523 0.447715 18 1 18H16C16.5523 18 17 17.5523 17 17V15C17 14.4477 16.5523 14 16 14H10.2325C9.83594 14 9.39953 13.4347 10.1526 12.6816ZM4.39 9.35L4.9807 9.9407L2.39762 12.5312H6.63877L7.10501 12.065L7.57125 12.5312H8.88875L15.51 5.91C15.86 5.57 16.05 5.11 16.05 4.62C16.05 4.13 15.86 3.67 15.51 3.33L13.72 1.54C13.38 1.19 12.92 1 12.43 1C11.94 1 11.48 1.2 11.14 1.54L4.39 8.29C4.1 8.58 4.1 9.06 4.39 9.35ZM16 17V15H1V17H16Z" fill="#FBFBFE"/>
|
||||||
|
<path d="M15.1616 5.55136L15.1616 5.55132L15.1564 5.55645L8.40645 12.3064C8.35915 12.3537 8.29589 12.38 8.23 12.38C8.16411 12.38 8.10085 12.3537 8.05355 12.3064L7.45857 11.7115L7.10501 11.3579L6.75146 11.7115L6.03289 12.43H3.20465L5.33477 10.2937L5.6873 9.94019L5.33426 9.58715L4.74355 8.99645C4.64882 8.90171 4.64882 8.73829 4.74355 8.64355L11.4936 1.89355C11.7436 1.64354 12.0779 1.5 12.43 1.5C12.7883 1.5 13.1179 1.63776 13.3614 1.88839L13.3613 1.88843L13.3664 1.89355L15.1564 3.68355L15.1564 3.68359L15.1616 3.68864C15.4122 3.93211 15.55 4.26166 15.55 4.62C15.55 4.97834 15.4122 5.30789 15.1616 5.55136ZM5.48 8.82V9.02711L5.62645 9.17355L7.87645 11.4236L8.23 11.7771L8.58355 11.4236L11.0642 8.94293L11.4177 8.58938L11.0642 8.23582L8.80918 5.98082L8.45562 5.62727L8.10207 5.98082L5.62645 8.45645L5.48 8.60289V8.81V8.82ZM11.4177 7.88227L11.7713 8.23582L12.1248 7.88227L14.8036 5.20355C15.1288 4.87829 15.1288 4.36171 14.8036 4.03645L13.0136 2.24645C12.8186 2.05146 12.5792 2 12.43 2H12.4134L12.3967 2.00111L12.43 2.5C12.3967 2.00111 12.3966 2.00112 12.3965 2.00112L12.3963 2.00114L12.3957 2.00117L12.3947 2.00125L12.3924 2.00142L12.387 2.00184L12.3732 2.00311C12.3628 2.00416 12.3498 2.00567 12.3346 2.00784C12.3049 2.01208 12.2642 2.01925 12.2178 2.03146C12.1396 2.05202 11.9797 2.10317 11.8464 2.23645L9.16273 4.92016L8.80918 5.27372L9.16273 5.62727L11.4177 7.88227ZM1.5 16.5V15.5H15.5V16.5H1.5Z" stroke="#15141A"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.3 KiB |
5
src/main/resources/static/pdfjs/images/editor-toolbar-delete.svg
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||||
|
d="M11 3H13.6C14 3 14.3 3.3 14.3 3.6C14.3 3.9 14 4.2 13.7 4.2H13.3V14C13.3 15.1 12.4 16 11.3 16H4.80005C3.70005 16 2.80005 15.1 2.80005 14V4.2H2.40005C2.00005 4.2 1.80005 4 1.80005 3.6C1.80005 3.2 2.00005 3 2.40005 3H5.00005V2C5.00005 0.9 5.90005 0 7.00005 0H9.00005C10.1 0 11 0.9 11 2V3ZM6.90005 1.2L6.30005 1.8V3H9.80005V1.8L9.20005 1.2H6.90005ZM11.4 14.7L12 14.1V4.2H4.00005V14.1L4.60005 14.7H11.4ZM7.00005 12.4C7.00005 12.7 6.70005 13 6.40005 13C6.10005 13 5.80005 12.7 5.80005 12.4V7.6C5.70005 7.3 6.00005 7 6.40005 7C6.80005 7 7.00005 7.3 7.00005 7.6V12.4ZM10.2001 12.4C10.2001 12.7 9.90006 13 9.60006 13C9.30006 13 9.00006 12.7 9.00006 12.4V7.6C9.00006 7.3 9.30006 7 9.60006 7C9.90006 7 10.2001 7.3 10.2001 7.6V12.4Z"
|
||||||
|
fill="black" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 909 B |
|
@ -1,4 +1,3 @@
|
||||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M10.999 8.352L5.534 13.818C5.41551 13.9303 5.25786 13.9918 5.09466 13.9895C4.93146 13.9872 4.77561 13.9212 4.66033 13.8057C4.54505 13.6902 4.47945 13.5342 4.47752 13.3709C4.47559 13.2077 4.53748 13.0502 4.65 12.932L9.585 7.998L4.651 3.067C4.53862 2.94864 4.47691 2.79106 4.47903 2.62786C4.48114 2.46466 4.54692 2.30874 4.66233 2.19333C4.77774 2.07792 4.93366 2.01215 5.09686 2.01003C5.26006 2.00792 5.41763 2.06962 5.536 2.182L11 7.647L10.999 8.352Z"
|
<path d="M10.999 8.352L5.534 13.818C5.41551 13.9303 5.25786 13.9918 5.09466 13.9895C4.93146 13.9872 4.77561 13.9212 4.66033 13.8057C4.54505 13.6902 4.47945 13.5342 4.47752 13.3709C4.47559 13.2077 4.53748 13.0502 4.65 12.932L9.585 7.998L4.651 3.067C4.53862 2.94864 4.47691 2.79106 4.47903 2.62786C4.48114 2.46466 4.54692 2.30874 4.66233 2.19333C4.77774 2.07792 4.93366 2.01215 5.09686 2.01003C5.26006 2.00792 5.41763 2.06962 5.536 2.182L11 7.647L10.999 8.352Z" fill="black"/>
|
||||||
fill="black"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 592 B After Width: | Height: | Size: 578 B |
|
@ -1,4 +1,3 @@
|
||||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M5.001 8.352L10.466 13.818C10.5845 13.9303 10.7421 13.9918 10.9053 13.9895C11.0685 13.9872 11.2244 13.9212 11.3397 13.8057C11.4549 13.6902 11.5205 13.5342 11.5225 13.3709C11.5244 13.2077 11.4625 13.0502 11.35 12.932L6.416 7.999L11.349 3.067C11.4614 2.94864 11.5231 2.79106 11.521 2.62786C11.5189 2.46466 11.4531 2.30874 11.3377 2.19333C11.2223 2.07792 11.0663 2.01215 10.9031 2.01003C10.7399 2.00792 10.5824 2.06962 10.464 2.182L5 7.647L5.001 8.352Z"
|
<path d="M5.001 8.352L10.466 13.818C10.5845 13.9303 10.7421 13.9918 10.9053 13.9895C11.0685 13.9872 11.2244 13.9212 11.3397 13.8057C11.4549 13.6902 11.5205 13.5342 11.5225 13.3709C11.5244 13.2077 11.4625 13.0502 11.35 12.932L6.416 7.999L11.349 3.067C11.4614 2.94864 11.5231 2.79106 11.521 2.62786C11.5189 2.46466 11.4531 2.30874 11.3377 2.19333C11.2223 2.07792 11.0663 2.01215 10.9031 2.01003C10.7399 2.00792 10.5824 2.06962 10.464 2.182L5 7.647L5.001 8.352Z" fill="black"/>
|
||||||
fill="black"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 592 B After Width: | Height: | Size: 578 B |
|
@ -1,5 +1,3 @@
|
||||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.969 10.059C17.262 9.766 17.737 9.766 18.03 10.059C18.323 10.352 18.323 10.827 18.03 11.12L12.15 17H11.35L5.46896 11.12C5.17596 10.827 5.17596 10.352 5.46896 10.059C5.76196 9.766 6.23696 9.766 6.52996 10.059L11 14.529V2.75C11 2.336 11.336 2 11.75 2C12.164 2 12.5 2.336 12.499 2.75V14.529L16.969 10.059ZM4.98193 19.7L5.78193 20.5H17.7169L18.5169 19.7V17.75C18.5169 17.336 18.8529 17 19.2669 17C19.6809 17 20.0169 17.336 20.0169 17.75V19.5C20.0169 20.881 18.8979 22 17.5169 22H5.98193C4.60093 22 3.48193 20.881 3.48193 19.5V17.75C3.48193 17.336 3.81793 17 4.23193 17C4.64593 17 4.98193 17.336 4.98193 17.75V19.7Z" fill="black"/>
|
||||||
d="M16.969 10.059C17.262 9.766 17.737 9.766 18.03 10.059C18.323 10.352 18.323 10.827 18.03 11.12L12.15 17H11.35L5.46896 11.12C5.17596 10.827 5.17596 10.352 5.46896 10.059C5.76196 9.766 6.23696 9.766 6.52996 10.059L11 14.529V2.75C11 2.336 11.336 2 11.75 2C12.164 2 12.5 2.336 12.499 2.75V14.529L16.969 10.059ZM4.98193 19.7L5.78193 20.5H17.7169L18.5169 19.7V17.75C18.5169 17.336 18.8529 17 19.2669 17C19.6809 17 20.0169 17.336 20.0169 17.75V19.5C20.0169 20.881 18.8979 22 17.5169 22H5.98193C4.60093 22 3.48193 20.881 3.48193 19.5V17.75C3.48193 17.336 3.81793 17 4.23193 17C4.64593 17 4.98193 17.336 4.98193 17.75V19.7Z"
|
|
||||||
fill="black"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 806 B After Width: | Height: | Size: 782 B |
|
@ -1,11 +0,0 @@
|
||||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path d="M4 4.5H6.5V7H4V4.5Z" fill="black"/>
|
|
||||||
<path d="M6.5 10.5H4V13H6.5V10.5Z" fill="black"/>
|
|
||||||
<path d="M13.25 10.5H10.75V13H13.25V10.5Z" fill="black"/>
|
|
||||||
<path d="M17.5 10.5H20V13H17.5V10.5Z" fill="black"/>
|
|
||||||
<path d="M6.5 16.5H4V19H6.5V16.5Z" fill="black"/>
|
|
||||||
<path d="M10.75 16.5H13.25V19H10.75V16.5Z" fill="black"/>
|
|
||||||
<path d="M20 16.5H17.5V19H20V16.5Z" fill="black"/>
|
|
||||||
<path d="M13.25 4.5H10.75V7H13.25V4.5Z" fill="black"/>
|
|
||||||
<path d="M17.5 4.5H20V7H17.5V4.5Z" fill="black"/>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 609 B |
|
@ -1,24 +1 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"
|
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" style="animation:spinLoadingIcon 1s steps(12,end) infinite"><style>@keyframes spinLoadingIcon{to{transform:rotate(360deg)}}</style><path d="M7 3V1s0-1 1-1 1 1 1 1v2s0 1-1 1-1-1-1-1z"/><path d="M4.63 4.1l-1-1.73S3.13 1.5 4 1c.87-.5 1.37.37 1.37.37l1 1.73s.5.87-.37 1.37c-.87.57-1.37-.37-1.37-.37z" fill-opacity=".93"/><path d="M3.1 6.37l-1.73-1S.5 4.87 1 4c.5-.87 1.37-.37 1.37-.37l1.73 1s.87.5.37 1.37c-.5.87-1.37.37-1.37.37z" fill-opacity=".86"/><path d="M3 9H1S0 9 0 8s1-1 1-1h2s1 0 1 1-1 1-1 1z" fill-opacity=".79"/><path d="M4.1 11.37l-1.73 1S1.5 12.87 1 12c-.5-.87.37-1.37.37-1.37l1.73-1s.87-.5 1.37.37c.5.87-.37 1.37-.37 1.37z" fill-opacity=".72"/><path d="M3.63 13.56l1-1.73s.5-.87 1.37-.37c.87.5.37 1.37.37 1.37l-1 1.73s-.5.87-1.37.37c-.87-.5-.37-1.37-.37-1.37z" fill-opacity=".65"/><path d="M7 15v-2s0-1 1-1 1 1 1 1v2s0 1-1 1-1-1-1-1z" fill-opacity=".58"/><path d="M10.63 14.56l-1-1.73s-.5-.87.37-1.37c.87-.5 1.37.37 1.37.37l1 1.73s.5.87-.37 1.37c-.87.5-1.37-.37-1.37-.37z" fill-opacity=".51"/><path d="M13.56 12.37l-1.73-1s-.87-.5-.37-1.37c.5-.87 1.37-.37 1.37-.37l1.73 1s.87.5.37 1.37c-.5.87-1.37.37-1.37.37z" fill-opacity=".44"/><path d="M15 9h-2s-1 0-1-1 1-1 1-1h2s1 0 1 1-1 1-1 1z" fill-opacity=".37"/><path d="M14.56 5.37l-1.73 1s-.87.5-1.37-.37c-.5-.87.37-1.37.37-1.37l1.73-1s.87-.5 1.37.37c.5.87-.37 1.37-.37 1.37z" fill-opacity=".3"/><path d="M9.64 3.1l.98-1.66s.5-.874 1.37-.37c.87.5.37 1.37.37 1.37l-1 1.73s-.5.87-1.37.37c-.87-.5-.37-1.37-.37-1.37z" fill-opacity=".23"/></svg>
|
||||||
style="animation:spinLoadingIcon 1s steps(12,end) infinite">
|
|
||||||
<style>@keyframes spinLoadingIcon{to{transform:rotate(360deg)}}</style>
|
|
||||||
<path d="M7 3V1s0-1 1-1 1 1 1 1v2s0 1-1 1-1-1-1-1z"/>
|
|
||||||
<path d="M4.63 4.1l-1-1.73S3.13 1.5 4 1c.87-.5 1.37.37 1.37.37l1 1.73s.5.87-.37 1.37c-.87.57-1.37-.37-1.37-.37z"
|
|
||||||
fill-opacity=".93"/>
|
|
||||||
<path d="M3.1 6.37l-1.73-1S.5 4.87 1 4c.5-.87 1.37-.37 1.37-.37l1.73 1s.87.5.37 1.37c-.5.87-1.37.37-1.37.37z"
|
|
||||||
fill-opacity=".86"/>
|
|
||||||
<path d="M3 9H1S0 9 0 8s1-1 1-1h2s1 0 1 1-1 1-1 1z" fill-opacity=".79"/>
|
|
||||||
<path d="M4.1 11.37l-1.73 1S1.5 12.87 1 12c-.5-.87.37-1.37.37-1.37l1.73-1s.87-.5 1.37.37c.5.87-.37 1.37-.37 1.37z"
|
|
||||||
fill-opacity=".72"/>
|
|
||||||
<path d="M3.63 13.56l1-1.73s.5-.87 1.37-.37c.87.5.37 1.37.37 1.37l-1 1.73s-.5.87-1.37.37c-.87-.5-.37-1.37-.37-1.37z"
|
|
||||||
fill-opacity=".65"/>
|
|
||||||
<path d="M7 15v-2s0-1 1-1 1 1 1 1v2s0 1-1 1-1-1-1-1z" fill-opacity=".58"/>
|
|
||||||
<path d="M10.63 14.56l-1-1.73s-.5-.87.37-1.37c.87-.5 1.37.37 1.37.37l1 1.73s.5.87-.37 1.37c-.87.5-1.37-.37-1.37-.37z"
|
|
||||||
fill-opacity=".51"/>
|
|
||||||
<path d="M13.56 12.37l-1.73-1s-.87-.5-.37-1.37c.5-.87 1.37-.37 1.37-.37l1.73 1s.87.5.37 1.37c-.5.87-1.37.37-1.37.37z"
|
|
||||||
fill-opacity=".44"/>
|
|
||||||
<path d="M15 9h-2s-1 0-1-1 1-1 1-1h2s1 0 1 1-1 1-1 1z" fill-opacity=".37"/>
|
|
||||||
<path d="M14.56 5.37l-1.73 1s-.87.5-1.37-.37c-.5-.87.37-1.37.37-1.37l1.73-1s.87-.5 1.37.37c.5.87-.37 1.37-.37 1.37z"
|
|
||||||
fill-opacity=".3"/>
|
|
||||||
<path d="M9.64 3.1l.98-1.66s.5-.874 1.37-.37c.87.5.37 1.37.37 1.37l-1 1.73s-.5.87-1.37.37c-.87-.5-.37-1.37-.37-1.37z"
|
|
||||||
fill-opacity=".23"/>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.5 KiB |
|
@ -1,4 +1,3 @@
|
||||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M8 1.5C4.41015 1.5 1.5 4.41015 1.5 8C1.5 11.5899 4.41015 14.5 8 14.5C11.5899 14.5 14.5 11.5899 14.5 8C14.5 4.41015 11.5899 1.5 8 1.5ZM0 8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8C16 12.4183 12.4183 16 8 16C3.58172 16 0 12.4183 0 8ZM8.75 4V5.5H7.25V4H8.75ZM8.75 12V7H7.25V12H8.75Z"
|
<path d="M8 1.5C4.41015 1.5 1.5 4.41015 1.5 8C1.5 11.5899 4.41015 14.5 8 14.5C11.5899 14.5 14.5 11.5899 14.5 8C14.5 4.41015 11.5899 1.5 8 1.5ZM0 8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8C16 12.4183 12.4183 16 8 16C3.58172 16 0 12.4183 0 8ZM8.75 4V5.5H7.25V4H8.75ZM8.75 12V7H7.25V12H8.75Z" fill="black"/>
|
||||||
fill="black"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 431 B After Width: | Height: | Size: 417 B |
|
@ -1,4 +1,3 @@
|
||||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M14 3.5H2V5H14V3.5ZM8 8.811L12.939 13.75L14.001 12.689L8.531 7.219C8.238 6.926 7.763 6.926 7.47 7.219L2 12.689L3.061 13.75L8 8.811Z"
|
<path d="M14 3.5H2V5H14V3.5ZM8 8.811L12.939 13.75L14.001 12.689L8.531 7.219C8.238 6.926 7.763 6.926 7.47 7.219L2 12.689L3.061 13.75L8 8.811Z" fill="black"/>
|
||||||
fill="black"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 274 B After Width: | Height: | Size: 260 B |
|
@ -1,4 +1,3 @@
|
||||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M7.75 2.125C7.75 1.78021 8.03021 1.5 8.375 1.5C8.71979 1.5 9 1.78021 9 2.125V3.125V8H10.5V3.125C10.5 2.78021 10.7802 2.5 11.125 2.5C11.4698 2.5 11.75 2.78021 11.75 3.125V4.625V8H13.25V4.625C13.25 4.28021 13.5302 4 13.875 4C14.2198 4 14.5 4.28021 14.5 4.625V12.0188L13.3802 13.6628C13.2954 13.7872 13.25 13.9344 13.25 14.085V16H14.75V14.3162L15.8698 12.6722C15.9546 12.5478 16 12.4006 16 12.25V4.625C16 3.45179 15.0482 2.5 13.875 2.5C13.6346 2.5 13.4035 2.53996 13.188 2.6136C12.959 1.68724 12.1219 1 11.125 1C10.8235 1 10.5366 1.06286 10.2768 1.17618C9.9281 0.478968 9.20726 0 8.375 0C7.54274 0 6.8219 0.478968 6.47323 1.17618C6.21337 1.06286 5.9265 1 5.625 1C4.45179 1 3.5 1.95179 3.5 3.125V7.25317C2.66504 6.54282 1.41035 6.58199 0.621672 7.37067C-0.208221 8.20056 -0.208221 9.54644 0.621672 10.3763L0.62188 10.3765L5.499 15.2498V16H6.999V14.939C6.999 14.74 6.9199 14.5491 6.77912 14.4085L1.68233 9.31567C1.43823 9.07156 1.43823 8.67544 1.68233 8.43133C1.92644 8.18722 2.32257 8.18722 2.56667 8.43133L3.71967 9.58433C3.93417 9.79883 4.25676 9.863 4.53701 9.74691C4.81727 9.63082 5 9.35735 5 9.054V3.125C5 2.78021 5.28022 2.5 5.625 2.5C5.96921 2.5 6.24906 2.77927 6.25 3.12326V8H7.75L7.75 3.125L7.75 3.12178V2.125Z"
|
<path d="M7.75 2.125C7.75 1.78021 8.03021 1.5 8.375 1.5C8.71979 1.5 9 1.78021 9 2.125V3.125V8H10.5V3.125C10.5 2.78021 10.7802 2.5 11.125 2.5C11.4698 2.5 11.75 2.78021 11.75 3.125V4.625V8H13.25V4.625C13.25 4.28021 13.5302 4 13.875 4C14.2198 4 14.5 4.28021 14.5 4.625V12.0188L13.3802 13.6628C13.2954 13.7872 13.25 13.9344 13.25 14.085V16H14.75V14.3162L15.8698 12.6722C15.9546 12.5478 16 12.4006 16 12.25V4.625C16 3.45179 15.0482 2.5 13.875 2.5C13.6346 2.5 13.4035 2.53996 13.188 2.6136C12.959 1.68724 12.1219 1 11.125 1C10.8235 1 10.5366 1.06286 10.2768 1.17618C9.9281 0.478968 9.20726 0 8.375 0C7.54274 0 6.8219 0.478968 6.47323 1.17618C6.21337 1.06286 5.9265 1 5.625 1C4.45179 1 3.5 1.95179 3.5 3.125V7.25317C2.66504 6.54282 1.41035 6.58199 0.621672 7.37067C-0.208221 8.20056 -0.208221 9.54644 0.621672 10.3763L0.62188 10.3765L5.499 15.2498V16H6.999V14.939C6.999 14.74 6.9199 14.5491 6.77912 14.4085L1.68233 9.31567C1.43823 9.07156 1.43823 8.67544 1.68233 8.43133C1.92644 8.18722 2.32257 8.18722 2.56667 8.43133L3.71967 9.58433C3.93417 9.79883 4.25676 9.863 4.53701 9.74691C4.81727 9.63082 5 9.35735 5 9.054V3.125C5 2.78021 5.28022 2.5 5.625 2.5C5.96921 2.5 6.24906 2.77927 6.25 3.12326V8H7.75L7.75 3.125L7.75 3.12178V2.125Z" fill="black"/>
|
||||||
fill="black"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
@ -1,4 +1,3 @@
|
||||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M8 8.189L12.939 3.25L14 4.311L8.531 9.781C8.238 10.074 7.763 10.074 7.47 9.781L2 4.311L3.061 3.25L8 8.189ZM14 13.5V12H2V13.5H14Z"
|
<path d="M8 8.189L12.939 3.25L14 4.311L8.531 9.781C8.238 10.074 7.763 10.074 7.47 9.781L2 4.311L3.061 3.25L8 8.189ZM14 13.5V12H2V13.5H14Z" fill="black"/>
|
||||||
fill="black"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 271 B After Width: | Height: | Size: 257 B |
|
@ -1,4 +1,3 @@
|
||||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M3.4105 4.83612L4.77001 6.19601C5.06701 6.49201 4.85701 7.00001 4.43701 7.00001H0.862006C0.602006 7.00001 0.391006 6.78901 0.391006 6.52901V2.95401C0.391006 2.53401 0.899006 2.32401 1.19601 2.62101L2.32796 3.75328C3.67958 1.78973 5.9401 0.5 8.5 0.5C12.636 0.5 16 3.864 16 8C16 12.136 12.636 15.5 8.5 15.5C4.704 15.5 1.566 12.663 1.075 9H2.59C3.068 11.833 5.532 14 8.5 14C11.809 14 14.5 11.309 14.5 8C14.5 4.691 11.809 2 8.5 2C6.35262 2 4.46893 3.13503 3.4105 4.83612Z"
|
<path d="M3.4105 4.83612L4.77001 6.19601C5.06701 6.49201 4.85701 7.00001 4.43701 7.00001H0.862006C0.602006 7.00001 0.391006 6.78901 0.391006 6.52901V2.95401C0.391006 2.53401 0.899006 2.32401 1.19601 2.62101L2.32796 3.75328C3.67958 1.78973 5.9401 0.5 8.5 0.5C12.636 0.5 16 3.864 16 8C16 12.136 12.636 15.5 8.5 15.5C4.704 15.5 1.566 12.663 1.075 9H2.59C3.068 11.833 5.532 14 8.5 14C11.809 14 14.5 11.309 14.5 8C14.5 4.691 11.809 2 8.5 2C6.35262 2 4.46893 3.13503 3.4105 4.83612Z" fill="black"/>
|
||||||
fill="black"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 610 B After Width: | Height: | Size: 596 B |
|
@ -1,4 +1,3 @@
|
||||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M12.5895 4.83613L11.23 6.19601C10.933 6.49201 11.143 7.00001 11.563 7.00001H15.138C15.398 7.00001 15.609 6.78901 15.609 6.52901V2.95401C15.609 2.53401 15.101 2.32401 14.804 2.62101L13.672 3.75328C12.3204 1.78973 10.0599 0.5 7.5 0.5C3.364 0.5 0 3.864 0 8C0 12.136 3.364 15.5 7.5 15.5C11.296 15.5 14.434 12.663 14.925 9H13.41C12.932 11.833 10.468 14 7.5 14C4.191 14 1.5 11.309 1.5 8C1.5 4.691 4.191 2 7.5 2C9.64738 2 11.5311 3.13503 12.5895 4.83613Z"
|
<path d="M12.5895 4.83613L11.23 6.19601C10.933 6.49201 11.143 7.00001 11.563 7.00001H15.138C15.398 7.00001 15.609 6.78901 15.609 6.52901V2.95401C15.609 2.53401 15.101 2.32401 14.804 2.62101L13.672 3.75328C12.3204 1.78973 10.0599 0.5 7.5 0.5C3.364 0.5 0 3.864 0 8C0 12.136 3.364 15.5 7.5 15.5C11.296 15.5 14.434 12.663 14.925 9H13.41C12.932 11.833 10.468 14 7.5 14C4.191 14 1.5 11.309 1.5 8C1.5 4.691 4.191 2 7.5 2C9.64738 2 11.5311 3.13503 12.5895 4.83613Z" fill="black"/>
|
||||||
fill="black"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 590 B After Width: | Height: | Size: 576 B |
|
@ -1,4 +1,3 @@
|
||||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M3 3.78C3 2.7621 2.13279 2.11834 1.25 2.01476V2H1V3.5C1.18133 3.5 1.32279 3.5609 1.40708 3.63029C1.48961 3.69823 1.5 3.75458 1.5 3.78V11.72C1.5 11.7454 1.48961 11.8018 1.40708 11.8697C1.32279 11.9391 1.18133 12 1 12V13.5H1.25V13.4852C2.13279 13.3817 3 12.7379 3 11.72V3.78ZM10.5 4C10.5 3.72386 10.2761 3.5 10 3.5H6.5C6.22386 3.5 6 3.72386 6 4V11.5C6 11.7761 6.22386 12 6.5 12H10C10.2761 12 10.5 11.7761 10.5 11.5V4ZM10 2C11.1046 2 12 2.89543 12 4V11.5C12 12.6046 11.1046 13.5 10 13.5H6.5C5.39543 13.5 4.5 12.6046 4.5 11.5V4C4.5 2.89543 5.39543 2 6.5 2H10ZM15.5 2H15.25V2.01476C14.3672 2.11834 13.5 2.7621 13.5 3.78V11.72C13.5 12.7379 14.3672 13.3817 15.25 13.4852V13.5H15.5V12C15.3187 12 15.1772 11.9391 15.0929 11.8697C15.0104 11.8018 15 11.7454 15 11.72V3.78C15 3.75458 15.0104 3.69823 15.0929 3.63029C15.1772 3.5609 15.3187 3.5 15.5 3.5V2Z"
|
<path d="M3 3.78C3 2.7621 2.13279 2.11834 1.25 2.01476V2H1V3.5C1.18133 3.5 1.32279 3.5609 1.40708 3.63029C1.48961 3.69823 1.5 3.75458 1.5 3.78V11.72C1.5 11.7454 1.48961 11.8018 1.40708 11.8697C1.32279 11.9391 1.18133 12 1 12V13.5H1.25V13.4852C2.13279 13.3817 3 12.7379 3 11.72V3.78ZM10.5 4C10.5 3.72386 10.2761 3.5 10 3.5H6.5C6.22386 3.5 6 3.72386 6 4V11.5C6 11.7761 6.22386 12 6.5 12H10C10.2761 12 10.5 11.7761 10.5 11.5V4ZM10 2C11.1046 2 12 2.89543 12 4V11.5C12 12.6046 11.1046 13.5 10 13.5H6.5C5.39543 13.5 4.5 12.6046 4.5 11.5V4C4.5 2.89543 5.39543 2 6.5 2H10ZM15.5 2H15.25V2.01476C14.3672 2.11834 13.5 2.7621 13.5 3.78V11.72C13.5 12.7379 14.3672 13.3817 15.25 13.4852V13.5H15.5V12C15.3187 12 15.1772 11.9391 15.0929 11.8697C15.0104 11.8018 15 11.7454 15 11.72V3.78C15 3.75458 15.0104 3.69823 15.0929 3.63029C15.1772 3.5609 15.3187 3.5 15.5 3.5V2Z" fill="black"/>
|
||||||
fill="black"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 985 B After Width: | Height: | Size: 971 B |
|
@ -1,4 +1,3 @@
|
||||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M3.5 2C3.5 1.72421 3.72421 1.5 4 1.5H12C12.2758 1.5 12.5 1.72421 12.5 2V14C12.5 14.2758 12.2758 14.5 12 14.5H4C3.72421 14.5 3.5 14.2758 3.5 14V2ZM4 0C2.89579 0 2 0.895786 2 2V14C2 15.1042 2.89579 16 4 16H12C13.1042 16 14 15.1042 14 14V2C14 0.895786 13.1042 0 12 0H4ZM5.89301 6H7.25V10H5.89301C5.54301 10 5.36801 10.423 5.61501 10.67L7.72101 12.776C7.87401 12.929 8.12301 12.929 8.27601 12.776L10.383 10.669C10.63 10.422 10.455 9.99902 10.105 9.99902H8.75V6H10.106C10.456 6 10.632 5.577 10.383 5.331L8.27601 3.224C8.12301 3.071 7.87401 3.071 7.72101 3.224L5.61501 5.33C5.36801 5.577 5.54301 6 5.89301 6Z"
|
<path d="M3.5 2C3.5 1.72421 3.72421 1.5 4 1.5H12C12.2758 1.5 12.5 1.72421 12.5 2V14C12.5 14.2758 12.2758 14.5 12 14.5H4C3.72421 14.5 3.5 14.2758 3.5 14V2ZM4 0C2.89579 0 2 0.895786 2 2V14C2 15.1042 2.89579 16 4 16H12C13.1042 16 14 15.1042 14 14V2C14 0.895786 13.1042 0 12 0H4ZM5.89301 6H7.25V10H5.89301C5.54301 10 5.36801 10.423 5.61501 10.67L7.72101 12.776C7.87401 12.929 8.12301 12.929 8.27601 12.776L10.383 10.669C10.63 10.422 10.455 9.99902 10.105 9.99902H8.75V6H10.106C10.456 6 10.632 5.577 10.383 5.331L8.27601 3.224C8.12301 3.071 7.87401 3.071 7.72101 3.224L5.61501 5.33C5.36801 5.577 5.54301 6 5.89301 6Z" fill="black"/>
|
||||||
fill="black"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 745 B After Width: | Height: | Size: 731 B |
|
@ -1,4 +1,3 @@
|
||||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M2 1V1.25H2.01476C2.11834 2.13279 2.7621 3 3.78 3H11.72C12.7379 3 13.3817 2.13279 13.4852 1.25H13.5V1H12C12 1.18133 11.9391 1.32279 11.8697 1.40708C11.8018 1.48961 11.7454 1.5 11.72 1.5H3.78C3.75458 1.5 3.69823 1.48961 3.63029 1.40708C3.5609 1.32279 3.5 1.18133 3.5 1H2ZM4 6C3.72386 6 3.5 6.22386 3.5 6.5V10C3.5 10.2761 3.72386 10.5 4 10.5H11.5C11.7761 10.5 12 10.2761 12 10V6.5C12 6.22386 11.7761 6 11.5 6H4ZM2 6.5C2 5.39543 2.89543 4.5 4 4.5H11.5C12.6046 4.5 13.5 5.39543 13.5 6.5V10C13.5 11.1046 12.6046 12 11.5 12H4C2.89543 12 2 11.1046 2 10V6.5ZM3.78 13.5C2.7621 13.5 2.11834 14.3672 2.01476 15.25H2V15.5H3.5C3.5 15.3187 3.5609 15.1772 3.63029 15.0929C3.69823 15.0104 3.75458 15 3.78 15H11.72C11.7454 15 11.8018 15.0104 11.8697 15.0929C11.9391 15.1772 12 15.3187 12 15.5H13.5V15.25H13.4852C13.3817 14.3672 12.7379 13.5 11.72 13.5H3.78Z"
|
<path d="M2 1V1.25H2.01476C2.11834 2.13279 2.7621 3 3.78 3H11.72C12.7379 3 13.3817 2.13279 13.4852 1.25H13.5V1H12C12 1.18133 11.9391 1.32279 11.8697 1.40708C11.8018 1.48961 11.7454 1.5 11.72 1.5H3.78C3.75458 1.5 3.69823 1.48961 3.63029 1.40708C3.5609 1.32279 3.5 1.18133 3.5 1H2ZM4 6C3.72386 6 3.5 6.22386 3.5 6.5V10C3.5 10.2761 3.72386 10.5 4 10.5H11.5C11.7761 10.5 12 10.2761 12 10V6.5C12 6.22386 11.7761 6 11.5 6H4ZM2 6.5C2 5.39543 2.89543 4.5 4 4.5H11.5C12.6046 4.5 13.5 5.39543 13.5 6.5V10C13.5 11.1046 12.6046 12 11.5 12H4C2.89543 12 2 11.1046 2 10V6.5ZM3.78 13.5C2.7621 13.5 2.11834 14.3672 2.01476 15.25H2V15.5H3.5C3.5 15.3187 3.5609 15.1772 3.63029 15.0929C3.69823 15.0104 3.75458 15 3.78 15H11.72C11.7454 15 11.8018 15.0104 11.8697 15.0929C11.9391 15.1772 12 15.3187 12 15.5H13.5V15.25H13.4852C13.3817 14.3672 12.7379 13.5 11.72 13.5H3.78Z" fill="black"/>
|
||||||
fill="black"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 983 B After Width: | Height: | Size: 969 B |