Compare commits
97 Commits
e5a17cf598
...
c0ccf1b574
| Author | SHA1 | Date | |
|---|---|---|---|
| c0ccf1b574 | |||
|
|
9d18b50d8e | ||
|
|
7ee14ac794 | ||
|
|
ba604bda3e | ||
|
|
036c10fc27 | ||
|
|
baa9410242 | ||
|
|
ab2fe5ef81 | ||
|
|
a926289fb0 | ||
|
|
b711be3061 | ||
|
|
f07ba9192b | ||
|
|
dc2f891632 | ||
|
|
fe9c5a7351 | ||
|
|
d575ba8f9a | ||
|
|
accab3b5bf | ||
|
|
8cbb4367ab | ||
|
|
3ede204918 | ||
|
|
32030e8d85 | ||
|
|
b7d55a3f78 | ||
|
|
699545ddbe | ||
|
|
54b3f17bf9 | ||
|
|
f2015cecbd | ||
|
|
f60a8d87d2 | ||
|
|
eccebd265f | ||
|
|
889c9a114b | ||
|
|
9fd561ecf6 | ||
|
|
1e72960c5f | ||
|
|
5a50c54f29 | ||
|
|
446bc68768 | ||
|
|
76660eb791 | ||
|
|
e0ce3c90de | ||
|
|
aaf94fa981 | ||
|
|
d1aa56266e | ||
|
|
790d4f053d | ||
|
|
e5b25ac8a5 | ||
|
|
b365155e62 | ||
|
|
f4f80a54a8 | ||
|
|
681a8d3443 | ||
|
|
7543f49ba4 | ||
|
|
2e11b632dd | ||
|
|
63bdc0d59e | ||
|
|
56fdf1f3a1 | ||
|
|
a6069c0f9e | ||
|
|
327a44d487 | ||
|
|
7a15930453 | ||
|
|
517e54517c | ||
|
|
ef59ea6fe4 | ||
|
|
10472a6467 | ||
|
|
9a9429c15c | ||
|
|
b17912d607 | ||
|
|
ff315d9d96 | ||
|
|
67f72ad17b | ||
|
|
8f55c38391 | ||
|
|
8245d77c84 | ||
|
|
f5628f16d9 | ||
|
|
47907daea0 | ||
|
|
664253532e | ||
|
|
6108b38098 | ||
|
|
a634c63176 | ||
|
|
109ed6a719 | ||
|
|
ac9312bd7e | ||
|
|
a743493cd3 | ||
|
|
c35355f01a | ||
|
|
ed910da288 | ||
|
|
fc0878704d | ||
|
|
d5c71c8425 | ||
|
|
afbe8f7abe | ||
|
|
3a97ff0e5e | ||
|
|
4f5b19edfb | ||
|
|
88338b4dbc | ||
|
|
fc249661e2 | ||
|
|
805848e627 | ||
|
|
fdae1c9756 | ||
|
|
32b3cfca41 | ||
|
|
9147d364bc | ||
|
|
6606850e4a | ||
|
|
7b08d98232 | ||
|
|
03150c6462 | ||
|
|
a3bf7baf35 | ||
|
|
6c09bcf23c | ||
|
|
e11fa01d10 | ||
|
|
d60107f48b | ||
|
|
0b449af9ba | ||
|
|
4c9c0207ba | ||
|
|
d36a59442f | ||
|
|
fd4c75279f | ||
|
|
fd5f5025ce | ||
|
|
319ecbcbc1 | ||
|
|
04b0bcde61 | ||
|
|
6499b759d9 | ||
|
|
2081c4872d | ||
|
|
37c75971f2 | ||
|
|
7d9edfca6d | ||
|
|
a40696f16e | ||
|
|
515b5b1492 | ||
|
|
5277cf2b59 | ||
|
|
52e9689431 | ||
|
|
caa5525ddd |
2
.gitattributes
vendored
@@ -3,6 +3,8 @@
|
|||||||
# Ignore all JavaScript files in a directory
|
# Ignore all JavaScript files in a directory
|
||||||
src/main/resources/static/pdfjs/* linguist-vendored
|
src/main/resources/static/pdfjs/* linguist-vendored
|
||||||
src/main/resources/static/pdfjs/** linguist-vendored
|
src/main/resources/static/pdfjs/** linguist-vendored
|
||||||
|
src/main/resources/static/pdfjs-legacy/* linguist-vendored
|
||||||
|
src/main/resources/static/pdfjs-legacy/** linguist-vendored
|
||||||
src/main/resources/static/css/bootstrap-icons.css linguist-vendored
|
src/main/resources/static/css/bootstrap-icons.css linguist-vendored
|
||||||
src/main/resources/static/css/bootstrap.min.css linguist-vendored
|
src/main/resources/static/css/bootstrap.min.css linguist-vendored
|
||||||
src/main/resources/static/css/fonts/* linguist-vendored
|
src/main/resources/static/css/fonts/* linguist-vendored
|
||||||
|
|||||||
116
.github/ISSUE_TEMPLATE/1-bug.yml
vendored
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
name: Bug Report
|
||||||
|
description: File a bug report.
|
||||||
|
title: "[Bug]: "
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
## Bug Report
|
||||||
|
|
||||||
|
Thanks for taking the time to fill out this bug report!
|
||||||
|
|
||||||
|
This issue form is for reporting bugs only. Please fill out the following sections to help us understand the issue you are facing.
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: problem
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
attributes:
|
||||||
|
label: The Problem
|
||||||
|
description: |
|
||||||
|
Describe the issue you are experiencing here. Tell us what you were trying to do and what happened.
|
||||||
|
|
||||||
|
Provide a clear and concise description of what the problem is.
|
||||||
|
placeholder: Provide a detailed description of the issue.
|
||||||
|
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
## Environment
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
id: version
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
attributes:
|
||||||
|
label: Version of Stirling-PDF
|
||||||
|
placeholder: e.g., 0.0.2
|
||||||
|
description: What version of Stirling-PDF has the issue?
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
id: last-working-version
|
||||||
|
attributes:
|
||||||
|
label: Last Working Version of Stirling-PDF
|
||||||
|
placeholder: e.g., 0.0.1
|
||||||
|
description: |
|
||||||
|
If known, please provide the last version where the issue did not occur. Otherwise, leave blank.
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
id: url
|
||||||
|
attributes:
|
||||||
|
label: Page Where the Problem Occurred
|
||||||
|
placeholder: e.g., http://localhost:8080/pdf/pipeline
|
||||||
|
description: |
|
||||||
|
If applicable, provide the URL where the issue occurred. Otherwise, leave blank.
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: docker
|
||||||
|
attributes:
|
||||||
|
label: Docker Configuration
|
||||||
|
description: |
|
||||||
|
Enter your Docker configuration here if it is relevant to the error. Remove any personal data. Otherwise, leave the field blank.
|
||||||
|
render: txt
|
||||||
|
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
## Logs
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: logs
|
||||||
|
attributes:
|
||||||
|
label: Relevant Log Output
|
||||||
|
description: |
|
||||||
|
Provide any log output that might help us diagnose the issue, such as error messages or stack traces.
|
||||||
|
render: txt
|
||||||
|
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
## Additional Information
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: additional-info
|
||||||
|
attributes:
|
||||||
|
label: Additional Information
|
||||||
|
description: |
|
||||||
|
If you have any additional information that might help us understand and resolve the issue, provide it here.
|
||||||
|
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
## Browser Information
|
||||||
|
|
||||||
|
- type: dropdown
|
||||||
|
id: browsers
|
||||||
|
attributes:
|
||||||
|
label: Browsers Affected
|
||||||
|
description: |
|
||||||
|
If applicable, select the browsers where you are experiencing the issue. Otherwise, leave blank.
|
||||||
|
multiple: true
|
||||||
|
options:
|
||||||
|
- Firefox
|
||||||
|
- Chrome
|
||||||
|
- Safari
|
||||||
|
- Microsoft Edge
|
||||||
|
- Other
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
id: terms
|
||||||
|
attributes:
|
||||||
|
label: No Duplicate of the Issue
|
||||||
|
description: |
|
||||||
|
Please confirm that you have searched for similar issues and none of them match your problem.
|
||||||
|
options:
|
||||||
|
- label: I have verified that there are no existing issues raised related to my problem.
|
||||||
|
required: true
|
||||||
76
.github/ISSUE_TEMPLATE/2-feature.yml
vendored
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
name: Feature Request
|
||||||
|
description: Submit a new feature request.
|
||||||
|
title: "[Feature Request]: "
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
## Feature Request
|
||||||
|
|
||||||
|
Thank you for taking the time to suggest a new feature!
|
||||||
|
|
||||||
|
This form is for proposing features or enhancements. Please fill out the following sections to help us understand your idea or suggestion.
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: feature-description
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
attributes:
|
||||||
|
label: Feature Description
|
||||||
|
description: |
|
||||||
|
Describe the feature you would like to see. Tell us what the feature should do and the problem it would solve.
|
||||||
|
|
||||||
|
Provide a clear and concise description of what you want to happen.
|
||||||
|
placeholder: Provide a detailed description of the desired feature.
|
||||||
|
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
## Motivation
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: motivation
|
||||||
|
attributes:
|
||||||
|
label: Why is this feature valuable?
|
||||||
|
description: |
|
||||||
|
Explain why this feature is valuable to you or others. How would it improve the tool or process?
|
||||||
|
|
||||||
|
Describe any relevant scenarios that would benefit from this feature.
|
||||||
|
placeholder: Describe why this feature is important.
|
||||||
|
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
## Possible Implementation
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: implementation
|
||||||
|
attributes:
|
||||||
|
label: Suggested Implementation
|
||||||
|
description: |
|
||||||
|
If you have ideas about how this feature could be implemented, describe them here.
|
||||||
|
|
||||||
|
This section is optional but can be helpful to guide initial discussions.
|
||||||
|
placeholder: Describe how this feature might be implemented.
|
||||||
|
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
## Additional Information
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: additional-info
|
||||||
|
attributes:
|
||||||
|
label: Additional Information
|
||||||
|
description: |
|
||||||
|
If you have any additional information, comments, or resources you think would support or be relevant to your feature request, include them here.
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
id: search-confirmation
|
||||||
|
attributes:
|
||||||
|
label: No Duplicate of the Feature
|
||||||
|
description: |
|
||||||
|
Please confirm that you have searched for similar features in our repository and found none that match your request.
|
||||||
|
options:
|
||||||
|
- label: I have verified that there are no existing features requests similar to my request.
|
||||||
|
required: true
|
||||||
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
blank_issues_enabled: true
|
||||||
|
contact_links:
|
||||||
|
- name: 💬 Discord Server
|
||||||
|
url: https://discord.gg/Cn8pWhQRxZ
|
||||||
|
about: You can join our Discord server for real time discussion and support
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
# Build the application
|
# Build the application
|
||||||
FROM gradle:7.6-jdk17 AS build
|
FROM gradle:8.7-jdk17 AS build
|
||||||
|
|
||||||
# Set the working directory
|
# Set the working directory
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|||||||
51
README.md
@@ -159,41 +159,42 @@ Please view https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToUseOCR
|
|||||||
|
|
||||||
## Supported Languages
|
## Supported Languages
|
||||||
|
|
||||||
Stirling PDF currently supports 28!
|
Stirling PDF currently supports 32!
|
||||||
|
|
||||||
| Language | Progress |
|
| Language | Progress |
|
||||||
| ------------------------------------------- | -------------------------------------- |
|
| ------------------------------------------- | -------------------------------------- |
|
||||||
| English (English) (en_GB) |  |
|
| English (English) (en_GB) |  |
|
||||||
| English (US) (en_US) |  |
|
| English (US) (en_US) |  |
|
||||||
| Arabic (العربية) (ar_AR) |  |
|
| Arabic (العربية) (ar_AR) |  |
|
||||||
| German (Deutsch) (de_DE) |  |
|
| German (Deutsch) (de_DE) |  |
|
||||||
| French (Français) (fr_FR) |  |
|
| French (Français) (fr_FR) |  |
|
||||||
| Spanish (Español) (es_ES) |  |
|
| Spanish (Español) (es_ES) |  |
|
||||||
| Simplified Chinese (简体中文) (zh_CN) |  |
|
| Simplified Chinese (简体中文) (zh_CN) |  |
|
||||||
| Traditional Chinese (繁體中文) (zh_TW) |  |
|
| Traditional Chinese (繁體中文) (zh_TW) |  |
|
||||||
| Catalan (Català) (ca_CA) |  |
|
| Catalan (Català) (ca_CA) |  |
|
||||||
| Italian (Italiano) (it_IT) |  |
|
| Italian (Italiano) (it_IT) |  |
|
||||||
| Swedish (Svenska) (sv_SE) |  |
|
| Swedish (Svenska) (sv_SE) |  |
|
||||||
| Polish (Polski) (pl_PL) |  |
|
| Polish (Polski) (pl_PL) |  |
|
||||||
| Romanian (Română) (ro_RO) |  |
|
| Romanian (Română) (ro_RO) |  |
|
||||||
| Korean (한국어) (ko_KR) |  |
|
| Korean (한국어) (ko_KR) |  |
|
||||||
| Portuguese Brazilian (Português) (pt_BR) |  |
|
| Portuguese Brazilian (Português) (pt_BR) |  |
|
||||||
| Russian (Русский) (ru_RU) |  |
|
| Portuguese (Português) (pt_PT) |  |
|
||||||
|
| Russian (Русский) (ru_RU) |  |
|
||||||
| Basque (Euskara) (eu_ES) |  |
|
| Basque (Euskara) (eu_ES) |  |
|
||||||
| Japanese (日本語) (ja_JP) |  |
|
| Japanese (日本語) (ja_JP) |  |
|
||||||
| Dutch (Nederlands) (nl_NL) |  |
|
| Dutch (Nederlands) (nl_NL) |  |
|
||||||
| Greek (Ελληνικά) (el_GR) |  |
|
| Greek (Ελληνικά) (el_GR) |  |
|
||||||
| Turkish (Türkçe) (tr_TR) |  |
|
| Turkish (Türkçe) (tr_TR) |  |
|
||||||
| Indonesia (Bahasa Indonesia) (id_ID) |  |
|
| Indonesia (Bahasa Indonesia) (id_ID) |  |
|
||||||
| Hindi (हिंदी) (hi_IN) |  |
|
| Hindi (हिंदी) (hi_IN) |  |
|
||||||
| Hungarian (Magyar) (hu_HU) |  |
|
| Hungarian (Magyar) (hu_HU) |  |
|
||||||
| Bulgarian (Български) (bg_BG) |  |
|
| Bulgarian (Български) (bg_BG) |  |
|
||||||
| Sebian Latin alphabet (Srpski) (sr_LATN_RS) |  |
|
| Sebian Latin alphabet (Srpski) (sr_LATN_RS) |  |
|
||||||
| Ukrainian (Українська) (uk_UA) |  |
|
| Ukrainian (Українська) (uk_UA) |  |
|
||||||
| Slovakian (Slovensky) (sk_SK) |  |
|
| Slovakian (Slovensky) (sk_SK) |  |
|
||||||
| Czech (Česky) (cs_CZ) |  |
|
| Czech (Česky) (cs_CZ) |  |
|
||||||
| Croatian (Hrvatski) (hr_HR) |  |
|
| Croatian (Hrvatski) (hr_HR) |  |
|
||||||
| Norwegian (Norsk) (no_NB) |  |
|
| Norwegian (Norsk) (no_NB) |  |
|
||||||
|
|
||||||
## Contributing (creating issues, translations, fixing bugs, etc.)
|
## Contributing (creating issues, translations, fixing bugs, etc.)
|
||||||
|
|
||||||
|
|||||||
222
build.gradle
@@ -1,24 +1,29 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id 'java'
|
id "java"
|
||||||
id 'org.springframework.boot' version '3.2.4'
|
id "org.springframework.boot" version "3.3.0"
|
||||||
id 'io.spring.dependency-management' version '1.1.3'
|
id "io.spring.dependency-management" version "1.1.5"
|
||||||
id 'org.springdoc.openapi-gradle-plugin' version '1.8.0'
|
id "org.springdoc.openapi-gradle-plugin" version "1.8.0"
|
||||||
id "io.swagger.swaggerhub" version "1.3.2"
|
id "io.swagger.swaggerhub" version "1.3.2"
|
||||||
id 'edu.sc.seis.launch4j' version '3.0.5'
|
id "edu.sc.seis.launch4j" version "3.0.5"
|
||||||
id 'com.diffplug.spotless' version '6.25.0'
|
id "com.diffplug.spotless" version "6.25.0"
|
||||||
id 'com.github.jk1.dependency-license-report' version '2.6'
|
id "com.github.jk1.dependency-license-report" version "2.8"
|
||||||
}
|
}
|
||||||
|
|
||||||
import com.github.jk1.license.render.*
|
import com.github.jk1.license.render.*
|
||||||
|
|
||||||
group = 'stirling.software'
|
ext {
|
||||||
version = '0.25.1'
|
springBootVersion = "3.3.0"
|
||||||
|
}
|
||||||
|
|
||||||
//17 is lowest but we support and recommend 21
|
group = "stirling.software"
|
||||||
sourceCompatibility = '17'
|
version = "0.26.1"
|
||||||
|
|
||||||
|
// 17 is lowest but we support and recommend 21
|
||||||
|
sourceCompatibility = "17"
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
maven { url "https://jitpack.io" }
|
||||||
}
|
}
|
||||||
|
|
||||||
licenseReport {
|
licenseReport {
|
||||||
@@ -28,15 +33,15 @@ licenseReport {
|
|||||||
sourceSets {
|
sourceSets {
|
||||||
main {
|
main {
|
||||||
java {
|
java {
|
||||||
if (System.getenv('DOCKER_ENABLE_SECURITY') == 'false') {
|
if (System.getenv("DOCKER_ENABLE_SECURITY") == "false") {
|
||||||
exclude 'stirling/software/SPDF/config/security/**'
|
exclude "stirling/software/SPDF/config/security/**"
|
||||||
exclude 'stirling/software/SPDF/controller/api/UserController.java'
|
exclude "stirling/software/SPDF/controller/api/UserController.java"
|
||||||
exclude 'stirling/software/SPDF/controller/web/AccountWebController.java'
|
exclude "stirling/software/SPDF/controller/web/AccountWebController.java"
|
||||||
exclude 'stirling/software/SPDF/model/ApiKeyAuthenticationToken.java'
|
exclude "stirling/software/SPDF/model/ApiKeyAuthenticationToken.java"
|
||||||
exclude 'stirling/software/SPDF/model/Authority.java'
|
exclude "stirling/software/SPDF/model/Authority.java"
|
||||||
exclude 'stirling/software/SPDF/model/PersistentLogin.java'
|
exclude "stirling/software/SPDF/model/PersistentLogin.java"
|
||||||
exclude 'stirling/software/SPDF/model/User.java'
|
exclude "stirling/software/SPDF/model/User.java"
|
||||||
exclude 'stirling/software/SPDF/repository/**'
|
exclude "stirling/software/SPDF/repository/**"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -49,34 +54,34 @@ openApi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
launch4j {
|
launch4j {
|
||||||
icon = "${projectDir}/src/main/resources/static/favicon.ico"
|
icon = "${projectDir}/src/main/resources/static/favicon.ico"
|
||||||
|
|
||||||
outfile="Stirling-PDF.exe"
|
outfile="Stirling-PDF.exe"
|
||||||
headerType="console"
|
headerType="console"
|
||||||
jarTask = tasks.bootJar
|
jarTask = tasks.bootJar
|
||||||
|
|
||||||
errTitle="Encountered error, Do you have Java 21?"
|
errTitle="Encountered error, Do you have Java 21?"
|
||||||
downloadUrl="https://download.oracle.com/java/21/latest/jdk-21_windows-x64_bin.exe"
|
downloadUrl="https://download.oracle.com/java/21/latest/jdk-21_windows-x64_bin.exe"
|
||||||
variables=["BROWSER_OPEN=true", "ENDPOINTS_GROUPS_TO_REMOVE=CLI"]
|
variables=["BROWSER_OPEN=true", "ENDPOINTS_GROUPS_TO_REMOVE=CLI"]
|
||||||
jreMinVersion="17"
|
jreMinVersion="17"
|
||||||
|
|
||||||
mutexName="Stirling-PDF"
|
mutexName="Stirling-PDF"
|
||||||
windowTitle="Stirling-PDF"
|
windowTitle="Stirling-PDF"
|
||||||
|
|
||||||
messagesStartupError="An error occurred while starting Stirling-PDF"
|
messagesStartupError="An error occurred while starting Stirling-PDF"
|
||||||
//messagesJreNotFoundError="This application requires a Java Runtime Environment, Please download Java 17."
|
// messagesJreNotFoundError="This application requires a Java Runtime Environment, Please download Java 17."
|
||||||
messagesJreVersionError="You are running the wrong version of Java, Please download Java 21."
|
messagesJreVersionError="You are running the wrong version of Java, Please download Java 21."
|
||||||
messagesLauncherError="Java is corrupted. Please uninstall and then install Java 21."
|
messagesLauncherError="Java is corrupted. Please uninstall and then install Java 21."
|
||||||
messagesInstanceAlreadyExists="Stirling-PDF is already running."
|
messagesInstanceAlreadyExists="Stirling-PDF is already running."
|
||||||
}
|
}
|
||||||
|
|
||||||
spotless {
|
spotless {
|
||||||
java {
|
java {
|
||||||
target project.fileTree('src/main/java')
|
target project.fileTree('src/main/java')
|
||||||
|
|
||||||
googleJavaFormat('1.19.1').aosp().reorderImports(false)
|
googleJavaFormat("1.22.0").aosp().reorderImports(false)
|
||||||
|
|
||||||
importOrder('java', 'javax', 'org', 'com', 'net', 'io')
|
importOrder("java", "javax", "org", "com", "net", "io")
|
||||||
toggleOffOn()
|
toggleOffOn()
|
||||||
trimTrailingWhitespace()
|
trimTrailingWhitespace()
|
||||||
indentWithSpaces()
|
indentWithSpaces()
|
||||||
@@ -84,130 +89,139 @@ spotless {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tasks.wrapper {
|
||||||
|
gradleVersion = "8.7"
|
||||||
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
//security updates
|
//security updates
|
||||||
implementation 'ch.qos.logback:logback-classic:1.5.3'
|
implementation "ch.qos.logback:logback-classic:1.5.6"
|
||||||
implementation 'ch.qos.logback:logback-core:1.5.3'
|
implementation "ch.qos.logback:logback-core:1.5.6"
|
||||||
implementation 'org.springframework:spring-webmvc:6.1.5'
|
implementation "org.springframework:spring-webmvc:6.1.8"
|
||||||
|
|
||||||
implementation("io.github.pixee:java-security-toolkit:1.1.3")
|
implementation("io.github.pixee:java-security-toolkit:1.1.3")
|
||||||
|
|
||||||
implementation 'org.yaml:snakeyaml:2.2'
|
// implementation "org.yaml:snakeyaml:2.2"
|
||||||
|
implementation 'com.github.Carleslc.Simple-YAML:Simple-Yaml:1.8.4'
|
||||||
|
|
||||||
// Exclude Tomcat and include Jetty
|
// Exclude Tomcat and include Jetty
|
||||||
implementation('org.springframework.boot:spring-boot-starter-web:3.2.4') {
|
implementation("org.springframework.boot:spring-boot-starter-web:$springBootVersion") {
|
||||||
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
|
exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat"
|
||||||
}
|
}
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-jetty:3.2.4'
|
implementation "org.springframework.boot:spring-boot-starter-jetty:$springBootVersion"
|
||||||
|
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf:3.2.4'
|
|
||||||
|
|
||||||
if (System.getenv('DOCKER_ENABLE_SECURITY') != 'false') {
|
implementation "org.springframework.boot:spring-boot-starter-thymeleaf:$springBootVersion"
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-security:3.2.4'
|
|
||||||
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.2.RELEASE'
|
if (System.getenv("DOCKER_ENABLE_SECURITY") != "false") {
|
||||||
implementation "org.springframework.boot:spring-boot-starter-data-jpa:3.2.4"
|
implementation "org.springframework.boot:spring-boot-starter-security:$springBootVersion"
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client:3.2.4'
|
implementation "org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.2.RELEASE"
|
||||||
|
implementation "org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion"
|
||||||
|
implementation "org.springframework.boot:spring-boot-starter-oauth2-client:$springBootVersion"
|
||||||
|
|
||||||
//2.2.x requires rebuild of DB file.. need migration path
|
//2.2.x requires rebuild of DB file.. need migration path
|
||||||
implementation "com.h2database:h2:2.1.214"
|
implementation "com.h2database:h2:2.1.214"
|
||||||
}
|
}
|
||||||
|
|
||||||
testImplementation 'org.springframework.boot:spring-boot-starter-test:3.2.4'
|
testImplementation "org.springframework.boot:spring-boot-starter-test:$springBootVersion"
|
||||||
|
|
||||||
// Batik
|
// Batik
|
||||||
implementation 'org.apache.xmlgraphics:batik-all:1.17'
|
implementation "org.apache.xmlgraphics:batik-all:1.17"
|
||||||
|
|
||||||
// TwelveMonkeys
|
// TwelveMonkeys
|
||||||
implementation 'com.twelvemonkeys.imageio:imageio-batik:3.10.1'
|
implementation "com.twelvemonkeys.imageio:imageio-batik:3.10.1"
|
||||||
implementation 'com.twelvemonkeys.imageio:imageio-bmp:3.10.1'
|
implementation "com.twelvemonkeys.imageio:imageio-bmp:3.10.1"
|
||||||
// implementation 'com.twelvemonkeys.imageio:imageio-hdr:3.10.1'
|
// implementation "com.twelvemonkeys.imageio:imageio-hdr:3.10.1"
|
||||||
// implementation 'com.twelvemonkeys.imageio:imageio-icns:3.10.1'
|
// implementation "com.twelvemonkeys.imageio:imageio-icns:3.10.1"
|
||||||
// implementation 'com.twelvemonkeys.imageio:imageio-iff:3.10.1'
|
// implementation "com.twelvemonkeys.imageio:imageio-iff:3.10.1"
|
||||||
implementation 'com.twelvemonkeys.imageio:imageio-jpeg:3.10.1'
|
implementation "com.twelvemonkeys.imageio:imageio-jpeg:3.10.1"
|
||||||
// implementation 'com.twelvemonkeys.imageio:imageio-pcx:3.10.1'
|
// implementation "com.twelvemonkeys.imageio:imageio-pcx:3.10.1"
|
||||||
// implementation 'com.twelvemonkeys.imageio:imageio-pict:3.10.1'
|
// implementation "com.twelvemonkeys.imageio:imageio-pict:3.10.1"
|
||||||
// implementation 'com.twelvemonkeys.imageio:imageio-pnm:3.10.1'
|
// implementation "com.twelvemonkeys.imageio:imageio-pnm:3.10.1"
|
||||||
// implementation 'com.twelvemonkeys.imageio:imageio-psd:3.10.1'
|
// implementation "com.twelvemonkeys.imageio:imageio-psd:3.10.1"
|
||||||
// implementation 'com.twelvemonkeys.imageio:imageio-sgi:3.10.1'
|
// implementation "com.twelvemonkeys.imageio:imageio-sgi:3.10.1"
|
||||||
// implementation 'com.twelvemonkeys.imageio:imageio-tga:3.10.1'
|
// implementation "com.twelvemonkeys.imageio:imageio-tga:3.10.1"
|
||||||
// implementation 'com.twelvemonkeys.imageio:imageio-thumbsdb:3.10.1'
|
// implementation "com.twelvemonkeys.imageio:imageio-thumbsdb:3.10.1"
|
||||||
implementation 'com.twelvemonkeys.imageio:imageio-tiff:3.10.1'
|
implementation "com.twelvemonkeys.imageio:imageio-tiff:3.10.1"
|
||||||
implementation 'com.twelvemonkeys.imageio:imageio-webp:3.10.1'
|
implementation "com.twelvemonkeys.imageio:imageio-webp:3.10.1"
|
||||||
// implementation 'com.twelvemonkeys.imageio:imageio-xwd:3.10.1'
|
// implementation "com.twelvemonkeys.imageio:imageio-xwd:3.10.1"
|
||||||
|
|
||||||
implementation 'commons-io:commons-io:2.15.1'
|
implementation "commons-io:commons-io:2.16.1"
|
||||||
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
|
implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0"
|
||||||
|
|
||||||
//general PDF
|
//general PDF
|
||||||
|
|
||||||
// https://mvnrepository.com/artifact/com.opencsv/opencsv
|
// https://mvnrepository.com/artifact/com.opencsv/opencsv
|
||||||
implementation ('com.opencsv:opencsv:5.9') {
|
implementation ("com.opencsv:opencsv:5.9") {
|
||||||
exclude group: 'commons-logging', module: 'commons-logging'
|
exclude group: "commons-logging", module: "commons-logging"
|
||||||
}
|
}
|
||||||
|
|
||||||
implementation ('org.apache.pdfbox:pdfbox:3.0.2'){
|
implementation ("org.apache.pdfbox:pdfbox:3.0.2") {
|
||||||
exclude group: 'commons-logging', module: 'commons-logging'
|
exclude group: "commons-logging", module: "commons-logging"
|
||||||
}
|
}
|
||||||
|
|
||||||
implementation ('org.apache.pdfbox:xmpbox:3.0.2'){
|
implementation ("org.apache.pdfbox:xmpbox:3.0.2") {
|
||||||
exclude group: 'commons-logging', module: 'commons-logging'
|
exclude group: "commons-logging", module: "commons-logging"
|
||||||
}
|
}
|
||||||
|
implementation "com.github.Carleslc.Simple-YAML:Simple-Yaml:1.8.4"
|
||||||
|
|
||||||
implementation 'org.bouncycastle:bcprov-jdk18on:1.77'
|
implementation "org.bouncycastle:bcprov-jdk18on:1.78.1"
|
||||||
implementation 'org.bouncycastle:bcpkix-jdk18on:1.77'
|
implementation "org.bouncycastle:bcpkix-jdk18on:1.78.1"
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-actuator:3.2.4'
|
implementation "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion"
|
||||||
implementation 'io.micrometer:micrometer-core:1.12.4'
|
implementation "io.micrometer:micrometer-core:1.13.0"
|
||||||
implementation group: 'com.google.zxing', name: 'core', version: '3.5.3'
|
implementation group: "com.google.zxing", name: "core", version: "3.5.3"
|
||||||
// https://mvnrepository.com/artifact/org.commonmark/commonmark
|
// https://mvnrepository.com/artifact/org.commonmark/commonmark
|
||||||
implementation 'org.commonmark:commonmark:0.22.0'
|
implementation "org.commonmark:commonmark:0.22.0"
|
||||||
implementation 'org.commonmark:commonmark-ext-gfm-tables:0.22.0'
|
implementation "org.commonmark:commonmark-ext-gfm-tables:0.22.0"
|
||||||
// https://mvnrepository.com/artifact/com.github.vladimir-bukhtoyarov/bucket4j-core
|
// https://mvnrepository.com/artifact/com.bucket4j/bucket4j_jdk17
|
||||||
implementation 'com.github.vladimir-bukhtoyarov:bucket4j-core:7.6.0'
|
implementation "com.bucket4j:bucket4j_jdk17-core:8.12.1"
|
||||||
|
|
||||||
implementation 'com.fathzer:javaluator:3.0.3'
|
implementation "com.fathzer:javaluator:3.0.4"
|
||||||
|
|
||||||
developmentOnly("org.springframework.boot:spring-boot-devtools:3.2.4")
|
developmentOnly("org.springframework.boot:spring-boot-devtools:$springBootVersion")
|
||||||
compileOnly 'org.projectlombok:lombok:1.18.32'
|
compileOnly "org.projectlombok:lombok:1.18.32"
|
||||||
annotationProcessor 'org.projectlombok:lombok:1.18.32'
|
annotationProcessor "org.projectlombok:lombok:1.18.32"
|
||||||
|
|
||||||
|
testImplementation 'org.mockito:mockito-inline:3.12.4'
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.withType(JavaCompile).configureEach {
|
tasks.withType(JavaCompile).configureEach {
|
||||||
dependsOn 'spotlessApply'
|
options.encoding = "UTF-8"
|
||||||
|
dependsOn "spotlessApply"
|
||||||
}
|
}
|
||||||
compileJava {
|
compileJava {
|
||||||
options.compilerArgs << '-parameters'
|
options.compilerArgs << "-parameters"
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.register('writeVersion') {
|
task writeVersion {
|
||||||
def propsFile = file('src/main/resources/version.properties')
|
def propsFile = file("src/main/resources/version.properties")
|
||||||
def props = new Properties()
|
def props = new Properties()
|
||||||
props.setProperty('version', version)
|
props.setProperty("version", version)
|
||||||
props.store(propsFile.newWriter(), null)
|
props.store(propsFile.newWriter(), null)
|
||||||
}
|
}
|
||||||
|
|
||||||
swaggerhubUpload {
|
swaggerhubUpload {
|
||||||
//dependsOn generateOpenApiDocs // Depends on your task generating Swagger docs
|
//dependsOn generateOpenApiDocs // Depends on your task generating Swagger docs
|
||||||
api 'Stirling-PDF' // The name of your API on SwaggerHub
|
api "Stirling-PDF" // The name of your API on SwaggerHub
|
||||||
owner 'Frooodle' // Your SwaggerHub username (or organization name)
|
owner "Frooodle" // Your SwaggerHub username (or organization name)
|
||||||
version project.version // The version of your API
|
version project.version // The version of your API
|
||||||
inputFile './SwaggerDoc.json' // The path to your Swagger docs
|
inputFile "./SwaggerDoc.json" // The path to your Swagger docs
|
||||||
token "${System.getenv('SWAGGERHUB_API_KEY')}" // Your SwaggerHub API key, passed as an environment variable
|
token "${System.getenv("SWAGGERHUB_API_KEY")}" // Your SwaggerHub API key, passed as an environment variable
|
||||||
oas '3.0.0' // The version of the OpenAPI Specification you're using
|
oas "3.0.0" // The version of the OpenAPI Specification you"re using
|
||||||
}
|
}
|
||||||
|
|
||||||
jar {
|
jar {
|
||||||
enabled = false
|
enabled = false
|
||||||
manifest {
|
manifest {
|
||||||
attributes 'Implementation-Title': 'Stirling-PDF',
|
attributes "Implementation-Title": "Stirling-PDF",
|
||||||
'Implementation-Version': project.version
|
"Implementation-Version": project.version
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.named('test') {
|
tasks.named("test") {
|
||||||
useJUnitPlatform()
|
useJUnitPlatform()
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.register('printVersion') {
|
task printVersion {
|
||||||
println project.version
|
println project.version
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
appVersion: 0.25.1
|
appVersion: 0.26.1
|
||||||
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
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 9.4 KiB |
@@ -1,110 +1 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" id="Layer_1" x="0" y="0" version="1.1" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512" xml:space="preserve"><defs id="defs173"><linearGradient id="XMLID_5_" x1="304.496" x2="316.036" y1="422.91" y2="326.263" gradientUnits="userSpaceOnUse"><stop offset="0" style="stop-color:#dcf1f3" id="stop156"/><stop offset="1" style="stop-color:#c2c2c9" id="stop158"/></linearGradient></defs><style id="style150" type="text/css">.st1{fill:#c02223}.st2{fill:#882425}.st3{fill:url(#XMLID_5_)}.st4{fill:url(#XMLID_7_)}</style><g id="XMLID_4_"><path id="XMLID_131_" d="M 347.01402,14.355825 98.978019,69.02261 C 73.825483,74.547445 55.942464,96.792175 55.942464,122.52628 v 315.06096 c 0,22.39012 16.719895,41.14548 38.819234,43.76251 L 224.8861,498.36042 339.48636,384.26465 455.76603,265.15425 453.73057,84.870162 C 453.43979,62.916214 433.08513,46.632491 411.71274,51.284984 l -28.78729,6.251786 0.14539,-13.666697 C 383.36162,24.678542 365.62399,10.284894 347.01402,14.355825 Z" class="st1" style="stroke-width:1.45391"/><path id="XMLID_117_" d="m 383.21622,57.53677 v 285.8375 L 456.05681,265.00885 454.02135,78.763767 C 453.87595,59.863016 436.28372,45.905539 417.81914,49.97647 Z" class="st2" style="stroke-width:1.45391"/><polygon id="XMLID_18_" points="234.7 422.6 368.5 387.7 393.5 262.2" class="st3" style="fill:url(#XMLID_5_)" transform="matrix(1.4556308,0,0,1.4548265,-116.73161,-116.45231)"/><linearGradient id="XMLID_7_" x1="223.084" x2="241.417" y1="372.756" y2="114.557" gradientTransform="matrix(1.4539039,0,0,1.4539039,-116.19976,-116.20474)" gradientUnits="userSpaceOnUse"><stop offset="0" style="stop-color:#dcf1f3" id="stop163"/><stop offset="1" style="stop-color:#c2c2c9" id="stop165"/></linearGradient><path id="XMLID_6_" d="m 282.89686,214.84917 c 0,0 -22.24473,-28.93269 -38.67384,-36.78377 -10.46811,-4.94327 -26.02489,-6.83335 -38.23768,-0.72695 -18.02841,9.0142 -19.91848,34.31213 -3.34397,44.34406 3.92553,2.47165 9.15959,4.50711 15.99294,6.10641 36.63838,8.43264 97.12077,25.87949 89.70587,96.10304 0,0 -4.21633,65.86185 -73.56753,73.42215 -12.2128,1.30851 -24.57098,0.43617 -36.493,-2.32625 -16.42911,-3.63476 -45.50719,-11.04967 -59.75545,-19.91849 l -2.61703,-75.16682 h 6.97875 c 0,0 13.81208,33.43978 53.06749,49.57812 7.26952,2.90781 15.26599,4.07093 22.97168,2.90781 9.74116,-1.45391 21.22699,-6.68796 25.87949,-22.53551 0,0 7.85108,-23.11707 -32.85823,-35.76604 -32.56744,-10.17733 -63.24481,-20.64543 -75.89378,-54.95757 -5.961,-16.28371 -6.97874,-34.31212 -2.90781,-51.61358 5.37944,-22.53551 20.79082,-54.23062 64.40794,-67.89732 0,0 57.28381,-15.55677 96.53922,5.52484 l -1.74468,89.70587 z" class="st4" style="fill:url(#XMLID_7_);stroke-width:1.45391"/></g></svg>
|
||||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
|
|
||||||
<svg
|
|
||||||
version="1.1"
|
|
||||||
id="Layer_1"
|
|
||||||
x="0px"
|
|
||||||
y="0px"
|
|
||||||
viewBox="0 0 512 512"
|
|
||||||
style="enable-background:new 0 0 512 512;"
|
|
||||||
xml:space="preserve"
|
|
||||||
sodipodi:docname="favicon.svg"
|
|
||||||
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
|
|
||||||
inkscape:export-filename="favicon.png"
|
|
||||||
inkscape:export-xdpi="96"
|
|
||||||
inkscape:export-ydpi="96"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"><defs
|
|
||||||
id="defs173">
|
|
||||||
|
|
||||||
|
|
||||||
<linearGradient
|
|
||||||
id="XMLID_5_"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="304.496"
|
|
||||||
y1="422.9102"
|
|
||||||
x2="316.036"
|
|
||||||
y2="326.2626">
|
|
||||||
<stop
|
|
||||||
offset="0"
|
|
||||||
style="stop-color:#DCF1F3"
|
|
||||||
id="stop156" />
|
|
||||||
<stop
|
|
||||||
offset="1"
|
|
||||||
style="stop-color:#C2C2C9"
|
|
||||||
id="stop158" />
|
|
||||||
</linearGradient>
|
|
||||||
|
|
||||||
</defs><sodipodi:namedview
|
|
||||||
id="namedview171"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#000000"
|
|
||||||
borderopacity="0.25"
|
|
||||||
inkscape:showpageshadow="2"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pagecheckerboard="0"
|
|
||||||
inkscape:deskcolor="#d1d1d1"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:zoom="1.4142136"
|
|
||||||
inkscape:cx="219.91021"
|
|
||||||
inkscape:cy="232.63813"
|
|
||||||
inkscape:window-width="3840"
|
|
||||||
inkscape:window-height="2054"
|
|
||||||
inkscape:window-x="2869"
|
|
||||||
inkscape:window-y="-11"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="XMLID_4_" />
|
|
||||||
<style
|
|
||||||
type="text/css"
|
|
||||||
id="style150">
|
|
||||||
.st0{fill:#FFFFFF;}
|
|
||||||
.st1{fill:#C02223;}
|
|
||||||
.st2{fill:#882425;}
|
|
||||||
.st3{fill:url(#XMLID_5_);}
|
|
||||||
.st4{fill:url(#XMLID_7_);}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<g
|
|
||||||
id="XMLID_4_">
|
|
||||||
<path
|
|
||||||
id="XMLID_131_"
|
|
||||||
class="st1"
|
|
||||||
d="M 347.01402,14.355825 98.978019,69.02261 C 73.825483,74.547445 55.942464,96.792175 55.942464,122.52628 v 315.06096 c 0,22.39012 16.719895,41.14548 38.819234,43.76251 L 224.8861,498.36042 339.48636,384.26465 455.76603,265.15425 453.73057,84.870162 C 453.43979,62.916214 433.08513,46.632491 411.71274,51.284984 l -28.78729,6.251786 0.14539,-13.666697 C 383.36162,24.678542 365.62399,10.284894 347.01402,14.355825 Z"
|
|
||||||
sodipodi:nodetypes="ccssccccccccc"
|
|
||||||
style="stroke-width:1.45391" /><path
|
|
||||||
id="XMLID_117_"
|
|
||||||
class="st2"
|
|
||||||
d="m 383.21622,57.53677 v 285.8375 L 456.05681,265.00885 454.02135,78.763767 C 453.87595,59.863016 436.28372,45.905539 417.81914,49.97647 Z"
|
|
||||||
style="stroke-width:1.45391" /><polygon
|
|
||||||
id="XMLID_18_"
|
|
||||||
class="st3"
|
|
||||||
points="234.7,422.6 368.5,387.7 393.5,262.2 "
|
|
||||||
style="fill:url(#XMLID_5_)"
|
|
||||||
transform="matrix(1.4556308,0,0,1.4548265,-116.73161,-116.45231)" />
|
|
||||||
<linearGradient
|
|
||||||
id="XMLID_7_"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="223.0838"
|
|
||||||
y1="372.7559"
|
|
||||||
x2="241.4174"
|
|
||||||
y2="114.557"
|
|
||||||
gradientTransform="matrix(1.4539039,0,0,1.4539039,-116.19976,-116.20474)">
|
|
||||||
<stop
|
|
||||||
offset="0"
|
|
||||||
style="stop-color:#DCF1F3"
|
|
||||||
id="stop163" />
|
|
||||||
<stop
|
|
||||||
offset="1"
|
|
||||||
style="stop-color:#C2C2C9"
|
|
||||||
id="stop165" />
|
|
||||||
</linearGradient>
|
|
||||||
<path
|
|
||||||
id="XMLID_6_"
|
|
||||||
class="st4"
|
|
||||||
d="m 282.89686,214.84917 c 0,0 -22.24473,-28.93269 -38.67384,-36.78377 -10.46811,-4.94327 -26.02489,-6.83335 -38.23768,-0.72695 -18.02841,9.0142 -19.91848,34.31213 -3.34397,44.34406 3.92553,2.47165 9.15959,4.50711 15.99294,6.10641 36.63838,8.43264 97.12077,25.87949 89.70587,96.10304 0,0 -4.21633,65.86185 -73.56753,73.42215 -12.2128,1.30851 -24.57098,0.43617 -36.493,-2.32625 -16.42911,-3.63476 -45.50719,-11.04967 -59.75545,-19.91849 l -2.61703,-75.16682 h 6.97875 c 0,0 13.81208,33.43978 53.06749,49.57812 7.26952,2.90781 15.26599,4.07093 22.97168,2.90781 9.74116,-1.45391 21.22699,-6.68796 25.87949,-22.53551 0,0 7.85108,-23.11707 -32.85823,-35.76604 -32.56744,-10.17733 -63.24481,-20.64543 -75.89378,-54.95757 -5.961,-16.28371 -6.97874,-34.31212 -2.90781,-51.61358 5.37944,-22.53551 20.79082,-54.23062 64.40794,-67.89732 0,0 57.28381,-15.55677 96.53922,5.52484 l -1.74468,89.70587 z"
|
|
||||||
style="fill:url(#XMLID_7_);stroke-width:1.45391" />
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
BIN
images/settings-light.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 12 KiB |
BIN
images/stirling-home-dark.png
Normal file
|
After Width: | Height: | Size: 242 KiB |
|
Before Width: | Height: | Size: 118 KiB |
|
Before Width: | Height: | Size: 166 KiB After Width: | Height: | Size: 145 KiB |
43
pipeline/defaultWebUIConfigs/OCR images.json
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"name": "OCR images",
|
||||||
|
"pipeline": [
|
||||||
|
{
|
||||||
|
"operation": "/api/v1/convert/img/pdf",
|
||||||
|
"parameters": {
|
||||||
|
"fitOption": "fillPage",
|
||||||
|
"colorType": "color",
|
||||||
|
"autoRotate": true,
|
||||||
|
"fileInput": "automated"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"operation": "/api/v1/general/merge-pdfs",
|
||||||
|
"parameters": {
|
||||||
|
"sortType": "orderProvided",
|
||||||
|
"fileInput": "automated"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"operation": "/api/v1/misc/ocr-pdf",
|
||||||
|
"parameters": {
|
||||||
|
"languages": [
|
||||||
|
"eng"
|
||||||
|
],
|
||||||
|
"sidecar": false,
|
||||||
|
"deskew": false,
|
||||||
|
"clean": false,
|
||||||
|
"cleanFinal": false,
|
||||||
|
"ocrType": "skip-text",
|
||||||
|
"ocrRenderType": "hocr",
|
||||||
|
"removeImagesAfter": false,
|
||||||
|
"fileInput": "automated"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_examples": {
|
||||||
|
"outputDir": "{outputFolder}/{folderName}",
|
||||||
|
"outputFileName": "{filename}-{pipelineName}-{date}-{time}"
|
||||||
|
},
|
||||||
|
"outputDir": "{outputFolder}",
|
||||||
|
"outputFileName": "{filename}"
|
||||||
|
}
|
||||||
@@ -15,7 +15,10 @@ ignore = [
|
|||||||
|
|
||||||
[cs_CZ]
|
[cs_CZ]
|
||||||
ignore = [
|
ignore = [
|
||||||
|
'info',
|
||||||
'language.direction',
|
'language.direction',
|
||||||
|
'pipeline.header',
|
||||||
|
'text',
|
||||||
]
|
]
|
||||||
|
|
||||||
[de_DE]
|
[de_DE]
|
||||||
@@ -58,6 +61,7 @@ ignore = [
|
|||||||
[fr_FR]
|
[fr_FR]
|
||||||
ignore = [
|
ignore = [
|
||||||
'language.direction',
|
'language.direction',
|
||||||
|
'sponsor',
|
||||||
]
|
]
|
||||||
|
|
||||||
[hi_IN]
|
[hi_IN]
|
||||||
@@ -65,6 +69,16 @@ ignore = [
|
|||||||
'language.direction',
|
'language.direction',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[hr_HR]
|
||||||
|
ignore = [
|
||||||
|
'font',
|
||||||
|
'home.pipeline.title',
|
||||||
|
'info',
|
||||||
|
'language.direction',
|
||||||
|
'pdfOrganiser.tags',
|
||||||
|
'showJS.tags',
|
||||||
|
]
|
||||||
|
|
||||||
[hu_HU]
|
[hu_HU]
|
||||||
ignore = [
|
ignore = [
|
||||||
'language.direction',
|
'language.direction',
|
||||||
@@ -103,6 +117,11 @@ ignore = [
|
|||||||
'language.direction',
|
'language.direction',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[no_NB]
|
||||||
|
ignore = [
|
||||||
|
'language.direction',
|
||||||
|
]
|
||||||
|
|
||||||
[pl_PL]
|
[pl_PL]
|
||||||
ignore = [
|
ignore = [
|
||||||
'language.direction',
|
'language.direction',
|
||||||
|
|||||||
@@ -58,7 +58,8 @@ public class CleanUrlInterceptor implements HandlerInterceptor {
|
|||||||
|
|
||||||
// Redirect to the URL with only allowed query parameters
|
// Redirect to the URL with only allowed query parameters
|
||||||
String redirectUrl = requestURI + "?" + newQueryString;
|
String redirectUrl = requestURI + "?" + newQueryString;
|
||||||
response.sendRedirect(redirectUrl);
|
|
||||||
|
response.sendRedirect(request.getContextPath() + redirectUrl);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,29 @@
|
|||||||
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.net.URL;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.ArrayList;
|
import java.nio.file.StandardCopyOption;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.simpleyaml.configuration.comments.CommentType;
|
||||||
|
import org.simpleyaml.configuration.file.YamlFile;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.context.ApplicationContextInitializer;
|
import org.springframework.context.ApplicationContextInitializer;
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
|
|
||||||
public class ConfigInitializer
|
public class ConfigInitializer
|
||||||
implements ApplicationContextInitializer<ConfigurableApplicationContext> {
|
implements ApplicationContextInitializer<ConfigurableApplicationContext> {
|
||||||
|
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(ConfigInitializer.class);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initialize(ConfigurableApplicationContext applicationContext) {
|
public void initialize(ConfigurableApplicationContext applicationContext) {
|
||||||
try {
|
try {
|
||||||
@@ -47,107 +53,89 @@ public class ConfigInitializer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Load the template content from classpath
|
|
||||||
List<String> templateLines;
|
// Define the path to the config settings file
|
||||||
try (InputStream in =
|
Path settingsPath = Paths.get("configs", "settings.yml");
|
||||||
getClass().getClassLoader().getResourceAsStream("settings.yml.template")) {
|
// Load the template resource
|
||||||
if (in == null) {
|
URL settingsTemplateResource =
|
||||||
throw new FileNotFoundException(
|
getClass().getClassLoader().getResource("settings.yml.template");
|
||||||
"Resource file not found: settings.yml.template");
|
if (settingsTemplateResource == null) {
|
||||||
}
|
throw new IOException("Resource 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read the user settings file if it exists
|
// Create a temporary file to copy the resource content
|
||||||
Path userPath = Paths.get("configs", "settings.yml");
|
Path tempTemplatePath = Files.createTempFile("settings.yml", ".template");
|
||||||
List<String> userLines =
|
|
||||||
Files.exists(userPath) ? Files.readAllLines(userPath) : new ArrayList<>();
|
|
||||||
|
|
||||||
List<String> resultLines = new ArrayList<>();
|
try (InputStream in = settingsTemplateResource.openStream()) {
|
||||||
int position = 0;
|
Files.copy(in, tempTemplatePath, StandardCopyOption.REPLACE_EXISTING);
|
||||||
for (String templateLine : templateLines) {
|
|
||||||
// Check if the line is a comment
|
|
||||||
if (templateLine.trim().startsWith("#")) {
|
|
||||||
String entry = templateLine.trim().substring(1).trim();
|
|
||||||
if (!entry.isEmpty()) {
|
|
||||||
// Check if this comment has been uncommented in userLines
|
|
||||||
String key = entry.split(":")[0].trim();
|
|
||||||
addLine(resultLines, userLines, templateLine, key, position);
|
|
||||||
} else {
|
|
||||||
resultLines.add(templateLine);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Check if the line is a key-value pair
|
|
||||||
else if (templateLine.contains(":")) {
|
|
||||||
String key = templateLine.split(":")[0].trim();
|
|
||||||
addLine(resultLines, userLines, templateLine, key, position);
|
|
||||||
}
|
|
||||||
// Handle empty lines
|
|
||||||
else if (templateLine.trim().length() == 0) {
|
|
||||||
resultLines.add("");
|
|
||||||
}
|
|
||||||
position++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write the result to the user settings file
|
final YamlFile settingsTemplateFile = new YamlFile(tempTemplatePath.toFile());
|
||||||
Files.write(userPath, resultLines);
|
settingsTemplateFile.loadWithComments();
|
||||||
|
|
||||||
|
final YamlFile settingsFile = new YamlFile(settingsPath.toFile());
|
||||||
|
settingsFile.loadWithComments();
|
||||||
|
|
||||||
|
// Load headers and comments
|
||||||
|
String header = settingsTemplateFile.getHeader();
|
||||||
|
|
||||||
|
// Create a new file for temporary settings
|
||||||
|
final YamlFile tempSettingFile = new YamlFile(settingsPath.toFile());
|
||||||
|
tempSettingFile.createNewFile(true);
|
||||||
|
tempSettingFile.setHeader(header);
|
||||||
|
|
||||||
|
// Get all keys from the template
|
||||||
|
List<String> keys =
|
||||||
|
Arrays.asList(settingsTemplateFile.getKeys(true).toArray(new String[0]));
|
||||||
|
|
||||||
|
for (String key : keys) {
|
||||||
|
if (!key.contains(".")) {
|
||||||
|
// Add blank lines and comments to specific sections
|
||||||
|
tempSettingFile
|
||||||
|
.path(key)
|
||||||
|
.comment(settingsTemplateFile.getComment(key))
|
||||||
|
.blankLine();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Copy settings from the template to the settings.yml file
|
||||||
|
changeConfigItemFromCommentToKeyValue(
|
||||||
|
settingsTemplateFile, settingsFile, tempSettingFile, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save the settings.yml file
|
||||||
|
tempSettingFile.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure the custom settings file exists
|
// Create custom settings file if it doesn't exist
|
||||||
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO check parent value instead of just indent lines for duplicate keys (like enabled etc)
|
private void changeConfigItemFromCommentToKeyValue(
|
||||||
private static void addLine(
|
final YamlFile settingsTemplateFile,
|
||||||
List<String> resultLines,
|
final YamlFile settingsFile,
|
||||||
List<String> userLines,
|
final YamlFile tempSettingFile,
|
||||||
String templateLine,
|
String path) {
|
||||||
String key,
|
if (settingsFile.get(path) == null && settingsTemplateFile.get(path) != null) {
|
||||||
int position) {
|
// If the key is only in the template, add it to the temporary settings with comments
|
||||||
boolean added = false;
|
tempSettingFile
|
||||||
int templateIndentationLevel = getIndentationLevel(templateLine);
|
.path(path)
|
||||||
int pos = 0;
|
.set(settingsTemplateFile.get(path))
|
||||||
for (String settingsLine : userLines) {
|
.comment(settingsTemplateFile.getComment(path, CommentType.BLOCK))
|
||||||
if (settingsLine.trim().startsWith(key + ":") && position == pos) {
|
.commentSide(settingsTemplateFile.getComment(path, CommentType.SIDE));
|
||||||
int settingsIndentationLevel = getIndentationLevel(settingsLine);
|
} else if (settingsFile.get(path) != null && settingsTemplateFile.get(path) != null) {
|
||||||
// Check if it is correct settingsLine and has the same parent as templateLine
|
// If the key is in both, update the temporary settings with the main settings' value
|
||||||
if (settingsIndentationLevel == templateIndentationLevel) {
|
// and comments
|
||||||
resultLines.add(settingsLine);
|
tempSettingFile
|
||||||
added = true;
|
.path(path)
|
||||||
break;
|
.set(settingsFile.get(path))
|
||||||
}
|
.comment(settingsTemplateFile.getComment(path, CommentType.BLOCK))
|
||||||
}
|
.commentSide(settingsTemplateFile.getComment(path, CommentType.SIDE));
|
||||||
pos++;
|
} else {
|
||||||
|
// Log if the key is not found in both YAML files
|
||||||
|
logger.info("Key not found in both YAML files: " + path);
|
||||||
}
|
}
|
||||||
if (!added) {
|
|
||||||
resultLines.add(templateLine);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static int getIndentationLevel(String line) {
|
|
||||||
int indentationLevel = 0;
|
|
||||||
String trimmedLine = line.trim();
|
|
||||||
if (trimmedLine.startsWith("#")) {
|
|
||||||
line = trimmedLine.substring(1);
|
|
||||||
}
|
|
||||||
for (char c : line.toCharArray()) {
|
|
||||||
if (c == ' ') {
|
|
||||||
indentationLevel++;
|
|
||||||
} else {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return indentationLevel;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,18 @@
|
|||||||
package stirling.software.SPDF.config;
|
package stirling.software.SPDF.config;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
import org.springframework.core.io.ResourceLoader;
|
import org.springframework.core.io.ResourceLoader;
|
||||||
import org.thymeleaf.IEngineConfiguration;
|
import org.thymeleaf.IEngineConfiguration;
|
||||||
import org.thymeleaf.templateresolver.AbstractConfigurableTemplateResolver;
|
import org.thymeleaf.templateresolver.AbstractConfigurableTemplateResolver;
|
||||||
import org.thymeleaf.templateresource.ClassLoaderTemplateResource;
|
|
||||||
import org.thymeleaf.templateresource.FileTemplateResource;
|
import org.thymeleaf.templateresource.FileTemplateResource;
|
||||||
import org.thymeleaf.templateresource.ITemplateResource;
|
import org.thymeleaf.templateresource.ITemplateResource;
|
||||||
|
|
||||||
|
import stirling.software.SPDF.model.InputStreamTemplateResource;
|
||||||
|
|
||||||
public class FileFallbackTemplateResolver extends AbstractConfigurableTemplateResolver {
|
public class FileFallbackTemplateResolver extends AbstractConfigurableTemplateResolver {
|
||||||
|
|
||||||
private final ResourceLoader resourceLoader;
|
private final ResourceLoader resourceLoader;
|
||||||
@@ -40,9 +42,13 @@ public class FileFallbackTemplateResolver extends AbstractConfigurableTemplateRe
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ClassLoaderTemplateResource(
|
InputStream inputStream =
|
||||||
Thread.currentThread().getContextClassLoader(),
|
Thread.currentThread()
|
||||||
"classpath:/templates/" + resourceName,
|
.getContextClassLoader()
|
||||||
characterEncoding);
|
.getResourceAsStream("templates/" + resourceName);
|
||||||
|
if (inputStream != null) {
|
||||||
|
return new InputStreamTemplateResource(inputStream, "UTF-8");
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ class AppUpdateAuthService implements ShowAdminInterface {
|
|||||||
@Autowired private UserRepository userRepository;
|
@Autowired private UserRepository userRepository;
|
||||||
@Autowired private ApplicationProperties applicationProperties;
|
@Autowired private ApplicationProperties applicationProperties;
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean getShowUpdateOnlyAdmins() {
|
public boolean getShowUpdateOnlyAdmins() {
|
||||||
boolean showUpdate = applicationProperties.getSystem().getShowUpdate();
|
boolean showUpdate = applicationProperties.getSystem().getShowUpdate();
|
||||||
if (!showUpdate) {
|
if (!showUpdate) {
|
||||||
|
|||||||
@@ -42,9 +42,11 @@ public class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationF
|
|||||||
String ip = request.getRemoteAddr();
|
String ip = request.getRemoteAddr();
|
||||||
logger.error("Failed login attempt from IP: {}", ip);
|
logger.error("Failed login attempt from IP: {}", ip);
|
||||||
|
|
||||||
|
String contextPath = request.getContextPath();
|
||||||
|
|
||||||
if (exception.getClass().isAssignableFrom(InternalAuthenticationServiceException.class)
|
if (exception.getClass().isAssignableFrom(InternalAuthenticationServiceException.class)
|
||||||
|| "Password must not be null".equalsIgnoreCase(exception.getMessage())) {
|
|| "Password must not be null".equalsIgnoreCase(exception.getMessage())) {
|
||||||
response.sendRedirect("/login?error=oauth2AuthenticationError");
|
response.sendRedirect(contextPath + "/login?error=oauth2AuthenticationError");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,13 +61,13 @@ public class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationF
|
|||||||
loginAttemptService.loginFailed(username);
|
loginAttemptService.loginFailed(username);
|
||||||
if (loginAttemptService.isBlocked(username)
|
if (loginAttemptService.isBlocked(username)
|
||||||
|| exception.getClass().isAssignableFrom(LockedException.class)) {
|
|| exception.getClass().isAssignableFrom(LockedException.class)) {
|
||||||
response.sendRedirect("/login?error=locked");
|
response.sendRedirect(contextPath + "/login?error=locked");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (exception.getClass().isAssignableFrom(BadCredentialsException.class)
|
if (exception.getClass().isAssignableFrom(BadCredentialsException.class)
|
||||||
|| exception.getClass().isAssignableFrom(UsernameNotFoundException.class)) {
|
|| exception.getClass().isAssignableFrom(UsernameNotFoundException.class)) {
|
||||||
response.sendRedirect("/login?error=badcredentials");
|
response.sendRedirect(contextPath + "/login?error=badcredentials");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,8 @@ public class CustomAuthenticationSuccessHandler
|
|||||||
: null;
|
: null;
|
||||||
|
|
||||||
if (savedRequest != null
|
if (savedRequest != null
|
||||||
&& !RequestUriUtils.isStaticResource(savedRequest.getRedirectUrl())) {
|
&& !RequestUriUtils.isStaticResource(
|
||||||
|
request.getContextPath(), savedRequest.getRedirectUrl())) {
|
||||||
// Redirect to the original destination
|
// Redirect to the original destination
|
||||||
super.onAuthenticationSuccess(request, response, authentication);
|
super.onAuthenticationSuccess(request, response, authentication);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -28,8 +28,10 @@ public class FirstLoginFilter extends OncePerRequestFilter {
|
|||||||
throws ServletException, IOException {
|
throws ServletException, IOException {
|
||||||
String method = request.getMethod();
|
String method = request.getMethod();
|
||||||
String requestURI = request.getRequestURI();
|
String requestURI = request.getRequestURI();
|
||||||
|
String contextPath = request.getContextPath();
|
||||||
|
|
||||||
// Check if the request is for static resources
|
// Check if the request is for static resources
|
||||||
boolean isStaticResource = RequestUriUtils.isStaticResource(requestURI);
|
boolean isStaticResource = RequestUriUtils.isStaticResource(contextPath, requestURI);
|
||||||
|
|
||||||
// If it's a static resource, just continue the filter chain and skip the logic below
|
// If it's a static resource, just continue the filter chain and skip the logic below
|
||||||
if (isStaticResource) {
|
if (isStaticResource) {
|
||||||
@@ -43,8 +45,8 @@ public class FirstLoginFilter extends OncePerRequestFilter {
|
|||||||
if ("GET".equalsIgnoreCase(method)
|
if ("GET".equalsIgnoreCase(method)
|
||||||
&& user.isPresent()
|
&& user.isPresent()
|
||||||
&& user.get().isFirstLogin()
|
&& user.get().isFirstLogin()
|
||||||
&& !"/change-creds".equals(requestURI)) {
|
&& !(contextPath + "/change-creds").equals(requestURI)) {
|
||||||
response.sendRedirect("/change-creds");
|
response.sendRedirect(contextPath + "/change-creds");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,8 @@ public class IPRateLimitingFilter implements Filter {
|
|||||||
String method = httpRequest.getMethod();
|
String method = httpRequest.getMethod();
|
||||||
String requestURI = httpRequest.getRequestURI();
|
String requestURI = httpRequest.getRequestURI();
|
||||||
// Check if the request is for static resources
|
// Check if the request is for static resources
|
||||||
boolean isStaticResource = RequestUriUtils.isStaticResource(requestURI);
|
boolean isStaticResource =
|
||||||
|
RequestUriUtils.isStaticResource(httpRequest.getContextPath(), requestURI);
|
||||||
|
|
||||||
// If it's a static resource, just continue the filter chain and skip the logic below
|
// If it's a static resource, just continue the filter chain and skip the logic below
|
||||||
if (isStaticResource) {
|
if (isStaticResource) {
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
package stirling.software.SPDF.config.security;
|
package stirling.software.SPDF.config.security;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.simpleyaml.configuration.file.YamlFile;
|
||||||
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;
|
||||||
@@ -87,32 +86,16 @@ public class InitialSecuritySetup {
|
|||||||
|
|
||||||
private void saveKeyToConfig(String key) throws IOException {
|
private void saveKeyToConfig(String key) throws IOException {
|
||||||
Path path = Paths.get("configs", "settings.yml"); // Target the configs/settings.yml
|
Path path = Paths.get("configs", "settings.yml"); // Target the configs/settings.yml
|
||||||
List<String> lines = Files.readAllLines(path);
|
|
||||||
boolean keyFound = false;
|
|
||||||
|
|
||||||
// Search for the existing key to replace it or place to add it
|
final YamlFile settingsYml = new YamlFile(path.toFile());
|
||||||
for (int i = 0; i < lines.size(); i++) {
|
|
||||||
if (lines.get(i).startsWith("AutomaticallyGenerated:")) {
|
|
||||||
keyFound = true;
|
|
||||||
if (i + 1 < lines.size() && lines.get(i + 1).trim().startsWith("key:")) {
|
|
||||||
lines.set(i + 1, " key: " + key);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
lines.add(i + 1, " key: " + key);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the section doesn't exist, append it
|
settingsYml.loadWithComments();
|
||||||
if (!keyFound) {
|
|
||||||
lines.add("# Automatically Generated Settings (Do Not Edit Directly)");
|
|
||||||
lines.add("AutomaticallyGenerated:");
|
|
||||||
lines.add(" key: " + key);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Write back to the file
|
settingsYml
|
||||||
Files.write(path, lines);
|
.path("AutomaticallyGenerated.key")
|
||||||
|
.set(key)
|
||||||
|
.comment("# Automatically Generated Settings (Do Not Edit Directly)");
|
||||||
|
settingsYml.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isValidUUID(String uuid) {
|
private boolean isValidUUID(String uuid) {
|
||||||
|
|||||||
@@ -38,12 +38,12 @@ import stirling.software.SPDF.config.security.oauth2.CustomOAuth2AuthenticationS
|
|||||||
import stirling.software.SPDF.config.security.oauth2.CustomOAuth2LogoutSuccessHandler;
|
import stirling.software.SPDF.config.security.oauth2.CustomOAuth2LogoutSuccessHandler;
|
||||||
import stirling.software.SPDF.config.security.oauth2.CustomOAuth2UserService;
|
import stirling.software.SPDF.config.security.oauth2.CustomOAuth2UserService;
|
||||||
import stirling.software.SPDF.model.ApplicationProperties;
|
import stirling.software.SPDF.model.ApplicationProperties;
|
||||||
import stirling.software.SPDF.model.ApplicationProperties.GithubProvider;
|
|
||||||
import stirling.software.SPDF.model.ApplicationProperties.GoogleProvider;
|
|
||||||
import stirling.software.SPDF.model.ApplicationProperties.KeycloakProvider;
|
|
||||||
import stirling.software.SPDF.model.ApplicationProperties.Security.OAUTH2;
|
import stirling.software.SPDF.model.ApplicationProperties.Security.OAUTH2;
|
||||||
import stirling.software.SPDF.model.ApplicationProperties.Security.OAUTH2.Client;
|
import stirling.software.SPDF.model.ApplicationProperties.Security.OAUTH2.Client;
|
||||||
import stirling.software.SPDF.model.User;
|
import stirling.software.SPDF.model.User;
|
||||||
|
import stirling.software.SPDF.model.provider.GithubProvider;
|
||||||
|
import stirling.software.SPDF.model.provider.GoogleProvider;
|
||||||
|
import stirling.software.SPDF.model.provider.KeycloakProvider;
|
||||||
import stirling.software.SPDF.repository.JPATokenRepositoryImpl;
|
import stirling.software.SPDF.repository.JPATokenRepositoryImpl;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@@ -238,7 +238,7 @@ public class SecurityConfiguration {
|
|||||||
GoogleProvider google = client.getGoogle();
|
GoogleProvider google = client.getGoogle();
|
||||||
return google != null && google.isSettingsValid()
|
return google != null && google.isSettingsValid()
|
||||||
? Optional.of(
|
? Optional.of(
|
||||||
ClientRegistration.withRegistrationId("google")
|
ClientRegistration.withRegistrationId(google.getName())
|
||||||
.clientId(google.getClientId())
|
.clientId(google.getClientId())
|
||||||
.clientSecret(google.getClientSecret())
|
.clientSecret(google.getClientSecret())
|
||||||
.scope(google.getScopes())
|
.scope(google.getScopes())
|
||||||
@@ -246,8 +246,8 @@ public class SecurityConfiguration {
|
|||||||
.tokenUri(google.getTokenuri())
|
.tokenUri(google.getTokenuri())
|
||||||
.userInfoUri(google.getUserinfouri())
|
.userInfoUri(google.getUserinfouri())
|
||||||
.userNameAttributeName(google.getUseAsUsername())
|
.userNameAttributeName(google.getUseAsUsername())
|
||||||
.clientName("Google")
|
.clientName(google.getClientName())
|
||||||
.redirectUri("{baseUrl}/login/oauth2/code/google")
|
.redirectUri("{baseUrl}/login/oauth2/code/" + google.getName())
|
||||||
.authorizationGrantType(
|
.authorizationGrantType(
|
||||||
org.springframework.security.oauth2.core
|
org.springframework.security.oauth2.core
|
||||||
.AuthorizationGrantType.AUTHORIZATION_CODE)
|
.AuthorizationGrantType.AUTHORIZATION_CODE)
|
||||||
@@ -269,12 +269,12 @@ public class SecurityConfiguration {
|
|||||||
return keycloak != null && keycloak.isSettingsValid()
|
return keycloak != null && keycloak.isSettingsValid()
|
||||||
? Optional.of(
|
? Optional.of(
|
||||||
ClientRegistrations.fromIssuerLocation(keycloak.getIssuer())
|
ClientRegistrations.fromIssuerLocation(keycloak.getIssuer())
|
||||||
.registrationId("keycloak")
|
.registrationId(keycloak.getName())
|
||||||
.clientId(keycloak.getClientId())
|
.clientId(keycloak.getClientId())
|
||||||
.clientSecret(keycloak.getClientSecret())
|
.clientSecret(keycloak.getClientSecret())
|
||||||
.scope(keycloak.getScopes())
|
.scope(keycloak.getScopes())
|
||||||
.userNameAttributeName(keycloak.getUseAsUsername())
|
.userNameAttributeName(keycloak.getUseAsUsername())
|
||||||
.clientName("Keycloak")
|
.clientName(keycloak.getClientName())
|
||||||
.build())
|
.build())
|
||||||
: Optional.empty();
|
: Optional.empty();
|
||||||
}
|
}
|
||||||
@@ -291,7 +291,7 @@ public class SecurityConfiguration {
|
|||||||
GithubProvider github = client.getGithub();
|
GithubProvider github = client.getGithub();
|
||||||
return github != null && github.isSettingsValid()
|
return github != null && github.isSettingsValid()
|
||||||
? Optional.of(
|
? Optional.of(
|
||||||
ClientRegistration.withRegistrationId("github")
|
ClientRegistration.withRegistrationId(github.getName())
|
||||||
.clientId(github.getClientId())
|
.clientId(github.getClientId())
|
||||||
.clientSecret(github.getClientSecret())
|
.clientSecret(github.getClientSecret())
|
||||||
.scope(github.getScopes())
|
.scope(github.getScopes())
|
||||||
@@ -299,8 +299,8 @@ public class SecurityConfiguration {
|
|||||||
.tokenUri(github.getTokenuri())
|
.tokenUri(github.getTokenuri())
|
||||||
.userInfoUri(github.getUserinfouri())
|
.userInfoUri(github.getUserinfouri())
|
||||||
.userNameAttributeName(github.getUseAsUsername())
|
.userNameAttributeName(github.getUseAsUsername())
|
||||||
.clientName("GitHub")
|
.clientName(github.getClientName())
|
||||||
.redirectUri("{baseUrl}/login/oauth2/code/github")
|
.redirectUri("{baseUrl}/login/oauth2/code/" + github.getName())
|
||||||
.authorizationGrantType(
|
.authorizationGrantType(
|
||||||
org.springframework.security.oauth2.core
|
org.springframework.security.oauth2.core
|
||||||
.AuthorizationGrantType.AUTHORIZATION_CODE)
|
.AuthorizationGrantType.AUTHORIZATION_CODE)
|
||||||
|
|||||||
@@ -104,6 +104,7 @@ public class UserAuthenticationFilter extends OncePerRequestFilter {
|
|||||||
contextPath + "/fonts/",
|
contextPath + "/fonts/",
|
||||||
contextPath + "/js/",
|
contextPath + "/js/",
|
||||||
contextPath + "/pdfjs/",
|
contextPath + "/pdfjs/",
|
||||||
|
contextPath + "/pdfjs-legacy/",
|
||||||
contextPath + "/api/v1/info/status",
|
contextPath + "/api/v1/info/status",
|
||||||
contextPath + "/site.webmanifest"
|
contextPath + "/site.webmanifest"
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ import org.springframework.web.filter.OncePerRequestFilter;
|
|||||||
import io.github.bucket4j.Bandwidth;
|
import io.github.bucket4j.Bandwidth;
|
||||||
import io.github.bucket4j.Bucket;
|
import io.github.bucket4j.Bucket;
|
||||||
import io.github.bucket4j.ConsumptionProbe;
|
import io.github.bucket4j.ConsumptionProbe;
|
||||||
import io.github.bucket4j.Refill;
|
|
||||||
import io.github.pixee.security.Newlines;
|
import io.github.pixee.security.Newlines;
|
||||||
|
|
||||||
import jakarta.servlet.FilterChain;
|
import jakarta.servlet.FilterChain;
|
||||||
@@ -142,7 +141,10 @@ public class UserBasedRateLimitingFilter extends OncePerRequestFilter {
|
|||||||
|
|
||||||
private Bucket createUserBucket(int limitPerDay) {
|
private Bucket createUserBucket(int limitPerDay) {
|
||||||
Bandwidth limit =
|
Bandwidth limit =
|
||||||
Bandwidth.classic(limitPerDay, Refill.intervally(limitPerDay, Duration.ofDays(1)));
|
Bandwidth.builder()
|
||||||
|
.capacity(limitPerDay)
|
||||||
|
.refillIntervally(limitPerDay, Duration.ofDays(1))
|
||||||
|
.build();
|
||||||
return Bucket.builder().addLimit(limit).build();
|
return Bucket.builder().addLimit(limit).build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,13 +48,14 @@ public class CustomOAuth2AuthenticationSuccessHandler
|
|||||||
|
|
||||||
// Get the saved request
|
// Get the saved request
|
||||||
HttpSession session = request.getSession(false);
|
HttpSession session = request.getSession(false);
|
||||||
|
String contextPath = request.getContextPath();
|
||||||
SavedRequest savedRequest =
|
SavedRequest savedRequest =
|
||||||
(session != null)
|
(session != null)
|
||||||
? (SavedRequest) session.getAttribute("SPRING_SECURITY_SAVED_REQUEST")
|
? (SavedRequest) session.getAttribute("SPRING_SECURITY_SAVED_REQUEST")
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
if (savedRequest != null
|
if (savedRequest != null
|
||||||
&& !RequestUriUtils.isStaticResource(savedRequest.getRedirectUrl())) {
|
&& !RequestUriUtils.isStaticResource(contextPath, savedRequest.getRedirectUrl())) {
|
||||||
// Redirect to the original destination
|
// Redirect to the original destination
|
||||||
super.onAuthenticationSuccess(request, response, authentication);
|
super.onAuthenticationSuccess(request, response, authentication);
|
||||||
} else {
|
} else {
|
||||||
@@ -75,16 +76,15 @@ public class CustomOAuth2AuthenticationSuccessHandler
|
|||||||
&& !userService.isAuthenticationTypeByUsername(
|
&& !userService.isAuthenticationTypeByUsername(
|
||||||
username, AuthenticationType.OAUTH2)
|
username, AuthenticationType.OAUTH2)
|
||||||
&& oAuth.getAutoCreateUser()) {
|
&& oAuth.getAutoCreateUser()) {
|
||||||
response.sendRedirect(
|
response.sendRedirect(contextPath + "/logout?oauth2AuthenticationErrorWeb=true");
|
||||||
request.getContextPath() + "/logout?oauth2AuthenticationErrorWeb=true");
|
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
userService.processOAuth2PostLogin(username, oAuth.getAutoCreateUser());
|
userService.processOAuth2PostLogin(username, oAuth.getAutoCreateUser());
|
||||||
response.sendRedirect("/");
|
response.sendRedirect(contextPath + "/");
|
||||||
return;
|
return;
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
response.sendRedirect("/logout?invalidUsername=true");
|
response.sendRedirect(contextPath + "/logout?invalidUsername=true");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import jakarta.servlet.http.HttpSession;
|
|||||||
import stirling.software.SPDF.model.ApplicationProperties;
|
import stirling.software.SPDF.model.ApplicationProperties;
|
||||||
import stirling.software.SPDF.model.ApplicationProperties.Security.OAUTH2;
|
import stirling.software.SPDF.model.ApplicationProperties.Security.OAUTH2;
|
||||||
import stirling.software.SPDF.model.Provider;
|
import stirling.software.SPDF.model.Provider;
|
||||||
|
import stirling.software.SPDF.model.provider.UnsupportedProviderException;
|
||||||
import stirling.software.SPDF.utils.UrlUtils;
|
import stirling.software.SPDF.utils.UrlUtils;
|
||||||
|
|
||||||
public class CustomOAuth2LogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler {
|
public class CustomOAuth2LogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler {
|
||||||
@@ -51,8 +52,8 @@ public class CustomOAuth2LogoutSuccessHandler extends SimpleUrlLogoutSuccessHand
|
|||||||
Provider provider = oauth.getClient().get(registrationId);
|
Provider provider = oauth.getClient().get(registrationId);
|
||||||
issuer = provider.getIssuer();
|
issuer = provider.getIssuer();
|
||||||
clientId = provider.getClientId();
|
clientId = provider.getClientId();
|
||||||
} catch (Exception e) {
|
} catch (UnsupportedProviderException e) {
|
||||||
logger.error("exception", e);
|
logger.error(e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -81,7 +82,7 @@ public class CustomOAuth2LogoutSuccessHandler extends SimpleUrlLogoutSuccessHand
|
|||||||
logger.info("Session invalidated: " + sessionId);
|
logger.info("Session invalidated: " + sessionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (registrationId) {
|
switch (registrationId.toLowerCase()) {
|
||||||
case "keycloak":
|
case "keycloak":
|
||||||
// Add Keycloak specific logout URL if needed
|
// Add Keycloak specific logout URL if needed
|
||||||
String logoutUrl =
|
String logoutUrl =
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ import org.springframework.security.oauth2.core.oidc.user.OidcUser;
|
|||||||
import stirling.software.SPDF.config.security.LoginAttemptService;
|
import stirling.software.SPDF.config.security.LoginAttemptService;
|
||||||
import stirling.software.SPDF.config.security.UserService;
|
import stirling.software.SPDF.config.security.UserService;
|
||||||
import stirling.software.SPDF.model.ApplicationProperties;
|
import stirling.software.SPDF.model.ApplicationProperties;
|
||||||
|
import stirling.software.SPDF.model.ApplicationProperties.Security.OAUTH2;
|
||||||
|
import stirling.software.SPDF.model.ApplicationProperties.Security.OAUTH2.Client;
|
||||||
import stirling.software.SPDF.model.User;
|
import stirling.software.SPDF.model.User;
|
||||||
|
|
||||||
public class CustomOAuth2UserService implements OAuth2UserService<OidcUserRequest, OidcUser> {
|
public class CustomOAuth2UserService implements OAuth2UserService<OidcUserRequest, OidcUser> {
|
||||||
@@ -41,11 +43,27 @@ public class CustomOAuth2UserService implements OAuth2UserService<OidcUserReques
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public OidcUser loadUser(OidcUserRequest userRequest) throws OAuth2AuthenticationException {
|
public OidcUser loadUser(OidcUserRequest userRequest) throws OAuth2AuthenticationException {
|
||||||
String usernameAttribute =
|
OAUTH2 oauth2 = applicationProperties.getSecurity().getOAUTH2();
|
||||||
applicationProperties.getSecurity().getOAUTH2().getUseAsUsername();
|
String usernameAttribute = oauth2.getUseAsUsername();
|
||||||
|
if (usernameAttribute == null || usernameAttribute.trim().isEmpty()) {
|
||||||
|
Client client = oauth2.getClient();
|
||||||
|
if (client != null && client.getKeycloak() != null) {
|
||||||
|
usernameAttribute = client.getKeycloak().getUseAsUsername();
|
||||||
|
} else {
|
||||||
|
usernameAttribute = "email";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
OidcUser user = delegate.loadUser(userRequest);
|
OidcUser user = delegate.loadUser(userRequest);
|
||||||
String username = user.getUserInfo().getClaimAsString(usernameAttribute);
|
String username = user.getUserInfo().getClaimAsString(usernameAttribute);
|
||||||
|
|
||||||
|
// Check if the username claim is null or empty
|
||||||
|
if (username == null || username.trim().isEmpty()) {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"Claim '" + usernameAttribute + "' cannot be null or empty");
|
||||||
|
}
|
||||||
|
|
||||||
Optional<User> duser = userService.findByUsernameIgnoreCase(username);
|
Optional<User> duser = userService.findByUsernameIgnoreCase(username);
|
||||||
if (duser.isPresent()) {
|
if (duser.isPresent()) {
|
||||||
if (loginAttemptService.isBlocked(username)) {
|
if (loginAttemptService.isBlocked(username)) {
|
||||||
@@ -56,13 +74,14 @@ public class CustomOAuth2UserService implements OAuth2UserService<OidcUserReques
|
|||||||
throw new IllegalArgumentException("Password must not be null");
|
throw new IllegalArgumentException("Password must not be null");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return a new OidcUser with adjusted attributes
|
// Return a new OidcUser with adjusted attributes
|
||||||
return new DefaultOidcUser(
|
return new DefaultOidcUser(
|
||||||
user.getAuthorities(),
|
user.getAuthorities(),
|
||||||
userRequest.getIdToken(),
|
userRequest.getIdToken(),
|
||||||
user.getUserInfo(),
|
user.getUserInfo(),
|
||||||
usernameAttribute);
|
usernameAttribute);
|
||||||
} catch (java.lang.IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
logger.error("Error loading OIDC user: {}", e.getMessage());
|
logger.error("Error loading OIDC user: {}", e.getMessage());
|
||||||
throw new OAuth2AuthenticationException(new OAuth2Error(e.getMessage()), e);
|
throw new OAuth2AuthenticationException(new OAuth2Error(e.getMessage()), e);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|||||||
@@ -10,11 +10,16 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.apache.pdfbox.Loader;
|
import org.apache.pdfbox.Loader;
|
||||||
import org.apache.pdfbox.multipdf.PDFMergerUtility;
|
import org.apache.pdfbox.multipdf.PDFMergerUtility;
|
||||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
|
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
|
||||||
import org.apache.pdfbox.pdmodel.PDPage;
|
import org.apache.pdfbox.pdmodel.PDPage;
|
||||||
|
import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
|
||||||
|
import org.apache.pdfbox.pdmodel.interactive.form.PDField;
|
||||||
|
import org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
@@ -38,6 +43,7 @@ public class MergeController {
|
|||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(MergeController.class);
|
private static final Logger logger = LoggerFactory.getLogger(MergeController.class);
|
||||||
|
|
||||||
|
// Merges a list of PDDocument objects into a single PDDocument
|
||||||
public PDDocument mergeDocuments(List<PDDocument> documents) throws IOException {
|
public PDDocument mergeDocuments(List<PDDocument> documents) throws IOException {
|
||||||
PDDocument mergedDoc = new PDDocument();
|
PDDocument mergedDoc = new PDDocument();
|
||||||
for (PDDocument doc : documents) {
|
for (PDDocument doc : documents) {
|
||||||
@@ -48,6 +54,7 @@ public class MergeController {
|
|||||||
return mergedDoc;
|
return mergedDoc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns a comparator for sorting MultipartFile arrays based on the given sort type
|
||||||
private Comparator<MultipartFile> getSortComparator(String sortType) {
|
private Comparator<MultipartFile> getSortComparator(String sortType) {
|
||||||
switch (sortType) {
|
switch (sortType) {
|
||||||
case "byFileName":
|
case "byFileName":
|
||||||
@@ -108,37 +115,78 @@ public class MergeController {
|
|||||||
"This endpoint merges multiple PDF files into a single PDF file. The merged file will contain all pages from the input files in the order they were provided. Input:PDF Output:PDF Type:MISO")
|
"This endpoint merges multiple PDF files into a single PDF file. The merged file will contain all pages from the input files in the order they were provided. Input:PDF Output:PDF Type:MISO")
|
||||||
public ResponseEntity<byte[]> mergePdfs(@ModelAttribute MergePdfsRequest form)
|
public ResponseEntity<byte[]> mergePdfs(@ModelAttribute MergePdfsRequest form)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
List<File> filesToDelete = new ArrayList<File>();
|
List<File> filesToDelete = new ArrayList<>(); // List of temporary files to delete
|
||||||
|
ByteArrayOutputStream docOutputstream =
|
||||||
|
new ByteArrayOutputStream(); // Stream for the merged document
|
||||||
|
PDDocument mergedDocument = null;
|
||||||
|
|
||||||
|
boolean removeCertSign = form.isRemoveCertSign();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
MultipartFile[] files = form.getFileInput();
|
MultipartFile[] files = form.getFileInput();
|
||||||
Arrays.sort(files, getSortComparator(form.getSortType()));
|
Arrays.sort(
|
||||||
|
files,
|
||||||
PDFMergerUtility mergedDoc = new PDFMergerUtility();
|
getSortComparator(
|
||||||
ByteArrayOutputStream docOutputstream = new ByteArrayOutputStream();
|
form.getSortType())); // Sort files based on the given sort type
|
||||||
|
|
||||||
|
PDFMergerUtility mergerUtility = new PDFMergerUtility();
|
||||||
for (MultipartFile multipartFile : files) {
|
for (MultipartFile multipartFile : files) {
|
||||||
File tempFile = GeneralUtils.convertMultipartFileToFile(multipartFile);
|
File tempFile =
|
||||||
filesToDelete.add(tempFile);
|
GeneralUtils.convertMultipartFileToFile(
|
||||||
mergedDoc.addSource(tempFile);
|
multipartFile); // Convert MultipartFile to File
|
||||||
|
filesToDelete.add(tempFile); // Add temp file to the list for later deletion
|
||||||
|
mergerUtility.addSource(tempFile); // Add source file to the merger utility
|
||||||
|
}
|
||||||
|
mergerUtility.setDestinationStream(
|
||||||
|
docOutputstream); // Set the output stream for the merged document
|
||||||
|
mergerUtility.mergeDocuments(null); // Merge the documents
|
||||||
|
|
||||||
|
byte[] mergedPdfBytes = docOutputstream.toByteArray(); // Get merged document bytes
|
||||||
|
|
||||||
|
// Load the merged PDF document
|
||||||
|
mergedDocument = Loader.loadPDF(mergedPdfBytes);
|
||||||
|
|
||||||
|
// Remove signatures if removeCertSign is true
|
||||||
|
if (removeCertSign) {
|
||||||
|
PDDocumentCatalog catalog = mergedDocument.getDocumentCatalog();
|
||||||
|
PDAcroForm acroForm = catalog.getAcroForm();
|
||||||
|
if (acroForm != null) {
|
||||||
|
List<PDField> fieldsToRemove =
|
||||||
|
acroForm.getFields().stream()
|
||||||
|
.filter(field -> field instanceof PDSignatureField)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
if (!fieldsToRemove.isEmpty()) {
|
||||||
|
acroForm.flatten(
|
||||||
|
fieldsToRemove,
|
||||||
|
false); // Flatten the fields, effectively removing them
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mergedDoc.setDestinationFileName(
|
// Save the modified document to a new ByteArrayOutputStream
|
||||||
files[0].getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_merged.pdf");
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
mergedDoc.setDestinationStream(docOutputstream);
|
mergedDocument.save(baos);
|
||||||
|
|
||||||
mergedDoc.mergeDocuments(null);
|
|
||||||
|
|
||||||
|
String mergedFileName =
|
||||||
|
files[0].getOriginalFilename().replaceFirst("[.][^.]+$", "")
|
||||||
|
+ "_merged_unsigned.pdf";
|
||||||
return WebResponseUtils.bytesToWebResponse(
|
return WebResponseUtils.bytesToWebResponse(
|
||||||
docOutputstream.toByteArray(), mergedDoc.getDestinationFileName());
|
baos.toByteArray(), mergedFileName); // Return the modified PDF
|
||||||
|
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
logger.error("Error in merge pdf process", ex);
|
logger.error("Error in merge pdf process", ex);
|
||||||
throw ex;
|
throw ex;
|
||||||
} finally {
|
} finally {
|
||||||
for (File file : filesToDelete) {
|
for (File file : filesToDelete) {
|
||||||
if (file != null) {
|
if (file != null) {
|
||||||
Files.deleteIfExists(file.toPath());
|
Files.deleteIfExists(file.toPath()); // Delete temporary files
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
docOutputstream.close();
|
||||||
|
if (mergedDocument != null) {
|
||||||
|
mergedDocument.close(); // Close the merged document
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,6 +145,28 @@ public class RearrangePagesPDFController {
|
|||||||
return newPageOrder;
|
return newPageOrder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rearrange pages in a PDF file by merging odd and even pages. The first half of the pages will
|
||||||
|
* be the odd pages, and the second half will be the even pages as input. <br>
|
||||||
|
* This method is visible for testing purposes only.
|
||||||
|
*
|
||||||
|
* @param totalPages Total number of pages in the PDF file.
|
||||||
|
* @return List of page numbers in the new order. The first page is 0.
|
||||||
|
*/
|
||||||
|
List<Integer> oddEvenMerge(int totalPages) {
|
||||||
|
List<Integer> newPageOrderZeroBased = new ArrayList<>();
|
||||||
|
int numberOfOddPages = (totalPages + 1) / 2;
|
||||||
|
|
||||||
|
for (int oneBasedIndex = 1; oneBasedIndex < (numberOfOddPages + 1); oneBasedIndex++) {
|
||||||
|
newPageOrderZeroBased.add((oneBasedIndex - 1));
|
||||||
|
if (numberOfOddPages + oneBasedIndex <= totalPages) {
|
||||||
|
newPageOrderZeroBased.add((numberOfOddPages + oneBasedIndex - 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return newPageOrderZeroBased;
|
||||||
|
}
|
||||||
|
|
||||||
private List<Integer> processSortTypes(String sortTypes, int totalPages) {
|
private List<Integer> processSortTypes(String sortTypes, int totalPages) {
|
||||||
try {
|
try {
|
||||||
SortTypes mode = SortTypes.valueOf(sortTypes.toUpperCase());
|
SortTypes mode = SortTypes.valueOf(sortTypes.toUpperCase());
|
||||||
@@ -159,6 +181,8 @@ public class RearrangePagesPDFController {
|
|||||||
return sideStitchBooklet(totalPages);
|
return sideStitchBooklet(totalPages);
|
||||||
case ODD_EVEN_SPLIT:
|
case ODD_EVEN_SPLIT:
|
||||||
return oddEvenSplit(totalPages);
|
return oddEvenSplit(totalPages);
|
||||||
|
case ODD_EVEN_MERGE:
|
||||||
|
return oddEvenMerge(totalPages);
|
||||||
case REMOVE_FIRST:
|
case REMOVE_FIRST:
|
||||||
return removeFirst(totalPages);
|
return removeFirst(totalPages);
|
||||||
case REMOVE_LAST:
|
case REMOVE_LAST:
|
||||||
|
|||||||
@@ -59,53 +59,53 @@ public class UserController {
|
|||||||
@PostMapping("/change-username")
|
@PostMapping("/change-username")
|
||||||
public RedirectView changeUsername(
|
public RedirectView changeUsername(
|
||||||
Principal principal,
|
Principal principal,
|
||||||
@RequestParam(name = "currentPassword") String currentPassword,
|
@RequestParam(name = "currentPasswordChangeUsername") String currentPassword,
|
||||||
@RequestParam(name = "newUsername") String newUsername,
|
@RequestParam(name = "newUsername") String newUsername,
|
||||||
HttpServletRequest request,
|
HttpServletRequest request,
|
||||||
HttpServletResponse response,
|
HttpServletResponse response,
|
||||||
RedirectAttributes redirectAttributes) {
|
RedirectAttributes redirectAttributes) {
|
||||||
|
|
||||||
if (!userService.isUsernameValid(newUsername)) {
|
if (!userService.isUsernameValid(newUsername)) {
|
||||||
return new RedirectView("/account?messageType=invalidUsername");
|
return new RedirectView("/account?messageType=invalidUsername", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (principal == null) {
|
if (principal == null) {
|
||||||
return new RedirectView("/account?messageType=notAuthenticated");
|
return new RedirectView("/account?messageType=notAuthenticated", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// The username MUST be unique when renaming
|
// The username MUST be unique when renaming
|
||||||
Optional<User> userOpt = userService.findByUsername(principal.getName());
|
Optional<User> userOpt = userService.findByUsername(principal.getName());
|
||||||
|
|
||||||
if (userOpt == null || userOpt.isEmpty()) {
|
if (userOpt == null || userOpt.isEmpty()) {
|
||||||
return new RedirectView("/account?messageType=userNotFound");
|
return new RedirectView("/account?messageType=userNotFound", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
User user = userOpt.get();
|
User user = userOpt.get();
|
||||||
|
|
||||||
if (user.getUsername().equals(newUsername)) {
|
if (user.getUsername().equals(newUsername)) {
|
||||||
return new RedirectView("/account?messageType=usernameExists");
|
return new RedirectView("/account?messageType=usernameExists", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!userService.isPasswordCorrect(user, currentPassword)) {
|
if (!userService.isPasswordCorrect(user, currentPassword)) {
|
||||||
return new RedirectView("/account?messageType=incorrectPassword");
|
return new RedirectView("/account?messageType=incorrectPassword", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!user.getUsername().equals(newUsername) && userService.usernameExists(newUsername)) {
|
if (!user.getUsername().equals(newUsername) && userService.usernameExists(newUsername)) {
|
||||||
return new RedirectView("/account?messageType=usernameExists");
|
return new RedirectView("/account?messageType=usernameExists", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newUsername != null && newUsername.length() > 0) {
|
if (newUsername != null && newUsername.length() > 0) {
|
||||||
try {
|
try {
|
||||||
userService.changeUsername(user, newUsername);
|
userService.changeUsername(user, newUsername);
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
return new RedirectView("/account?messageType=invalidUsername");
|
return new RedirectView("/account?messageType=invalidUsername", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Logout using Spring's utility
|
// Logout using Spring's utility
|
||||||
new SecurityContextLogoutHandler().logout(request, response, null);
|
new SecurityContextLogoutHandler().logout(request, response, null);
|
||||||
|
|
||||||
return new RedirectView(LOGIN_MESSAGETYPE_CREDSUPDATED);
|
return new RedirectView(LOGIN_MESSAGETYPE_CREDSUPDATED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
||||||
@@ -118,19 +118,19 @@ public class UserController {
|
|||||||
HttpServletResponse response,
|
HttpServletResponse response,
|
||||||
RedirectAttributes redirectAttributes) {
|
RedirectAttributes redirectAttributes) {
|
||||||
if (principal == null) {
|
if (principal == null) {
|
||||||
return new RedirectView("/change-creds?messageType=notAuthenticated");
|
return new RedirectView("/change-creds?messageType=notAuthenticated", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
Optional<User> userOpt = userService.findByUsernameIgnoreCase(principal.getName());
|
Optional<User> userOpt = userService.findByUsernameIgnoreCase(principal.getName());
|
||||||
|
|
||||||
if (userOpt == null || userOpt.isEmpty()) {
|
if (userOpt == null || userOpt.isEmpty()) {
|
||||||
return new RedirectView("/change-creds?messageType=userNotFound");
|
return new RedirectView("/change-creds?messageType=userNotFound", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
User user = userOpt.get();
|
User user = userOpt.get();
|
||||||
|
|
||||||
if (!userService.isPasswordCorrect(user, currentPassword)) {
|
if (!userService.isPasswordCorrect(user, currentPassword)) {
|
||||||
return new RedirectView("/change-creds?messageType=incorrectPassword");
|
return new RedirectView("/change-creds?messageType=incorrectPassword", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
userService.changePassword(user, newPassword);
|
userService.changePassword(user, newPassword);
|
||||||
@@ -138,7 +138,7 @@ public class UserController {
|
|||||||
// Logout using Spring's utility
|
// Logout using Spring's utility
|
||||||
new SecurityContextLogoutHandler().logout(request, response, null);
|
new SecurityContextLogoutHandler().logout(request, response, null);
|
||||||
|
|
||||||
return new RedirectView(LOGIN_MESSAGETYPE_CREDSUPDATED);
|
return new RedirectView(LOGIN_MESSAGETYPE_CREDSUPDATED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
||||||
@@ -151,19 +151,19 @@ public class UserController {
|
|||||||
HttpServletResponse response,
|
HttpServletResponse response,
|
||||||
RedirectAttributes redirectAttributes) {
|
RedirectAttributes redirectAttributes) {
|
||||||
if (principal == null) {
|
if (principal == null) {
|
||||||
return new RedirectView("/account?messageType=notAuthenticated");
|
return new RedirectView("/account?messageType=notAuthenticated", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
Optional<User> userOpt = userService.findByUsernameIgnoreCase(principal.getName());
|
Optional<User> userOpt = userService.findByUsernameIgnoreCase(principal.getName());
|
||||||
|
|
||||||
if (userOpt == null || userOpt.isEmpty()) {
|
if (userOpt == null || userOpt.isEmpty()) {
|
||||||
return new RedirectView("/account?messageType=userNotFound");
|
return new RedirectView("/account?messageType=userNotFound", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
User user = userOpt.get();
|
User user = userOpt.get();
|
||||||
|
|
||||||
if (!userService.isPasswordCorrect(user, currentPassword)) {
|
if (!userService.isPasswordCorrect(user, currentPassword)) {
|
||||||
return new RedirectView("/account?messageType=incorrectPassword");
|
return new RedirectView("/account?messageType=incorrectPassword", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
userService.changePassword(user, newPassword);
|
userService.changePassword(user, newPassword);
|
||||||
@@ -171,7 +171,7 @@ public class UserController {
|
|||||||
// Logout using Spring's utility
|
// Logout using Spring's utility
|
||||||
new SecurityContextLogoutHandler().logout(request, response, null);
|
new SecurityContextLogoutHandler().logout(request, response, null);
|
||||||
|
|
||||||
return new RedirectView(LOGIN_MESSAGETYPE_CREDSUPDATED);
|
return new RedirectView(LOGIN_MESSAGETYPE_CREDSUPDATED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
||||||
@@ -204,7 +204,7 @@ public class UserController {
|
|||||||
boolean forceChange) {
|
boolean forceChange) {
|
||||||
|
|
||||||
if (!userService.isUsernameValid(username)) {
|
if (!userService.isUsernameValid(username)) {
|
||||||
return new RedirectView("/addUsers?messageType=invalidUsername");
|
return new RedirectView("/addUsers?messageType=invalidUsername", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
Optional<User> userOpt = userService.findByUsernameIgnoreCase(username);
|
Optional<User> userOpt = userService.findByUsernameIgnoreCase(username);
|
||||||
@@ -212,26 +212,27 @@ public class UserController {
|
|||||||
if (userOpt.isPresent()) {
|
if (userOpt.isPresent()) {
|
||||||
User user = userOpt.get();
|
User user = userOpt.get();
|
||||||
if (user != null && user.getUsername().equalsIgnoreCase(username)) {
|
if (user != null && user.getUsername().equalsIgnoreCase(username)) {
|
||||||
return new RedirectView("/addUsers?messageType=usernameExists");
|
return new RedirectView("/addUsers?messageType=usernameExists", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (userService.usernameExistsIgnoreCase(username)) {
|
if (userService.usernameExistsIgnoreCase(username)) {
|
||||||
return new RedirectView("/addUsers?messageType=usernameExists");
|
return new RedirectView("/addUsers?messageType=usernameExists", true);
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
// Validate the role
|
// Validate the role
|
||||||
Role roleEnum = Role.fromString(role);
|
Role roleEnum = Role.fromString(role);
|
||||||
if (roleEnum == Role.INTERNAL_API_USER) {
|
if (roleEnum == Role.INTERNAL_API_USER) {
|
||||||
// If the role is INTERNAL_API_USER, reject the request
|
// If the role is INTERNAL_API_USER, reject the request
|
||||||
return new RedirectView("/addUsers?messageType=invalidRole");
|
return new RedirectView("/addUsers?messageType=invalidRole", true);
|
||||||
}
|
}
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
// If the role ID is not valid, redirect with an error message
|
// If the role ID is not valid, redirect with an error message
|
||||||
return new RedirectView("/addUsers?messageType=invalidRole");
|
return new RedirectView("/addUsers?messageType=invalidRole", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
userService.saveUser(username, password, role, forceChange);
|
userService.saveUser(username, password, role, forceChange);
|
||||||
return new RedirectView("/addUsers"); // Redirect to account page after adding the user
|
return new RedirectView(
|
||||||
|
"/addUsers", true); // Redirect to account page after adding the user
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
||||||
@@ -244,33 +245,34 @@ public class UserController {
|
|||||||
Optional<User> userOpt = userService.findByUsernameIgnoreCase(username);
|
Optional<User> userOpt = userService.findByUsernameIgnoreCase(username);
|
||||||
|
|
||||||
if (!userOpt.isPresent()) {
|
if (!userOpt.isPresent()) {
|
||||||
return new RedirectView("/addUsers?messageType=userNotFound");
|
return new RedirectView("/addUsers?messageType=userNotFound", true);
|
||||||
}
|
}
|
||||||
if (!userService.usernameExistsIgnoreCase(username)) {
|
if (!userService.usernameExistsIgnoreCase(username)) {
|
||||||
return new RedirectView("/addUsers?messageType=userNotFound");
|
return new RedirectView("/addUsers?messageType=userNotFound", true);
|
||||||
}
|
}
|
||||||
// Get the currently authenticated username
|
// Get the currently authenticated username
|
||||||
String currentUsername = authentication.getName();
|
String currentUsername = authentication.getName();
|
||||||
|
|
||||||
// Check if the provided username matches the current session's username
|
// Check if the provided username matches the current session's username
|
||||||
if (currentUsername.equalsIgnoreCase(username)) {
|
if (currentUsername.equalsIgnoreCase(username)) {
|
||||||
return new RedirectView("/addUsers?messageType=downgradeCurrentUser");
|
return new RedirectView("/addUsers?messageType=downgradeCurrentUser", true);
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
// Validate the role
|
// Validate the role
|
||||||
Role roleEnum = Role.fromString(role);
|
Role roleEnum = Role.fromString(role);
|
||||||
if (roleEnum == Role.INTERNAL_API_USER) {
|
if (roleEnum == Role.INTERNAL_API_USER) {
|
||||||
// If the role is INTERNAL_API_USER, reject the request
|
// If the role is INTERNAL_API_USER, reject the request
|
||||||
return new RedirectView("/addUsers?messageType=invalidRole");
|
return new RedirectView("/addUsers?messageType=invalidRole", true);
|
||||||
}
|
}
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
// If the role ID is not valid, redirect with an error message
|
// If the role ID is not valid, redirect with an error message
|
||||||
return new RedirectView("/addUsers?messageType=invalidRole");
|
return new RedirectView("/addUsers?messageType=invalidRole", true);
|
||||||
}
|
}
|
||||||
User user = userOpt.get();
|
User user = userOpt.get();
|
||||||
|
|
||||||
userService.changeRole(user, role);
|
userService.changeRole(user, role);
|
||||||
return new RedirectView("/addUsers"); // Redirect to account page after adding the user
|
return new RedirectView(
|
||||||
|
"/addUsers", true); // Redirect to account page after adding the user
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
||||||
@@ -279,7 +281,7 @@ public class UserController {
|
|||||||
@PathVariable(name = "username") String username, Authentication authentication) {
|
@PathVariable(name = "username") String username, Authentication authentication) {
|
||||||
|
|
||||||
if (!userService.usernameExistsIgnoreCase(username)) {
|
if (!userService.usernameExistsIgnoreCase(username)) {
|
||||||
return new RedirectView("/addUsers?messageType=deleteUsernameExists");
|
return new RedirectView("/addUsers?messageType=deleteUsernameExists", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the currently authenticated username
|
// Get the currently authenticated username
|
||||||
@@ -287,11 +289,11 @@ public class UserController {
|
|||||||
|
|
||||||
// Check if the provided username matches the current session's username
|
// Check if the provided username matches the current session's username
|
||||||
if (currentUsername.equalsIgnoreCase(username)) {
|
if (currentUsername.equalsIgnoreCase(username)) {
|
||||||
return new RedirectView("/addUsers?messageType=deleteCurrentUser");
|
return new RedirectView("/addUsers?messageType=deleteCurrentUser", true);
|
||||||
}
|
}
|
||||||
invalidateUserSessions(username);
|
invalidateUserSessions(username);
|
||||||
userService.deleteUser(username);
|
userService.deleteUser(username);
|
||||||
return new RedirectView("/addUsers");
|
return new RedirectView("/addUsers", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Autowired private SessionRegistry sessionRegistry;
|
@Autowired private SessionRegistry sessionRegistry;
|
||||||
|
|||||||
@@ -105,7 +105,14 @@ public class PipelineProcessor {
|
|||||||
body.add("fileInput", file);
|
body.add("fileInput", file);
|
||||||
|
|
||||||
for (Entry<String, Object> entry : parameters.entrySet()) {
|
for (Entry<String, Object> entry : parameters.entrySet()) {
|
||||||
body.add(entry.getKey(), entry.getValue());
|
if (entry.getValue() instanceof List) {
|
||||||
|
List<?> list = (List<?>) entry.getValue();
|
||||||
|
for (Object item : list) {
|
||||||
|
body.add(entry.getKey(), item);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
body.add(entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ResponseEntity<byte[]> response = sendWebRequest(url, body);
|
ResponseEntity<byte[]> response = sendWebRequest(url, body);
|
||||||
@@ -167,7 +174,14 @@ public class PipelineProcessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (Entry<String, Object> entry : parameters.entrySet()) {
|
for (Entry<String, Object> entry : parameters.entrySet()) {
|
||||||
body.add(entry.getKey(), entry.getValue());
|
if (entry.getValue() instanceof List) {
|
||||||
|
List<?> list = (List<?>) entry.getValue();
|
||||||
|
for (Object item : list) {
|
||||||
|
body.add(entry.getKey(), item);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
body.add(entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ResponseEntity<byte[]> response = sendWebRequest(url, body);
|
ResponseEntity<byte[]> response = sendWebRequest(url, body);
|
||||||
|
|||||||
@@ -24,14 +24,14 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import stirling.software.SPDF.model.ApplicationProperties;
|
import stirling.software.SPDF.model.ApplicationProperties;
|
||||||
import stirling.software.SPDF.model.ApplicationProperties.GithubProvider;
|
|
||||||
import stirling.software.SPDF.model.ApplicationProperties.GoogleProvider;
|
|
||||||
import stirling.software.SPDF.model.ApplicationProperties.KeycloakProvider;
|
|
||||||
import stirling.software.SPDF.model.ApplicationProperties.Security.OAUTH2;
|
import stirling.software.SPDF.model.ApplicationProperties.Security.OAUTH2;
|
||||||
import stirling.software.SPDF.model.ApplicationProperties.Security.OAUTH2.Client;
|
import stirling.software.SPDF.model.ApplicationProperties.Security.OAUTH2.Client;
|
||||||
import stirling.software.SPDF.model.Authority;
|
import stirling.software.SPDF.model.Authority;
|
||||||
import stirling.software.SPDF.model.Role;
|
import stirling.software.SPDF.model.Role;
|
||||||
import stirling.software.SPDF.model.User;
|
import stirling.software.SPDF.model.User;
|
||||||
|
import stirling.software.SPDF.model.provider.GithubProvider;
|
||||||
|
import stirling.software.SPDF.model.provider.GoogleProvider;
|
||||||
|
import stirling.software.SPDF.model.provider.KeycloakProvider;
|
||||||
import stirling.software.SPDF.repository.UserRepository;
|
import stirling.software.SPDF.repository.UserRepository;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
@@ -52,28 +52,29 @@ public class AccountWebController {
|
|||||||
OAUTH2 oauth = applicationProperties.getSecurity().getOAUTH2();
|
OAUTH2 oauth = applicationProperties.getSecurity().getOAUTH2();
|
||||||
if (oauth != null) {
|
if (oauth != null) {
|
||||||
if (oauth.isSettingsValid()) {
|
if (oauth.isSettingsValid()) {
|
||||||
providerList.put("oidc", "OpenID Connect");
|
providerList.put("oidc", oauth.getProvider());
|
||||||
}
|
}
|
||||||
Client client = oauth.getClient();
|
Client client = oauth.getClient();
|
||||||
if (client != null) {
|
if (client != null) {
|
||||||
GoogleProvider google = client.getGoogle();
|
GoogleProvider google = client.getGoogle();
|
||||||
if (google.isSettingsValid()) {
|
if (google.isSettingsValid()) {
|
||||||
providerList.put("google", "Google");
|
providerList.put(google.getName(), google.getClientName());
|
||||||
}
|
}
|
||||||
|
|
||||||
GithubProvider github = client.getGithub();
|
GithubProvider github = client.getGithub();
|
||||||
if (github.isSettingsValid()) {
|
if (github.isSettingsValid()) {
|
||||||
providerList.put("github", "Github");
|
providerList.put(github.getName(), github.getClientName());
|
||||||
}
|
}
|
||||||
|
|
||||||
KeycloakProvider keycloak = client.getKeycloak();
|
KeycloakProvider keycloak = client.getKeycloak();
|
||||||
if (keycloak.isSettingsValid()) {
|
if (keycloak.isSettingsValid()) {
|
||||||
providerList.put("keycloak", "Keycloak");
|
providerList.put(keycloak.getName(), keycloak.getClientName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
model.addAttribute("providerlist", providerList);
|
model.addAttribute("providerlist", providerList);
|
||||||
|
|
||||||
|
model.addAttribute("loginMethod", applicationProperties.getSecurity().getLoginMethod());
|
||||||
model.addAttribute(
|
model.addAttribute(
|
||||||
"oAuth2Enabled", applicationProperties.getSecurity().getOAUTH2().getEnabled());
|
"oAuth2Enabled", applicationProperties.getSecurity().getOAUTH2().getEnabled());
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,10 @@ import org.springframework.context.annotation.Configuration;
|
|||||||
import org.springframework.context.annotation.PropertySource;
|
import org.springframework.context.annotation.PropertySource;
|
||||||
|
|
||||||
import stirling.software.SPDF.config.YamlPropertySourceFactory;
|
import stirling.software.SPDF.config.YamlPropertySourceFactory;
|
||||||
|
import stirling.software.SPDF.model.provider.GithubProvider;
|
||||||
|
import stirling.software.SPDF.model.provider.GoogleProvider;
|
||||||
|
import stirling.software.SPDF.model.provider.KeycloakProvider;
|
||||||
|
import stirling.software.SPDF.model.provider.UnsupportedProviderException;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@ConfigurationProperties(prefix = "")
|
@ConfigurationProperties(prefix = "")
|
||||||
@@ -128,6 +132,15 @@ public class ApplicationProperties {
|
|||||||
private OAUTH2 oauth2;
|
private OAUTH2 oauth2;
|
||||||
private int loginAttemptCount;
|
private int loginAttemptCount;
|
||||||
private long loginResetTimeMinutes;
|
private long loginResetTimeMinutes;
|
||||||
|
private String loginMethod = "all";
|
||||||
|
|
||||||
|
public String getLoginMethod() {
|
||||||
|
return loginMethod;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLoginMethod(String loginMethod) {
|
||||||
|
this.loginMethod = loginMethod;
|
||||||
|
}
|
||||||
|
|
||||||
public int getLoginAttemptCount() {
|
public int getLoginAttemptCount() {
|
||||||
return loginAttemptCount;
|
return loginAttemptCount;
|
||||||
@@ -187,6 +200,8 @@ public class ApplicationProperties {
|
|||||||
+ initialLogin
|
+ initialLogin
|
||||||
+ ", csrfDisabled="
|
+ ", csrfDisabled="
|
||||||
+ csrfDisabled
|
+ csrfDisabled
|
||||||
|
+ ", loginMethod="
|
||||||
|
+ loginMethod
|
||||||
+ "]";
|
+ "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -355,8 +370,8 @@ public class ApplicationProperties {
|
|||||||
private GithubProvider github = new GithubProvider();
|
private GithubProvider github = new GithubProvider();
|
||||||
private KeycloakProvider keycloak = new KeycloakProvider();
|
private KeycloakProvider keycloak = new KeycloakProvider();
|
||||||
|
|
||||||
public Provider get(String registrationId) throws Exception {
|
public Provider get(String registrationId) throws UnsupportedProviderException {
|
||||||
switch (registrationId) {
|
switch (registrationId.toLowerCase()) {
|
||||||
case "google":
|
case "google":
|
||||||
return getGoogle();
|
return getGoogle();
|
||||||
case "github":
|
case "github":
|
||||||
@@ -366,7 +381,8 @@ public class ApplicationProperties {
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
throw new Exception("Provider not supported, use custom setting.");
|
throw new UnsupportedProviderException(
|
||||||
|
"Logout from the provider is not supported? Report it at https://github.com/Stirling-Tools/Stirling-PDF/issues");
|
||||||
}
|
}
|
||||||
|
|
||||||
public GoogleProvider getGoogle() {
|
public GoogleProvider getGoogle() {
|
||||||
@@ -407,292 +423,6 @@ public class ApplicationProperties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class GoogleProvider extends Provider {
|
|
||||||
|
|
||||||
private static final String authorizationUri =
|
|
||||||
"https://accounts.google.com/o/oauth2/v2/auth";
|
|
||||||
private static final String tokenUri = "https://www.googleapis.com/oauth2/v4/token";
|
|
||||||
private static final String userInfoUri =
|
|
||||||
"https://www.googleapis.com/oauth2/v3/userinfo?alt=json";
|
|
||||||
|
|
||||||
public String getAuthorizationuri() {
|
|
||||||
return authorizationUri;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTokenuri() {
|
|
||||||
return tokenUri;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUserinfouri() {
|
|
||||||
return userInfoUri;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String clientId;
|
|
||||||
private String clientSecret;
|
|
||||||
private Collection<String> scopes = new ArrayList<>();
|
|
||||||
private String useAsUsername = "email";
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getClientId() {
|
|
||||||
return this.clientId;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setClientId(String clientId) {
|
|
||||||
this.clientId = clientId;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getClientSecret() {
|
|
||||||
return this.clientSecret;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setClientSecret(String clientSecret) {
|
|
||||||
this.clientSecret = clientSecret;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Collection<String> getScopes() {
|
|
||||||
if (scopes == null || scopes.isEmpty()) {
|
|
||||||
scopes.add("https://www.googleapis.com/auth/userinfo.email");
|
|
||||||
scopes.add("https://www.googleapis.com/auth/userinfo.profile");
|
|
||||||
}
|
|
||||||
return scopes;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setScopes(String scopes) {
|
|
||||||
this.scopes =
|
|
||||||
Arrays.stream(scopes.split(",")).map(String::trim).collect(Collectors.toList());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getUseAsUsername() {
|
|
||||||
return this.useAsUsername;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setUseAsUsername(String useAsUsername) {
|
|
||||||
this.useAsUsername = useAsUsername;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "Google [clientId="
|
|
||||||
+ clientId
|
|
||||||
+ ", clientSecret="
|
|
||||||
+ (clientSecret != null && !clientSecret.isEmpty() ? "MASKED" : "NULL")
|
|
||||||
+ ", scopes="
|
|
||||||
+ scopes
|
|
||||||
+ ", useAsUsername="
|
|
||||||
+ useAsUsername
|
|
||||||
+ "]";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return "google";
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isSettingsValid() {
|
|
||||||
return super.isValid(this.getClientId(), "clientId")
|
|
||||||
&& super.isValid(this.getClientSecret(), "clientSecret")
|
|
||||||
&& super.isValid(this.getScopes(), "scopes")
|
|
||||||
&& isValid(this.getUseAsUsername(), "useAsUsername");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class GithubProvider extends Provider {
|
|
||||||
private static final String authorizationUri = "https://github.com/login/oauth/authorize";
|
|
||||||
private static final String tokenUri = "https://github.com/login/oauth/access_token";
|
|
||||||
private static final String userInfoUri = "https://api.github.com/user";
|
|
||||||
|
|
||||||
public String getAuthorizationuri() {
|
|
||||||
return authorizationUri;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTokenuri() {
|
|
||||||
return tokenUri;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUserinfouri() {
|
|
||||||
return userInfoUri;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String clientId;
|
|
||||||
private String clientSecret;
|
|
||||||
private Collection<String> scopes = new ArrayList<>();
|
|
||||||
private String useAsUsername = "login";
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getIssuer() {
|
|
||||||
return new String();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setIssuer(String issuer) {}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getClientId() {
|
|
||||||
return this.clientId;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setClientId(String clientId) {
|
|
||||||
this.clientId = clientId;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getClientSecret() {
|
|
||||||
return this.clientSecret;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setClientSecret(String clientSecret) {
|
|
||||||
this.clientSecret = clientSecret;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Collection<String> getScopes() {
|
|
||||||
if (scopes == null || scopes.isEmpty()) {
|
|
||||||
scopes.add("read:user");
|
|
||||||
}
|
|
||||||
return scopes;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setScopes(String scopes) {
|
|
||||||
this.scopes =
|
|
||||||
Arrays.stream(scopes.split(",")).map(String::trim).collect(Collectors.toList());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getUseAsUsername() {
|
|
||||||
return this.useAsUsername;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setUseAsUsername(String useAsUsername) {
|
|
||||||
this.useAsUsername = useAsUsername;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "GitHub [clientId="
|
|
||||||
+ clientId
|
|
||||||
+ ", clientSecret="
|
|
||||||
+ (clientSecret != null && !clientSecret.isEmpty() ? "MASKED" : "NULL")
|
|
||||||
+ ", scopes="
|
|
||||||
+ scopes
|
|
||||||
+ ", useAsUsername="
|
|
||||||
+ useAsUsername
|
|
||||||
+ "]";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return "github";
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isSettingsValid() {
|
|
||||||
return super.isValid(this.getClientId(), "clientId")
|
|
||||||
&& super.isValid(this.getClientSecret(), "clientSecret")
|
|
||||||
&& super.isValid(this.getScopes(), "scopes")
|
|
||||||
&& isValid(this.getUseAsUsername(), "useAsUsername");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class KeycloakProvider extends Provider {
|
|
||||||
private String issuer;
|
|
||||||
private String clientId;
|
|
||||||
private String clientSecret;
|
|
||||||
private Collection<String> scopes = new ArrayList<>();
|
|
||||||
private String useAsUsername = "email";
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getIssuer() {
|
|
||||||
return this.issuer;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setIssuer(String issuer) {
|
|
||||||
this.issuer = issuer;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getClientId() {
|
|
||||||
return this.clientId;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setClientId(String clientId) {
|
|
||||||
this.clientId = clientId;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getClientSecret() {
|
|
||||||
return this.clientSecret;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setClientSecret(String clientSecret) {
|
|
||||||
this.clientSecret = clientSecret;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Collection<String> getScopes() {
|
|
||||||
if (scopes == null || scopes.isEmpty()) {
|
|
||||||
scopes.add("openid");
|
|
||||||
scopes.add("profile");
|
|
||||||
scopes.add("email");
|
|
||||||
}
|
|
||||||
return scopes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setScopes(String scopes) {
|
|
||||||
this.scopes =
|
|
||||||
Arrays.stream(scopes.split(",")).map(String::trim).collect(Collectors.toList());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getUseAsUsername() {
|
|
||||||
return this.useAsUsername;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setUseAsUsername(String useAsUsername) {
|
|
||||||
this.useAsUsername = useAsUsername;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "Keycloak [issuer="
|
|
||||||
+ issuer
|
|
||||||
+ ", clientId="
|
|
||||||
+ clientId
|
|
||||||
+ ", clientSecret="
|
|
||||||
+ (clientSecret != null && !clientSecret.isEmpty() ? "MASKED" : "NULL")
|
|
||||||
+ ", scopes="
|
|
||||||
+ scopes
|
|
||||||
+ ", useAsUsername="
|
|
||||||
+ useAsUsername
|
|
||||||
+ "]";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return "keycloak";
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isSettingsValid() {
|
|
||||||
return isValid(this.getIssuer(), "issuer")
|
|
||||||
&& isValid(this.getClientId(), "clientId")
|
|
||||||
&& isValid(this.getClientSecret(), "clientSecret")
|
|
||||||
&& isValid(this.getScopes(), "scopes")
|
|
||||||
&& isValid(this.getUseAsUsername(), "useAsUsername");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class System {
|
public static class System {
|
||||||
private String defaultLocale;
|
private String defaultLocale;
|
||||||
private Boolean googlevisibility;
|
private Boolean googlevisibility;
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package stirling.software.SPDF.model;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.Reader;
|
||||||
|
|
||||||
|
import org.thymeleaf.templateresource.ITemplateResource;
|
||||||
|
|
||||||
|
public class InputStreamTemplateResource implements ITemplateResource {
|
||||||
|
private InputStream inputStream;
|
||||||
|
private String characterEncoding;
|
||||||
|
|
||||||
|
public InputStreamTemplateResource(InputStream inputStream, String characterEncoding) {
|
||||||
|
this.inputStream = inputStream;
|
||||||
|
this.characterEncoding = characterEncoding;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Reader reader() throws IOException {
|
||||||
|
return new InputStreamReader(inputStream, characterEncoding);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ITemplateResource relative(String relativeLocation) {
|
||||||
|
// Implement logic for relative resources, if needed
|
||||||
|
throw new UnsupportedOperationException("Relative resources not supported");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDescription() {
|
||||||
|
return "InputStream resource [Stream]";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getBaseName() {
|
||||||
|
return "streamResource";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean exists() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,11 +4,16 @@ import java.util.Collection;
|
|||||||
|
|
||||||
public class Provider implements ProviderInterface {
|
public class Provider implements ProviderInterface {
|
||||||
private String name;
|
private String name;
|
||||||
|
private String clientName;
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getClientName() {
|
||||||
|
return clientName;
|
||||||
|
}
|
||||||
|
|
||||||
protected boolean isValid(String value, String name) {
|
protected boolean isValid(String value, String name) {
|
||||||
if (value != null && !value.trim().isEmpty()) {
|
if (value != null && !value.trim().isEmpty()) {
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ public enum SortTypes {
|
|||||||
BOOKLET_SORT,
|
BOOKLET_SORT,
|
||||||
SIDE_STITCH_BOOKLET_SORT,
|
SIDE_STITCH_BOOKLET_SORT,
|
||||||
ODD_EVEN_SPLIT,
|
ODD_EVEN_SPLIT,
|
||||||
|
ODD_EVEN_MERGE,
|
||||||
REMOVE_FIRST,
|
REMOVE_FIRST,
|
||||||
REMOVE_LAST,
|
REMOVE_LAST,
|
||||||
REMOVE_FIRST_AND_LAST,
|
REMOVE_FIRST_AND_LAST,
|
||||||
|
|||||||
@@ -21,4 +21,10 @@ public class MergePdfsRequest extends MultiplePDFFiles {
|
|||||||
},
|
},
|
||||||
defaultValue = "orderProvided")
|
defaultValue = "orderProvided")
|
||||||
private String sortType = "orderProvided";
|
private String sortType = "orderProvided";
|
||||||
|
|
||||||
|
@Schema(
|
||||||
|
description =
|
||||||
|
"Flag indicating whether to remove certification signatures from the merged PDF. If true, all certification signatures will be removed from the final merged document.",
|
||||||
|
example = "true")
|
||||||
|
private boolean isRemoveCertSign;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ public class RearrangePagesRequest extends PDFWithPageNums {
|
|||||||
+ "DUPLEX_SORT: Sorts pages as if all fronts were scanned then all backs in reverse (1, n, 2, n-1, ...). "
|
+ "DUPLEX_SORT: Sorts pages as if all fronts were scanned then all backs in reverse (1, n, 2, n-1, ...). "
|
||||||
+ "BOOKLET_SORT: Arranges pages for booklet printing (last, first, second, second last, ...).\n"
|
+ "BOOKLET_SORT: Arranges pages for booklet printing (last, first, second, second last, ...).\n"
|
||||||
+ "ODD_EVEN_SPLIT: Splits and arranges pages into odd and even numbered pages.\n"
|
+ "ODD_EVEN_SPLIT: Splits and arranges pages into odd and even numbered pages.\n"
|
||||||
|
+ "ODD_EVEN_MERGE: Merges pages and organises them alternately into odd and even pages.\n"
|
||||||
+ "REMOVE_FIRST: Removes the first page.\n"
|
+ "REMOVE_FIRST: Removes the first page.\n"
|
||||||
+ "REMOVE_LAST: Removes the last page.\n"
|
+ "REMOVE_LAST: Removes the last page.\n"
|
||||||
+ "REMOVE_FIRST_AND_LAST: Removes both the first and the last pages.\n")
|
+ "REMOVE_FIRST_AND_LAST: Removes both the first and the last pages.\n")
|
||||||
|
|||||||
@@ -0,0 +1,115 @@
|
|||||||
|
package stirling.software.SPDF.model.provider;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import stirling.software.SPDF.model.Provider;
|
||||||
|
|
||||||
|
public class GithubProvider extends Provider {
|
||||||
|
|
||||||
|
private static final String authorizationUri = "https://github.com/login/oauth/authorize";
|
||||||
|
private static final String tokenUri = "https://github.com/login/oauth/access_token";
|
||||||
|
private static final String userInfoUri = "https://api.github.com/user";
|
||||||
|
|
||||||
|
public String getAuthorizationuri() {
|
||||||
|
return authorizationUri;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTokenuri() {
|
||||||
|
return tokenUri;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUserinfouri() {
|
||||||
|
return userInfoUri;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String clientId;
|
||||||
|
private String clientSecret;
|
||||||
|
private Collection<String> scopes = new ArrayList<>();
|
||||||
|
private String useAsUsername = "login";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getIssuer() {
|
||||||
|
return new String();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setIssuer(String issuer) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getClientId() {
|
||||||
|
return this.clientId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setClientId(String clientId) {
|
||||||
|
this.clientId = clientId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getClientSecret() {
|
||||||
|
return this.clientSecret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setClientSecret(String clientSecret) {
|
||||||
|
this.clientSecret = clientSecret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<String> getScopes() {
|
||||||
|
if (scopes == null || scopes.isEmpty()) {
|
||||||
|
scopes = new ArrayList<>();
|
||||||
|
scopes.add("read:user");
|
||||||
|
}
|
||||||
|
return scopes;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setScopes(String scopes) {
|
||||||
|
this.scopes =
|
||||||
|
Arrays.stream(scopes.split(",")).map(String::trim).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUseAsUsername() {
|
||||||
|
return this.useAsUsername;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setUseAsUsername(String useAsUsername) {
|
||||||
|
this.useAsUsername = useAsUsername;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "GitHub [clientId="
|
||||||
|
+ clientId
|
||||||
|
+ ", clientSecret="
|
||||||
|
+ (clientSecret != null && !clientSecret.isEmpty() ? "MASKED" : "NULL")
|
||||||
|
+ ", scopes="
|
||||||
|
+ scopes
|
||||||
|
+ ", useAsUsername="
|
||||||
|
+ useAsUsername
|
||||||
|
+ "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "github";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getClientName() {
|
||||||
|
return "GitHub";
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSettingsValid() {
|
||||||
|
return super.isValid(this.getClientId(), "clientId")
|
||||||
|
&& super.isValid(this.getClientSecret(), "clientSecret")
|
||||||
|
&& super.isValid(this.getScopes(), "scopes")
|
||||||
|
&& isValid(this.getUseAsUsername(), "useAsUsername");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
package stirling.software.SPDF.model.provider;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import stirling.software.SPDF.model.Provider;
|
||||||
|
|
||||||
|
public class GoogleProvider extends Provider {
|
||||||
|
|
||||||
|
private static final String authorizationUri = "https://accounts.google.com/o/oauth2/v2/auth";
|
||||||
|
private static final String tokenUri = "https://www.googleapis.com/oauth2/v4/token";
|
||||||
|
private static final String userInfoUri =
|
||||||
|
"https://www.googleapis.com/oauth2/v3/userinfo?alt=json";
|
||||||
|
|
||||||
|
public String getAuthorizationuri() {
|
||||||
|
return authorizationUri;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTokenuri() {
|
||||||
|
return tokenUri;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUserinfouri() {
|
||||||
|
return userInfoUri;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String clientId;
|
||||||
|
private String clientSecret;
|
||||||
|
private Collection<String> scopes = new ArrayList<>();
|
||||||
|
private String useAsUsername = "email";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getClientId() {
|
||||||
|
return this.clientId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setClientId(String clientId) {
|
||||||
|
this.clientId = clientId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getClientSecret() {
|
||||||
|
return this.clientSecret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setClientSecret(String clientSecret) {
|
||||||
|
this.clientSecret = clientSecret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<String> getScopes() {
|
||||||
|
if (scopes == null || scopes.isEmpty()) {
|
||||||
|
scopes = new ArrayList<>();
|
||||||
|
scopes.add("https://www.googleapis.com/auth/userinfo.email");
|
||||||
|
scopes.add("https://www.googleapis.com/auth/userinfo.profile");
|
||||||
|
}
|
||||||
|
return scopes;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setScopes(String scopes) {
|
||||||
|
this.scopes =
|
||||||
|
Arrays.stream(scopes.split(",")).map(String::trim).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUseAsUsername() {
|
||||||
|
return this.useAsUsername;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setUseAsUsername(String useAsUsername) {
|
||||||
|
this.useAsUsername = useAsUsername;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Google [clientId="
|
||||||
|
+ clientId
|
||||||
|
+ ", clientSecret="
|
||||||
|
+ (clientSecret != null && !clientSecret.isEmpty() ? "MASKED" : "NULL")
|
||||||
|
+ ", scopes="
|
||||||
|
+ scopes
|
||||||
|
+ ", useAsUsername="
|
||||||
|
+ useAsUsername
|
||||||
|
+ "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "google";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getClientName() {
|
||||||
|
return "Google";
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSettingsValid() {
|
||||||
|
return super.isValid(this.getClientId(), "clientId")
|
||||||
|
&& super.isValid(this.getClientSecret(), "clientSecret")
|
||||||
|
&& super.isValid(this.getScopes(), "scopes")
|
||||||
|
&& isValid(this.getUseAsUsername(), "useAsUsername");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,106 @@
|
|||||||
|
package stirling.software.SPDF.model.provider;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import stirling.software.SPDF.model.Provider;
|
||||||
|
|
||||||
|
public class KeycloakProvider extends Provider {
|
||||||
|
|
||||||
|
private String issuer;
|
||||||
|
private String clientId;
|
||||||
|
private String clientSecret;
|
||||||
|
private Collection<String> scopes = new ArrayList<>();
|
||||||
|
private String useAsUsername = "email";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getIssuer() {
|
||||||
|
return this.issuer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setIssuer(String issuer) {
|
||||||
|
this.issuer = issuer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getClientId() {
|
||||||
|
return this.clientId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setClientId(String clientId) {
|
||||||
|
this.clientId = clientId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getClientSecret() {
|
||||||
|
return this.clientSecret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setClientSecret(String clientSecret) {
|
||||||
|
this.clientSecret = clientSecret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<String> getScopes() {
|
||||||
|
if (scopes == null || scopes.isEmpty()) {
|
||||||
|
scopes = new ArrayList<>();
|
||||||
|
scopes.add("profile");
|
||||||
|
scopes.add("email");
|
||||||
|
}
|
||||||
|
return scopes;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setScopes(String scopes) {
|
||||||
|
this.scopes =
|
||||||
|
Arrays.stream(scopes.split(",")).map(String::trim).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUseAsUsername() {
|
||||||
|
return this.useAsUsername;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setUseAsUsername(String useAsUsername) {
|
||||||
|
this.useAsUsername = useAsUsername;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Keycloak [issuer="
|
||||||
|
+ issuer
|
||||||
|
+ ", clientId="
|
||||||
|
+ clientId
|
||||||
|
+ ", clientSecret="
|
||||||
|
+ (clientSecret != null && !clientSecret.isEmpty() ? "MASKED" : "NULL")
|
||||||
|
+ ", scopes="
|
||||||
|
+ scopes
|
||||||
|
+ ", useAsUsername="
|
||||||
|
+ useAsUsername
|
||||||
|
+ "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "keycloak";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getClientName() {
|
||||||
|
return "Keycloak";
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSettingsValid() {
|
||||||
|
return isValid(this.getIssuer(), "issuer")
|
||||||
|
&& isValid(this.getClientId(), "clientId")
|
||||||
|
&& isValid(this.getClientSecret(), "clientSecret")
|
||||||
|
&& isValid(this.getScopes(), "scopes")
|
||||||
|
&& isValid(this.getUseAsUsername(), "useAsUsername");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package stirling.software.SPDF.model.provider;
|
||||||
|
|
||||||
|
public class UnsupportedProviderException extends Exception {
|
||||||
|
public UnsupportedProviderException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -140,6 +140,8 @@ public class PDFToFile {
|
|||||||
new ArrayList<>(
|
new ArrayList<>(
|
||||||
Arrays.asList(
|
Arrays.asList(
|
||||||
"soffice",
|
"soffice",
|
||||||
|
"--headless",
|
||||||
|
"--nologo",
|
||||||
"--infilter=" + libreOfficeFilter,
|
"--infilter=" + libreOfficeFilter,
|
||||||
"--convert-to",
|
"--convert-to",
|
||||||
outputFormat,
|
outputFormat,
|
||||||
|
|||||||
@@ -1,27 +1,27 @@
|
|||||||
package stirling.software.SPDF.utils;
|
package stirling.software.SPDF.utils;
|
||||||
|
|
||||||
import java.awt.Graphics;
|
import java.awt.*;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.awt.image.RenderedImage;
|
import java.awt.image.RenderedImage;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipOutputStream;
|
import java.util.zip.ZipOutputStream;
|
||||||
|
|
||||||
import javax.imageio.IIOImage;
|
import javax.imageio.*;
|
||||||
import javax.imageio.ImageIO;
|
|
||||||
import javax.imageio.ImageReader;
|
|
||||||
import javax.imageio.ImageWriteParam;
|
|
||||||
import javax.imageio.ImageWriter;
|
|
||||||
import javax.imageio.stream.ImageOutputStream;
|
import javax.imageio.stream.ImageOutputStream;
|
||||||
|
|
||||||
import org.apache.pdfbox.Loader;
|
import org.apache.pdfbox.Loader;
|
||||||
import org.apache.pdfbox.cos.COSName;
|
import org.apache.pdfbox.cos.COSName;
|
||||||
import org.apache.pdfbox.pdmodel.*;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
|
import org.apache.pdfbox.pdmodel.PDPage;
|
||||||
|
import org.apache.pdfbox.pdmodel.PDPageContentStream;
|
||||||
import org.apache.pdfbox.pdmodel.PDPageContentStream.AppendMode;
|
import org.apache.pdfbox.pdmodel.PDPageContentStream.AppendMode;
|
||||||
|
import org.apache.pdfbox.pdmodel.PDResources;
|
||||||
import org.apache.pdfbox.pdmodel.common.PDRectangle;
|
import org.apache.pdfbox.pdmodel.common.PDRectangle;
|
||||||
import org.apache.pdfbox.pdmodel.graphics.PDXObject;
|
import org.apache.pdfbox.pdmodel.graphics.PDXObject;
|
||||||
import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
|
import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
|
||||||
@@ -245,19 +245,64 @@ public class PdfUtils {
|
|||||||
writer.dispose();
|
writer.dispose();
|
||||||
} else {
|
} else {
|
||||||
// Combine all images into a single big image
|
// Combine all images into a single big image
|
||||||
BufferedImage image = pdfRenderer.renderImageWithDPI(0, DPI, colorType);
|
|
||||||
|
// Calculate the combined image dimensions
|
||||||
|
int maxWidth = 0;
|
||||||
|
int totalHeight = 0;
|
||||||
|
|
||||||
|
BufferedImage pdfSizeImage = null;
|
||||||
|
int pdfSizeImageIndex = -1;
|
||||||
|
|
||||||
|
// Using a map to store the rendered dimensions of each page size
|
||||||
|
// to avoid rendering the same page sizes multiple times
|
||||||
|
HashMap<PdfRenderSettingsKey, PdfImageDimensionValue> pageSizes =
|
||||||
|
new HashMap<>();
|
||||||
|
for (int i = 0; i < pageCount; ++i) {
|
||||||
|
PDPage page = document.getPage(i);
|
||||||
|
PDRectangle mediaBox = page.getMediaBox();
|
||||||
|
int rotation = page.getRotation();
|
||||||
|
PdfRenderSettingsKey settings =
|
||||||
|
new PdfRenderSettingsKey(
|
||||||
|
mediaBox.getWidth(), mediaBox.getHeight(), rotation);
|
||||||
|
PdfImageDimensionValue dimension = pageSizes.get(settings);
|
||||||
|
if (dimension == null) {
|
||||||
|
// Render the image to get the dimensions
|
||||||
|
pdfSizeImage = pdfRenderer.renderImageWithDPI(i, DPI, colorType);
|
||||||
|
pdfSizeImageIndex = i;
|
||||||
|
dimension =
|
||||||
|
new PdfImageDimensionValue(
|
||||||
|
pdfSizeImage.getWidth(), pdfSizeImage.getHeight());
|
||||||
|
pageSizes.put(settings, dimension);
|
||||||
|
if (pdfSizeImage.getWidth() > maxWidth) {
|
||||||
|
maxWidth = pdfSizeImage.getWidth();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
totalHeight += dimension.height();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a new BufferedImage to store the combined images
|
||||||
BufferedImage combined =
|
BufferedImage combined =
|
||||||
new BufferedImage(
|
prepareImageForPdfToImage(maxWidth, totalHeight, imageType);
|
||||||
image.getWidth(),
|
|
||||||
image.getHeight() * pageCount,
|
|
||||||
BufferedImage.TYPE_INT_RGB);
|
|
||||||
Graphics g = combined.getGraphics();
|
Graphics g = combined.getGraphics();
|
||||||
|
|
||||||
|
int currentHeight = 0;
|
||||||
|
BufferedImage pageImage;
|
||||||
|
|
||||||
|
// Check if the first image is the last rendered image
|
||||||
|
boolean firstImageAlreadyRendered = pdfSizeImageIndex == 0;
|
||||||
|
|
||||||
for (int i = 0; i < pageCount; ++i) {
|
for (int i = 0; i < pageCount; ++i) {
|
||||||
if (i != 0) {
|
if (firstImageAlreadyRendered && i == 0) {
|
||||||
image = pdfRenderer.renderImageWithDPI(i, DPI, colorType);
|
pageImage = pdfSizeImage;
|
||||||
|
} else {
|
||||||
|
pageImage = pdfRenderer.renderImageWithDPI(i, DPI, colorType);
|
||||||
}
|
}
|
||||||
g.drawImage(image, 0, i * image.getHeight(), null);
|
|
||||||
|
// Calculate the x-coordinate to center the image
|
||||||
|
int x = (maxWidth - pageImage.getWidth()) / 2;
|
||||||
|
|
||||||
|
g.drawImage(pageImage, x, currentHeight, null);
|
||||||
|
currentHeight += pageImage.getHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write the image to the output stream
|
// Write the image to the output stream
|
||||||
@@ -296,6 +341,23 @@ public class PdfUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static BufferedImage prepareImageForPdfToImage(
|
||||||
|
int maxWidth, int height, String imageType) {
|
||||||
|
BufferedImage combined;
|
||||||
|
if ("png".equalsIgnoreCase(imageType)) {
|
||||||
|
combined = new BufferedImage(maxWidth, height, BufferedImage.TYPE_INT_ARGB);
|
||||||
|
} else {
|
||||||
|
combined = new BufferedImage(maxWidth, height, BufferedImage.TYPE_INT_RGB);
|
||||||
|
}
|
||||||
|
if (!"png".equalsIgnoreCase(imageType)) {
|
||||||
|
Graphics g = combined.getGraphics();
|
||||||
|
g.setColor(Color.WHITE);
|
||||||
|
g.fillRect(0, 0, combined.getWidth(), combined.getHeight());
|
||||||
|
g.dispose();
|
||||||
|
}
|
||||||
|
return combined;
|
||||||
|
}
|
||||||
|
|
||||||
public static byte[] imageToPdf(
|
public static byte[] imageToPdf(
|
||||||
MultipartFile[] files, String fitOption, boolean autoRotate, String colorType)
|
MultipartFile[] files, String fitOption, boolean autoRotate, String colorType)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
@@ -443,4 +505,10 @@ public class PdfUtils {
|
|||||||
pdf.getDocumentInformation().setCreationDate(pdfMetadata.getCreationDate());
|
pdf.getDocumentInformation().setCreationDate(pdfMetadata.getCreationDate());
|
||||||
pdf.getDocumentInformation().setModificationDate(Calendar.getInstance());
|
pdf.getDocumentInformation().setModificationDate(Calendar.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Key for storing the dimensions of a rendered image in a map. */
|
||||||
|
private record PdfRenderSettingsKey(float mediaBoxWidth, float mediaBoxHeight, int rotation) {}
|
||||||
|
|
||||||
|
/** Value for storing the dimensions of a rendered image in a map. */
|
||||||
|
private record PdfImageDimensionValue(int width, int height) {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,22 @@ public class RequestUriUtils {
|
|||||||
|| requestURI.startsWith("/images/")
|
|| requestURI.startsWith("/images/")
|
||||||
|| requestURI.startsWith("/public/")
|
|| requestURI.startsWith("/public/")
|
||||||
|| requestURI.startsWith("/pdfjs/")
|
|| requestURI.startsWith("/pdfjs/")
|
||||||
|
|| requestURI.startsWith("/pdfjs-legacy/")
|
||||||
|| requestURI.endsWith(".svg")
|
|| requestURI.endsWith(".svg")
|
||||||
|
|| requestURI.endsWith(".webmanifest")
|
||||||
|| requestURI.startsWith("/api/v1/info/status");
|
|| requestURI.startsWith("/api/v1/info/status");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isStaticResource(String contextPath, String requestURI) {
|
||||||
|
|
||||||
|
return requestURI.startsWith(contextPath + "/css/")
|
||||||
|
|| requestURI.startsWith(contextPath + "/fonts/")
|
||||||
|
|| requestURI.startsWith(contextPath + "/js/")
|
||||||
|
|| requestURI.startsWith(contextPath + "/images/")
|
||||||
|
|| requestURI.startsWith(contextPath + "/public/")
|
||||||
|
|| requestURI.startsWith(contextPath + "/pdfjs/")
|
||||||
|
|| requestURI.endsWith(".svg")
|
||||||
|
|| requestURI.endsWith(".webmanifest")
|
||||||
|
|| requestURI.startsWith(contextPath + "/api/v1/info/status");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import jakarta.servlet.http.HttpServletRequest;
|
|||||||
|
|
||||||
public class UrlUtils {
|
public class UrlUtils {
|
||||||
|
|
||||||
|
private UrlUtils() {}
|
||||||
|
|
||||||
public static String getOrigin(HttpServletRequest request) {
|
public static String getOrigin(HttpServletRequest request) {
|
||||||
String scheme = request.getScheme(); // http or https
|
String scheme = request.getScheme(); // http or https
|
||||||
String serverName = request.getServerName(); // localhost
|
String serverName = request.getServerName(); // localhost
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ saveToBrowser=Save to Browser
|
|||||||
close=إغلاق
|
close=إغلاق
|
||||||
filesSelected=الملفات المحددة
|
filesSelected=الملفات المحددة
|
||||||
noFavourites=لم تتم إضافة أي مفضلات
|
noFavourites=لم تتم إضافة أي مفضلات
|
||||||
downloadComplete=Download Complete
|
downloadComplete=إكتمل التحميل
|
||||||
bored=الانتظار بالملل؟
|
bored=الانتظار بالملل؟
|
||||||
alphabet=الأبجدية
|
alphabet=الأبجدية
|
||||||
downloadPdf=تنزيل PDF
|
downloadPdf=تنزيل PDF
|
||||||
@@ -29,47 +29,48 @@ text=نص
|
|||||||
font=الخط
|
font=الخط
|
||||||
selectFillter=- حدد -
|
selectFillter=- حدد -
|
||||||
pageNum=رقم الصفحة
|
pageNum=رقم الصفحة
|
||||||
sizes.small=Small
|
sizes.small=صغير
|
||||||
sizes.medium=Medium
|
sizes.medium=وسط
|
||||||
sizes.large=Large
|
sizes.large=كبير
|
||||||
sizes.x-large=X-Large
|
sizes.x-large=كبير جدا
|
||||||
error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect
|
error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect
|
||||||
delete=Delete
|
delete=حذف
|
||||||
username=Username
|
username=اسم المستخدم
|
||||||
password=Password
|
password=كلمة المرور
|
||||||
welcome=Welcome
|
welcome=مرحبا
|
||||||
property=Property
|
property=Property
|
||||||
black=Black
|
black=أسود
|
||||||
white=White
|
white=أبيض
|
||||||
red=Red
|
red=أحمر
|
||||||
green=Green
|
green=أخضر
|
||||||
blue=Blue
|
blue=أزرق
|
||||||
custom=Custom...
|
custom=Custom...
|
||||||
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
|
||||||
poweredBy=Powered by
|
poweredBy=Powered by
|
||||||
yes=Yes
|
yes=نعم
|
||||||
no=No
|
no=لا
|
||||||
changedCredsMessage=Credentials changed!
|
changedCredsMessage=Credentials changed!
|
||||||
notAuthenticatedMessage=User not authenticated.
|
notAuthenticatedMessage=User not authenticated.
|
||||||
userNotFoundMessage=User not found.
|
userNotFoundMessage=User not found.
|
||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Current password is incorrect.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=New Username already exists.
|
||||||
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
downgradeCurrentUserMessage=لا يمكن خفض دور المستخدم الحالي
|
downgradeCurrentUserMessage=لا يمكن خفض دور المستخدم الحالي
|
||||||
downgradeCurrentUserLongMessage=لا يمكن تخفيض دور المستخدم الحالي. وبالتالي، لن يظهر المستخدم الحالي.
|
downgradeCurrentUserLongMessage=لا يمكن تخفيض دور المستخدم الحالي. وبالتالي، لن يظهر المستخدم الحالي.
|
||||||
userAlreadyExistsOAuthMessage=The user already exists as an OAuth2 user.
|
userAlreadyExistsOAuthMessage=The user already exists as an OAuth2 user.
|
||||||
userAlreadyExistsWebMessage=The user already exists as an web user.
|
userAlreadyExistsWebMessage=The user already exists as an web user.
|
||||||
error=Error
|
error=خطأ
|
||||||
oops=Oops!
|
oops=Oops!
|
||||||
help=Help
|
help=مساعدة
|
||||||
goHomepage=Go to Homepage
|
goHomepage=الى الصفحة الرئيسية
|
||||||
joinDiscord=Join our Discord server
|
joinDiscord=Join our Discord server
|
||||||
seeDockerHub=See Docker Hub
|
seeDockerHub=See Docker Hub
|
||||||
visitGithub=Visit Github Repository
|
visitGithub=Visit Github Repository
|
||||||
donate=Donate
|
donate=Donate
|
||||||
color=Color
|
color=لون
|
||||||
sponsor=Sponsor
|
sponsor=Sponsor
|
||||||
info=Info
|
info=Info
|
||||||
|
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Custom
|
|||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
pipeline.help=Pipeline Help
|
pipeline.help=Pipeline Help
|
||||||
pipeline.scanHelp=Folder Scanning Help
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -107,15 +109,15 @@ pipelineOptions.validateButton=Validate
|
|||||||
#############
|
#############
|
||||||
navbar.favorite=Favorites
|
navbar.favorite=Favorites
|
||||||
navbar.darkmode=الوضع الداكن
|
navbar.darkmode=الوضع الداكن
|
||||||
navbar.language=Languages
|
navbar.language=اللغات
|
||||||
navbar.settings=إعدادات
|
navbar.settings=إعدادات
|
||||||
navbar.allTools=Tools
|
navbar.allTools=أدوات
|
||||||
navbar.multiTool=Multi Tools
|
navbar.multiTool=Multi Tools
|
||||||
navbar.sections.organize=Organize
|
navbar.sections.organize=Organize
|
||||||
navbar.sections.convertTo=Convert to PDF
|
navbar.sections.convertTo=تحويل الى PDF
|
||||||
navbar.sections.convertFrom=Convert from PDF
|
navbar.sections.convertFrom=Convert from PDF
|
||||||
navbar.sections.security=Sign & Security
|
navbar.sections.security=Sign & Security
|
||||||
navbar.sections.advance=Advanced
|
navbar.sections.advance=متقدم
|
||||||
navbar.sections.edit=View & Edit
|
navbar.sections.edit=View & Edit
|
||||||
|
|
||||||
#############
|
#############
|
||||||
@@ -131,7 +133,7 @@ settings.downloadOption.2=فتح في نافذة جديدة
|
|||||||
settings.downloadOption.3=تنزيل الملف
|
settings.downloadOption.3=تنزيل الملف
|
||||||
settings.zipThreshold=ملفات مضغوطة عند تجاوز عدد الملفات التي تم تنزيلها
|
settings.zipThreshold=ملفات مضغوطة عند تجاوز عدد الملفات التي تم تنزيلها
|
||||||
settings.signOut=Sign Out
|
settings.signOut=Sign Out
|
||||||
settings.accountSettings=Account Settings
|
settings.accountSettings=اعدادات الحساب
|
||||||
settings.bored.help=Enables easter egg game
|
settings.bored.help=Enables easter egg game
|
||||||
settings.cacheInputs.name=Save form inputs
|
settings.cacheInputs.name=Save form inputs
|
||||||
settings.cacheInputs.help=Enable to store previously used inputs for future runs
|
settings.cacheInputs.help=Enable to store previously used inputs for future runs
|
||||||
@@ -139,10 +141,10 @@ settings.cacheInputs.help=Enable to store previously used inputs for future runs
|
|||||||
changeCreds.title=Change Credentials
|
changeCreds.title=Change Credentials
|
||||||
changeCreds.header=Update Your Account Details
|
changeCreds.header=Update Your Account Details
|
||||||
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
||||||
changeCreds.newUsername=New Username
|
changeCreds.newUsername=مستخدم جديد
|
||||||
changeCreds.oldPassword=Current Password
|
changeCreds.oldPassword=كلمة المرور الحالية
|
||||||
changeCreds.newPassword=New Password
|
changeCreds.newPassword=كلمة المرور الجديدة
|
||||||
changeCreds.confirmNewPassword=Confirm New Password
|
changeCreds.confirmNewPassword=تأكيد كلمة المرور الجديدة
|
||||||
changeCreds.submit=Submit Changes
|
changeCreds.submit=Submit Changes
|
||||||
|
|
||||||
|
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Admin User Control Settings
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=User
|
adminUserSettings.user=User
|
||||||
adminUserSettings.addUser=Add New User
|
adminUserSettings.addUser=Add New User
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
adminUserSettings.roles=Roles
|
adminUserSettings.roles=Roles
|
||||||
adminUserSettings.role=Role
|
adminUserSettings.role=Role
|
||||||
@@ -491,9 +495,9 @@ pdfToSinglePage.submit=Convert To Single Page
|
|||||||
|
|
||||||
|
|
||||||
#pageExtracter
|
#pageExtracter
|
||||||
pageExtracter.title=Extract Pages
|
pageExtracter.title=استخراج الصفحات
|
||||||
pageExtracter.header=Extract Pages
|
pageExtracter.header=استخراج الصفحات
|
||||||
pageExtracter.submit=Extract
|
pageExtracter.submit=استخراج
|
||||||
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -501,7 +505,7 @@ pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
|||||||
getPdfInfo.title=Get Info on PDF
|
getPdfInfo.title=Get Info on PDF
|
||||||
getPdfInfo.header=Get Info on PDF
|
getPdfInfo.header=Get Info on PDF
|
||||||
getPdfInfo.submit=Get Info
|
getPdfInfo.submit=Get Info
|
||||||
getPdfInfo.downloadJson=Download JSON
|
getPdfInfo.downloadJson=تحميل JSON
|
||||||
|
|
||||||
|
|
||||||
#markdown-to-pdf
|
#markdown-to-pdf
|
||||||
@@ -679,7 +683,7 @@ removeBlanks.submit=إزالة الفراغات
|
|||||||
#removeAnnotations
|
#removeAnnotations
|
||||||
removeAnnotations.title=Remove Annotations
|
removeAnnotations.title=Remove Annotations
|
||||||
removeAnnotations.header=Remove Annotations
|
removeAnnotations.header=Remove Annotations
|
||||||
removeAnnotations.submit=Remove
|
removeAnnotations.submit=إزالة
|
||||||
|
|
||||||
|
|
||||||
#compare
|
#compare
|
||||||
@@ -797,8 +801,9 @@ addImage.submit=إضافة صورة
|
|||||||
#merge
|
#merge
|
||||||
merge.title=دمج
|
merge.title=دمج
|
||||||
merge.header=دمج ملفات PDF متعددة (2+)
|
merge.header=دمج ملفات PDF متعددة (2+)
|
||||||
merge.sortByName=Sort by name
|
merge.sortByName=الترتيب حسب الإسم
|
||||||
merge.sortByDate=Sort by date
|
merge.sortByDate=الترتيب حسب التاريخ
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=دمج
|
merge.submit=دمج
|
||||||
|
|
||||||
|
|
||||||
@@ -816,13 +821,14 @@ pdfOrganiser.mode.6=Odd-Even Split
|
|||||||
pdfOrganiser.mode.7=Remove First
|
pdfOrganiser.mode.7=Remove First
|
||||||
pdfOrganiser.mode.8=Remove Last
|
pdfOrganiser.mode.8=Remove Last
|
||||||
pdfOrganiser.mode.9=Remove First and Last
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=أداة متعددة PDF
|
multiTool.title=أداة متعددة PDF
|
||||||
multiTool.header=أداة متعددة PDF
|
multiTool.header=أداة متعددة PDF
|
||||||
multiTool.uploadPrompts=File Name
|
multiTool.uploadPrompts=إسم الملف
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=View PDF
|
viewPdf.title=View PDF
|
||||||
@@ -863,7 +869,7 @@ imageToPDF.title=صورة إلى PDF
|
|||||||
imageToPDF.header=صورة إلى PDF
|
imageToPDF.header=صورة إلى PDF
|
||||||
imageToPDF.submit=تحول
|
imageToPDF.submit=تحول
|
||||||
imageToPDF.selectLabel=Image Fit Options
|
imageToPDF.selectLabel=Image Fit Options
|
||||||
imageToPDF.fillPage=Fill Page
|
imageToPDF.fillPage=امل الصفحة
|
||||||
imageToPDF.fitDocumentToImage=Fit Page to Image
|
imageToPDF.fitDocumentToImage=Fit Page to Image
|
||||||
imageToPDF.maintainAspectRatio=Maintain Aspect Ratios
|
imageToPDF.maintainAspectRatio=Maintain Aspect Ratios
|
||||||
imageToPDF.selectText.2=دوران PDF تلقائيًا
|
imageToPDF.selectText.2=دوران PDF تلقائيًا
|
||||||
@@ -902,7 +908,7 @@ addPassword.selectText.10=منع التعديل
|
|||||||
addPassword.selectText.11=منع تعديل التعليقات التوضيحية
|
addPassword.selectText.11=منع تعديل التعليقات التوضيحية
|
||||||
addPassword.selectText.12=منع الطباعة
|
addPassword.selectText.12=منع الطباعة
|
||||||
addPassword.selectText.13=منع طباعة تنسيقات مختلفة
|
addPassword.selectText.13=منع طباعة تنسيقات مختلفة
|
||||||
addPassword.selectText.14=Owner Password
|
addPassword.selectText.14=كلمة مرور المالك
|
||||||
addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers)
|
addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers)
|
||||||
addPassword.selectText.16=Restricts the opening of the document itself
|
addPassword.selectText.16=Restricts the opening of the document itself
|
||||||
addPassword.submit=تشفير
|
addPassword.submit=تشفير
|
||||||
@@ -921,8 +927,8 @@ watermark.selectText.7=التعتيم (0٪ - 100٪):
|
|||||||
watermark.selectText.8=Watermark Type:
|
watermark.selectText.8=Watermark Type:
|
||||||
watermark.selectText.9=Watermark Image:
|
watermark.selectText.9=Watermark Image:
|
||||||
watermark.submit=إضافة علامة مائية
|
watermark.submit=إضافة علامة مائية
|
||||||
watermark.type.1=Text
|
watermark.type.1=نص
|
||||||
watermark.type.2=Image
|
watermark.type.2=صورة
|
||||||
|
|
||||||
|
|
||||||
#Change permissions
|
#Change permissions
|
||||||
@@ -1017,10 +1023,10 @@ PDFToXML.credit=تستخدم هذه الخدمة LibreOffice لتحويل الم
|
|||||||
PDFToXML.submit=تحويل
|
PDFToXML.submit=تحويل
|
||||||
|
|
||||||
#PDFToCSV
|
#PDFToCSV
|
||||||
PDFToCSV.title=PDF ??? CSV
|
PDFToCSV.title=PDF الى CSV
|
||||||
PDFToCSV.header=PDF ??? CSV
|
PDFToCSV.header=PDF الى CSV
|
||||||
PDFToCSV.prompt=Choose page to extract table
|
PDFToCSV.prompt=Choose page to extract table
|
||||||
PDFToCSV.submit=??????
|
PDFToCSV.submit=تحويل
|
||||||
|
|
||||||
#split-by-size-or-count
|
#split-by-size-or-count
|
||||||
split-by-size-or-count.title=Split PDF by Size or Count
|
split-by-size-or-count.title=Split PDF by Size or Count
|
||||||
@@ -1062,11 +1068,11 @@ split-by-sections.merge=Merge Into One PDF
|
|||||||
|
|
||||||
|
|
||||||
#printFile
|
#printFile
|
||||||
printFile.title=Print File
|
printFile.title=طباعة ملف
|
||||||
printFile.header=Print File to Printer
|
printFile.header=طباعة ملف بالطابعة
|
||||||
printFile.selectText.1=Select File to Print
|
printFile.selectText.1=تحديد ملف للطباعة
|
||||||
printFile.selectText.2=Enter Printer Name
|
printFile.selectText.2=ادخل اسم الطابعة
|
||||||
printFile.submit=Print
|
printFile.submit=طباعة
|
||||||
|
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Module
|
|||||||
licenses.version=Version
|
licenses.version=Version
|
||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Sorry for the issue!
|
error.sorry=Sorry for the issue!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=Потребителят не е намерен
|
|||||||
incorrectPasswordMessage=Текущата парола е неправилна.
|
incorrectPasswordMessage=Текущата парола е неправилна.
|
||||||
usernameExistsMessage=Новият потребител вече съществува.
|
usernameExistsMessage=Новият потребител вече съществува.
|
||||||
invalidUsernameMessage=Невалидно потребителско име, потребителското име може да съдържа само букви, цифри и следните специални знаци @._+- или трябва да е валиден имейл адрес.
|
invalidUsernameMessage=Невалидно потребителско име, потребителското име може да съдържа само букви, цифри и следните специални знаци @._+- или трябва да е валиден имейл адрес.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Не може да се изтрие вписания в момента потребител.
|
deleteCurrentUserMessage=Не може да се изтрие вписания в момента потребител.
|
||||||
deleteUsernameExistsMessage=Потребителското име не съществува и не може да бъде изтрито.
|
deleteUsernameExistsMessage=Потребителското име не съществува и не може да бъде изтрито.
|
||||||
downgradeCurrentUserMessage=Не може да се понижи ролята на текущия потребител
|
downgradeCurrentUserMessage=Не може да се понижи ролята на текущия потребител
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Персонализиран
|
|||||||
pipeline.submitButton=Подайте
|
pipeline.submitButton=Подайте
|
||||||
pipeline.help=Pipeline Помощ
|
pipeline.help=Pipeline Помощ
|
||||||
pipeline.scanHelp=Помощ за сканиране на папки
|
pipeline.scanHelp=Помощ за сканиране на папки
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Настройки за администраторск
|
|||||||
adminUserSettings.admin=Администратор
|
adminUserSettings.admin=Администратор
|
||||||
adminUserSettings.user=Потребител
|
adminUserSettings.user=Потребител
|
||||||
adminUserSettings.addUser=Добавяне на нов потребител
|
adminUserSettings.addUser=Добавяне на нов потребител
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Потребителското име може да съдържа само букви, цифри и следните специални символи @._+- или трябва да е валиден имейл адрес.
|
adminUserSettings.usernameInfo=Потребителското име може да съдържа само букви, цифри и следните специални символи @._+- или трябва да е валиден имейл адрес.
|
||||||
adminUserSettings.roles=Роли
|
adminUserSettings.roles=Роли
|
||||||
adminUserSettings.role=Роля
|
adminUserSettings.role=Роля
|
||||||
@@ -799,6 +803,7 @@ merge.title=Обединяване
|
|||||||
merge.header=Обединяване на множество PDF файлове (2+)
|
merge.header=Обединяване на множество PDF файлове (2+)
|
||||||
merge.sortByName=Сортиране по име
|
merge.sortByName=Сортиране по име
|
||||||
merge.sortByDate=Сортиране по дата
|
merge.sortByDate=Сортиране по дата
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Обединяване
|
merge.submit=Обединяване
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Четно-нечетно разделяне
|
|||||||
pdfOrganiser.mode.7=Премахни първо
|
pdfOrganiser.mode.7=Премахни първо
|
||||||
pdfOrganiser.mode.8=Премахване на последния
|
pdfOrganiser.mode.8=Премахване на последния
|
||||||
pdfOrganiser.mode.9=Премахване на първия и последния
|
pdfOrganiser.mode.9=Премахване на първия и последния
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(напр. 1,3,2 или 4-8,2,10-12 или 2n-1)
|
pdfOrganiser.placeholder=(напр. 1,3,2 или 4-8,2,10-12 или 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Модул
|
|||||||
licenses.version=Версия
|
licenses.version=Версия
|
||||||
licenses.license=Лиценз
|
licenses.license=Лиценз
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Извинете за проблема!
|
error.sorry=Извинете за проблема!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=User not found.
|
|||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Current password is incorrect.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=New Username already exists.
|
||||||
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
downgradeCurrentUserMessage=No es pot reduir la funció de l'usuari actual
|
downgradeCurrentUserMessage=No es pot reduir la funció de l'usuari actual
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Custom
|
|||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
pipeline.help=Pipeline Help
|
pipeline.help=Pipeline Help
|
||||||
pipeline.scanHelp=Folder Scanning Help
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Usuari Admin Opcions Control
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=Usuari
|
adminUserSettings.user=Usuari
|
||||||
adminUserSettings.addUser=Afegir Usuari
|
adminUserSettings.addUser=Afegir Usuari
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
adminUserSettings.roles=Rols
|
adminUserSettings.roles=Rols
|
||||||
adminUserSettings.role=Rol
|
adminUserSettings.role=Rol
|
||||||
@@ -799,6 +803,7 @@ merge.title=Fusiona
|
|||||||
merge.header=Fusiona múltiples PDFs (2+)
|
merge.header=Fusiona múltiples PDFs (2+)
|
||||||
merge.sortByName=Sort by name
|
merge.sortByName=Sort by name
|
||||||
merge.sortByDate=Sort by date
|
merge.sortByDate=Sort by date
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Fusiona
|
merge.submit=Fusiona
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Odd-Even Split
|
|||||||
pdfOrganiser.mode.7=Remove First
|
pdfOrganiser.mode.7=Remove First
|
||||||
pdfOrganiser.mode.8=Remove Last
|
pdfOrganiser.mode.8=Remove Last
|
||||||
pdfOrganiser.mode.9=Remove First and Last
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Module
|
|||||||
licenses.version=Version
|
licenses.version=Version
|
||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Sorry for the issue!
|
error.sorry=Sorry for the issue!
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr = left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
language.direction=ltr
|
language.direction=ltr
|
||||||
|
|
||||||
pdfPrompt=Vyberte PDF soubory
|
pdfPrompt=Vyberte PDF soubory
|
||||||
@@ -26,7 +26,7 @@ bored=Nudíte se při čekání?
|
|||||||
alphabet=Abeceda
|
alphabet=Abeceda
|
||||||
downloadPdf=Stáhnout PDF
|
downloadPdf=Stáhnout PDF
|
||||||
text=Text
|
text=Text
|
||||||
font=Font
|
font=Písmo
|
||||||
selectFillter=-- Vyberte --
|
selectFillter=-- Vyberte --
|
||||||
pageNum=Číslo stránky
|
pageNum=Číslo stránky
|
||||||
sizes.small=Malé
|
sizes.small=Malé
|
||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=Uživatel nenalezen.
|
|||||||
incorrectPasswordMessage=Současné heslo není správné.
|
incorrectPasswordMessage=Současné heslo není správné.
|
||||||
usernameExistsMessage=Nové uživatelské jméno již existuje.
|
usernameExistsMessage=Nové uživatelské jméno již existuje.
|
||||||
invalidUsernameMessage=Nesprávné uživatelské jméno, smí obsahovat pouze písmena, číslice a následující speciální znaky @._+- nebo musí být validní emailová adresa.
|
invalidUsernameMessage=Nesprávné uživatelské jméno, smí obsahovat pouze písmena, číslice a následující speciální znaky @._+- nebo musí být validní emailová adresa.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Nelze smazat aktuální přihlášeného uživatele.
|
deleteCurrentUserMessage=Nelze smazat aktuální přihlášeného uživatele.
|
||||||
deleteUsernameExistsMessage=Uživatelské jméno neexistuje a nelze ho smazat.
|
deleteUsernameExistsMessage=Uživatelské jméno neexistuje a nelze ho smazat.
|
||||||
downgradeCurrentUserMessage=Nelze snížit roli aktuálního uživatele.
|
downgradeCurrentUserMessage=Nelze snížit roli aktuálního uživatele.
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Vlastní
|
|||||||
pipeline.submitButton=Odeslat
|
pipeline.submitButton=Odeslat
|
||||||
pipeline.help=Pomoc s pipeline
|
pipeline.help=Pomoc s pipeline
|
||||||
pipeline.scanHelp=Pomoc se skenováním adresáře
|
pipeline.scanHelp=Pomoc se skenováním adresáře
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Admin User Control Settings
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=Uživatel
|
adminUserSettings.user=Uživatel
|
||||||
adminUserSettings.addUser=Přidat Nového Uživatele
|
adminUserSettings.addUser=Přidat Nového Uživatele
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Uživatelské Jméno může obsahovat pouze písmena, čísla a následující speciální znaky @._+- nebo musí být správná emailová adresa.
|
adminUserSettings.usernameInfo=Uživatelské Jméno může obsahovat pouze písmena, čísla a následující speciální znaky @._+- nebo musí být správná emailová adresa.
|
||||||
adminUserSettings.roles=Role
|
adminUserSettings.roles=Role
|
||||||
adminUserSettings.role=Role
|
adminUserSettings.role=Role
|
||||||
@@ -190,7 +194,7 @@ adminUserSettings.authenticated=Ověřeno
|
|||||||
#############
|
#############
|
||||||
# HOME-PAGE #
|
# HOME-PAGE #
|
||||||
#############
|
#############
|
||||||
home.desc= Vaše lokálně hostované jednotné kontaktní místo pro všechny vaše potřeby ve formátu PDF
|
home.desc=Vaše lokálně hostované jednotné kontaktní místo pro všechny vaše potřeby ve formátu PDF
|
||||||
home.searchBar=Hledej funkce...
|
home.searchBar=Hledej funkce...
|
||||||
|
|
||||||
|
|
||||||
@@ -224,7 +228,7 @@ home.pdfToImage.desc=Konvertovat PDF na obrázek. (PNG, JPEG, GIF)
|
|||||||
pdfToImage.tags=konverze,img,jpg,obrázek,fotka
|
pdfToImage.tags=konverze,img,jpg,obrázek,fotka
|
||||||
|
|
||||||
home.pdfOrganiser.title=Organizovat
|
home.pdfOrganiser.title=Organizovat
|
||||||
home.pdfOrganiser.desc=Odebrat/Přeskupit stránky v jakémkoli pořadí
|
home.pdfOrganiser.desc=Odebrat/Přeskupit stránky v jakémkoli pořadí
|
||||||
pdfOrganiser.tags=dvojitý,sudý,lichý,seřadit,přesunout
|
pdfOrganiser.tags=dvojitý,sudý,lichý,seřadit,přesunout
|
||||||
|
|
||||||
|
|
||||||
@@ -721,7 +725,7 @@ repair.submit=Opravit
|
|||||||
#flatten
|
#flatten
|
||||||
flatten.title=Zploštit
|
flatten.title=Zploštit
|
||||||
flatten.header=Zploštit PDF
|
flatten.header=Zploštit PDF
|
||||||
flatten.flattenOnlyForms=Zploštit pouze formuláře
|
flatten.flattenOnlyForms=Zploštit pouze formuláře
|
||||||
flatten.submit=Zploštit
|
flatten.submit=Zploštit
|
||||||
|
|
||||||
|
|
||||||
@@ -799,6 +803,7 @@ merge.title=Sloučit
|
|||||||
merge.header=Sloučit více PDF (2+)
|
merge.header=Sloučit více PDF (2+)
|
||||||
merge.sortByName=Seřadit podle názvu
|
merge.sortByName=Seřadit podle názvu
|
||||||
merge.sortByDate=Seřadit podle data
|
merge.sortByDate=Seřadit podle data
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Sloučit
|
merge.submit=Sloučit
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Liché-Sudé rozdělení
|
|||||||
pdfOrganiser.mode.7=Odstranit první
|
pdfOrganiser.mode.7=Odstranit první
|
||||||
pdfOrganiser.mode.8=Odstranit poslední
|
pdfOrganiser.mode.8=Odstranit poslední
|
||||||
pdfOrganiser.mode.9=Odstranit první a poslední
|
pdfOrganiser.mode.9=Odstranit první a poslední
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(např. 1,3,2 nebo 4-8,2,10-12 nebo 2n-1)
|
pdfOrganiser.placeholder=(např. 1,3,2 nebo 4-8,2,10-12 nebo 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Modul
|
|||||||
licenses.version=Verze
|
licenses.version=Verze
|
||||||
licenses.license=Licence
|
licenses.license=Licence
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Omlouváme se za potíže!
|
error.sorry=Omlouváme se za potíže!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=Benutzer nicht gefunden.
|
|||||||
incorrectPasswordMessage=Das Passwort ist falsch.
|
incorrectPasswordMessage=Das Passwort ist falsch.
|
||||||
usernameExistsMessage=Neuer Benutzername existiert bereits.
|
usernameExistsMessage=Neuer Benutzername existiert bereits.
|
||||||
invalidUsernameMessage=Ungültiger Benutzername. Der Benutzername darf nur Buchstaben, Zahlen und die folgenden Sonderzeichen @._+- enthalten oder muss eine gültige E-Mail-Adresse sein.
|
invalidUsernameMessage=Ungültiger Benutzername. Der Benutzername darf nur Buchstaben, Zahlen und die folgenden Sonderzeichen @._+- enthalten oder muss eine gültige E-Mail-Adresse sein.
|
||||||
|
confirmPasswordErrorMessage=„Neues Passwort“ und „Neues Passwort bestätigen“ müssen übereinstimmen.
|
||||||
deleteCurrentUserMessage=Der aktuell angemeldete Benutzer kann nicht gelöscht werden.
|
deleteCurrentUserMessage=Der aktuell angemeldete Benutzer kann nicht gelöscht werden.
|
||||||
deleteUsernameExistsMessage=Der Benutzername existiert nicht und kann nicht gelöscht werden.
|
deleteUsernameExistsMessage=Der Benutzername existiert nicht und kann nicht gelöscht werden.
|
||||||
downgradeCurrentUserMessage=Die Rolle des aktuellen Benutzers kann nicht herabgestuft werden
|
downgradeCurrentUserMessage=Die Rolle des aktuellen Benutzers kann nicht herabgestuft werden
|
||||||
@@ -71,7 +72,7 @@ visitGithub=GitHub-Repository besuchen
|
|||||||
donate=Spenden
|
donate=Spenden
|
||||||
color=Farbe
|
color=Farbe
|
||||||
sponsor=Sponsor
|
sponsor=Sponsor
|
||||||
info=Die Info
|
info=Informationen
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Benutzerdefiniert
|
|||||||
pipeline.submitButton=Speichern
|
pipeline.submitButton=Speichern
|
||||||
pipeline.help=Hilfe für Pipeline
|
pipeline.help=Hilfe für Pipeline
|
||||||
pipeline.scanHelp=Hilfe zum Ordnerscan
|
pipeline.scanHelp=Hilfe zum Ordnerscan
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Administrator-Benutzerkontrolle
|
|||||||
adminUserSettings.admin=Administrator
|
adminUserSettings.admin=Administrator
|
||||||
adminUserSettings.user=Benutzer
|
adminUserSettings.user=Benutzer
|
||||||
adminUserSettings.addUser=Neuen Benutzer hinzufügen
|
adminUserSettings.addUser=Neuen Benutzer hinzufügen
|
||||||
|
adminUserSettings.deleteUser=Benutzer löschen
|
||||||
|
adminUserSettings.confirmDeleteUser=Soll der Benutzer gelöscht werden?
|
||||||
adminUserSettings.usernameInfo=Der Benutzername darf nur Buchstaben, Zahlen und die folgenden Sonderzeichen @._+- enthalten oder muss eine gültige E-Mail-Adresse sein.
|
adminUserSettings.usernameInfo=Der Benutzername darf nur Buchstaben, Zahlen und die folgenden Sonderzeichen @._+- enthalten oder muss eine gültige E-Mail-Adresse sein.
|
||||||
adminUserSettings.roles=Rollen
|
adminUserSettings.roles=Rollen
|
||||||
adminUserSettings.role=Rolle
|
adminUserSettings.role=Rolle
|
||||||
@@ -332,9 +336,9 @@ 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.title=Zertifikatsignatur entfernen
|
||||||
home.removeCertSign.desc=Remove certificate signature from PDF
|
home.removeCertSign.desc=Zertifikatsignatur aus PDF entfernen
|
||||||
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
removeCertSign.tags=authentifizieren,PEM,P12,offiziell,entschlüsseln,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
|
||||||
@@ -660,10 +664,10 @@ certSign.submit=PDF signieren
|
|||||||
|
|
||||||
|
|
||||||
#removeCertSign
|
#removeCertSign
|
||||||
removeCertSign.title=Remove Certificate Signature
|
removeCertSign.title=Zertifikatsignatur entfernen
|
||||||
removeCertSign.header=Remove the digital certificate from the PDF
|
removeCertSign.header=Digitales Zertifikat aus dem PDF entfernen
|
||||||
removeCertSign.selectPDF=Select a PDF file:
|
removeCertSign.selectPDF=PDF-Datei auswählen:
|
||||||
removeCertSign.submit=Remove Signature
|
removeCertSign.submit=Signatur entfernen
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
@@ -799,6 +803,7 @@ merge.title=Zusammenführen
|
|||||||
merge.header=Mehrere PDFs zusammenführen (2+)
|
merge.header=Mehrere PDFs zusammenführen (2+)
|
||||||
merge.sortByName=Nach Namen sortieren
|
merge.sortByName=Nach Namen sortieren
|
||||||
merge.sortByDate=Nach Datum sortieren
|
merge.sortByDate=Nach Datum sortieren
|
||||||
|
merge.removeCertSign=Digitale Signatur in der zusammengeführten Datei entfernen?
|
||||||
merge.submit=Zusammenführen
|
merge.submit=Zusammenführen
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Ungerade-Gerade-Teilung
|
|||||||
pdfOrganiser.mode.7=Erste entfernen
|
pdfOrganiser.mode.7=Erste entfernen
|
||||||
pdfOrganiser.mode.8=Letzte entfernen
|
pdfOrganiser.mode.8=Letzte entfernen
|
||||||
pdfOrganiser.mode.9=Erste und letzte entfernen
|
pdfOrganiser.mode.9=Erste und letzte entfernen
|
||||||
|
pdfOrganiser.mode.10=Ungerade-Gerade-Zusammenführung
|
||||||
pdfOrganiser.placeholder=(z.B. 1,3,2 oder 4-8,2,10-12 oder 2n-1)
|
pdfOrganiser.placeholder=(z.B. 1,3,2 oder 4-8,2,10-12 oder 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Modul
|
|||||||
licenses.version=Version
|
licenses.version=Version
|
||||||
licenses.license=Lizenz
|
licenses.license=Lizenz
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Entschuldigung für das Problem!
|
error.sorry=Entschuldigung für das Problem!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=Ο χρήστης δεν βρέθηκε.
|
|||||||
incorrectPasswordMessage=Ο τρέχων κωδικός πρόσβασης είναι λανθασμένος.
|
incorrectPasswordMessage=Ο τρέχων κωδικός πρόσβασης είναι λανθασμένος.
|
||||||
usernameExistsMessage=Το νέο όνομα χρήστη υπάρχει ήδη.
|
usernameExistsMessage=Το νέο όνομα χρήστη υπάρχει ήδη.
|
||||||
invalidUsernameMessage=Μη έγκυρο όνομα χρήστη, όνομα χρήστη μπορεί να περιέχει μόνο γράμματα, αριθμούς και τους ακόλουθους ειδικούς χαρακτήρες @._+- ή πρέπει να είναι έγκυρη διεύθυνση email.
|
invalidUsernameMessage=Μη έγκυρο όνομα χρήστη, όνομα χρήστη μπορεί να περιέχει μόνο γράμματα, αριθμούς και τους ακόλουθους ειδικούς χαρακτήρες @._+- ή πρέπει να είναι έγκυρη διεύθυνση email.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Δεν είναι δυνατή η διαγραφή του τρέχοντος συνδεδεμένου χρήστη.
|
deleteCurrentUserMessage=Δεν είναι δυνατή η διαγραφή του τρέχοντος συνδεδεμένου χρήστη.
|
||||||
deleteUsernameExistsMessage=Το όνομα χρήστη δεν υπάρχει και δεν μπορεί να διαγραφεί.
|
deleteUsernameExistsMessage=Το όνομα χρήστη δεν υπάρχει και δεν μπορεί να διαγραφεί.
|
||||||
downgradeCurrentUserMessage=Δεν είναι δυνατή η υποβάθμιση του ρόλου του τρέχοντος χρήστη
|
downgradeCurrentUserMessage=Δεν είναι δυνατή η υποβάθμιση του ρόλου του τρέχοντος χρήστη
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Custom
|
|||||||
pipeline.submitButton=Υποβολή
|
pipeline.submitButton=Υποβολή
|
||||||
pipeline.help=Βοήθεια για το Pipeline
|
pipeline.help=Βοήθεια για το Pipeline
|
||||||
pipeline.scanHelp=Βοήθεια για Σάρωση Φακέλων
|
pipeline.scanHelp=Βοήθεια για Σάρωση Φακέλων
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Ρυθμίσεις ελέγχου Διαχειριστ
|
|||||||
adminUserSettings.admin=Διαχειριστής
|
adminUserSettings.admin=Διαχειριστής
|
||||||
adminUserSettings.user=Χρήστης
|
adminUserSettings.user=Χρήστης
|
||||||
adminUserSettings.addUser=Προσθήκη νέου Χρήστη
|
adminUserSettings.addUser=Προσθήκη νέου Χρήστη
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
adminUserSettings.roles=Ρόλοι
|
adminUserSettings.roles=Ρόλοι
|
||||||
adminUserSettings.role=Ρόλος
|
adminUserSettings.role=Ρόλος
|
||||||
@@ -799,6 +803,7 @@ merge.title=Συγχώνευση
|
|||||||
merge.header=Συγχώνευση πολλαπλών PDFs (2+)
|
merge.header=Συγχώνευση πολλαπλών PDFs (2+)
|
||||||
merge.sortByName=Ταξινόμηση με βάση το Όνομα
|
merge.sortByName=Ταξινόμηση με βάση το Όνομα
|
||||||
merge.sortByDate=Ταξινόμηση με βάση την Ημερομηνία
|
merge.sortByDate=Ταξινόμηση με βάση την Ημερομηνία
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Συγχώνευση
|
merge.submit=Συγχώνευση
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Διαίρεση Μονού-Ζυγού
|
|||||||
pdfOrganiser.mode.7=Αφαίρεση Πρώτου
|
pdfOrganiser.mode.7=Αφαίρεση Πρώτου
|
||||||
pdfOrganiser.mode.8=Αφαίρεση Τελευταίου
|
pdfOrganiser.mode.8=Αφαίρεση Τελευταίου
|
||||||
pdfOrganiser.mode.9=Αφαίρεση Πρώτου και Τελευταίου
|
pdfOrganiser.mode.9=Αφαίρεση Πρώτου και Τελευταίου
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(π.χ. 1,3,2 ή 4-8,2,10-12 ή 2n-1)
|
pdfOrganiser.placeholder=(π.χ. 1,3,2 ή 4-8,2,10-12 ή 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Module
|
|||||||
licenses.version=Εκδοχή
|
licenses.version=Εκδοχή
|
||||||
licenses.license=Άδεια
|
licenses.license=Άδεια
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Συγγνώμη για το ζήτημα!
|
error.sorry=Συγγνώμη για το ζήτημα!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=User not found.
|
|||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Current password is incorrect.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=New Username already exists.
|
||||||
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
downgradeCurrentUserMessage=Cannot downgrade current user's role
|
downgradeCurrentUserMessage=Cannot downgrade current user's role
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Custom
|
|||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
pipeline.help=Pipeline Help
|
pipeline.help=Pipeline Help
|
||||||
pipeline.scanHelp=Folder Scanning Help
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Admin User Control Settings
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=User
|
adminUserSettings.user=User
|
||||||
adminUserSettings.addUser=Add New User
|
adminUserSettings.addUser=Add New User
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
adminUserSettings.roles=Roles
|
adminUserSettings.roles=Roles
|
||||||
adminUserSettings.role=Role
|
adminUserSettings.role=Role
|
||||||
@@ -799,6 +803,7 @@ merge.title=Merge
|
|||||||
merge.header=Merge multiple PDFs (2+)
|
merge.header=Merge multiple PDFs (2+)
|
||||||
merge.sortByName=Sort by name
|
merge.sortByName=Sort by name
|
||||||
merge.sortByDate=Sort by date
|
merge.sortByDate=Sort by date
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Merge
|
merge.submit=Merge
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Odd-Even Split
|
|||||||
pdfOrganiser.mode.7=Remove First
|
pdfOrganiser.mode.7=Remove First
|
||||||
pdfOrganiser.mode.8=Remove Last
|
pdfOrganiser.mode.8=Remove Last
|
||||||
pdfOrganiser.mode.9=Remove First and Last
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1070,12 +1076,21 @@ printFile.submit=Print
|
|||||||
|
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
licenses.nav=Licenses
|
licenses.nav=Licences
|
||||||
licenses.title=3rd Party Licenses
|
licenses.title=3rd Party Licences
|
||||||
licenses.header=3rd Party Licenses
|
licenses.header=3rd Party Licences
|
||||||
licenses.module=Module
|
licenses.module=Module
|
||||||
licenses.version=Version
|
licenses.version=Version
|
||||||
licenses.license=License
|
licenses.license=Licence
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=User not found.
|
|||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Current password is incorrect.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=New Username already exists.
|
||||||
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
downgradeCurrentUserMessage=Cannot downgrade current user's role
|
downgradeCurrentUserMessage=Cannot downgrade current user's role
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Custom
|
|||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
pipeline.help=Pipeline Help
|
pipeline.help=Pipeline Help
|
||||||
pipeline.scanHelp=Folder Scanning Help
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Admin User Control Settings
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=User
|
adminUserSettings.user=User
|
||||||
adminUserSettings.addUser=Add New User
|
adminUserSettings.addUser=Add New User
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
adminUserSettings.roles=Roles
|
adminUserSettings.roles=Roles
|
||||||
adminUserSettings.role=Role
|
adminUserSettings.role=Role
|
||||||
@@ -799,6 +803,7 @@ merge.title=Merge
|
|||||||
merge.header=Merge multiple PDFs (2+)
|
merge.header=Merge multiple PDFs (2+)
|
||||||
merge.sortByName=Sort by name
|
merge.sortByName=Sort by name
|
||||||
merge.sortByDate=Sort by date
|
merge.sortByDate=Sort by date
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Merge
|
merge.submit=Merge
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Odd-Even Split
|
|||||||
pdfOrganiser.mode.7=Remove First
|
pdfOrganiser.mode.7=Remove First
|
||||||
pdfOrganiser.mode.8=Remove Last
|
pdfOrganiser.mode.8=Remove Last
|
||||||
pdfOrganiser.mode.9=Remove First and Last
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Module
|
|||||||
licenses.version=Version
|
licenses.version=Version
|
||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Sorry for the issue!
|
error.sorry=Sorry for the issue!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=Usuario no encontrado.
|
|||||||
incorrectPasswordMessage=La contraseña actual no es correcta.
|
incorrectPasswordMessage=La contraseña actual no es correcta.
|
||||||
usernameExistsMessage=El nuevo nombre de usuario está en uso.
|
usernameExistsMessage=El nuevo nombre de usuario está en uso.
|
||||||
invalidUsernameMessage=Nombre de usuario no válido, el nombre de usuario solo puede contener letras, números y los siguientes caracteres especiales @._+- o debe ser una dirección de correo electrónico válida.
|
invalidUsernameMessage=Nombre de usuario no válido, el nombre de usuario solo puede contener letras, números y los siguientes caracteres especiales @._+- o debe ser una dirección de correo electrónico válida.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=No puede eliminar el usuario que tiene la sesión actualmente en uso.
|
deleteCurrentUserMessage=No puede eliminar el usuario que tiene la sesión actualmente en uso.
|
||||||
deleteUsernameExistsMessage=El usuario no existe y no puede eliminarse.
|
deleteUsernameExistsMessage=El usuario no existe y no puede eliminarse.
|
||||||
downgradeCurrentUserMessage=No se puede degradar el rol del usuario actual
|
downgradeCurrentUserMessage=No se puede degradar el rol del usuario actual
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Personalizar
|
|||||||
pipeline.submitButton=Enviar
|
pipeline.submitButton=Enviar
|
||||||
pipeline.help=Ayuda de Canalización
|
pipeline.help=Ayuda de Canalización
|
||||||
pipeline.scanHelp=Ayuda de escaneado de carpetas
|
pipeline.scanHelp=Ayuda de escaneado de carpetas
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Configuración de control de usuario administrador
|
|||||||
adminUserSettings.admin=Administrador
|
adminUserSettings.admin=Administrador
|
||||||
adminUserSettings.user=Usuario
|
adminUserSettings.user=Usuario
|
||||||
adminUserSettings.addUser=Añadir Nuevo Usuario
|
adminUserSettings.addUser=Añadir Nuevo Usuario
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=El nombre de usuario solo puede contener letras, números y los siguientes caracteres especiales @._+- o debe ser una dirección de correo electrónico válida.
|
adminUserSettings.usernameInfo=El nombre de usuario solo puede contener letras, números y los siguientes caracteres especiales @._+- o debe ser una dirección de correo electrónico válida.
|
||||||
adminUserSettings.roles=Roles
|
adminUserSettings.roles=Roles
|
||||||
adminUserSettings.role=Rol
|
adminUserSettings.role=Rol
|
||||||
@@ -799,6 +803,7 @@ merge.title=Unir
|
|||||||
merge.header=Unir múltiples PDFs (2+)
|
merge.header=Unir múltiples PDFs (2+)
|
||||||
merge.sortByName=Ordenar por nombre
|
merge.sortByName=Ordenar por nombre
|
||||||
merge.sortByDate=Ordenar por fecha
|
merge.sortByDate=Ordenar por fecha
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Unir
|
merge.submit=Unir
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=División par-impar
|
|||||||
pdfOrganiser.mode.7=Quitar primera
|
pdfOrganiser.mode.7=Quitar primera
|
||||||
pdfOrganiser.mode.8=Quitar última
|
pdfOrganiser.mode.8=Quitar última
|
||||||
pdfOrganiser.mode.9=Quitar primera y última
|
pdfOrganiser.mode.9=Quitar primera y última
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(por ej., 1,3,2 o 4-8,2,10-12 o 2n-1)
|
pdfOrganiser.placeholder=(por ej., 1,3,2 o 4-8,2,10-12 o 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Módulo
|
|||||||
licenses.version=Versión
|
licenses.version=Versión
|
||||||
licenses.license=Licencia
|
licenses.license=Licencia
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=¡Perdón por el fallo!
|
error.sorry=¡Perdón por el fallo!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=User not found.
|
|||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Current password is incorrect.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=New Username already exists.
|
||||||
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
downgradeCurrentUserMessage=Ezin da uneko erabiltzailearen rola jaitsi
|
downgradeCurrentUserMessage=Ezin da uneko erabiltzailearen rola jaitsi
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Custom
|
|||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
pipeline.help=Pipeline Help
|
pipeline.help=Pipeline Help
|
||||||
pipeline.scanHelp=Folder Scanning Help
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Admin Erabiltzailearen Ezarpenen Kontrolak
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=Erabiltzaile
|
adminUserSettings.user=Erabiltzaile
|
||||||
adminUserSettings.addUser=Erabiltzaile berria
|
adminUserSettings.addUser=Erabiltzaile berria
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
adminUserSettings.roles=Rolak
|
adminUserSettings.roles=Rolak
|
||||||
adminUserSettings.role=Rol
|
adminUserSettings.role=Rol
|
||||||
@@ -799,6 +803,7 @@ merge.title=Elkartu
|
|||||||
merge.header=Elkartu zenbait PDF (2+)
|
merge.header=Elkartu zenbait PDF (2+)
|
||||||
merge.sortByName=Sort by nameOrdenatu izenaren arabera
|
merge.sortByName=Sort by nameOrdenatu izenaren arabera
|
||||||
merge.sortByDate=Ordenatu dataren arabera
|
merge.sortByDate=Ordenatu dataren arabera
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Elkartu
|
merge.submit=Elkartu
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Odd-Even Split
|
|||||||
pdfOrganiser.mode.7=Remove First
|
pdfOrganiser.mode.7=Remove First
|
||||||
pdfOrganiser.mode.8=Remove Last
|
pdfOrganiser.mode.8=Remove Last
|
||||||
pdfOrganiser.mode.9=Remove First and Last
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Module
|
|||||||
licenses.version=Version
|
licenses.version=Version
|
||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Sorry for the issue!
|
error.sorry=Sorry for the issue!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=Utilisateur non trouvé.
|
|||||||
incorrectPasswordMessage=Le mot de passe actuel est incorrect.
|
incorrectPasswordMessage=Le mot de passe actuel est incorrect.
|
||||||
usernameExistsMessage=Le nouveau nom d’utilisateur existe déjà.
|
usernameExistsMessage=Le nouveau nom d’utilisateur existe déjà.
|
||||||
invalidUsernameMessage=Nom d’utilisateur invalide, le nom d’utilisateur ne peut contenir que des lettres, des chiffres et les caractères spéciaux suivants @._+- ou doit être une adresse e-mail valide.
|
invalidUsernameMessage=Nom d’utilisateur invalide, le nom d’utilisateur ne peut contenir que des lettres, des chiffres et les caractères spéciaux suivants @._+- ou doit être une adresse e-mail valide.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Impossible de supprimer l’utilisateur actuellement connecté.
|
deleteCurrentUserMessage=Impossible de supprimer l’utilisateur actuellement connecté.
|
||||||
deleteUsernameExistsMessage=Le nom d’utilisateur n’existe pas et ne peut pas être supprimé.
|
deleteUsernameExistsMessage=Le nom d’utilisateur n’existe pas et ne peut pas être supprimé.
|
||||||
downgradeCurrentUserMessage=Impossible de rétrograder le rôle de l'utilisateur actuel.
|
downgradeCurrentUserMessage=Impossible de rétrograder le rôle de l'utilisateur actuel.
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Personnaliser
|
|||||||
pipeline.submitButton=Soumettre
|
pipeline.submitButton=Soumettre
|
||||||
pipeline.help=Aide Pipeline
|
pipeline.help=Aide Pipeline
|
||||||
pipeline.scanHelp=Aide analyse de dossier
|
pipeline.scanHelp=Aide analyse de dossier
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Administration des paramètres des utilisateurs
|
|||||||
adminUserSettings.admin=Administateur
|
adminUserSettings.admin=Administateur
|
||||||
adminUserSettings.user=Utilisateur
|
adminUserSettings.user=Utilisateur
|
||||||
adminUserSettings.addUser=Ajouter un utilisateur
|
adminUserSettings.addUser=Ajouter un utilisateur
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Le nom d'utilisateur ne peut contenir que des lettres, des chiffres et les caractères spéciaux suivants @._+- ou doit être une adresse e-mail valide.
|
adminUserSettings.usernameInfo=Le nom d'utilisateur ne peut contenir que des lettres, des chiffres et les caractères spéciaux suivants @._+- ou doit être une adresse e-mail valide.
|
||||||
adminUserSettings.roles=Rôles
|
adminUserSettings.roles=Rôles
|
||||||
adminUserSettings.role=Rôle
|
adminUserSettings.role=Rôle
|
||||||
@@ -267,7 +271,7 @@ home.fileToPDF.desc=Convertissez presque n’importe quel fichiers en PDF (DOCX,
|
|||||||
fileToPDF.tags=convertion,transformation,format,document,image,slide,texte,conversion,office,docs,word,excel,powerpoint
|
fileToPDF.tags=convertion,transformation,format,document,image,slide,texte,conversion,office,docs,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=OCR / Nettoyage des numérisations
|
home.ocr.title=OCR / Nettoyage des numérisations
|
||||||
home.ocr.desc=Utilisez l’OCR pour analyser et détecter le texte des images d’un PDF et le rajouter en temps que tel.
|
home.ocr.desc=Utilisez l’OCR pour analyser et détecter le texte des images d’un PDF et le rajouter en tant que tel.
|
||||||
ocr.tags=ocr,reconnaissance,texte,image,numérisation,scan,read,identify,detection,editable
|
ocr.tags=ocr,reconnaissance,texte,image,numérisation,scan,read,identify,detection,editable
|
||||||
|
|
||||||
|
|
||||||
@@ -456,12 +460,12 @@ login.locked=Votre compte a été verrouillé.
|
|||||||
login.signinTitle=Veuillez vous connecter
|
login.signinTitle=Veuillez vous connecter
|
||||||
login.ssoSignIn=Se connecter via l'authentification unique
|
login.ssoSignIn=Se connecter via l'authentification unique
|
||||||
login.oauth2AutoCreateDisabled=OAUTH2 Création automatique d'utilisateur désactivée
|
login.oauth2AutoCreateDisabled=OAUTH2 Création automatique d'utilisateur désactivée
|
||||||
login.oauth2RequestNotFound=Authorization request not found
|
login.oauth2RequestNotFound=Demande d'autorisation introuvable
|
||||||
login.oauth2InvalidUserInfoResponse=Invalid User Info Response
|
login.oauth2InvalidUserInfoResponse=Réponse contenant les informations de l'utilisateur est invalide
|
||||||
login.oauth2invalidRequest=Invalid Request
|
login.oauth2invalidRequest=Requête invalide
|
||||||
login.oauth2AccessDenied=Access Denied
|
login.oauth2AccessDenied=Accès refusé
|
||||||
login.oauth2InvalidTokenResponse=Invalid Token Response
|
login.oauth2InvalidTokenResponse=Réponse contenant le jeton est invalide
|
||||||
login.oauth2InvalidIdToken=Invalid Id Token
|
login.oauth2InvalidIdToken=Jeton d'identification invalide
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
@@ -690,14 +694,14 @@ compare.document.2=Document 2
|
|||||||
compare.submit=Comparer
|
compare.submit=Comparer
|
||||||
|
|
||||||
#BookToPDF
|
#BookToPDF
|
||||||
BookToPDF.title=Books and Comics to PDF
|
BookToPDF.title=Livres et BD vers PDF
|
||||||
BookToPDF.header=Book to PDF
|
BookToPDF.header=Livre vers PDF
|
||||||
BookToPDF.credit=Utiliser Calibre
|
BookToPDF.credit=Utiliser Calibre
|
||||||
BookToPDF.submit=Convertir
|
BookToPDF.submit=Convertir
|
||||||
|
|
||||||
#PDFToBook
|
#PDFToBook
|
||||||
PDFToBook.title=PDF to Book
|
PDFToBook.title=PDF vers Livre
|
||||||
PDFToBook.header=PDF to Book
|
PDFToBook.header=PDF vers Livre
|
||||||
PDFToBook.selectText.1=Format
|
PDFToBook.selectText.1=Format
|
||||||
PDFToBook.credit=Utiliser Calibre
|
PDFToBook.credit=Utiliser Calibre
|
||||||
PDFToBook.submit=Convertir
|
PDFToBook.submit=Convertir
|
||||||
@@ -799,6 +803,7 @@ merge.title=Fusionner
|
|||||||
merge.header=Fusionner plusieurs PDF
|
merge.header=Fusionner plusieurs PDF
|
||||||
merge.sortByName=Trier par nom
|
merge.sortByName=Trier par nom
|
||||||
merge.sortByDate=Trier par date
|
merge.sortByDate=Trier par date
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Fusionner
|
merge.submit=Fusionner
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Partage impair-pair
|
|||||||
pdfOrganiser.mode.7=Supprimer le premier
|
pdfOrganiser.mode.7=Supprimer le premier
|
||||||
pdfOrganiser.mode.8=Supprimer le dernier
|
pdfOrganiser.mode.8=Supprimer le dernier
|
||||||
pdfOrganiser.mode.9=Supprimer le premier et le dernier
|
pdfOrganiser.mode.9=Supprimer le premier et le dernier
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Module
|
|||||||
licenses.version=Version
|
licenses.version=Version
|
||||||
licenses.license=Licence
|
licenses.license=Licence
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Désolé pour ce problème !
|
error.sorry=Désolé pour ce problème !
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=उपयोगकर्ता नहीं मिला।
|
|||||||
incorrectPasswordMessage=वर्तमान पासवर्ड गलत है।
|
incorrectPasswordMessage=वर्तमान पासवर्ड गलत है।
|
||||||
usernameExistsMessage=नया उपयोगकर्ता नाम पहले से मौजूद है।
|
usernameExistsMessage=नया उपयोगकर्ता नाम पहले से मौजूद है।
|
||||||
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
downgradeCurrentUserMessage=मौजूदा यूज़र की भूमिका को डाउनग्रेड नहीं किया जा सकता
|
downgradeCurrentUserMessage=मौजूदा यूज़र की भूमिका को डाउनग्रेड नहीं किया जा सकता
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Custom
|
|||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
pipeline.help=Pipeline Help
|
pipeline.help=Pipeline Help
|
||||||
pipeline.scanHelp=Folder Scanning Help
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=व्यवस्थापक उपयोगकर्
|
|||||||
adminUserSettings.admin=व्यवस्थापक
|
adminUserSettings.admin=व्यवस्थापक
|
||||||
adminUserSettings.user=उपयोगकर्ता
|
adminUserSettings.user=उपयोगकर्ता
|
||||||
adminUserSettings.addUser=नया उपयोगकर्ता जोड़ें
|
adminUserSettings.addUser=नया उपयोगकर्ता जोड़ें
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
adminUserSettings.roles=रोल्स
|
adminUserSettings.roles=रोल्स
|
||||||
adminUserSettings.role=रोल
|
adminUserSettings.role=रोल
|
||||||
@@ -799,6 +803,7 @@ merge.title=मर्ज
|
|||||||
merge.header=एक से अधिक PDF एक साथ मर्ज करें (2+)
|
merge.header=एक से अधिक PDF एक साथ मर्ज करें (2+)
|
||||||
merge.sortByName=नाम से क्रमबद्ध करें
|
merge.sortByName=नाम से क्रमबद्ध करें
|
||||||
merge.sortByDate=तारीख से क्रमबद्ध करें
|
merge.sortByDate=तारीख से क्रमबद्ध करें
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=मर्ज करें
|
merge.submit=मर्ज करें
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Odd-Even Split
|
|||||||
pdfOrganiser.mode.7=Remove First
|
pdfOrganiser.mode.7=Remove First
|
||||||
pdfOrganiser.mode.8=Remove Last
|
pdfOrganiser.mode.8=Remove Last
|
||||||
pdfOrganiser.mode.9=Remove First and Last
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Module
|
|||||||
licenses.version=Version
|
licenses.version=Version
|
||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Sorry for the issue!
|
error.sorry=Sorry for the issue!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=Korisnik nije pronađen.
|
|||||||
incorrectPasswordMessage=Kriva zaporka.
|
incorrectPasswordMessage=Kriva zaporka.
|
||||||
usernameExistsMessage=Korisničko ime već postoji
|
usernameExistsMessage=Korisničko ime već postoji
|
||||||
invalidUsernameMessage=Nevažeće korisničko ime, korisničko ime može sadržavati samo slova, brojke i sljedeće posebne znakove @._+- ili mora biti važeća adresa e-pošte.
|
invalidUsernameMessage=Nevažeće korisničko ime, korisničko ime može sadržavati samo slova, brojke i sljedeće posebne znakove @._+- ili mora biti važeća adresa e-pošte.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Nije moguće izbrisati trenutno prijavljenog korisnika.
|
deleteCurrentUserMessage=Nije moguće izbrisati trenutno prijavljenog korisnika.
|
||||||
deleteUsernameExistsMessage=Korisničko ime ne postoji i ne može se izbrisati.
|
deleteUsernameExistsMessage=Korisničko ime ne postoji i ne može se izbrisati.
|
||||||
downgradeCurrentUserMessage=Nije moguće vratiti unazad ulogu trenutnog korisnika
|
downgradeCurrentUserMessage=Nije moguće vratiti unazad ulogu trenutnog korisnika
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Prilagođeno
|
|||||||
pipeline.submitButton=Pošalji
|
pipeline.submitButton=Pošalji
|
||||||
pipeline.help=Pipeline Pomoć
|
pipeline.help=Pipeline Pomoć
|
||||||
pipeline.scanHelp=Pomoć za skeniranje mapa
|
pipeline.scanHelp=Pomoć za skeniranje mapa
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Postavka kontrole korisnika za administratora
|
|||||||
adminUserSettings.admin=Administrator
|
adminUserSettings.admin=Administrator
|
||||||
adminUserSettings.user=Korisnik
|
adminUserSettings.user=Korisnik
|
||||||
adminUserSettings.addUser=Dodaj novog korisnika
|
adminUserSettings.addUser=Dodaj novog korisnika
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Korisničko ime može sadržavati samo slova, brojke i sljedeće posebne znakove @._+- ili mora biti važeća adresa e-pošte.
|
adminUserSettings.usernameInfo=Korisničko ime može sadržavati samo slova, brojke i sljedeće posebne znakove @._+- ili mora biti važeća adresa e-pošte.
|
||||||
adminUserSettings.roles=Uloge
|
adminUserSettings.roles=Uloge
|
||||||
adminUserSettings.role=Uloga
|
adminUserSettings.role=Uloga
|
||||||
@@ -331,9 +335,10 @@ compare.tags=razlikovati,kontrast,izmjene,analiza
|
|||||||
home.certSign.title=Potpišite s certifikatom
|
home.certSign.title=Potpišite s certifikatom
|
||||||
home.certSign.desc=Potpisuje PDF s certifikatom/ključem (PEM/P12)
|
home.certSign.desc=Potpisuje PDF s certifikatom/ključem (PEM/P12)
|
||||||
certSign.tags=autentifikacija,PEM,P12,zvanično,šifriranje
|
certSign.tags=autentifikacija,PEM,P12,zvanično,šifriranje
|
||||||
# home.removeCertSign.title=Remove Certificate Sign
|
|
||||||
# home.removeCertSign.desc=Remove certificate signature from PDF
|
home.removeCertSign.title=Remove Certificate Sign
|
||||||
# removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
home.removeCertSign.desc=Remove certificate signature from PDF
|
||||||
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Izgled s više stranica
|
home.pageLayout.title=Izgled s više stranica
|
||||||
home.pageLayout.desc=Spojite više stranica PDF dokumenta u jednu stranicu
|
home.pageLayout.desc=Spojite više stranica PDF dokumenta u jednu stranicu
|
||||||
@@ -656,10 +661,13 @@ certSign.reason=Razlog
|
|||||||
certSign.location=Mjesto
|
certSign.location=Mjesto
|
||||||
certSign.name=Ime
|
certSign.name=Ime
|
||||||
certSign.submit=Potpiši PDF
|
certSign.submit=Potpiši PDF
|
||||||
# removeCertSign.title=Remove Certificate Signature
|
|
||||||
# removeCertSign.header=Remove the digital certificate from the PDF
|
|
||||||
# removeCertSign.selectPDF=Select a PDF file:
|
#removeCertSign
|
||||||
# removeCertSign.submit=Remove Signature
|
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
|
||||||
@@ -795,6 +803,7 @@ merge.title=Spajanje
|
|||||||
merge.header=Spajanje više PDF-ova (2+)
|
merge.header=Spajanje više PDF-ova (2+)
|
||||||
merge.sortByName=Poredaj po imenu
|
merge.sortByName=Poredaj po imenu
|
||||||
merge.sortByDate=Poredaj po datumu
|
merge.sortByDate=Poredaj po datumu
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Spajanje
|
merge.submit=Spajanje
|
||||||
|
|
||||||
|
|
||||||
@@ -812,6 +821,7 @@ pdfOrganiser.mode.6=Par-Nepar Podjela
|
|||||||
pdfOrganiser.mode.7=Ukloni Prvu
|
pdfOrganiser.mode.7=Ukloni Prvu
|
||||||
pdfOrganiser.mode.8=Ukloni Zadnju
|
pdfOrganiser.mode.8=Ukloni Zadnju
|
||||||
pdfOrganiser.mode.9=Ukloni Prvu i Zadnju
|
pdfOrganiser.mode.9=Ukloni Prvu i Zadnju
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(npr. 1,3,2 ili 4-8,2,10-12 ili 2n-1)
|
pdfOrganiser.placeholder=(npr. 1,3,2 ili 4-8,2,10-12 ili 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1073,6 +1083,15 @@ licenses.module=Modul
|
|||||||
licenses.version=Verzija
|
licenses.version=Verzija
|
||||||
licenses.license=Licenca
|
licenses.license=Licenca
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Oprostite zbog problema!
|
error.sorry=Oprostite zbog problema!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=A felhasználó nem található.
|
|||||||
incorrectPasswordMessage=A jelenlegi jelszó helytelen.
|
incorrectPasswordMessage=A jelenlegi jelszó helytelen.
|
||||||
usernameExistsMessage=Az új felhasználónév már létezik.
|
usernameExistsMessage=Az új felhasználónév már létezik.
|
||||||
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
downgradeCurrentUserMessage=A jelenlegi felhasználó szerepkörét nem lehet visszaminősíteni
|
downgradeCurrentUserMessage=A jelenlegi felhasználó szerepkörét nem lehet visszaminősíteni
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Custom
|
|||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
pipeline.help=Pipeline Help
|
pipeline.help=Pipeline Help
|
||||||
pipeline.scanHelp=Folder Scanning Help
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Adminisztrátori Felhasználói Vezérlési Beállítá
|
|||||||
adminUserSettings.admin=Adminisztrátor
|
adminUserSettings.admin=Adminisztrátor
|
||||||
adminUserSettings.user=Felhasználó
|
adminUserSettings.user=Felhasználó
|
||||||
adminUserSettings.addUser=Új felhasználó hozzáadása
|
adminUserSettings.addUser=Új felhasználó hozzáadása
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
adminUserSettings.roles=Szerepek
|
adminUserSettings.roles=Szerepek
|
||||||
adminUserSettings.role=Szerep
|
adminUserSettings.role=Szerep
|
||||||
@@ -799,6 +803,7 @@ merge.title=Összevonás
|
|||||||
merge.header=Több PDF összevonása (2+)
|
merge.header=Több PDF összevonása (2+)
|
||||||
merge.sortByName=Név szerinti rendezés
|
merge.sortByName=Név szerinti rendezés
|
||||||
merge.sortByDate=Dátum szerinti rendezés
|
merge.sortByDate=Dátum szerinti rendezés
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Összevonás
|
merge.submit=Összevonás
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Odd-Even Split
|
|||||||
pdfOrganiser.mode.7=Remove First
|
pdfOrganiser.mode.7=Remove First
|
||||||
pdfOrganiser.mode.8=Remove Last
|
pdfOrganiser.mode.8=Remove Last
|
||||||
pdfOrganiser.mode.9=Remove First and Last
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Module
|
|||||||
licenses.version=Version
|
licenses.version=Version
|
||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Sorry for the issue!
|
error.sorry=Sorry for the issue!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=Pengguna tidak ditemukan.
|
|||||||
incorrectPasswordMessage=Kata sandi saat ini salah.
|
incorrectPasswordMessage=Kata sandi saat ini salah.
|
||||||
usernameExistsMessage=Nama pengguna baru sudah ada.
|
usernameExistsMessage=Nama pengguna baru sudah ada.
|
||||||
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
downgradeCurrentUserMessage=Tidak dapat menurunkan peran pengguna saat ini
|
downgradeCurrentUserMessage=Tidak dapat menurunkan peran pengguna saat ini
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Custom
|
|||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
pipeline.help=Pipeline Help
|
pipeline.help=Pipeline Help
|
||||||
pipeline.scanHelp=Folder Scanning Help
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Pengaturan Kontrol Admin
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=Pengguna
|
adminUserSettings.user=Pengguna
|
||||||
adminUserSettings.addUser=Tambahkan Pengguna Baru
|
adminUserSettings.addUser=Tambahkan Pengguna Baru
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
adminUserSettings.roles=Peran
|
adminUserSettings.roles=Peran
|
||||||
adminUserSettings.role=Peran
|
adminUserSettings.role=Peran
|
||||||
@@ -799,6 +803,7 @@ merge.title=Gabungkan
|
|||||||
merge.header=Gabungkan beberapa PDFs (2+)
|
merge.header=Gabungkan beberapa PDFs (2+)
|
||||||
merge.sortByName=Sortir berdasarkan nama
|
merge.sortByName=Sortir berdasarkan nama
|
||||||
merge.sortByDate=Sortir berdasrkan tanggal
|
merge.sortByDate=Sortir berdasrkan tanggal
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Gabungkan
|
merge.submit=Gabungkan
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Odd-Even Split
|
|||||||
pdfOrganiser.mode.7=Remove First
|
pdfOrganiser.mode.7=Remove First
|
||||||
pdfOrganiser.mode.8=Remove Last
|
pdfOrganiser.mode.8=Remove Last
|
||||||
pdfOrganiser.mode.9=Remove First and Last
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Module
|
|||||||
licenses.version=Version
|
licenses.version=Version
|
||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Sorry for the issue!
|
error.sorry=Sorry for the issue!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=Utente non trovato.
|
|||||||
incorrectPasswordMessage=La password attuale non è corretta.
|
incorrectPasswordMessage=La password attuale non è corretta.
|
||||||
usernameExistsMessage=Il nuovo nome utente esiste già.
|
usernameExistsMessage=Il nuovo nome utente esiste già.
|
||||||
invalidUsernameMessage=Nome utente non valido, il nome utente può contenere solo lettere, numeri e i seguenti caratteri speciali @._+- o deve essere un indirizzo email valido.
|
invalidUsernameMessage=Nome utente non valido, il nome utente può contenere solo lettere, numeri e i seguenti caratteri speciali @._+- o deve essere un indirizzo email valido.
|
||||||
|
confirmPasswordErrorMessage=La nuova password e la conferma della nuova password devono corrispondere.
|
||||||
deleteCurrentUserMessage=Impossibile eliminare l'utente attualmente connesso.
|
deleteCurrentUserMessage=Impossibile eliminare l'utente attualmente connesso.
|
||||||
deleteUsernameExistsMessage=Il nome utente non esiste e non può essere eliminato.
|
deleteUsernameExistsMessage=Il nome utente non esiste e non può essere eliminato.
|
||||||
downgradeCurrentUserMessage=Impossibile declassare il ruolo dell'utente corrente
|
downgradeCurrentUserMessage=Impossibile declassare il ruolo dell'utente corrente
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Personalizzato
|
|||||||
pipeline.submitButton=Invia
|
pipeline.submitButton=Invia
|
||||||
pipeline.help=Aiuto sulla pipeline
|
pipeline.help=Aiuto sulla pipeline
|
||||||
pipeline.scanHelp=Aiuto per la scansione delle cartelle
|
pipeline.scanHelp=Aiuto per la scansione delle cartelle
|
||||||
|
pipeline.deletePrompt=Sei sicuro di voler eliminare la pipeline?
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Impostazioni di controllo utente amministratore
|
|||||||
adminUserSettings.admin=Amministratore
|
adminUserSettings.admin=Amministratore
|
||||||
adminUserSettings.user=Utente
|
adminUserSettings.user=Utente
|
||||||
adminUserSettings.addUser=Aggiungi un nuovo Utente
|
adminUserSettings.addUser=Aggiungi un nuovo Utente
|
||||||
|
adminUserSettings.deleteUser=Elimina utente
|
||||||
|
adminUserSettings.confirmDeleteUser=L'utente deve essere eliminato?
|
||||||
adminUserSettings.usernameInfo=Il nome utente può contenere solo lettere, numeri e i seguenti caratteri speciali @._+- oppure deve essere un indirizzo email valido.
|
adminUserSettings.usernameInfo=Il nome utente può contenere solo lettere, numeri e i seguenti caratteri speciali @._+- oppure deve essere un indirizzo email valido.
|
||||||
adminUserSettings.roles=Ruoli
|
adminUserSettings.roles=Ruoli
|
||||||
adminUserSettings.role=Ruolo
|
adminUserSettings.role=Ruolo
|
||||||
@@ -332,9 +336,9 @@ 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.title=Rimuovere firma dal certificato
|
||||||
home.removeCertSign.desc=Remove certificate signature from PDF
|
home.removeCertSign.desc=Rimuovi la firma del certificato dal PDF
|
||||||
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
removeCertSign.tags=autenticare,PEM,P12,ufficiale,decifrare
|
||||||
|
|
||||||
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
|
||||||
@@ -799,6 +803,7 @@ merge.title=Unisci
|
|||||||
merge.header=Unisci 2 o più PDF
|
merge.header=Unisci 2 o più PDF
|
||||||
merge.sortByName=Ordina per nome
|
merge.sortByName=Ordina per nome
|
||||||
merge.sortByDate=Ordina per data
|
merge.sortByDate=Ordina per data
|
||||||
|
merge.removeCertSign=Rimuovere la firma digitale nel file unito?
|
||||||
merge.submit=Unisci
|
merge.submit=Unisci
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Divisione pari-dispari
|
|||||||
pdfOrganiser.mode.7=Rimuovi prima
|
pdfOrganiser.mode.7=Rimuovi prima
|
||||||
pdfOrganiser.mode.8=Rimuovi ultima
|
pdfOrganiser.mode.8=Rimuovi ultima
|
||||||
pdfOrganiser.mode.9=Rimuovi la prima e l'ultima
|
pdfOrganiser.mode.9=Rimuovi la prima e l'ultima
|
||||||
|
pdfOrganiser.mode.10=Unione pari-dispari
|
||||||
pdfOrganiser.placeholder=(ad es. 1,3,2 o 4-8,2,10-12 o 2n-1)
|
pdfOrganiser.placeholder=(ad es. 1,3,2 o 4-8,2,10-12 o 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -976,7 +982,7 @@ pdfToPDFA.credit=Questo servizio utilizza OCRmyPDF per la conversione in PDF/A.
|
|||||||
pdfToPDFA.submit=Converti
|
pdfToPDFA.submit=Converti
|
||||||
pdfToPDFA.tip=Attualmente non funziona per più input contemporaneamente
|
pdfToPDFA.tip=Attualmente non funziona per più input contemporaneamente
|
||||||
pdfToPDFA.outputFormat=Formato di output
|
pdfToPDFA.outputFormat=Formato di output
|
||||||
pdfToPDFA.pdfWithDigitalSignature=The PDF contains a digital signature. This will be removed in the next step.
|
pdfToPDFA.pdfWithDigitalSignature=Il PDF contiene una firma digitale. Questo verrà rimosso nel passaggio successivo.
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Modulo
|
|||||||
licenses.version=Versione
|
licenses.version=Versione
|
||||||
licenses.license=Licenza
|
licenses.license=Licenza
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Sondaggio
|
||||||
|
survey.title=Sondaggio Stirling-PDF
|
||||||
|
survey.description=Stirling-PDF non fa tracciamento, quindi vogliamo sentire i nostri utenti per migliorare Stirling-PDF!
|
||||||
|
survey.please=Ti invitiamo a prendere in considerazione la possibilità di partecipare al nostro sondaggio!
|
||||||
|
survey.disabled=(Il popup del sondaggio verrà disabilitato nei prossimi aggiornamenti ma sarà disponibile a piè di pagina)
|
||||||
|
survey.button=Partecipa al sondaggio
|
||||||
|
survey.dontShowAgain=Non mostrare più
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Ci scusiamo per il problema!
|
error.sorry=Ci scusiamo per il problema!
|
||||||
|
|||||||
@@ -55,12 +55,13 @@ userNotFoundMessage=ユーザーが見つかりません。
|
|||||||
incorrectPasswordMessage=現在のパスワードが正しくありません。
|
incorrectPasswordMessage=現在のパスワードが正しくありません。
|
||||||
usernameExistsMessage=新しいユーザー名はすでに存在します。
|
usernameExistsMessage=新しいユーザー名はすでに存在します。
|
||||||
invalidUsernameMessage=ユーザー名が無効です。ユーザー名には文字、数字、およびそれに続く特殊文字 @._+- のみを含めることができます。または、有効な電子メール アドレスである必要があります。
|
invalidUsernameMessage=ユーザー名が無効です。ユーザー名には文字、数字、およびそれに続く特殊文字 @._+- のみを含めることができます。または、有効な電子メール アドレスである必要があります。
|
||||||
|
confirmPasswordErrorMessage=新しいパスワードと新しいパスワードの確認は一致する必要があります。
|
||||||
deleteCurrentUserMessage=現在ログインしているユーザーは削除できません。
|
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=ユーザーは既にWebユーザーとして存在します。
|
||||||
error=エラー
|
error=エラー
|
||||||
oops=おっと!
|
oops=おっと!
|
||||||
help=ヘルプ
|
help=ヘルプ
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=カスタム
|
|||||||
pipeline.submitButton=送信
|
pipeline.submitButton=送信
|
||||||
pipeline.help=パイプラインのヘルプ
|
pipeline.help=パイプラインのヘルプ
|
||||||
pipeline.scanHelp=フォルダ スキャンのヘルプ
|
pipeline.scanHelp=フォルダ スキャンのヘルプ
|
||||||
|
pipeline.deletePrompt=パイプラインを削除してもよろしいですか
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -107,23 +109,23 @@ pipelineOptions.validateButton=検証
|
|||||||
#############
|
#############
|
||||||
navbar.favorite=Favorites
|
navbar.favorite=Favorites
|
||||||
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 #
|
||||||
#############
|
#############
|
||||||
settings.title=設定
|
settings.title=設定
|
||||||
settings.update=利用可能なアップデート
|
settings.update=利用可能なアップデート
|
||||||
settings.updateAvailable={0} is the current installed version. A new version ({1}) is available.
|
settings.updateAvailable=バージョン {0} がインストールされています。 新しいバージョン ({1}) が利用可能です。
|
||||||
settings.appVersion=Appバージョン:
|
settings.appVersion=Appバージョン:
|
||||||
settings.downloadOption.title=ダウンロードオプション (zip以外の単一ファイル):
|
settings.downloadOption.title=ダウンロードオプション (zip以外の単一ファイル):
|
||||||
settings.downloadOption.1=同じウィンドウで開く
|
settings.downloadOption.1=同じウィンドウで開く
|
||||||
@@ -132,9 +134,9 @@ settings.downloadOption.3=ファイルをダウンロード
|
|||||||
settings.zipThreshold=このファイル数を超えたときにファイルを圧縮する
|
settings.zipThreshold=このファイル数を超えたときにファイルを圧縮する
|
||||||
settings.signOut=サインアウト
|
settings.signOut=サインアウト
|
||||||
settings.accountSettings=アカウント設定
|
settings.accountSettings=アカウント設定
|
||||||
settings.bored.help=Enables easter egg game
|
settings.bored.help=イースターエッグゲームを有効にする
|
||||||
settings.cacheInputs.name=Save form inputs
|
settings.cacheInputs.name=フォームの入力を保存する
|
||||||
settings.cacheInputs.help=Enable to store previously used inputs for future runs
|
settings.cacheInputs.help=以前使用した入力を保存し、次回から使用できるようにする。
|
||||||
|
|
||||||
changeCreds.title=資格情報の変更
|
changeCreds.title=資格情報の変更
|
||||||
changeCreds.header=アカウントの詳細を更新する
|
changeCreds.header=アカウントの詳細を更新する
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=管理者ユーザー制御設定
|
|||||||
adminUserSettings.admin=管理者
|
adminUserSettings.admin=管理者
|
||||||
adminUserSettings.user=ユーザー
|
adminUserSettings.user=ユーザー
|
||||||
adminUserSettings.addUser=新しいユーザを追加
|
adminUserSettings.addUser=新しいユーザを追加
|
||||||
|
adminUserSettings.deleteUser=ユーザの削除
|
||||||
|
adminUserSettings.confirmDeleteUser=ユーザを本当に削除しますか?
|
||||||
adminUserSettings.usernameInfo=ユーザー名には、文字、数字、および次の特殊文字 @._+- のみを含めることができます。または、有効な電子メール アドレスである必要があります。
|
adminUserSettings.usernameInfo=ユーザー名には、文字、数字、および次の特殊文字 @._+- のみを含めることができます。または、有効な電子メール アドレスである必要があります。
|
||||||
adminUserSettings.roles=役割
|
adminUserSettings.roles=役割
|
||||||
adminUserSettings.role=役割
|
adminUserSettings.role=役割
|
||||||
@@ -185,7 +189,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 #
|
||||||
@@ -332,8 +336,8 @@ 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.title=証明書の署名を削除する
|
||||||
home.removeCertSign.desc=Remove certificate signature from PDF
|
home.removeCertSign.desc=PDFから証明書署名を削除する
|
||||||
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=マルチページレイアウト
|
home.pageLayout.title=マルチページレイアウト
|
||||||
@@ -456,12 +460,12 @@ login.locked=あなたのアカウントはロックされています。
|
|||||||
login.signinTitle=サインインしてください
|
login.signinTitle=サインインしてください
|
||||||
login.ssoSignIn=シングルサインオンでログイン
|
login.ssoSignIn=シングルサインオンでログイン
|
||||||
login.oauth2AutoCreateDisabled=OAuth 2自動作成ユーザーが無効
|
login.oauth2AutoCreateDisabled=OAuth 2自動作成ユーザーが無効
|
||||||
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=Invalid Id Token
|
login.oauth2InvalidIdToken=無効なIDトークン
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
@@ -660,10 +664,10 @@ certSign.submit=PDFに署名
|
|||||||
|
|
||||||
|
|
||||||
#removeCertSign
|
#removeCertSign
|
||||||
removeCertSign.title=Remove Certificate Signature
|
removeCertSign.title=証明書署名の削除
|
||||||
removeCertSign.header=Remove the digital certificate from the PDF
|
removeCertSign.header=PDFから電子証明書を削除する
|
||||||
removeCertSign.selectPDF=Select a PDF file:
|
removeCertSign.selectPDF=PDFファイルの選択:
|
||||||
removeCertSign.submit=Remove Signature
|
removeCertSign.submit=署名の削除
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
@@ -721,7 +725,7 @@ repair.submit=修復
|
|||||||
#flatten
|
#flatten
|
||||||
flatten.title=平坦化
|
flatten.title=平坦化
|
||||||
flatten.header=PDFを平坦化する
|
flatten.header=PDFを平坦化する
|
||||||
flatten.flattenOnlyForms=Flatten only forms
|
flatten.flattenOnlyForms=フォームのみを平坦にする
|
||||||
flatten.submit=平坦化
|
flatten.submit=平坦化
|
||||||
|
|
||||||
|
|
||||||
@@ -748,7 +752,7 @@ ocr.selectText.4=ページをきれいにして背景ノイズの中からテキ
|
|||||||
ocr.selectText.5=ページをきれいにして背景ノイズの中からテキストを検出しにくくし、出力はクリーンアップを維持する。
|
ocr.selectText.5=ページをきれいにして背景ノイズの中からテキストを検出しにくくし、出力はクリーンアップを維持する。
|
||||||
ocr.selectText.6=インタラクティブなテキストを含むページを無視し、画像ページのみをOCRする
|
ocr.selectText.6=インタラクティブなテキストを含むページを無視し、画像ページのみをOCRする
|
||||||
ocr.selectText.7=強制OCR、全てのページで元のテキスト要素を全て削除してOCRする
|
ocr.selectText.7=強制OCR、全てのページで元のテキスト要素を全て削除してOCRする
|
||||||
ocr.selectText.8=Normal (PDFにテキストが含まれている場合はエラーになります。)
|
ocr.selectText.8=ノーマル (PDFにテキストが含まれている場合はエラーになります。)
|
||||||
ocr.selectText.9=追加設定
|
ocr.selectText.9=追加設定
|
||||||
ocr.selectText.10=OCRモード
|
ocr.selectText.10=OCRモード
|
||||||
ocr.selectText.11=OCR後に画像を削除する (すべての画像を削除します。変換ステップの一部である場合にのみ有効です)。
|
ocr.selectText.11=OCR後に画像を削除する (すべての画像を削除します。変換ステップの一部である場合にのみ有効です)。
|
||||||
@@ -769,7 +773,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を変換
|
||||||
|
|
||||||
@@ -799,6 +803,7 @@ merge.title=結合
|
|||||||
merge.header=複数のPDFを結合 (2ファイル以上)
|
merge.header=複数のPDFを結合 (2ファイル以上)
|
||||||
merge.sortByName=名前で並べ替え
|
merge.sortByName=名前で並べ替え
|
||||||
merge.sortByDate=日付で並べ替え
|
merge.sortByDate=日付で並べ替え
|
||||||
|
merge.removeCertSign=結合されたファイル内のデジタル署名を削除しますか?
|
||||||
merge.submit=結合
|
merge.submit=結合
|
||||||
|
|
||||||
|
|
||||||
@@ -816,13 +821,14 @@ pdfOrganiser.mode.6=奇数-偶数分割
|
|||||||
pdfOrganiser.mode.7=最初に削除
|
pdfOrganiser.mode.7=最初に削除
|
||||||
pdfOrganiser.mode.8=最後を削除
|
pdfOrganiser.mode.8=最後を削除
|
||||||
pdfOrganiser.mode.9=最初と最後を削除
|
pdfOrganiser.mode.9=最初と最後を削除
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(例:1,3,2または4-8,2,10-12または2n-1)
|
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を表示
|
||||||
@@ -976,7 +982,7 @@ pdfToPDFA.credit=本サービスはPDF/Aの変換にOCRmyPDFを使用してい
|
|||||||
pdfToPDFA.submit=変換
|
pdfToPDFA.submit=変換
|
||||||
pdfToPDFA.tip=現在、一度に複数の入力に対して機能しません
|
pdfToPDFA.tip=現在、一度に複数の入力に対して機能しません
|
||||||
pdfToPDFA.outputFormat=Output format
|
pdfToPDFA.outputFormat=Output format
|
||||||
pdfToPDFA.pdfWithDigitalSignature=The PDF contains a digital signature. This will be removed in the next step.
|
pdfToPDFA.pdfWithDigitalSignature=PDF にはデジタル署名が含まれています。これは次の手順で削除されます。
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -1062,11 +1068,11 @@ split-by-sections.merge=1 つの PDF に結合するかどうか
|
|||||||
|
|
||||||
|
|
||||||
#printFile
|
#printFile
|
||||||
printFile.title=Print File
|
printFile.title=ファイルの印刷
|
||||||
printFile.header=Print File to Printer
|
printFile.header=ファイルをプリンタで印刷
|
||||||
printFile.selectText.1=Select File to Print
|
printFile.selectText.1=印刷するファイルを選択
|
||||||
printFile.selectText.2=Enter Printer Name
|
printFile.selectText.2=プリンタ名を入力
|
||||||
printFile.submit=Print
|
printFile.submit=プリント
|
||||||
|
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=モジュール
|
|||||||
licenses.version=バージョン
|
licenses.version=バージョン
|
||||||
licenses.license=ライセンス
|
licenses.license=ライセンス
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=アンケート
|
||||||
|
survey.title=Stirling-PDFのアンケート
|
||||||
|
survey.description=Stirling-PDFには追跡機能がないため、Stirling-PDFをより良くするために皆様の意見を聞かせてください!
|
||||||
|
survey.please=アンケートにご協力ください!
|
||||||
|
survey.disabled=(アンケートのポップアップは、次の更新では無効になりますが、ページの下部に表示されます。)
|
||||||
|
survey.button=アンケートに答える
|
||||||
|
survey.dontShowAgain=再び表示しない
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=問題が発生したことをお詫び申し上げます!
|
error.sorry=問題が発生したことをお詫び申し上げます!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=사용자를 찾을 수 없습니다.
|
|||||||
incorrectPasswordMessage=현재 비밀번호가 틀립니다.
|
incorrectPasswordMessage=현재 비밀번호가 틀립니다.
|
||||||
usernameExistsMessage=새 사용자명이 이미 존재합니다.
|
usernameExistsMessage=새 사용자명이 이미 존재합니다.
|
||||||
invalidUsernameMessage=잘못된 사용자 이름입니다. 사용자 이름에는 문자, 숫자 및 다음 특수 문자(@._+-)만 포함할 수 있거나 유효한 이메일 주소여야 합니다.
|
invalidUsernameMessage=잘못된 사용자 이름입니다. 사용자 이름에는 문자, 숫자 및 다음 특수 문자(@._+-)만 포함할 수 있거나 유효한 이메일 주소여야 합니다.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=현재 로그인한 사용자를 삭제할 수 없습니다.
|
deleteCurrentUserMessage=현재 로그인한 사용자를 삭제할 수 없습니다.
|
||||||
deleteUsernameExistsMessage=사용자 이름이 존재하지 않으며 삭제할 수 없습니다.
|
deleteUsernameExistsMessage=사용자 이름이 존재하지 않으며 삭제할 수 없습니다.
|
||||||
downgradeCurrentUserMessage=현재 사용자의 역할을 다운그레이드할 수 없습니다
|
downgradeCurrentUserMessage=현재 사용자의 역할을 다운그레이드할 수 없습니다
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=관습
|
|||||||
pipeline.submitButton=전송
|
pipeline.submitButton=전송
|
||||||
pipeline.help=파이프라인 도움말
|
pipeline.help=파이프라인 도움말
|
||||||
pipeline.scanHelp=폴더 스캔 도움말
|
pipeline.scanHelp=폴더 스캔 도움말
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=사용자 관리
|
|||||||
adminUserSettings.admin=관리자
|
adminUserSettings.admin=관리자
|
||||||
adminUserSettings.user=사용자
|
adminUserSettings.user=사용자
|
||||||
adminUserSettings.addUser=새 사용자 추가
|
adminUserSettings.addUser=새 사용자 추가
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=사용자 이름은 문자, 숫자, 특수 문자 @._+-만 포함할 수 있으며 유효한 이메일 주소여야 합니다.
|
adminUserSettings.usernameInfo=사용자 이름은 문자, 숫자, 특수 문자 @._+-만 포함할 수 있으며 유효한 이메일 주소여야 합니다.
|
||||||
adminUserSettings.roles=역할
|
adminUserSettings.roles=역할
|
||||||
adminUserSettings.role=역할
|
adminUserSettings.role=역할
|
||||||
@@ -799,6 +803,7 @@ merge.title=병합
|
|||||||
merge.header=여러 개의 PDF 병합 (2개 이상)
|
merge.header=여러 개의 PDF 병합 (2개 이상)
|
||||||
merge.sortByName=이름순 정렬
|
merge.sortByName=이름순 정렬
|
||||||
merge.sortByDate=날짜순 정렬
|
merge.sortByDate=날짜순 정렬
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=병합
|
merge.submit=병합
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=홀수-짝수 분할
|
|||||||
pdfOrganiser.mode.7=첫 번째 항목 삭제
|
pdfOrganiser.mode.7=첫 번째 항목 삭제
|
||||||
pdfOrganiser.mode.8=마지막 항목 제거
|
pdfOrganiser.mode.8=마지막 항목 제거
|
||||||
pdfOrganiser.mode.9=첫 번째와 마지막 제거
|
pdfOrganiser.mode.9=첫 번째와 마지막 제거
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(예: 1,3,2 또는 4-8,2,10-12 또는 2n-1)
|
pdfOrganiser.placeholder=(예: 1,3,2 또는 4-8,2,10-12 또는 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=모듈
|
|||||||
licenses.version=버전
|
licenses.version=버전
|
||||||
licenses.license=라이센스
|
licenses.license=라이센스
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=문제를 끼친 점 죄송합니다!
|
error.sorry=문제를 끼친 점 죄송합니다!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=Gebruiker niet gevonden.
|
|||||||
incorrectPasswordMessage=Huidige wachtwoord is onjuist.
|
incorrectPasswordMessage=Huidige wachtwoord is onjuist.
|
||||||
usernameExistsMessage=Nieuwe gebruikersnaam bestaat al.
|
usernameExistsMessage=Nieuwe gebruikersnaam bestaat al.
|
||||||
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
downgradeCurrentUserMessage=Kan de rol van de huidige gebruiker niet downgraden
|
downgradeCurrentUserMessage=Kan de rol van de huidige gebruiker niet downgraden
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Aangepast
|
|||||||
pipeline.submitButton=Opslaan
|
pipeline.submitButton=Opslaan
|
||||||
pipeline.help=Pipeline Help
|
pipeline.help=Pipeline Help
|
||||||
pipeline.scanHelp=Folder Scanning Help
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Beheer gebruikers
|
|||||||
adminUserSettings.admin=Beheerder
|
adminUserSettings.admin=Beheerder
|
||||||
adminUserSettings.user=Gebruiker
|
adminUserSettings.user=Gebruiker
|
||||||
adminUserSettings.addUser=Voeg nieuwe gebruiker toe
|
adminUserSettings.addUser=Voeg nieuwe gebruiker toe
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
adminUserSettings.roles=Rollen
|
adminUserSettings.roles=Rollen
|
||||||
adminUserSettings.role=Rol
|
adminUserSettings.role=Rol
|
||||||
@@ -799,6 +803,7 @@ merge.title=Samenvoegen
|
|||||||
merge.header=Meerdere PDF's samenvoegen (2+)
|
merge.header=Meerdere PDF's samenvoegen (2+)
|
||||||
merge.sortByName=Sorteer op naam
|
merge.sortByName=Sorteer op naam
|
||||||
merge.sortByDate=Sorteer op datum
|
merge.sortByDate=Sorteer op datum
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Samenvoegen
|
merge.submit=Samenvoegen
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Odd-Even Split
|
|||||||
pdfOrganiser.mode.7=Remove First
|
pdfOrganiser.mode.7=Remove First
|
||||||
pdfOrganiser.mode.8=Remove Last
|
pdfOrganiser.mode.8=Remove Last
|
||||||
pdfOrganiser.mode.9=Remove First and Last
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Module
|
|||||||
licenses.version=Versie
|
licenses.version=Versie
|
||||||
licenses.license=Licentie
|
licenses.license=Licentie
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Sorry for the issue!
|
error.sorry=Sorry for the issue!
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
###########
|
###########
|
||||||
# Generic #
|
# Generic #
|
||||||
###########
|
###########
|
||||||
# the direction that the language is written (ltr = left to right, rtl = right to left)
|
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||||
language.direction=ltr
|
language.direction=ltr
|
||||||
|
|
||||||
pdfPrompt=Velg PDF(er)
|
pdfPrompt=Velg PDF(er)
|
||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=Bruker ikke funnet.
|
|||||||
incorrectPasswordMessage=Nåværende passord er feil.
|
incorrectPasswordMessage=Nåværende passord er feil.
|
||||||
usernameExistsMessage=Det nye brukernavnet eksisterer allerede.
|
usernameExistsMessage=Det nye brukernavnet eksisterer allerede.
|
||||||
invalidUsernameMessage=Ugyldig brukernavn, brukernavnet kan bare inneholde bokstaver, tall og følgende spesialtegn @._+- eller må være en gyldig e-postadresse.
|
invalidUsernameMessage=Ugyldig brukernavn, brukernavnet kan bare inneholde bokstaver, tall og følgende spesialtegn @._+- eller må være en gyldig e-postadresse.
|
||||||
|
confirmPasswordErrorMessage=Nytt passord og Bekreft nytt passord må være like.
|
||||||
deleteCurrentUserMessage=Kan ikke slette den innloggede brukeren.
|
deleteCurrentUserMessage=Kan ikke slette den innloggede brukeren.
|
||||||
deleteUsernameExistsMessage=Brukernavnet eksisterer ikke og kan ikke slettes.
|
deleteUsernameExistsMessage=Brukernavnet eksisterer ikke og kan ikke slettes.
|
||||||
downgradeCurrentUserMessage=Kan ikke nedgradere den innloggede brukerens rolle.
|
downgradeCurrentUserMessage=Kan ikke nedgradere den innloggede brukerens rolle.
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Tilpasset
|
|||||||
pipeline.submitButton=Send inn
|
pipeline.submitButton=Send inn
|
||||||
pipeline.help=Pipeline hjelp
|
pipeline.help=Pipeline hjelp
|
||||||
pipeline.scanHelp=Mappe skanning hjelp
|
pipeline.scanHelp=Mappe skanning hjelp
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Admin Brukerkontroll Innstillinger
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=Bruker
|
adminUserSettings.user=Bruker
|
||||||
adminUserSettings.addUser=Legg til Ny Bruker
|
adminUserSettings.addUser=Legg til Ny Bruker
|
||||||
|
adminUserSettings.deleteUser=Slett Bruker
|
||||||
|
adminUserSettings.confirmDeleteUser=Skal brukeren slettes?
|
||||||
adminUserSettings.usernameInfo=Brukernavn kan bare inneholde bokstaver, tall og følgende spesialtegn @._+- eller må være en gyldig e-postadresse.
|
adminUserSettings.usernameInfo=Brukernavn kan bare inneholde bokstaver, tall og følgende spesialtegn @._+- eller må være en gyldig e-postadresse.
|
||||||
adminUserSettings.roles=Roller
|
adminUserSettings.roles=Roller
|
||||||
adminUserSettings.role=Rolle
|
adminUserSettings.role=Rolle
|
||||||
@@ -783,7 +787,7 @@ compress.selectText.2=Optimeringsnivå:
|
|||||||
compress.selectText.3=4 (Dårlig for tekstbilder)
|
compress.selectText.3=4 (Dårlig for tekstbilder)
|
||||||
compress.selectText.4=Automatisk modus - Justerer automatisk kvaliteten for å få PDF til nøyaktig størrelse
|
compress.selectText.4=Automatisk modus - Justerer automatisk kvaliteten for å få PDF til nøyaktig størrelse
|
||||||
compress.selectText.5=Forventet PDF-størrelse (f.eks. 25MB, 10.8MB, 25KB)
|
compress.selectText.5=Forventet PDF-størrelse (f.eks. 25MB, 10.8MB, 25KB)
|
||||||
compress.Submit=Komprimer
|
compress.submit=Komprimer
|
||||||
|
|
||||||
|
|
||||||
#Add image
|
#Add image
|
||||||
@@ -799,6 +803,7 @@ merge.title=Slå sammen
|
|||||||
merge.header=Slå sammen flere PDF-er (2+)
|
merge.header=Slå sammen flere PDF-er (2+)
|
||||||
merge.sortByName=Sorter etter navn
|
merge.sortByName=Sorter etter navn
|
||||||
merge.sortByDate=Sorter etter dato
|
merge.sortByDate=Sorter etter dato
|
||||||
|
merge.removeCertSign=Fjern digital signatur i den sammenslåtte filen?
|
||||||
merge.submit=Slå sammen
|
merge.submit=Slå sammen
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Oddetall-jevntall splitt
|
|||||||
pdfOrganiser.mode.7=Fjern først
|
pdfOrganiser.mode.7=Fjern først
|
||||||
pdfOrganiser.mode.8=Fjern sist
|
pdfOrganiser.mode.8=Fjern sist
|
||||||
pdfOrganiser.mode.9=Fjern først og sist
|
pdfOrganiser.mode.9=Fjern først og sist
|
||||||
|
pdfOrganiser.mode.10=Partall-Oddetall Sammenslåing
|
||||||
pdfOrganiser.placeholder=(f.eks. 1,3,2 eller 4-8,2,10-12 eller 2n-1)
|
pdfOrganiser.placeholder=(f.eks. 1,3,2 eller 4-8,2,10-12 eller 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -855,7 +861,7 @@ split.desc.6=Dokument #4: Side 8
|
|||||||
split.desc.7=Dokument #5: Side 9
|
split.desc.7=Dokument #5: Side 9
|
||||||
split.desc.8=Dokument #6: Side 10
|
split.desc.8=Dokument #6: Side 10
|
||||||
split.splitPages=Skriv inn sidene som skal deles på:
|
split.splitPages=Skriv inn sidene som skal deles på:
|
||||||
split.Submit=Del
|
split.submit=Del
|
||||||
|
|
||||||
|
|
||||||
#merge
|
#merge
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Modul
|
|||||||
licenses.version=Versjon
|
licenses.version=Versjon
|
||||||
licenses.license=Lisens
|
licenses.license=Lisens
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Beklager for problemet!
|
error.sorry=Beklager for problemet!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=User not found.
|
|||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Current password is incorrect.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=New Username already exists.
|
||||||
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
downgradeCurrentUserMessage=Nie można obniżyć roli bieżącego użytkownika
|
downgradeCurrentUserMessage=Nie można obniżyć roli bieżącego użytkownika
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Custom
|
|||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
pipeline.help=Pipeline Help
|
pipeline.help=Pipeline Help
|
||||||
pipeline.scanHelp=Folder Scanning Help
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Admin User Control Settings
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=User
|
adminUserSettings.user=User
|
||||||
adminUserSettings.addUser=Add New User
|
adminUserSettings.addUser=Add New User
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
adminUserSettings.roles=Roles
|
adminUserSettings.roles=Roles
|
||||||
adminUserSettings.role=Role
|
adminUserSettings.role=Role
|
||||||
@@ -799,6 +803,7 @@ merge.title=Połącz
|
|||||||
merge.header=Połącz wiele dokumentów PDF (2+)
|
merge.header=Połącz wiele dokumentów PDF (2+)
|
||||||
merge.sortByName=Sort by name
|
merge.sortByName=Sort by name
|
||||||
merge.sortByDate=Sort by date
|
merge.sortByDate=Sort by date
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Połącz
|
merge.submit=Połącz
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Odd-Even Split
|
|||||||
pdfOrganiser.mode.7=Remove First
|
pdfOrganiser.mode.7=Remove First
|
||||||
pdfOrganiser.mode.8=Remove Last
|
pdfOrganiser.mode.8=Remove Last
|
||||||
pdfOrganiser.mode.9=Remove First and Last
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Module
|
|||||||
licenses.version=Version
|
licenses.version=Version
|
||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Sorry for the issue!
|
error.sorry=Sorry for the issue!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=User not found.
|
|||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Current password is incorrect.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=New Username already exists.
|
||||||
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
downgradeCurrentUserMessage=Não é possível fazer downgrade da função do usuário atual
|
downgradeCurrentUserMessage=Não é possível fazer downgrade da função do usuário atual
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Custom
|
|||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
pipeline.help=Pipeline Help
|
pipeline.help=Pipeline Help
|
||||||
pipeline.scanHelp=Folder Scanning Help
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Admin User Control Settings
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=User
|
adminUserSettings.user=User
|
||||||
adminUserSettings.addUser=Add New User
|
adminUserSettings.addUser=Add New User
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
adminUserSettings.roles=Roles
|
adminUserSettings.roles=Roles
|
||||||
adminUserSettings.role=Role
|
adminUserSettings.role=Role
|
||||||
@@ -799,6 +803,7 @@ merge.title=Mesclar
|
|||||||
merge.header=Mesclar Vários PDFs (2+)
|
merge.header=Mesclar Vários PDFs (2+)
|
||||||
merge.sortByName=Sort by name
|
merge.sortByName=Sort by name
|
||||||
merge.sortByDate=Sort by date
|
merge.sortByDate=Sort by date
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Mesclar
|
merge.submit=Mesclar
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Odd-Even Split
|
|||||||
pdfOrganiser.mode.7=Remove First
|
pdfOrganiser.mode.7=Remove First
|
||||||
pdfOrganiser.mode.8=Remove Last
|
pdfOrganiser.mode.8=Remove Last
|
||||||
pdfOrganiser.mode.9=Remove First and Last
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Module
|
|||||||
licenses.version=Version
|
licenses.version=Version
|
||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Sorry for the issue!
|
error.sorry=Sorry for the issue!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=Utilizador inexistente.
|
|||||||
incorrectPasswordMessage=Senha incorreta.
|
incorrectPasswordMessage=Senha incorreta.
|
||||||
usernameExistsMessage=Esse utilizador já existe.
|
usernameExistsMessage=Esse utilizador já existe.
|
||||||
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
downgradeCurrentUserMessage=Não é possível fazer downgrade da função do utilizador atual
|
downgradeCurrentUserMessage=Não é possível fazer downgrade da função do utilizador atual
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Personalizar
|
|||||||
pipeline.submitButton=Submeter
|
pipeline.submitButton=Submeter
|
||||||
pipeline.help=Pipeline Help
|
pipeline.help=Pipeline Help
|
||||||
pipeline.scanHelp=Folder Scanning Help
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Admin User Control Settings
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=User
|
adminUserSettings.user=User
|
||||||
adminUserSettings.addUser=Add New User
|
adminUserSettings.addUser=Add New User
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
adminUserSettings.roles=Roles
|
adminUserSettings.roles=Roles
|
||||||
adminUserSettings.role=Role
|
adminUserSettings.role=Role
|
||||||
@@ -799,6 +803,7 @@ merge.title=Juntar
|
|||||||
merge.header=Juntar Vários PDFs (2+)
|
merge.header=Juntar Vários PDFs (2+)
|
||||||
merge.sortByName=Ordenar por nome
|
merge.sortByName=Ordenar por nome
|
||||||
merge.sortByDate=Ordenar por data
|
merge.sortByDate=Ordenar por data
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Juntar
|
merge.submit=Juntar
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Odd-Even Split
|
|||||||
pdfOrganiser.mode.7=Remove First
|
pdfOrganiser.mode.7=Remove First
|
||||||
pdfOrganiser.mode.8=Remove Last
|
pdfOrganiser.mode.8=Remove Last
|
||||||
pdfOrganiser.mode.9=Remove First and Last
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Modulos
|
|||||||
licenses.version=Versão
|
licenses.version=Versão
|
||||||
licenses.license=Licença
|
licenses.license=Licença
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Sorry for the issue!
|
error.sorry=Sorry for the issue!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=User not found.
|
|||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Current password is incorrect.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=New Username already exists.
|
||||||
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
downgradeCurrentUserMessage=Rolul utilizatorului curent nu poate fi retrogradat
|
downgradeCurrentUserMessage=Rolul utilizatorului curent nu poate fi retrogradat
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Custom
|
|||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
pipeline.help=Pipeline Help
|
pipeline.help=Pipeline Help
|
||||||
pipeline.scanHelp=Folder Scanning Help
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Admin User Control Settings
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=User
|
adminUserSettings.user=User
|
||||||
adminUserSettings.addUser=Add New User
|
adminUserSettings.addUser=Add New User
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
adminUserSettings.roles=Roles
|
adminUserSettings.roles=Roles
|
||||||
adminUserSettings.role=Role
|
adminUserSettings.role=Role
|
||||||
@@ -799,6 +803,7 @@ merge.title=Unire
|
|||||||
merge.header=Unirea mai multor PDF-uri (2+)
|
merge.header=Unirea mai multor PDF-uri (2+)
|
||||||
merge.sortByName=Sort by name
|
merge.sortByName=Sort by name
|
||||||
merge.sortByDate=Sort by date
|
merge.sortByDate=Sort by date
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Unire
|
merge.submit=Unire
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Odd-Even Split
|
|||||||
pdfOrganiser.mode.7=Remove First
|
pdfOrganiser.mode.7=Remove First
|
||||||
pdfOrganiser.mode.8=Remove Last
|
pdfOrganiser.mode.8=Remove Last
|
||||||
pdfOrganiser.mode.9=Remove First and Last
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Module
|
|||||||
licenses.version=Version
|
licenses.version=Version
|
||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Sorry for the issue!
|
error.sorry=Sorry for the issue!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=Пользователь не найден.
|
|||||||
incorrectPasswordMessage=Текущий пароль неверен.
|
incorrectPasswordMessage=Текущий пароль неверен.
|
||||||
usernameExistsMessage=Новое имя пользователя уже существует.
|
usernameExistsMessage=Новое имя пользователя уже существует.
|
||||||
invalidUsernameMessage=Неверное имя пользователя. Имя пользователя может содержать только буквы, цифры и следующие специальные символы @._+- или должно быть действительным адресом электронной почты.
|
invalidUsernameMessage=Неверное имя пользователя. Имя пользователя может содержать только буквы, цифры и следующие специальные символы @._+- или должно быть действительным адресом электронной почты.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Невозможно удалить пользователя, вошедшего в систему.
|
deleteCurrentUserMessage=Невозможно удалить пользователя, вошедшего в систему.
|
||||||
deleteUsernameExistsMessage=Имя пользователя не существует и не может быть удалено.
|
deleteUsernameExistsMessage=Имя пользователя не существует и не может быть удалено.
|
||||||
downgradeCurrentUserMessage=Невозможно понизить роль текущего пользователя
|
downgradeCurrentUserMessage=Невозможно понизить роль текущего пользователя
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Пользовательский
|
|||||||
pipeline.submitButton=Отправить
|
pipeline.submitButton=Отправить
|
||||||
pipeline.help=Справка по конвейерной обработке
|
pipeline.help=Справка по конвейерной обработке
|
||||||
pipeline.scanHelp=Справка по сканированию папок
|
pipeline.scanHelp=Справка по сканированию папок
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Настройки контроля пользоват
|
|||||||
adminUserSettings.admin=Администратор
|
adminUserSettings.admin=Администратор
|
||||||
adminUserSettings.user=Пользователь
|
adminUserSettings.user=Пользователь
|
||||||
adminUserSettings.addUser=Добавить нового пользователя
|
adminUserSettings.addUser=Добавить нового пользователя
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Имя пользователя может содержать только буквы, цифры и следующие специальные символы @._+- или должно быть действительным адресом электронной почты.
|
adminUserSettings.usernameInfo=Имя пользователя может содержать только буквы, цифры и следующие специальные символы @._+- или должно быть действительным адресом электронной почты.
|
||||||
adminUserSettings.roles=Роли
|
adminUserSettings.roles=Роли
|
||||||
adminUserSettings.role=Роль
|
adminUserSettings.role=Роль
|
||||||
@@ -799,6 +803,7 @@ merge.title=Объединить
|
|||||||
merge.header=Объединение нескольких PDF-файлов (2+)
|
merge.header=Объединение нескольких PDF-файлов (2+)
|
||||||
merge.sortByName=Сортировка по имени
|
merge.sortByName=Сортировка по имени
|
||||||
merge.sortByDate=Сортировка по дате
|
merge.sortByDate=Сортировка по дате
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Объединить
|
merge.submit=Объединить
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Разделение на чётные и нечётные
|
|||||||
pdfOrganiser.mode.7=Удалить первую
|
pdfOrganiser.mode.7=Удалить первую
|
||||||
pdfOrganiser.mode.8=Удалить последнюю
|
pdfOrganiser.mode.8=Удалить последнюю
|
||||||
pdfOrganiser.mode.9=Удалить первую и последнюю
|
pdfOrganiser.mode.9=Удалить первую и последнюю
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(например, 1,3,2 или 4-8,2,10-12 или 2n-1)
|
pdfOrganiser.placeholder=(например, 1,3,2 или 4-8,2,10-12 или 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Модуль
|
|||||||
licenses.version=Версия
|
licenses.version=Версия
|
||||||
licenses.license=Лицензия
|
licenses.license=Лицензия
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Извините за проблему!
|
error.sorry=Извините за проблему!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=Používateľ nebol nájdený.
|
|||||||
incorrectPasswordMessage=Aktuálne heslo je nesprávne.
|
incorrectPasswordMessage=Aktuálne heslo je nesprávne.
|
||||||
usernameExistsMessage=Nové používateľské meno už existuje.
|
usernameExistsMessage=Nové používateľské meno už existuje.
|
||||||
invalidUsernameMessage=Neplatné používateľské meno, používateľské meno musí obsahovať len abecedné znaky a čísla.
|
invalidUsernameMessage=Neplatné používateľské meno, používateľské meno musí obsahovať len abecedné znaky a čísla.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Nie je možné zmazať aktuálne prihláseného používateľa.
|
deleteCurrentUserMessage=Nie je možné zmazať aktuálne prihláseného používateľa.
|
||||||
deleteUsernameExistsMessage=Používateľské meno neexistuje a nemôže byť zmazané.
|
deleteUsernameExistsMessage=Používateľské meno neexistuje a nemôže byť zmazané.
|
||||||
downgradeCurrentUserMessage=Nie je možné znížiť rolu aktuálneho používateľa
|
downgradeCurrentUserMessage=Nie je možné znížiť rolu aktuálneho používateľa
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Vlastné
|
|||||||
pipeline.submitButton=Odoslať
|
pipeline.submitButton=Odoslať
|
||||||
pipeline.help=Pomoc s pipeline
|
pipeline.help=Pomoc s pipeline
|
||||||
pipeline.scanHelp=Pomoc so skenovaním priečinka
|
pipeline.scanHelp=Pomoc so skenovaním priečinka
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Admin nastavenia kontroly používateľov
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=Používateľ
|
adminUserSettings.user=Používateľ
|
||||||
adminUserSettings.addUser=Pridať nového používateľa
|
adminUserSettings.addUser=Pridať nového používateľa
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Používateľské meno musí obsahovať iba písmená a čísla, žiadne medzery alebo špeciálne znaky.
|
adminUserSettings.usernameInfo=Používateľské meno musí obsahovať iba písmená a čísla, žiadne medzery alebo špeciálne znaky.
|
||||||
adminUserSettings.roles=Role
|
adminUserSettings.roles=Role
|
||||||
adminUserSettings.role=Rola
|
adminUserSettings.role=Rola
|
||||||
@@ -799,6 +803,7 @@ merge.title=Zlúčiť
|
|||||||
merge.header=Zlúčiť viacero PDF (2+)
|
merge.header=Zlúčiť viacero PDF (2+)
|
||||||
merge.sortByName=Zoradiť podľa názvu
|
merge.sortByName=Zoradiť podľa názvu
|
||||||
merge.sortByDate=Zoradiť podľa dátumu
|
merge.sortByDate=Zoradiť podľa dátumu
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Zlúčiť
|
merge.submit=Zlúčiť
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Rozdelenie na nepárne a párne
|
|||||||
pdfOrganiser.mode.7=Odstrániť prvú
|
pdfOrganiser.mode.7=Odstrániť prvú
|
||||||
pdfOrganiser.mode.8=Odstrániť poslednú
|
pdfOrganiser.mode.8=Odstrániť poslednú
|
||||||
pdfOrganiser.mode.9=Odstrániť prvú aj poslednú
|
pdfOrganiser.mode.9=Odstrániť prvú aj poslednú
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(napr. 1,3,2 alebo 4-8,2,10-12 alebo 2n-1)
|
pdfOrganiser.placeholder=(napr. 1,3,2 alebo 4-8,2,10-12 alebo 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Modul
|
|||||||
licenses.version=Verzia
|
licenses.version=Verzia
|
||||||
licenses.license=Licencia
|
licenses.license=Licencia
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Ospravedlňujeme sa za problém!
|
error.sorry=Ospravedlňujeme sa za problém!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=Korisnik nije pronađen.
|
|||||||
incorrectPasswordMessage=Trenutna šifra je netačna.
|
incorrectPasswordMessage=Trenutna šifra je netačna.
|
||||||
usernameExistsMessage=Novi korisnik već postoji
|
usernameExistsMessage=Novi korisnik već postoji
|
||||||
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
downgradeCurrentUserMessage=Nije moguće degradirati ulogu trenutnog korisnika
|
downgradeCurrentUserMessage=Nije moguće degradirati ulogu trenutnog korisnika
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Prilagođeno
|
|||||||
pipeline.submitButton=Pošalji
|
pipeline.submitButton=Pošalji
|
||||||
pipeline.help=Pipeline Help
|
pipeline.help=Pipeline Help
|
||||||
pipeline.scanHelp=Folder Scanning Help
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Podešavanja kontrole korisnika za administratora
|
|||||||
adminUserSettings.admin=Administrator
|
adminUserSettings.admin=Administrator
|
||||||
adminUserSettings.user=Korisnik
|
adminUserSettings.user=Korisnik
|
||||||
adminUserSettings.addUser=Dodaj novog korisnika
|
adminUserSettings.addUser=Dodaj novog korisnika
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
adminUserSettings.roles=Uloge
|
adminUserSettings.roles=Uloge
|
||||||
adminUserSettings.role=Uloga
|
adminUserSettings.role=Uloga
|
||||||
@@ -799,6 +803,7 @@ merge.title=Spajanje
|
|||||||
merge.header=Spajanje više PDF fajlova (2+)
|
merge.header=Spajanje više PDF fajlova (2+)
|
||||||
merge.sortByName=Sortiraj po imenu
|
merge.sortByName=Sortiraj po imenu
|
||||||
merge.sortByDate=Sortiraj po datumu
|
merge.sortByDate=Sortiraj po datumu
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Spajanje
|
merge.submit=Spajanje
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Odd-Even Split
|
|||||||
pdfOrganiser.mode.7=Remove First
|
pdfOrganiser.mode.7=Remove First
|
||||||
pdfOrganiser.mode.8=Remove Last
|
pdfOrganiser.mode.8=Remove Last
|
||||||
pdfOrganiser.mode.9=Remove First and Last
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Module
|
|||||||
licenses.version=Version
|
licenses.version=Version
|
||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Sorry for the issue!
|
error.sorry=Sorry for the issue!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=User not found.
|
|||||||
incorrectPasswordMessage=Current password is incorrect.
|
incorrectPasswordMessage=Current password is incorrect.
|
||||||
usernameExistsMessage=New Username already exists.
|
usernameExistsMessage=New Username already exists.
|
||||||
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
deleteCurrentUserMessage=Cannot delete currently logged in user.
|
||||||
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
|
||||||
downgradeCurrentUserMessage=Kan inte nedgradera nuvarande användares roll
|
downgradeCurrentUserMessage=Kan inte nedgradera nuvarande användares roll
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Custom
|
|||||||
pipeline.submitButton=Submit
|
pipeline.submitButton=Submit
|
||||||
pipeline.help=Pipeline Help
|
pipeline.help=Pipeline Help
|
||||||
pipeline.scanHelp=Folder Scanning Help
|
pipeline.scanHelp=Folder Scanning Help
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Admin User Control Settings
|
|||||||
adminUserSettings.admin=Admin
|
adminUserSettings.admin=Admin
|
||||||
adminUserSettings.user=User
|
adminUserSettings.user=User
|
||||||
adminUserSettings.addUser=Add New User
|
adminUserSettings.addUser=Add New User
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address.
|
||||||
adminUserSettings.roles=Roles
|
adminUserSettings.roles=Roles
|
||||||
adminUserSettings.role=Role
|
adminUserSettings.role=Role
|
||||||
@@ -799,6 +803,7 @@ merge.title=Sammanfoga
|
|||||||
merge.header=Slå samman flera PDF-filer (2+)
|
merge.header=Slå samman flera PDF-filer (2+)
|
||||||
merge.sortByName=Sort by name
|
merge.sortByName=Sort by name
|
||||||
merge.sortByDate=Sort by date
|
merge.sortByDate=Sort by date
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Slå samman
|
merge.submit=Slå samman
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Odd-Even Split
|
|||||||
pdfOrganiser.mode.7=Remove First
|
pdfOrganiser.mode.7=Remove First
|
||||||
pdfOrganiser.mode.8=Remove Last
|
pdfOrganiser.mode.8=Remove Last
|
||||||
pdfOrganiser.mode.9=Remove First and Last
|
pdfOrganiser.mode.9=Remove First and Last
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Module
|
|||||||
licenses.version=Version
|
licenses.version=Version
|
||||||
licenses.license=License
|
licenses.license=License
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Sorry for the issue!
|
error.sorry=Sorry for the issue!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=Kullanıcı bulunamadı.
|
|||||||
incorrectPasswordMessage=Mevcut şifre yanlış.
|
incorrectPasswordMessage=Mevcut şifre yanlış.
|
||||||
usernameExistsMessage=Yeni Kullanıcı Adı zaten var.
|
usernameExistsMessage=Yeni Kullanıcı Adı zaten var.
|
||||||
invalidUsernameMessage=Geçersiz kullanıcı adı, kullanıcı adı yalnızca harf, rakam ve aşağıdaki özel karakterleri @._+- içerebilir veya geçerli bir e-posta adresi olmalıdır.
|
invalidUsernameMessage=Geçersiz kullanıcı adı, kullanıcı adı yalnızca harf, rakam ve aşağıdaki özel karakterleri @._+- içerebilir veya geçerli bir e-posta adresi olmalıdır.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Şu anda oturum açmış olan kullanıcı silinemiyor.
|
deleteCurrentUserMessage=Şu anda oturum açmış olan kullanıcı silinemiyor.
|
||||||
deleteUsernameExistsMessage=Kullanıcı adı mevcut değil ve silinemez.
|
deleteUsernameExistsMessage=Kullanıcı adı mevcut değil ve silinemez.
|
||||||
downgradeCurrentUserMessage=Mevcut kullanıcının rolü düşürülemiyor
|
downgradeCurrentUserMessage=Mevcut kullanıcının rolü düşürülemiyor
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Özel
|
|||||||
pipeline.submitButton=Gönder
|
pipeline.submitButton=Gönder
|
||||||
pipeline.help=Çoklu İşlemler Yardım
|
pipeline.help=Çoklu İşlemler Yardım
|
||||||
pipeline.scanHelp=Klasör Tarama Yardımı
|
pipeline.scanHelp=Klasör Tarama Yardımı
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Yönetici Kullanıcı Kontrol Ayarları
|
|||||||
adminUserSettings.admin=Yönetici
|
adminUserSettings.admin=Yönetici
|
||||||
adminUserSettings.user=Kullanıcı
|
adminUserSettings.user=Kullanıcı
|
||||||
adminUserSettings.addUser=Yeni Kullanıcı Ekle
|
adminUserSettings.addUser=Yeni Kullanıcı Ekle
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=Kullanıcı adı yalnızca harf, rakam ve aşağıdaki özel karakterleri @._+- içerebilir veya geçerli bir e-posta adresi olmalıdır.
|
adminUserSettings.usernameInfo=Kullanıcı adı yalnızca harf, rakam ve aşağıdaki özel karakterleri @._+- içerebilir veya geçerli bir e-posta adresi olmalıdır.
|
||||||
adminUserSettings.roles=Roller
|
adminUserSettings.roles=Roller
|
||||||
adminUserSettings.role=Rol
|
adminUserSettings.role=Rol
|
||||||
@@ -799,6 +803,7 @@ merge.title=Birleştir
|
|||||||
merge.header=Çoklu PDF'leri Birleştir (2+)
|
merge.header=Çoklu PDF'leri Birleştir (2+)
|
||||||
merge.sortByName=İsme göre sırala
|
merge.sortByName=İsme göre sırala
|
||||||
merge.sortByDate=Tarihe göre sırala
|
merge.sortByDate=Tarihe göre sırala
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Birleştir
|
merge.submit=Birleştir
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=Tek-Çift Ayrımı
|
|||||||
pdfOrganiser.mode.7=İlk Önce Kaldır
|
pdfOrganiser.mode.7=İlk Önce Kaldır
|
||||||
pdfOrganiser.mode.8=Sonuncuyu Kaldır
|
pdfOrganiser.mode.8=Sonuncuyu Kaldır
|
||||||
pdfOrganiser.mode.9=İlk ve Sonu Kaldır
|
pdfOrganiser.mode.9=İlk ve Sonu Kaldır
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(örn. 1,3,2 veya 4-8,2,10-12 veya 2n-1)
|
pdfOrganiser.placeholder=(örn. 1,3,2 veya 4-8,2,10-12 veya 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Modül
|
|||||||
licenses.version=Versiyon
|
licenses.version=Versiyon
|
||||||
licenses.license=Lisans
|
licenses.license=Lisans
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Sorun için özür dileriz!
|
error.sorry=Sorun için özür dileriz!
|
||||||
|
|||||||
@@ -55,23 +55,24 @@ userNotFoundMessage=Користувача не знайдено.
|
|||||||
incorrectPasswordMessage=Поточний пароль невірний.
|
incorrectPasswordMessage=Поточний пароль невірний.
|
||||||
usernameExistsMessage=Нове ім'я користувача вже існує.
|
usernameExistsMessage=Нове ім'я користувача вже існує.
|
||||||
invalidUsernameMessage=Недійсне ім’я користувача, ім’я користувача може містити лише літери, цифри та наступні спеціальні символи @._+- або має бути дійсною електронною адресою.
|
invalidUsernameMessage=Недійсне ім’я користувача, ім’я користувача може містити лише літери, цифри та наступні спеціальні символи @._+- або має бути дійсною електронною адресою.
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=Неможливо видалити користувача, який увійшов в систему.
|
deleteCurrentUserMessage=Неможливо видалити користувача, який увійшов в систему.
|
||||||
deleteUsernameExistsMessage=Ім'я користувача не існує і не може бути видалено.
|
deleteUsernameExistsMessage=Ім'я користувача не існує і не може бути видалено.
|
||||||
downgradeCurrentUserMessage=Неможливо понизити роль поточного користувача
|
downgradeCurrentUserMessage=Неможливо понизити роль поточного користувача
|
||||||
downgradeCurrentUserLongMessage=Неможливо понизити роль поточного користувача. Отже, поточний користувач не відображатиметься.
|
downgradeCurrentUserLongMessage=Неможливо понизити роль поточного користувача. Отже, поточний користувач не відображатиметься.
|
||||||
userAlreadyExistsOAuthMessage=The user already exists as an OAuth2 user.
|
userAlreadyExistsOAuthMessage=The user already exists as an OAuth2 user.
|
||||||
userAlreadyExistsWebMessage=The user already exists as an web user.
|
userAlreadyExistsWebMessage=The user already exists as an web user.
|
||||||
error=Error
|
error=Помилка
|
||||||
oops=Oops!
|
oops=Упс!
|
||||||
help=Help
|
help=Допомога
|
||||||
goHomepage=Go to Homepage
|
goHomepage=До головної сторінки
|
||||||
joinDiscord=Join our Discord server
|
joinDiscord=Приєднуйтесь до нашого Discord серверу
|
||||||
seeDockerHub=See Docker Hub
|
seeDockerHub=Переглянути Docker Hub
|
||||||
visitGithub=Visit Github Repository
|
visitGithub=Переглянути Github репозиторій
|
||||||
donate=Donate
|
donate=Задонатити
|
||||||
color=Color
|
color=Колір
|
||||||
sponsor=Sponsor
|
sponsor=Спонсор
|
||||||
info=Info
|
info=Інформація
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=Користувацький
|
|||||||
pipeline.submitButton=Надіслати
|
pipeline.submitButton=Надіслати
|
||||||
pipeline.help=Довідка з конвеєрної обробки
|
pipeline.help=Довідка з конвеєрної обробки
|
||||||
pipeline.scanHelp=Довідка зі сканування папок
|
pipeline.scanHelp=Довідка зі сканування папок
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -105,25 +107,25 @@ 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 #
|
||||||
#############
|
#############
|
||||||
settings.title=Налаштування
|
settings.title=Налаштування
|
||||||
settings.update=Доступне оновлення
|
settings.update=Доступне оновлення
|
||||||
settings.updateAvailable={0} is the current installed version. A new version ({1}) is available.
|
settings.updateAvailable=Зараз встановлена версія {0}. Нова версія ({1}) доступна.
|
||||||
settings.appVersion=Версія додатку:
|
settings.appVersion=Версія додатку:
|
||||||
settings.downloadOption.title=Виберіть варіант завантаження (для завантаження одного файлу без zip):
|
settings.downloadOption.title=Виберіть варіант завантаження (для завантаження одного файлу без zip):
|
||||||
settings.downloadOption.1=Відкрити в тому ж вікні
|
settings.downloadOption.1=Відкрити в тому ж вікні
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=Налаштування контролю корист
|
|||||||
adminUserSettings.admin=Адміністратор
|
adminUserSettings.admin=Адміністратор
|
||||||
adminUserSettings.user=Користувач
|
adminUserSettings.user=Користувач
|
||||||
adminUserSettings.addUser=Додати нового користувача
|
adminUserSettings.addUser=Додати нового користувача
|
||||||
|
adminUserSettings.deleteUser=Видалити користувача
|
||||||
|
adminUserSettings.confirmDeleteUser=Видалити цього користувача?
|
||||||
adminUserSettings.usernameInfo=Ім’я користувача може містити лише літери, цифри та наступні спеціальні символи @._+- або має бути дійсною електронною адресою.
|
adminUserSettings.usernameInfo=Ім’я користувача може містити лише літери, цифри та наступні спеціальні символи @._+- або має бути дійсною електронною адресою.
|
||||||
adminUserSettings.roles=Ролі
|
adminUserSettings.roles=Ролі
|
||||||
adminUserSettings.role=Роль
|
adminUserSettings.role=Роль
|
||||||
@@ -185,7 +189,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 #
|
||||||
@@ -332,8 +336,8 @@ 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.title=Видалити підпис сертифікатом
|
||||||
home.removeCertSign.desc=Remove certificate signature from PDF
|
home.removeCertSign.desc=Видалити підпис сертифікатом з PDF-документу
|
||||||
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=Об'єднати сторінки
|
home.pageLayout.title=Об'єднати сторінки
|
||||||
@@ -401,7 +405,7 @@ home.PdfToSinglePage.desc=Об'єднує всі сторінки PDF в одн
|
|||||||
PdfToSinglePage.tags=single page
|
PdfToSinglePage.tags=single page
|
||||||
|
|
||||||
|
|
||||||
home.showJS.title=Показати Javascript
|
home.showJS.title=Показати JavaScript
|
||||||
home.showJS.desc=Шукає та відображає будь-який JS, вбудований у PDF-файл.
|
home.showJS.desc=Шукає та відображає будь-який JS, вбудований у PDF-файл.
|
||||||
showJS.tags=JS
|
showJS.tags=JS
|
||||||
|
|
||||||
@@ -456,12 +460,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=Invalid Id Token
|
login.oauth2InvalidIdToken=Недійсний Id токен
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
@@ -478,9 +482,9 @@ autoRedact.submitButton=Надіслати
|
|||||||
|
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Показати Javascript
|
showJS.title=Показати JavaScript
|
||||||
showJS.header=Показати Javascript
|
showJS.header=Показати JavaScript
|
||||||
showJS.downloadJS=Завантажити Javascript
|
showJS.downloadJS=Завантажити JavaScript
|
||||||
showJS.submit=Показати
|
showJS.submit=Показати
|
||||||
|
|
||||||
|
|
||||||
@@ -660,10 +664,10 @@ certSign.submit=Підписати PDF
|
|||||||
|
|
||||||
|
|
||||||
#removeCertSign
|
#removeCertSign
|
||||||
removeCertSign.title=Remove Certificate Signature
|
removeCertSign.title=Видалення підпису сертифікатом
|
||||||
removeCertSign.header=Remove the digital certificate from the PDF
|
removeCertSign.header=Видалення підпису сертифікатом з PDF документу
|
||||||
removeCertSign.selectPDF=Select a PDF file:
|
removeCertSign.selectPDF=Оберіть PDF-файл:
|
||||||
removeCertSign.submit=Remove Signature
|
removeCertSign.submit=Видалити підпис
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
@@ -721,7 +725,7 @@ repair.submit=Ремонтувати
|
|||||||
#flatten
|
#flatten
|
||||||
flatten.title=Згладжування
|
flatten.title=Згладжування
|
||||||
flatten.header=Згладжування PDF
|
flatten.header=Згладжування PDF
|
||||||
flatten.flattenOnlyForms=Flatten only forms
|
flatten.flattenOnlyForms=Згладити тільки форми
|
||||||
flatten.submit=Згладити
|
flatten.submit=Згладити
|
||||||
|
|
||||||
|
|
||||||
@@ -799,6 +803,7 @@ merge.title=Об'єднати
|
|||||||
merge.header=Об'єднання кількох PDF-файлів (2+)
|
merge.header=Об'єднання кількох PDF-файлів (2+)
|
||||||
merge.sortByName=Сортування за ім'ям
|
merge.sortByName=Сортування за ім'ям
|
||||||
merge.sortByDate=Сортування за датою
|
merge.sortByDate=Сортування за датою
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=Об'єднати
|
merge.submit=Об'єднати
|
||||||
|
|
||||||
|
|
||||||
@@ -816,13 +821,14 @@ pdfOrganiser.mode.6=Розділення на парні та непарні с
|
|||||||
pdfOrganiser.mode.7=Видалити першу
|
pdfOrganiser.mode.7=Видалити першу
|
||||||
pdfOrganiser.mode.8=Видалити останню
|
pdfOrganiser.mode.8=Видалити останню
|
||||||
pdfOrganiser.mode.9=Видалити першу та останню
|
pdfOrganiser.mode.9=Видалити першу та останню
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(наприклад, 1,3,2 або 4-8,2,10-12 або 2n-1)
|
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
|
||||||
@@ -975,8 +981,8 @@ pdfToPDFA.header=PDF в PDF/A
|
|||||||
pdfToPDFA.credit=Цей сервіс використовує OCRmyPDF для перетворення у формат PDF/A
|
pdfToPDFA.credit=Цей сервіс використовує OCRmyPDF для перетворення у формат PDF/A
|
||||||
pdfToPDFA.submit=Конвертувати
|
pdfToPDFA.submit=Конвертувати
|
||||||
pdfToPDFA.tip=Наразі не працює для кількох вхідних файлів одночасно
|
pdfToPDFA.tip=Наразі не працює для кількох вхідних файлів одночасно
|
||||||
pdfToPDFA.outputFormat=Output format
|
pdfToPDFA.outputFormat=Вихідний формат
|
||||||
pdfToPDFA.pdfWithDigitalSignature=The PDF contains a digital signature. This will be removed in the next step.
|
pdfToPDFA.pdfWithDigitalSignature=Цей PDF документ має цифровий підпис. Цей підпис буде видалений у наступному кроці.
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -1062,11 +1068,11 @@ split-by-sections.merge=Об'єднати в один PDF
|
|||||||
|
|
||||||
|
|
||||||
#printFile
|
#printFile
|
||||||
printFile.title=Print File
|
printFile.title=Роздрукувати файл
|
||||||
printFile.header=Print File to Printer
|
printFile.header=Роздрукувати файл прінтером
|
||||||
printFile.selectText.1=Select File to Print
|
printFile.selectText.1=Обрати файл для роздрукування
|
||||||
printFile.selectText.2=Enter Printer Name
|
printFile.selectText.2=Обрати назву прінтера
|
||||||
printFile.submit=Print
|
printFile.submit=Роздрукувати
|
||||||
|
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=Модуль
|
|||||||
licenses.version=Версія
|
licenses.version=Версія
|
||||||
licenses.license=Ліцензія
|
licenses.license=Ліцензія
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Опитування
|
||||||
|
survey.title=Опитування Stirling-PDF
|
||||||
|
survey.description=Stirling-PDF не має аналітичних засобів для відслідковування, тому ми хочемо почути думку від користувачів, як покращити Stirling-PDF!
|
||||||
|
survey.please=Будь-ласка, пройдіть опитування!
|
||||||
|
survey.disabled=(Вікно з опитування буде відключено у наступних оновленнях, але буде доступне внизу сторінки)
|
||||||
|
survey.button=Пройти опитування
|
||||||
|
survey.dontShowAgain=Не показувати це вікно
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=Вибачте за незручності!
|
error.sorry=Вибачте за незручності!
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ userNotFoundMessage=未找到用户。
|
|||||||
incorrectPasswordMessage=当前密码不正确。
|
incorrectPasswordMessage=当前密码不正确。
|
||||||
usernameExistsMessage=新用户名已存在。
|
usernameExistsMessage=新用户名已存在。
|
||||||
invalidUsernameMessage=用户名无效,用户名只能包含字母、数字和以下特殊字符@._+- 或必须是有效的电子邮件地址。
|
invalidUsernameMessage=用户名无效,用户名只能包含字母、数字和以下特殊字符@._+- 或必须是有效的电子邮件地址。
|
||||||
|
confirmPasswordErrorMessage=New Password and Confirm New Password must match.
|
||||||
deleteCurrentUserMessage=无法删除当前登录的用户。
|
deleteCurrentUserMessage=无法删除当前登录的用户。
|
||||||
deleteUsernameExistsMessage=用户名不存在,无法删除。
|
deleteUsernameExistsMessage=用户名不存在,无法删除。
|
||||||
downgradeCurrentUserMessage=无法降级当前用户的角色
|
downgradeCurrentUserMessage=无法降级当前用户的角色
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=自定义
|
|||||||
pipeline.submitButton=提交
|
pipeline.submitButton=提交
|
||||||
pipeline.help=工作流帮助
|
pipeline.help=工作流帮助
|
||||||
pipeline.scanHelp=文件夹扫描帮助
|
pipeline.scanHelp=文件夹扫描帮助
|
||||||
|
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -173,6 +175,8 @@ adminUserSettings.header=管理员用户控制设置
|
|||||||
adminUserSettings.admin=管理员
|
adminUserSettings.admin=管理员
|
||||||
adminUserSettings.user=用户
|
adminUserSettings.user=用户
|
||||||
adminUserSettings.addUser=添加新用户
|
adminUserSettings.addUser=添加新用户
|
||||||
|
adminUserSettings.deleteUser=Delete User
|
||||||
|
adminUserSettings.confirmDeleteUser=Should the user be deleted?
|
||||||
adminUserSettings.usernameInfo=用户名只能包含字母、数字和以下特殊字符@._+-,或者必须是有效的电子邮件地址。
|
adminUserSettings.usernameInfo=用户名只能包含字母、数字和以下特殊字符@._+-,或者必须是有效的电子邮件地址。
|
||||||
adminUserSettings.roles=角色
|
adminUserSettings.roles=角色
|
||||||
adminUserSettings.role=角色
|
adminUserSettings.role=角色
|
||||||
@@ -799,6 +803,7 @@ merge.title=合并
|
|||||||
merge.header=合并多个PDF(2个以上)。
|
merge.header=合并多个PDF(2个以上)。
|
||||||
merge.sortByName=按名称排序
|
merge.sortByName=按名称排序
|
||||||
merge.sortByDate=按日期排序
|
merge.sortByDate=按日期排序
|
||||||
|
merge.removeCertSign=Remove digital signature in the merged file?
|
||||||
merge.submit=合并
|
merge.submit=合并
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=奇偶拆分
|
|||||||
pdfOrganiser.mode.7=删除第一页
|
pdfOrganiser.mode.7=删除第一页
|
||||||
pdfOrganiser.mode.8=删除最后一页
|
pdfOrganiser.mode.8=删除最后一页
|
||||||
pdfOrganiser.mode.9=删除第一页和最后一页
|
pdfOrganiser.mode.9=删除第一页和最后一页
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(例如 1,3,2 或 4-8,2,10-12 或 2n-1)
|
pdfOrganiser.placeholder=(例如 1,3,2 或 4-8,2,10-12 或 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1083,15 @@ licenses.module=模块
|
|||||||
licenses.version=版本
|
licenses.version=版本
|
||||||
licenses.license=许可证
|
licenses.license=许可证
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=对此问题感到抱歉!
|
error.sorry=对此问题感到抱歉!
|
||||||
|
|||||||
@@ -54,20 +54,21 @@ notAuthenticatedMessage=使用者未認證。
|
|||||||
userNotFoundMessage=找不到使用者。
|
userNotFoundMessage=找不到使用者。
|
||||||
incorrectPasswordMessage=目前密碼不正確。
|
incorrectPasswordMessage=目前密碼不正確。
|
||||||
usernameExistsMessage=新使用者名稱已存在。
|
usernameExistsMessage=新使用者名稱已存在。
|
||||||
invalidUsernameMessage=使用者名稱無效,使用者名稱只能包含字母、數字和以下特殊字元@._+- 或必須是有效的電子郵件地址。
|
invalidUsernameMessage=使用者名稱無效,使用者名稱只能包含字母、數字和以下特殊字元 @._+- 或必須是有效的電子郵件地址。
|
||||||
|
confirmPasswordErrorMessage=輸入的密碼必需和確認密碼相同。
|
||||||
deleteCurrentUserMessage=無法刪除目前登錄的使用者。
|
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=幫助
|
||||||
goHomepage=前往首頁
|
goHomepage=前往首頁
|
||||||
joinDiscord=加入我們的Discord服務器
|
joinDiscord=加入我們的 Discord 服務器
|
||||||
seeDockerHub=查看Docker Hub
|
seeDockerHub=查看 Docker Hub
|
||||||
visitGithub=訪問Github存儲庫
|
visitGithub=訪問 GitHub 存儲庫
|
||||||
donate=捐贈
|
donate=捐贈
|
||||||
color=顏色
|
color=顏色
|
||||||
sponsor=贊助
|
sponsor=贊助
|
||||||
@@ -85,6 +86,7 @@ pipeline.defaultOption=自訂
|
|||||||
pipeline.submitButton=送出
|
pipeline.submitButton=送出
|
||||||
pipeline.help=管道説明
|
pipeline.help=管道説明
|
||||||
pipeline.scanHelp=資料夾掃描説明
|
pipeline.scanHelp=資料夾掃描説明
|
||||||
|
pipeline.deletePrompt=確定刪除該管道?
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Pipeline Options #
|
# Pipeline Options #
|
||||||
@@ -105,25 +107,25 @@ 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 #
|
||||||
#############
|
#############
|
||||||
settings.title=設定
|
settings.title=設定
|
||||||
settings.update=有更新可用
|
settings.update=有更新可用
|
||||||
settings.updateAvailable={0} is the current installed version. A new version ({1}) is available.
|
settings.updateAvailable=當前版本為 {0}。歡迎您更新至最新版 ({1})。。
|
||||||
settings.appVersion=應用版本:
|
settings.appVersion=應用版本:
|
||||||
settings.downloadOption.title=選擇下載選項(對於單一檔案非壓縮下載):
|
settings.downloadOption.title=選擇下載選項(對於單一檔案非壓縮下載):
|
||||||
settings.downloadOption.1=在同一視窗中開啟
|
settings.downloadOption.1=在同一視窗中開啟
|
||||||
@@ -132,9 +134,9 @@ settings.downloadOption.3=下載檔案
|
|||||||
settings.zipThreshold=當下載的檔案數量超過時,壓縮檔案
|
settings.zipThreshold=當下載的檔案數量超過時,壓縮檔案
|
||||||
settings.signOut=登出
|
settings.signOut=登出
|
||||||
settings.accountSettings=帳戶設定
|
settings.accountSettings=帳戶設定
|
||||||
settings.bored.help=Enables easter egg game
|
settings.bored.help=啟用彩蛋
|
||||||
settings.cacheInputs.name=Save form inputs
|
settings.cacheInputs.name=輸入檔案下載
|
||||||
settings.cacheInputs.help=Enable to store previously used inputs for future runs
|
settings.cacheInputs.help=開啟記住先前的輸入,做為日後使用
|
||||||
|
|
||||||
changeCreds.title=變更憑證
|
changeCreds.title=變更憑證
|
||||||
changeCreds.header=更新您的帳戶詳細資訊
|
changeCreds.header=更新您的帳戶詳細資訊
|
||||||
@@ -164,8 +166,8 @@ account.syncTitle=將瀏覽器設定與帳戶同步
|
|||||||
account.settingsCompare=設定比較:
|
account.settingsCompare=設定比較:
|
||||||
account.property=屬性
|
account.property=屬性
|
||||||
account.webBrowserSettings=網頁瀏覽器設定
|
account.webBrowserSettings=網頁瀏覽器設定
|
||||||
account.syncToBrowser=同步帳戶 -> 瀏覽器
|
account.syncToBrowser=同步帳戶 → 瀏覽器
|
||||||
account.syncToAccount=同步帳戶 <- 瀏覽器
|
account.syncToAccount=同步帳戶 ← 瀏覽器
|
||||||
|
|
||||||
|
|
||||||
adminUserSettings.title=使用者控制設定
|
adminUserSettings.title=使用者控制設定
|
||||||
@@ -173,7 +175,9 @@ adminUserSettings.header=管理使用者控制設定
|
|||||||
adminUserSettings.admin=管理員
|
adminUserSettings.admin=管理員
|
||||||
adminUserSettings.user=使用者
|
adminUserSettings.user=使用者
|
||||||
adminUserSettings.addUser=新增使用者
|
adminUserSettings.addUser=新增使用者
|
||||||
adminUserSettings.usernameInfo=使用者名稱只能包含字母、數字和以下特殊字元@._+-,或必須是有效的電子郵件地址。
|
adminUserSettings.deleteUser=刪除使用者
|
||||||
|
adminUserSettings.confirmDeleteUser=確認刪除該使用者?
|
||||||
|
adminUserSettings.usernameInfo=使用者名稱只能包含字母、數字和以下特殊字元 @._+-,或必須是有效的電子郵件地址。
|
||||||
adminUserSettings.roles=角色
|
adminUserSettings.roles=角色
|
||||||
adminUserSettings.role=角色
|
adminUserSettings.role=角色
|
||||||
adminUserSettings.actions=操作
|
adminUserSettings.actions=操作
|
||||||
@@ -185,7 +189,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 #
|
||||||
@@ -332,8 +336,8 @@ 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.title=移除簽章
|
||||||
home.removeCertSign.desc=Remove certificate signature from PDF
|
home.removeCertSign.desc=從 PDF 移除簽章
|
||||||
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
removeCertSign.tags=authenticate,PEM,P12,official,decrypt
|
||||||
|
|
||||||
home.pageLayout.title=多頁面版面配置
|
home.pageLayout.title=多頁面版面配置
|
||||||
@@ -455,13 +459,13 @@ login.invalid=使用者名稱或密碼無效。
|
|||||||
login.locked=您的帳戶已被鎖定。
|
login.locked=您的帳戶已被鎖定。
|
||||||
login.signinTitle=請登入
|
login.signinTitle=請登入
|
||||||
login.ssoSignIn=透過織網單一簽入
|
login.ssoSignIn=透過織網單一簽入
|
||||||
login.oauth2AutoCreateDisabled=OAUTH2自動建立使用者已停用
|
login.oauth2AutoCreateDisabled=OAuth 2.0 自動建立使用者已停用
|
||||||
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=無效的 Token 回應
|
||||||
login.oauth2InvalidIdToken=Invalid Id Token
|
login.oauth2InvalidIdToken=無效的 Tokne
|
||||||
|
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
@@ -645,7 +649,7 @@ scalePages.submit=送出
|
|||||||
certSign.title=憑證簽章
|
certSign.title=憑證簽章
|
||||||
certSign.header=使用您的憑證簽章(進行中)
|
certSign.header=使用您的憑證簽章(進行中)
|
||||||
certSign.selectPDF=選擇要簽章的 PDF 檔案:
|
certSign.selectPDF=選擇要簽章的 PDF 檔案:
|
||||||
certSign.jksNote=注意:如果您的證書類型未在下面列出,請使用keytool命令行工具將其轉換為Java Keystore (.jks) 檔。 然後,選擇下面的 .jks 文件選項。
|
certSign.jksNote=注意:如果您的證書類型未在下面列出,請使用 keytool 命令行工具將其轉換為 Java Keystore (.jks) 檔。 然後,選擇下面的 .jks 文件選項。
|
||||||
certSign.selectKey=選擇您的私鑰文件(PKCS#8 格式,可能是 .pem 或 .der):
|
certSign.selectKey=選擇您的私鑰文件(PKCS#8 格式,可能是 .pem 或 .der):
|
||||||
certSign.selectCert=選擇您的憑證文件(X.509 格式,可能是 .pem 或 .der):
|
certSign.selectCert=選擇您的憑證文件(X.509 格式,可能是 .pem 或 .der):
|
||||||
certSign.selectP12=選擇您的 PKCS#12 金鑰庫文件(.p12 或 .pfx)(可選,如果提供,它應包含您的私鑰和憑證):
|
certSign.selectP12=選擇您的 PKCS#12 金鑰庫文件(.p12 或 .pfx)(可選,如果提供,它應包含您的私鑰和憑證):
|
||||||
@@ -660,10 +664,10 @@ certSign.submit=簽章 PDF
|
|||||||
|
|
||||||
|
|
||||||
#removeCertSign
|
#removeCertSign
|
||||||
removeCertSign.title=Remove Certificate Signature
|
removeCertSign.title=移除憑證簽章
|
||||||
removeCertSign.header=Remove the digital certificate from the PDF
|
removeCertSign.header=從 PDF 檔案中移除憑證簽章
|
||||||
removeCertSign.selectPDF=Select a PDF file:
|
removeCertSign.selectPDF=選擇 PDF 檔案
|
||||||
removeCertSign.submit=Remove Signature
|
removeCertSign.submit=移除
|
||||||
|
|
||||||
|
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
@@ -769,7 +773,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
|
||||||
|
|
||||||
@@ -799,6 +803,7 @@ merge.title=合併
|
|||||||
merge.header=合併多個 PDF
|
merge.header=合併多個 PDF
|
||||||
merge.sortByName=依名稱排序
|
merge.sortByName=依名稱排序
|
||||||
merge.sortByDate=依日期排序
|
merge.sortByDate=依日期排序
|
||||||
|
merge.removeCertSign=是否移除合併後檔案的憑證簽章?
|
||||||
merge.submit=合併
|
merge.submit=合併
|
||||||
|
|
||||||
|
|
||||||
@@ -816,6 +821,7 @@ pdfOrganiser.mode.6=奇偶拆分
|
|||||||
pdfOrganiser.mode.7=刪除第一頁
|
pdfOrganiser.mode.7=刪除第一頁
|
||||||
pdfOrganiser.mode.8=刪除最後一頁
|
pdfOrganiser.mode.8=刪除最後一頁
|
||||||
pdfOrganiser.mode.9=刪除第一頁和最後一頁
|
pdfOrganiser.mode.9=刪除第一頁和最後一頁
|
||||||
|
pdfOrganiser.mode.10=Odd-Even Merge
|
||||||
pdfOrganiser.placeholder=(例如 1,3,2 或 4-8,2,10-12 或 2n-1)
|
pdfOrganiser.placeholder=(例如 1,3,2 或 4-8,2,10-12 或 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -975,8 +981,8 @@ pdfToPDFA.header=PDF 轉 PDF/A
|
|||||||
pdfToPDFA.credit=此服務使用 OCRmyPDF 進行 PDF/A 轉換
|
pdfToPDFA.credit=此服務使用 OCRmyPDF 進行 PDF/A 轉換
|
||||||
pdfToPDFA.submit=轉換
|
pdfToPDFA.submit=轉換
|
||||||
pdfToPDFA.tip=目前不支援上傳多個
|
pdfToPDFA.tip=目前不支援上傳多個
|
||||||
pdfToPDFA.outputFormat=Output format
|
pdfToPDFA.outputFormat=輸出格式
|
||||||
pdfToPDFA.pdfWithDigitalSignature=The PDF contains a digital signature. This will be removed in the next step.
|
pdfToPDFA.pdfWithDigitalSignature=該 PDF 的憑證簽章將會在下一步被移除
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@@ -1058,15 +1064,15 @@ split-by-sections.vertical.label=垂直劃分
|
|||||||
split-by-sections.horizontal.placeholder=輸入水平劃分的數量
|
split-by-sections.horizontal.placeholder=輸入水平劃分的數量
|
||||||
split-by-sections.vertical.placeholder=輸入垂直劃分的數量
|
split-by-sections.vertical.placeholder=輸入垂直劃分的數量
|
||||||
split-by-sections.submit=分割 PDF
|
split-by-sections.submit=分割 PDF
|
||||||
split-by-sections.merge=是否合併為一個pdf
|
split-by-sections.merge=是否合併為一個 PDF
|
||||||
|
|
||||||
|
|
||||||
#printFile
|
#printFile
|
||||||
printFile.title=Print File
|
printFile.title=列印檔案
|
||||||
printFile.header=Print File to Printer
|
printFile.header=使用印表機印出檔案
|
||||||
printFile.selectText.1=Select File to Print
|
printFile.selectText.1=選擇要印的檔案
|
||||||
printFile.selectText.2=Enter Printer Name
|
printFile.selectText.2=輸入印表機名稱
|
||||||
printFile.submit=Print
|
printFile.submit=列印
|
||||||
|
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
@@ -1077,15 +1083,24 @@ licenses.module=模組
|
|||||||
licenses.version=版本
|
licenses.version=版本
|
||||||
licenses.license=許可證
|
licenses.license=許可證
|
||||||
|
|
||||||
|
#survey
|
||||||
|
survey.nav=Survey
|
||||||
|
survey.title=Stirling-PDF Survey
|
||||||
|
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!
|
||||||
|
survey.please=Please consider taking our survey!
|
||||||
|
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page)
|
||||||
|
survey.button=Take Survey
|
||||||
|
survey.dontShowAgain=Don't show again
|
||||||
|
|
||||||
|
|
||||||
#error
|
#error
|
||||||
error.sorry=對於這個問題,我們感到抱歉!
|
error.sorry=對於這個問題,我們感到抱歉!
|
||||||
error.needHelp=需要幫助/發現了一個問題?
|
error.needHelp=需要幫助/發現了一個問題?
|
||||||
error.contactTip=如果你仍然遇到問題,請不要猶豫,隨時向我們尋求幫助。你可以在我們的GitHub頁面提交工單,或通過Discord與我們聯繋:
|
error.contactTip=如果你仍然遇到問題,請不要猶豫,隨時向我們尋求幫助。你可以在我們的 GitHub 頁面提交工單,或通過 Discord 與我們聯繋:
|
||||||
error.404.head=404 - 找不到頁面 | 哎呀,我們在代碼中走錯了路!
|
error.404.head=404 - 找不到頁面 | 哎呀,我們在代碼中走錯了路!
|
||||||
error.404.1=我們好像找不到你正在尋找的頁面。
|
error.404.1=我們好像找不到你正在尋找的頁面。
|
||||||
error.404.2=出了點錯誤
|
error.404.2=出了點錯誤
|
||||||
error.github=在GitHub上提交工單
|
error.github=在 GitHub 上提交工單
|
||||||
error.showStack=顯示堆疊追蹤
|
error.showStack=顯示堆疊追蹤
|
||||||
error.copyStack=複製堆疊追蹤
|
error.copyStack=複製堆疊追蹤
|
||||||
error.githubSubmit=GitHub - 提交工單
|
error.githubSubmit=GitHub - 提交工單
|
||||||
|
|||||||
@@ -1,44 +1,54 @@
|
|||||||
# Welcome to settings file
|
#############################################################################################################
|
||||||
# Remove comment marker # if on start of line to enable the configuration
|
# Welcome to settings file from #
|
||||||
# If you want to override with environment parameter follow parameter naming SECURITY_INITIALLOGIN_USERNAME
|
# ____ _____ ___ ____ _ ___ _ _ ____ ____ ____ _____ #
|
||||||
|
# / ___|_ _|_ _| _ \| | |_ _| \ | |/ ___| | _ \| _ \| ___| #
|
||||||
|
# \___ \ | | | || |_) | | | || \| | | _ _____| |_) | | | | |_ #
|
||||||
|
# ___) || | | || _ <| |___ | || |\ | |_| |_____| __/| |_| | _| #
|
||||||
|
# |____/ |_| |___|_| \_\_____|___|_| \_|\____| |_| |____/|_| #
|
||||||
|
# #
|
||||||
|
# Do not comment out any entry, it will be removed on next startup #
|
||||||
|
# If you want to override with environment parameter follow parameter naming SECURITY_INITIALLOGIN_USERNAME #
|
||||||
|
#############################################################################################################
|
||||||
|
|
||||||
|
|
||||||
security:
|
security:
|
||||||
enableLogin: false # set to 'true' to enable login
|
enableLogin: false # set to 'true' to enable login
|
||||||
csrfDisabled: true # Set to 'true' to disable CSRF protection (not recommended for production)
|
csrfDisabled: true # Set to 'true' to disable CSRF protection (not recommended for production)
|
||||||
loginAttemptCount: 5 # lock user account after 5 tries
|
loginAttemptCount: 5 # lock user account after 5 tries
|
||||||
loginResetTimeMinutes: 120 # lock account for 2 hours after x attempts
|
loginResetTimeMinutes: 120 # lock account for 2 hours after x attempts
|
||||||
# initialLogin:
|
loginMethod: all # 'all' (Login Username/Password and OAuth2[must be enabled and configured]), 'normal'(only Login with Username/Password) or 'oauth2'(only Login with OAuth2)
|
||||||
# username: "admin" # Initial username for the first login
|
initialLogin:
|
||||||
# password: "stirling" # Initial password for the first login
|
username: '' # Initial username for the first login
|
||||||
# oauth2:
|
password: '' # Initial password for the first login
|
||||||
# enabled: false # set to 'true' to enable login (Note: enableLogin must also be 'true' for this to work)
|
oauth2:
|
||||||
# issuer: "" # set to any provider that supports OpenID Connect Discovery (/.well-known/openid-configuration) end-point
|
enabled: false # set to 'true' to enable login (Note: enableLogin must also be 'true' for this to work)
|
||||||
# clientId: "" # Client ID from your provider
|
client:
|
||||||
# clientSecret: "" # Client Secret from your provider
|
keycloak:
|
||||||
# autoCreateUser: false # set to 'true' to allow auto-creation of non-existing users
|
issuer: '' # URL of the Keycloak realm's OpenID Connect Discovery endpoint
|
||||||
# useAsUsername: "email" # Default is 'email'; custom fields can be used as the username
|
clientId: '' # Client ID for Keycloak OAuth2
|
||||||
# scopes: "openid, profile, email" # Specify the scopes for which the application will request permissions
|
clientSecret: '' # Client Secret for Keycloak OAuth2
|
||||||
# provider: "google" # Set this to your OAuth provider's name, e.g., 'google' or 'keycloak'
|
scopes: openid, profile, email # Scopes for Keycloak OAuth2
|
||||||
# client:
|
useAsUsername: preferred_username # Field to use as the username for Keycloak OAuth2
|
||||||
# google:
|
google:
|
||||||
# clientId: "" # Client ID for Google OAuth2
|
clientId: '' # Client ID for Google OAuth2
|
||||||
# clientSecret: "" # Client Secret for Google OAuth2
|
clientSecret: '' # Client Secret for Google OAuth2
|
||||||
# scopes: "https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/userinfo.profile" # Scopes for Google OAuth2
|
scopes: https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/userinfo.profile # Scopes for Google OAuth2
|
||||||
# useAsUsername: "email" # Field to use as the username for Google OAuth2
|
useAsUsername: email # Field to use as the username for Google OAuth2
|
||||||
# github:
|
github:
|
||||||
# clientId: "" # Client ID for GitHub OAuth2
|
clientId: '' # Client ID for GitHub OAuth2
|
||||||
# clientSecret: "" # Client Secret for GitHub OAuth2
|
clientSecret: '' # Client Secret for GitHub OAuth2
|
||||||
# scopes: "read:user" # Scope for GitHub OAuth2
|
scopes: read:user # Scope for GitHub OAuth2
|
||||||
# useAsUsername: "login" # Field to use as the username for GitHub OAuth2
|
useAsUsername: login # Field to use as the username for GitHub OAuth2
|
||||||
# keycloak:
|
issuer: '' # set to any provider that supports OpenID Connect Discovery (/.well-known/openid-configuration) end-point
|
||||||
# issuer: "http://192.168.0.123:8888/realms/stirling-pdf" # URL of the Keycloak realm's OpenID Connect Discovery endpoint
|
clientId: '' # Client ID from your provider
|
||||||
# clientId: "stirling-pdf" # Client ID for Keycloak OAuth2
|
clientSecret: '' # Client Secret from your provider
|
||||||
# clientSecret: "" # Client Secret for Keycloak OAuth2
|
autoCreateUser: false # set to 'true' to allow auto-creation of non-existing users
|
||||||
# scopes: "openid, profile, email" # Scopes for Keycloak OAuth2
|
useAsUsername: email # Default is 'email'; custom fields can be used as the username
|
||||||
# useAsUsername: "email" # Field to use as the username for Keycloak OAuth2
|
scopes: openid, profile, email # Specify the scopes for which the application will request permissions
|
||||||
|
provider: google # Set this to your OAuth provider's name, e.g., 'google' or 'keycloak'
|
||||||
|
|
||||||
system:
|
system:
|
||||||
defaultLocale: 'en-US' # Set the default language (e.g. 'de-DE', 'fr-FR', etc)
|
defaultLocale: en-US # Set the default language (e.g. 'de-DE', 'fr-FR', etc)
|
||||||
googlevisibility: false # 'true' to allow Google visibility (via robots.txt), 'false' to disallow
|
googlevisibility: false # 'true' to allow Google visibility (via robots.txt), 'false' to disallow
|
||||||
enableAlphaFunctionality: false # Set to enable functionality which might need more testing before it fully goes live (This feature might make no changes)
|
enableAlphaFunctionality: false # Set to enable functionality which might need more testing before it fully goes live (This feature might make no changes)
|
||||||
showUpdate: false # see when a new update is available
|
showUpdate: false # see when a new update is available
|
||||||
@@ -46,9 +56,9 @@ system:
|
|||||||
customHTMLFiles: false # enable to have files placed in /customFiles/templates override the existing template html files
|
customHTMLFiles: false # enable to have files placed in /customFiles/templates override the existing template html files
|
||||||
|
|
||||||
ui:
|
ui:
|
||||||
appName: null # Application's visible name
|
appName: '' # Application's visible name
|
||||||
homeDescription: null # Short description or tagline shown on homepage.
|
homeDescription: '' # Short description or tagline shown on homepage.
|
||||||
appNameNavbar: null # Name displayed on the navigation bar
|
appNameNavbar: '' # Name displayed on the navigation bar
|
||||||
|
|
||||||
endpoints:
|
endpoints:
|
||||||
toRemove: [] # List endpoints to disable (e.g. ['img-to-pdf', 'remove-pages'])
|
toRemove: [] # List endpoints to disable (e.g. ['img-to-pdf', 'remove-pages'])
|
||||||
|
|||||||
@@ -3,83 +3,106 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "ch.qos.logback:logback-classic",
|
"moduleName": "ch.qos.logback:logback-classic",
|
||||||
"moduleUrl": "http://www.qos.ch",
|
"moduleUrl": "http://www.qos.ch",
|
||||||
"moduleVersion": "1.5.3",
|
"moduleVersion": "1.5.6",
|
||||||
"moduleLicense": "GNU Lesser General Public License",
|
"moduleLicense": "GNU Lesser General Public License",
|
||||||
"moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"
|
"moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "ch.qos.logback:logback-core",
|
"moduleName": "ch.qos.logback:logback-core",
|
||||||
"moduleUrl": "http://www.qos.ch",
|
"moduleUrl": "http://www.qos.ch",
|
||||||
"moduleVersion": "1.5.3",
|
"moduleVersion": "1.5.6",
|
||||||
"moduleLicense": "GNU Lesser General Public License",
|
"moduleLicense": "GNU Lesser General Public License",
|
||||||
"moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"
|
"moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.bucket4j:bucket4j_jdk17-core",
|
||||||
|
"moduleUrl": "http://github.com/bucket4j/bucket4j/bucket4j_jdk17-core",
|
||||||
|
"moduleVersion": "8.12.1",
|
||||||
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fasterxml.jackson.core:jackson-annotations",
|
"moduleName": "com.fasterxml.jackson.core:jackson-annotations",
|
||||||
"moduleUrl": "https://github.com/FasterXML/jackson",
|
"moduleUrl": "https://github.com/FasterXML/jackson",
|
||||||
"moduleVersion": "2.15.4",
|
"moduleVersion": "2.17.1",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fasterxml.jackson.core:jackson-core",
|
"moduleName": "com.fasterxml.jackson.core:jackson-core",
|
||||||
"moduleUrl": "https://github.com/FasterXML/jackson-core",
|
"moduleUrl": "https://github.com/FasterXML/jackson-core",
|
||||||
"moduleVersion": "2.15.4",
|
"moduleVersion": "2.17.1",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fasterxml.jackson.core:jackson-databind",
|
"moduleName": "com.fasterxml.jackson.core:jackson-databind",
|
||||||
"moduleUrl": "https://github.com/FasterXML/jackson",
|
"moduleUrl": "https://github.com/FasterXML/jackson",
|
||||||
"moduleVersion": "2.15.4",
|
"moduleVersion": "2.17.1",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml",
|
"moduleName": "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml",
|
||||||
"moduleUrl": "https://github.com/FasterXML/jackson-dataformats-text",
|
"moduleUrl": "https://github.com/FasterXML/jackson-dataformats-text",
|
||||||
"moduleVersion": "2.15.4",
|
"moduleVersion": "2.17.1",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fasterxml.jackson.datatype:jackson-datatype-jdk8",
|
"moduleName": "com.fasterxml.jackson.datatype:jackson-datatype-jdk8",
|
||||||
"moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jdk8",
|
"moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jdk8",
|
||||||
"moduleVersion": "2.15.4",
|
"moduleVersion": "2.17.1",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fasterxml.jackson.datatype:jackson-datatype-jsr310",
|
"moduleName": "com.fasterxml.jackson.datatype:jackson-datatype-jsr310",
|
||||||
"moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jsr310",
|
"moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jsr310",
|
||||||
"moduleVersion": "2.15.4",
|
"moduleVersion": "2.17.1",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fasterxml.jackson.module:jackson-module-parameter-names",
|
"moduleName": "com.fasterxml.jackson.module:jackson-module-parameter-names",
|
||||||
"moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-module-parameter-names",
|
"moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-module-parameter-names",
|
||||||
"moduleVersion": "2.15.4",
|
"moduleVersion": "2.17.1",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fasterxml.jackson:jackson-bom",
|
"moduleName": "com.fasterxml.jackson:jackson-bom",
|
||||||
"moduleVersion": "2.15.4"
|
"moduleUrl": "https://github.com/FasterXML/jackson-bom",
|
||||||
|
"moduleVersion": "2.17.1",
|
||||||
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fasterxml:classmate",
|
"moduleName": "com.fasterxml:classmate",
|
||||||
"moduleUrl": "https://github.com/FasterXML/java-classmate",
|
"moduleUrl": "https://github.com/FasterXML/java-classmate",
|
||||||
"moduleVersion": "1.6.0",
|
"moduleVersion": "1.7.0",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.fathzer:javaluator",
|
"moduleName": "com.fathzer:javaluator",
|
||||||
"moduleUrl": "http://javaluator.fathzer.com",
|
"moduleVersion": "3.0.4",
|
||||||
"moduleVersion": "3.0.3",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicense": "GNU Lesser General Public License v3 (LGPL-v3)",
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
"moduleLicenseUrl": "http://www.gnu.org/licenses/lgpl-3.0.html"
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.github.Carleslc.Simple-YAML:Simple-Configuration",
|
||||||
|
"moduleUrl": "https://carleslc.me/Simple-YAML",
|
||||||
|
"moduleVersion": "1.8.4",
|
||||||
|
"moduleLicense": "GNU General Public License v3.0",
|
||||||
|
"moduleLicenseUrl": "https://api.github.com/licenses/gpl-3.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.github.Carleslc.Simple-YAML:Simple-Yaml",
|
||||||
|
"moduleUrl": "https://carleslc.me/Simple-YAML",
|
||||||
|
"moduleVersion": "1.8.4",
|
||||||
|
"moduleLicense": "GNU General Public License v3.0",
|
||||||
|
"moduleLicenseUrl": "https://api.github.com/licenses/gpl-3.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.github.stephenc.jcip:jcip-annotations",
|
"moduleName": "com.github.stephenc.jcip:jcip-annotations",
|
||||||
@@ -88,13 +111,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": "com.github.vladimir-bukhtoyarov:bucket4j-core",
|
|
||||||
"moduleUrl": "http://github.com/vladimir-bukhtoyarov/bucket4j/bucket4j-core",
|
|
||||||
"moduleVersion": "7.6.0",
|
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"moduleName": "com.google.zxing:core",
|
"moduleName": "com.google.zxing:core",
|
||||||
"moduleUrl": "https://github.com/zxing/zxing/core",
|
"moduleUrl": "https://github.com/zxing/zxing/core",
|
||||||
@@ -133,14 +149,14 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "com.nimbusds:nimbus-jose-jwt",
|
"moduleName": "com.nimbusds:nimbus-jose-jwt",
|
||||||
"moduleUrl": "https://connect2id.com",
|
"moduleUrl": "https://connect2id.com",
|
||||||
"moduleVersion": "9.24.4",
|
"moduleVersion": "9.37.3",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.nimbusds:oauth2-oidc-sdk",
|
"moduleName": "com.nimbusds:oauth2-oidc-sdk",
|
||||||
"moduleUrl": "https://bitbucket.org/connect2id/oauth-2.0-sdk-with-openid-connect-extensions",
|
"moduleUrl": "https://bitbucket.org/connect2id/oauth-2.0-sdk-with-openid-connect-extensions",
|
||||||
"moduleVersion": "9.43.3",
|
"moduleVersion": "9.43.4",
|
||||||
"moduleLicense": "Apache License, version 2.0",
|
"moduleLicense": "Apache License, version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.html"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.html"
|
||||||
},
|
},
|
||||||
@@ -221,9 +237,9 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "com.zaxxer:HikariCP",
|
"moduleName": "com.zaxxer:HikariCP",
|
||||||
"moduleUrl": "https://github.com/brettwooldridge/HikariCP",
|
"moduleUrl": "https://github.com/brettwooldridge/HikariCP",
|
||||||
"moduleVersion": "5.0.1",
|
"moduleVersion": "5.1.0",
|
||||||
"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": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "commons-beanutils:commons-beanutils",
|
"moduleName": "commons-beanutils:commons-beanutils",
|
||||||
@@ -242,7 +258,7 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "commons-io:commons-io",
|
"moduleName": "commons-io:commons-io",
|
||||||
"moduleUrl": "https://commons.apache.org/proper/commons-io/",
|
"moduleUrl": "https://commons.apache.org/proper/commons-io/",
|
||||||
"moduleVersion": "2.15.1",
|
"moduleVersion": "2.16.1",
|
||||||
"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"
|
||||||
},
|
},
|
||||||
@@ -263,28 +279,28 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "io.micrometer:micrometer-commons",
|
"moduleName": "io.micrometer:micrometer-commons",
|
||||||
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
||||||
"moduleVersion": "1.12.4",
|
"moduleVersion": "1.13.0",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "io.micrometer:micrometer-core",
|
"moduleName": "io.micrometer:micrometer-core",
|
||||||
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
||||||
"moduleVersion": "1.12.4",
|
"moduleVersion": "1.13.0",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "io.micrometer:micrometer-jakarta9",
|
"moduleName": "io.micrometer:micrometer-jakarta9",
|
||||||
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
||||||
"moduleVersion": "1.12.4",
|
"moduleVersion": "1.13.0",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "io.micrometer:micrometer-observation",
|
"moduleName": "io.micrometer:micrometer-observation",
|
||||||
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
||||||
"moduleVersion": "1.12.4",
|
"moduleVersion": "1.13.0",
|
||||||
"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"
|
||||||
},
|
},
|
||||||
@@ -297,21 +313,21 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "io.swagger.core.v3:swagger-annotations-jakarta",
|
"moduleName": "io.swagger.core.v3:swagger-annotations-jakarta",
|
||||||
"moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-annotations",
|
"moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-annotations",
|
||||||
"moduleVersion": "2.2.15",
|
"moduleVersion": "2.2.21",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "io.swagger.core.v3:swagger-core-jakarta",
|
"moduleName": "io.swagger.core.v3:swagger-core-jakarta",
|
||||||
"moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-core",
|
"moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-core",
|
||||||
"moduleVersion": "2.2.15",
|
"moduleVersion": "2.2.21",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "io.swagger.core.v3:swagger-models-jakarta",
|
"moduleName": "io.swagger.core.v3:swagger-models-jakarta",
|
||||||
"moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-models",
|
"moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-models",
|
||||||
"moduleVersion": "2.2.15",
|
"moduleVersion": "2.2.21",
|
||||||
"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"
|
||||||
},
|
},
|
||||||
@@ -329,6 +345,20 @@
|
|||||||
"moduleLicense": "GPL2 w/ CPE",
|
"moduleLicense": "GPL2 w/ CPE",
|
||||||
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "jakarta.enterprise:jakarta.enterprise.cdi-api",
|
||||||
|
"moduleUrl": "https://jboss.org",
|
||||||
|
"moduleVersion": "4.0.1",
|
||||||
|
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
||||||
|
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "jakarta.enterprise:jakarta.enterprise.lang-model",
|
||||||
|
"moduleUrl": "https://www.eclipse.org",
|
||||||
|
"moduleVersion": "4.0.1",
|
||||||
|
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
|
||||||
|
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "jakarta.inject:jakarta.inject-api",
|
"moduleName": "jakarta.inject:jakarta.inject-api",
|
||||||
"moduleUrl": "https://www.eclipse.org",
|
"moduleUrl": "https://www.eclipse.org",
|
||||||
@@ -336,6 +366,13 @@
|
|||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "jakarta.interceptor:jakarta.interceptor-api",
|
||||||
|
"moduleUrl": "https://www.eclipse.org",
|
||||||
|
"moduleVersion": "2.1.0",
|
||||||
|
"moduleLicense": "GPL2 w/ CPE",
|
||||||
|
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "jakarta.persistence:jakarta.persistence-api",
|
"moduleName": "jakarta.persistence:jakarta.persistence-api",
|
||||||
"moduleUrl": "https://www.eclipse.org",
|
"moduleUrl": "https://www.eclipse.org",
|
||||||
@@ -387,21 +424,21 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "net.bytebuddy:byte-buddy",
|
"moduleName": "net.bytebuddy:byte-buddy",
|
||||||
"moduleVersion": "1.14.12",
|
"moduleVersion": "1.14.16",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "net.minidev:accessors-smart",
|
"moduleName": "net.minidev:accessors-smart",
|
||||||
"moduleUrl": "https://urielch.github.io/",
|
"moduleUrl": "https://urielch.github.io/",
|
||||||
"moduleVersion": "2.5.0",
|
"moduleVersion": "2.5.1",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "net.minidev:json-smart",
|
"moduleName": "net.minidev:json-smart",
|
||||||
"moduleUrl": "https://urielch.github.io/",
|
"moduleUrl": "https://urielch.github.io/",
|
||||||
"moduleVersion": "2.5.0",
|
"moduleVersion": "2.5.1",
|
||||||
"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"
|
||||||
},
|
},
|
||||||
@@ -422,7 +459,7 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "org.apache.commons:commons-lang3",
|
"moduleName": "org.apache.commons:commons-lang3",
|
||||||
"moduleUrl": "https://commons.apache.org/proper/commons-lang/",
|
"moduleUrl": "https://commons.apache.org/proper/commons-lang/",
|
||||||
"moduleVersion": "3.13.0",
|
"moduleVersion": "3.14.0",
|
||||||
"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"
|
||||||
},
|
},
|
||||||
@@ -435,13 +472,13 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.apache.logging.log4j:log4j-api",
|
"moduleName": "org.apache.logging.log4j:log4j-api",
|
||||||
"moduleVersion": "2.21.1",
|
"moduleVersion": "2.23.1",
|
||||||
"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.logging.log4j:log4j-to-slf4j",
|
"moduleName": "org.apache.logging.log4j:log4j-to-slf4j",
|
||||||
"moduleVersion": "2.21.1",
|
"moduleVersion": "2.23.1",
|
||||||
"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"
|
||||||
},
|
},
|
||||||
@@ -476,7 +513,7 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "org.apache.tomcat.embed:tomcat-embed-el",
|
"moduleName": "org.apache.tomcat.embed:tomcat-embed-el",
|
||||||
"moduleUrl": "https://tomcat.apache.org/",
|
"moduleUrl": "https://tomcat.apache.org/",
|
||||||
"moduleVersion": "10.1.19",
|
"moduleVersion": "10.1.24",
|
||||||
"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"
|
||||||
},
|
},
|
||||||
@@ -496,7 +533,7 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "org.aspectj:aspectjweaver",
|
"moduleName": "org.aspectj:aspectjweaver",
|
||||||
"moduleUrl": "https://www.eclipse.org/aspectj/",
|
"moduleUrl": "https://www.eclipse.org/aspectj/",
|
||||||
"moduleVersion": "1.9.21",
|
"moduleVersion": "1.9.22",
|
||||||
"moduleLicense": "Eclipse Public License - v 2.0",
|
"moduleLicense": "Eclipse Public License - v 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt"
|
"moduleLicenseUrl": "https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt"
|
||||||
},
|
},
|
||||||
@@ -510,21 +547,21 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "org.bouncycastle:bcpkix-jdk18on",
|
"moduleName": "org.bouncycastle:bcpkix-jdk18on",
|
||||||
"moduleUrl": "https://www.bouncycastle.org/java.html",
|
"moduleUrl": "https://www.bouncycastle.org/java.html",
|
||||||
"moduleVersion": "1.77",
|
"moduleVersion": "1.78.1",
|
||||||
"moduleLicense": "Bouncy Castle Licence",
|
"moduleLicense": "Bouncy Castle Licence",
|
||||||
"moduleLicenseUrl": "https://www.bouncycastle.org/licence.html"
|
"moduleLicenseUrl": "https://www.bouncycastle.org/licence.html"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.bouncycastle:bcprov-jdk18on",
|
"moduleName": "org.bouncycastle:bcprov-jdk18on",
|
||||||
"moduleUrl": "https://www.bouncycastle.org/java.html",
|
"moduleUrl": "https://www.bouncycastle.org/java.html",
|
||||||
"moduleVersion": "1.77",
|
"moduleVersion": "1.78.1",
|
||||||
"moduleLicense": "Bouncy Castle Licence",
|
"moduleLicense": "Bouncy Castle Licence",
|
||||||
"moduleLicenseUrl": "https://www.bouncycastle.org/licence.html"
|
"moduleLicenseUrl": "https://www.bouncycastle.org/licence.html"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.bouncycastle:bcutil-jdk18on",
|
"moduleName": "org.bouncycastle:bcutil-jdk18on",
|
||||||
"moduleUrl": "https://www.bouncycastle.org/java.html",
|
"moduleUrl": "https://www.bouncycastle.org/java.html",
|
||||||
"moduleVersion": "1.77",
|
"moduleVersion": "1.78.1",
|
||||||
"moduleLicense": "Bouncy Castle Licence",
|
"moduleLicense": "Bouncy Castle Licence",
|
||||||
"moduleLicenseUrl": "https://www.bouncycastle.org/licence.html"
|
"moduleLicenseUrl": "https://www.bouncycastle.org/licence.html"
|
||||||
},
|
},
|
||||||
@@ -550,182 +587,182 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-client",
|
"moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-client",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-common",
|
"moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-common",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-server",
|
"moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-server",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server",
|
"moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-servlet",
|
"moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-servlet",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty.ee10:jetty-ee10-annotations",
|
"moduleName": "org.eclipse.jetty.ee10:jetty-ee10-annotations",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty.ee10:jetty-ee10-plus",
|
"moduleName": "org.eclipse.jetty.ee10:jetty-ee10-plus",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty.ee10:jetty-ee10-servlet",
|
"moduleName": "org.eclipse.jetty.ee10:jetty-ee10-servlet",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty.ee10:jetty-ee10-servlets",
|
"moduleName": "org.eclipse.jetty.ee10:jetty-ee10-servlets",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty.ee10:jetty-ee10-webapp",
|
"moduleName": "org.eclipse.jetty.ee10:jetty-ee10-webapp",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-client",
|
"moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-client",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-common",
|
"moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-common",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-server",
|
"moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-server",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty.websocket:jetty-websocket-jetty-api",
|
"moduleName": "org.eclipse.jetty.websocket:jetty-websocket-jetty-api",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty.websocket:jetty-websocket-jetty-common",
|
"moduleName": "org.eclipse.jetty.websocket:jetty-websocket-jetty-common",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty:jetty-alpn-client",
|
"moduleName": "org.eclipse.jetty:jetty-alpn-client",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty:jetty-client",
|
"moduleName": "org.eclipse.jetty:jetty-client",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.eclipse.jetty:jetty-ee",
|
||||||
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty:jetty-http",
|
"moduleName": "org.eclipse.jetty:jetty-http",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty:jetty-io",
|
"moduleName": "org.eclipse.jetty:jetty-io",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"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",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty:jetty-plus",
|
"moduleName": "org.eclipse.jetty:jetty-plus",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty:jetty-security",
|
"moduleName": "org.eclipse.jetty:jetty-security",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty:jetty-server",
|
"moduleName": "org.eclipse.jetty:jetty-server",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty:jetty-session",
|
"moduleName": "org.eclipse.jetty:jetty-session",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty:jetty-util",
|
"moduleName": "org.eclipse.jetty:jetty-util",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.eclipse.jetty:jetty-xml",
|
"moduleName": "org.eclipse.jetty:jetty-xml",
|
||||||
"moduleUrl": "https://eclipse.dev/jetty/",
|
"moduleUrl": "https://eclipse.dev/jetty/",
|
||||||
"moduleVersion": "12.0.7",
|
"moduleVersion": "12.0.9",
|
||||||
"moduleLicense": "Eclipse Public License - Version 2.0",
|
"moduleLicense": "Eclipse Public License - Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/"
|
||||||
},
|
},
|
||||||
@@ -753,7 +790,7 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "org.hdrhistogram:HdrHistogram",
|
"moduleName": "org.hdrhistogram:HdrHistogram",
|
||||||
"moduleUrl": "http://hdrhistogram.github.io/HdrHistogram/",
|
"moduleUrl": "http://hdrhistogram.github.io/HdrHistogram/",
|
||||||
"moduleVersion": "2.1.12",
|
"moduleVersion": "2.2.1",
|
||||||
"moduleLicense": "Public Domain, per Creative Commons CC0",
|
"moduleLicense": "Public Domain, per Creative Commons CC0",
|
||||||
"moduleLicenseUrl": "http://creativecommons.org/publicdomain/zero/1.0/"
|
"moduleLicenseUrl": "http://creativecommons.org/publicdomain/zero/1.0/"
|
||||||
},
|
},
|
||||||
@@ -766,8 +803,8 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.hibernate.orm:hibernate-core",
|
"moduleName": "org.hibernate.orm:hibernate-core",
|
||||||
"moduleUrl": "https://www.hibernate.org/orm/6.4",
|
"moduleUrl": "https://www.hibernate.org/orm/6.5",
|
||||||
"moduleVersion": "6.4.4.Final",
|
"moduleVersion": "6.5.2.Final",
|
||||||
"moduleLicense": "GNU Library General Public License v2.1 or later",
|
"moduleLicense": "GNU Library General Public License v2.1 or later",
|
||||||
"moduleLicenseUrl": "https://www.opensource.org/licenses/LGPL-2.1"
|
"moduleLicenseUrl": "https://www.opensource.org/licenses/LGPL-2.1"
|
||||||
},
|
},
|
||||||
@@ -788,319 +825,319 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "org.ow2.asm:asm",
|
"moduleName": "org.ow2.asm:asm",
|
||||||
"moduleUrl": "http://asm.ow2.org",
|
"moduleUrl": "http://asm.ow2.org",
|
||||||
"moduleVersion": "9.6",
|
"moduleVersion": "9.7",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.ow2.asm:asm-commons",
|
"moduleName": "org.ow2.asm:asm-commons",
|
||||||
"moduleUrl": "http://asm.ow2.org",
|
"moduleUrl": "http://asm.ow2.org",
|
||||||
"moduleVersion": "9.6",
|
"moduleVersion": "9.7",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.ow2.asm:asm-tree",
|
"moduleName": "org.ow2.asm:asm-tree",
|
||||||
"moduleUrl": "http://asm.ow2.org",
|
"moduleUrl": "http://asm.ow2.org",
|
||||||
"moduleVersion": "9.6",
|
"moduleVersion": "9.7",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.slf4j:jul-to-slf4j",
|
"moduleName": "org.slf4j:jul-to-slf4j",
|
||||||
"moduleUrl": "http://www.slf4j.org",
|
"moduleUrl": "http://www.slf4j.org",
|
||||||
"moduleVersion": "2.0.12",
|
"moduleVersion": "2.0.13",
|
||||||
"moduleLicense": "MIT License",
|
"moduleLicense": "MIT License",
|
||||||
"moduleLicenseUrl": "http://www.opensource.org/licenses/mit-license.php"
|
"moduleLicenseUrl": "http://www.opensource.org/licenses/mit-license.php"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.slf4j:slf4j-api",
|
"moduleName": "org.slf4j:slf4j-api",
|
||||||
"moduleUrl": "http://www.slf4j.org",
|
"moduleUrl": "http://www.slf4j.org",
|
||||||
"moduleVersion": "2.0.12",
|
"moduleVersion": "2.0.13",
|
||||||
"moduleLicense": "MIT License",
|
"moduleLicense": "MIT License",
|
||||||
"moduleLicenseUrl": "http://www.opensource.org/licenses/mit-license.php"
|
"moduleLicenseUrl": "http://www.opensource.org/licenses/mit-license.php"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springdoc:springdoc-openapi-starter-common",
|
"moduleName": "org.springdoc:springdoc-openapi-starter-common",
|
||||||
"moduleVersion": "2.2.0",
|
"moduleVersion": "2.5.0",
|
||||||
"moduleLicense": "The Apache License, Version 2.0",
|
"moduleLicense": "The Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springdoc:springdoc-openapi-starter-webmvc-api",
|
"moduleName": "org.springdoc:springdoc-openapi-starter-webmvc-api",
|
||||||
"moduleVersion": "2.2.0",
|
"moduleVersion": "2.5.0",
|
||||||
"moduleLicense": "The Apache License, Version 2.0",
|
"moduleLicense": "The Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springdoc:springdoc-openapi-starter-webmvc-ui",
|
"moduleName": "org.springdoc:springdoc-openapi-starter-webmvc-ui",
|
||||||
"moduleVersion": "2.2.0",
|
"moduleVersion": "2.5.0",
|
||||||
"moduleLicense": "The Apache License, Version 2.0",
|
"moduleLicense": "The Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot",
|
"moduleName": "org.springframework.boot:spring-boot",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-actuator",
|
"moduleName": "org.springframework.boot:spring-boot-actuator",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-actuator-autoconfigure",
|
"moduleName": "org.springframework.boot:spring-boot-actuator-autoconfigure",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-autoconfigure",
|
"moduleName": "org.springframework.boot:spring-boot-autoconfigure",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-devtools",
|
"moduleName": "org.springframework.boot:spring-boot-devtools",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter",
|
"moduleName": "org.springframework.boot:spring-boot-starter",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-actuator",
|
"moduleName": "org.springframework.boot:spring-boot-starter-actuator",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-aop",
|
"moduleName": "org.springframework.boot:spring-boot-starter-aop",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-data-jpa",
|
"moduleName": "org.springframework.boot:spring-boot-starter-data-jpa",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-jdbc",
|
"moduleName": "org.springframework.boot:spring-boot-starter-jdbc",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"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",
|
"moduleName": "org.springframework.boot:spring-boot-starter-jetty",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-json",
|
"moduleName": "org.springframework.boot:spring-boot-starter-json",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-logging",
|
"moduleName": "org.springframework.boot:spring-boot-starter-logging",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"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-oauth2-client",
|
"moduleName": "org.springframework.boot:spring-boot-starter-oauth2-client",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-security",
|
"moduleName": "org.springframework.boot:spring-boot-starter-security",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-thymeleaf",
|
"moduleName": "org.springframework.boot:spring-boot-starter-thymeleaf",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-web",
|
"moduleName": "org.springframework.boot:spring-boot-starter-web",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.data:spring-data-commons",
|
"moduleName": "org.springframework.data:spring-data-commons",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-data",
|
"moduleUrl": "https://spring.io/projects/spring-data",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.data:spring-data-jpa",
|
"moduleName": "org.springframework.data:spring-data-jpa",
|
||||||
"moduleUrl": "https://projects.spring.io/spring-data-jpa",
|
"moduleUrl": "https://projects.spring.io/spring-data-jpa",
|
||||||
"moduleVersion": "3.2.4",
|
"moduleVersion": "3.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-config",
|
"moduleName": "org.springframework.security:spring-security-config",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.2.3",
|
"moduleVersion": "6.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-core",
|
"moduleName": "org.springframework.security:spring-security-core",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.2.3",
|
"moduleVersion": "6.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-crypto",
|
"moduleName": "org.springframework.security:spring-security-crypto",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.2.3",
|
"moduleVersion": "6.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-oauth2-client",
|
"moduleName": "org.springframework.security:spring-security-oauth2-client",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.2.3",
|
"moduleVersion": "6.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-oauth2-core",
|
"moduleName": "org.springframework.security:spring-security-oauth2-core",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.2.3",
|
"moduleVersion": "6.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-oauth2-jose",
|
"moduleName": "org.springframework.security:spring-security-oauth2-jose",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.2.3",
|
"moduleVersion": "6.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-web",
|
"moduleName": "org.springframework.security:spring-security-web",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.2.3",
|
"moduleVersion": "6.3.0",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-aop",
|
"moduleName": "org.springframework:spring-aop",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.5",
|
"moduleVersion": "6.1.8",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-aspects",
|
"moduleName": "org.springframework:spring-aspects",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.5",
|
"moduleVersion": "6.1.8",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-beans",
|
"moduleName": "org.springframework:spring-beans",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.5",
|
"moduleVersion": "6.1.8",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-context",
|
"moduleName": "org.springframework:spring-context",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.5",
|
"moduleVersion": "6.1.8",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-core",
|
"moduleName": "org.springframework:spring-core",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.5",
|
"moduleVersion": "6.1.8",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-expression",
|
"moduleName": "org.springframework:spring-expression",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.5",
|
"moduleVersion": "6.1.8",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-jcl",
|
"moduleName": "org.springframework:spring-jcl",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.5",
|
"moduleVersion": "6.1.8",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-jdbc",
|
"moduleName": "org.springframework:spring-jdbc",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.5",
|
"moduleVersion": "6.1.8",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-orm",
|
"moduleName": "org.springframework:spring-orm",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.5",
|
"moduleVersion": "6.1.8",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-tx",
|
"moduleName": "org.springframework:spring-tx",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.5",
|
"moduleVersion": "6.1.8",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-web",
|
"moduleName": "org.springframework:spring-web",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.5",
|
"moduleVersion": "6.1.8",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-webmvc",
|
"moduleName": "org.springframework:spring-webmvc",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.1.5",
|
"moduleVersion": "6.1.8",
|
||||||
"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"
|
||||||
},
|
},
|
||||||
@@ -1138,7 +1175,7 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "org.webjars:swagger-ui",
|
"moduleName": "org.webjars:swagger-ui",
|
||||||
"moduleUrl": "http://webjars.org",
|
"moduleUrl": "http://webjars.org",
|
||||||
"moduleVersion": "5.2.0",
|
"moduleVersion": "5.13.0",
|
||||||
"moduleLicense": "Apache 2.0",
|
"moduleLicense": "Apache 2.0",
|
||||||
"moduleLicenseUrl": "https://github.com/swagger-api/swagger-ui"
|
"moduleLicenseUrl": "https://github.com/swagger-api/swagger-ui"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -92,3 +92,11 @@ html[dir="rtl"] label.form-check-label {
|
|||||||
.hidden {
|
.hidden {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input:-webkit-autofill,
|
||||||
|
input:-webkit-autofill:focus {
|
||||||
|
transition: background-color 600000s 0s, color 600000s 0s;
|
||||||
|
}
|
||||||
|
input[data-autocompleted] {
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,110 +1 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" id="Layer_1" x="0" y="0" version="1.1" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512" xml:space="preserve"><defs id="defs173"><linearGradient id="XMLID_5_" x1="304.496" x2="316.036" y1="422.91" y2="326.263" gradientUnits="userSpaceOnUse"><stop offset="0" style="stop-color:#dcf1f3" id="stop156"/><stop offset="1" style="stop-color:#c2c2c9" id="stop158"/></linearGradient></defs><style id="style150" type="text/css">.st1{fill:#c02223}.st2{fill:#882425}.st3{fill:url(#XMLID_5_)}.st4{fill:url(#XMLID_7_)}</style><g id="XMLID_4_"><path id="XMLID_131_" d="M 347.01402,14.355825 98.978019,69.02261 C 73.825483,74.547445 55.942464,96.792175 55.942464,122.52628 v 315.06096 c 0,22.39012 16.719895,41.14548 38.819234,43.76251 L 224.8861,498.36042 339.48636,384.26465 455.76603,265.15425 453.73057,84.870162 C 453.43979,62.916214 433.08513,46.632491 411.71274,51.284984 l -28.78729,6.251786 0.14539,-13.666697 C 383.36162,24.678542 365.62399,10.284894 347.01402,14.355825 Z" class="st1" style="stroke-width:1.45391"/><path id="XMLID_117_" d="m 383.21622,57.53677 v 285.8375 L 456.05681,265.00885 454.02135,78.763767 C 453.87595,59.863016 436.28372,45.905539 417.81914,49.97647 Z" class="st2" style="stroke-width:1.45391"/><polygon id="XMLID_18_" points="234.7 422.6 368.5 387.7 393.5 262.2" class="st3" style="fill:url(#XMLID_5_)" transform="matrix(1.4556308,0,0,1.4548265,-116.73161,-116.45231)"/><linearGradient id="XMLID_7_" x1="223.084" x2="241.417" y1="372.756" y2="114.557" gradientTransform="matrix(1.4539039,0,0,1.4539039,-116.19976,-116.20474)" gradientUnits="userSpaceOnUse"><stop offset="0" style="stop-color:#dcf1f3" id="stop163"/><stop offset="1" style="stop-color:#c2c2c9" id="stop165"/></linearGradient><path id="XMLID_6_" d="m 282.89686,214.84917 c 0,0 -22.24473,-28.93269 -38.67384,-36.78377 -10.46811,-4.94327 -26.02489,-6.83335 -38.23768,-0.72695 -18.02841,9.0142 -19.91848,34.31213 -3.34397,44.34406 3.92553,2.47165 9.15959,4.50711 15.99294,6.10641 36.63838,8.43264 97.12077,25.87949 89.70587,96.10304 0,0 -4.21633,65.86185 -73.56753,73.42215 -12.2128,1.30851 -24.57098,0.43617 -36.493,-2.32625 -16.42911,-3.63476 -45.50719,-11.04967 -59.75545,-19.91849 l -2.61703,-75.16682 h 6.97875 c 0,0 13.81208,33.43978 53.06749,49.57812 7.26952,2.90781 15.26599,4.07093 22.97168,2.90781 9.74116,-1.45391 21.22699,-6.68796 25.87949,-22.53551 0,0 7.85108,-23.11707 -32.85823,-35.76604 -32.56744,-10.17733 -63.24481,-20.64543 -75.89378,-54.95757 -5.961,-16.28371 -6.97874,-34.31212 -2.90781,-51.61358 5.37944,-22.53551 20.79082,-54.23062 64.40794,-67.89732 0,0 57.28381,-15.55677 96.53922,5.52484 l -1.74468,89.70587 z" class="st4" style="fill:url(#XMLID_7_);stroke-width:1.45391"/></g></svg>
|
||||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
|
|
||||||
<svg
|
|
||||||
version="1.1"
|
|
||||||
id="Layer_1"
|
|
||||||
x="0px"
|
|
||||||
y="0px"
|
|
||||||
viewBox="0 0 512 512"
|
|
||||||
style="enable-background:new 0 0 512 512;"
|
|
||||||
xml:space="preserve"
|
|
||||||
sodipodi:docname="favicon.svg"
|
|
||||||
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
|
|
||||||
inkscape:export-filename="favicon.png"
|
|
||||||
inkscape:export-xdpi="96"
|
|
||||||
inkscape:export-ydpi="96"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"><defs
|
|
||||||
id="defs173">
|
|
||||||
|
|
||||||
|
|
||||||
<linearGradient
|
|
||||||
id="XMLID_5_"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="304.496"
|
|
||||||
y1="422.9102"
|
|
||||||
x2="316.036"
|
|
||||||
y2="326.2626">
|
|
||||||
<stop
|
|
||||||
offset="0"
|
|
||||||
style="stop-color:#DCF1F3"
|
|
||||||
id="stop156" />
|
|
||||||
<stop
|
|
||||||
offset="1"
|
|
||||||
style="stop-color:#C2C2C9"
|
|
||||||
id="stop158" />
|
|
||||||
</linearGradient>
|
|
||||||
|
|
||||||
</defs><sodipodi:namedview
|
|
||||||
id="namedview171"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#000000"
|
|
||||||
borderopacity="0.25"
|
|
||||||
inkscape:showpageshadow="2"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pagecheckerboard="0"
|
|
||||||
inkscape:deskcolor="#d1d1d1"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:zoom="1.4142136"
|
|
||||||
inkscape:cx="219.91021"
|
|
||||||
inkscape:cy="232.63813"
|
|
||||||
inkscape:window-width="3840"
|
|
||||||
inkscape:window-height="2054"
|
|
||||||
inkscape:window-x="2869"
|
|
||||||
inkscape:window-y="-11"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="XMLID_4_" />
|
|
||||||
<style
|
|
||||||
type="text/css"
|
|
||||||
id="style150">
|
|
||||||
.st0{fill:#FFFFFF;}
|
|
||||||
.st1{fill:#C02223;}
|
|
||||||
.st2{fill:#882425;}
|
|
||||||
.st3{fill:url(#XMLID_5_);}
|
|
||||||
.st4{fill:url(#XMLID_7_);}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<g
|
|
||||||
id="XMLID_4_">
|
|
||||||
<path
|
|
||||||
id="XMLID_131_"
|
|
||||||
class="st1"
|
|
||||||
d="M 347.01402,14.355825 98.978019,69.02261 C 73.825483,74.547445 55.942464,96.792175 55.942464,122.52628 v 315.06096 c 0,22.39012 16.719895,41.14548 38.819234,43.76251 L 224.8861,498.36042 339.48636,384.26465 455.76603,265.15425 453.73057,84.870162 C 453.43979,62.916214 433.08513,46.632491 411.71274,51.284984 l -28.78729,6.251786 0.14539,-13.666697 C 383.36162,24.678542 365.62399,10.284894 347.01402,14.355825 Z"
|
|
||||||
sodipodi:nodetypes="ccssccccccccc"
|
|
||||||
style="stroke-width:1.45391" /><path
|
|
||||||
id="XMLID_117_"
|
|
||||||
class="st2"
|
|
||||||
d="m 383.21622,57.53677 v 285.8375 L 456.05681,265.00885 454.02135,78.763767 C 453.87595,59.863016 436.28372,45.905539 417.81914,49.97647 Z"
|
|
||||||
style="stroke-width:1.45391" /><polygon
|
|
||||||
id="XMLID_18_"
|
|
||||||
class="st3"
|
|
||||||
points="234.7,422.6 368.5,387.7 393.5,262.2 "
|
|
||||||
style="fill:url(#XMLID_5_)"
|
|
||||||
transform="matrix(1.4556308,0,0,1.4548265,-116.73161,-116.45231)" />
|
|
||||||
<linearGradient
|
|
||||||
id="XMLID_7_"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="223.0838"
|
|
||||||
y1="372.7559"
|
|
||||||
x2="241.4174"
|
|
||||||
y2="114.557"
|
|
||||||
gradientTransform="matrix(1.4539039,0,0,1.4539039,-116.19976,-116.20474)">
|
|
||||||
<stop
|
|
||||||
offset="0"
|
|
||||||
style="stop-color:#DCF1F3"
|
|
||||||
id="stop163" />
|
|
||||||
<stop
|
|
||||||
offset="1"
|
|
||||||
style="stop-color:#C2C2C9"
|
|
||||||
id="stop165" />
|
|
||||||
</linearGradient>
|
|
||||||
<path
|
|
||||||
id="XMLID_6_"
|
|
||||||
class="st4"
|
|
||||||
d="m 282.89686,214.84917 c 0,0 -22.24473,-28.93269 -38.67384,-36.78377 -10.46811,-4.94327 -26.02489,-6.83335 -38.23768,-0.72695 -18.02841,9.0142 -19.91848,34.31213 -3.34397,44.34406 3.92553,2.47165 9.15959,4.50711 15.99294,6.10641 36.63838,8.43264 97.12077,25.87949 89.70587,96.10304 0,0 -4.21633,65.86185 -73.56753,73.42215 -12.2128,1.30851 -24.57098,0.43617 -36.493,-2.32625 -16.42911,-3.63476 -45.50719,-11.04967 -59.75545,-19.91849 l -2.61703,-75.16682 h 6.97875 c 0,0 13.81208,33.43978 53.06749,49.57812 7.26952,2.90781 15.26599,4.07093 22.97168,2.90781 9.74116,-1.45391 21.22699,-6.68796 25.87949,-22.53551 0,0 7.85108,-23.11707 -32.85823,-35.76604 -32.56744,-10.17733 -63.24481,-20.64543 -75.89378,-54.95757 -5.961,-16.28371 -6.97874,-34.31212 -2.90781,-51.61358 5.37944,-22.53551 20.79082,-54.23062 64.40794,-67.89732 0,0 57.28381,-15.55677 96.53922,5.52484 l -1.74468,89.70587 z"
|
|
||||||
style="fill:url(#XMLID_7_);stroke-width:1.45391" />
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 2.7 KiB |
@@ -1,10 +1 @@
|
|||||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><g clip-path="url(#clip0_1_37)"><path fill="#fff" d="M13 0H6C5.46957 0 4.96086 0.210714 4.58579 0.585786C4.21071 0.960859 4 1.46957 4 2C3.46957 2 2.96086 2.21071 2.58579 2.58579C2.21071 2.96086 2 3.46957 2 4V14C2 14.5304 2.21071 15.0391 2.58579 15.4142C2.96086 15.7893 3.46957 16 4 16H11C11.5304 16 12.0391 15.7893 12.4142 15.4142C12.7893 15.0391 13 14.5304 13 14C13.5304 14 14.0391 13.7893 14.4142 13.4142C14.7893 13.0391 15 12.5304 15 12V2C15 1.46957 14.7893 0.960859 14.4142 0.585786C14.0391 0.210714 13.5304 0 13 0ZM13 13V4C13 3.46957 12.7893 2.96086 12.4142 2.58579C12.0391 2.21071 11.5304 2 11 2H5C5 1.73478 5.10536 1.48043 5.29289 1.29289C5.48043 1.10536 5.73478 1 6 1H13C13.2652 1 13.5196 1.10536 13.7071 1.29289C13.8946 1.48043 14 1.73478 14 2V12C14 12.2652 13.8946 12.5196 13.7071 12.7071C13.5196 12.8946 13.2652 13 13 13ZM3 4C3 3.73478 3.10536 3.48043 3.29289 3.29289C3.48043 3.10536 3.73478 3 4 3H11C11.2652 3 11.5196 3.10536 11.7071 3.29289C11.8946 3.48043 12 3.73478 12 4V14C12 14.2652 11.8946 14.5196 11.7071 14.7071C11.5196 14.8946 11.2652 15 11 15H4C3.73478 15 3.48043 14.8946 3.29289 14.7071C3.10536 14.5196 3 14.2652 3 14V4Z"/></g><defs><clipPath id="clip0_1_37"><rect width="16" height="16" fill="#fff"/></clipPath></defs></svg>
|
||||||
<g clip-path="url(#clip0_1_37)">
|
|
||||||
<path d="M13 0H6C5.46957 0 4.96086 0.210714 4.58579 0.585786C4.21071 0.960859 4 1.46957 4 2C3.46957 2 2.96086 2.21071 2.58579 2.58579C2.21071 2.96086 2 3.46957 2 4V14C2 14.5304 2.21071 15.0391 2.58579 15.4142C2.96086 15.7893 3.46957 16 4 16H11C11.5304 16 12.0391 15.7893 12.4142 15.4142C12.7893 15.0391 13 14.5304 13 14C13.5304 14 14.0391 13.7893 14.4142 13.4142C14.7893 13.0391 15 12.5304 15 12V2C15 1.46957 14.7893 0.960859 14.4142 0.585786C14.0391 0.210714 13.5304 0 13 0ZM13 13V4C13 3.46957 12.7893 2.96086 12.4142 2.58579C12.0391 2.21071 11.5304 2 11 2H5C5 1.73478 5.10536 1.48043 5.29289 1.29289C5.48043 1.10536 5.73478 1 6 1H13C13.2652 1 13.5196 1.10536 13.7071 1.29289C13.8946 1.48043 14 1.73478 14 2V12C14 12.2652 13.8946 12.5196 13.7071 12.7071C13.5196 12.8946 13.2652 13 13 13ZM3 4C3 3.73478 3.10536 3.48043 3.29289 3.29289C3.48043 3.10536 3.73478 3 4 3H11C11.2652 3 11.5196 3.10536 11.7071 3.29289C11.8946 3.48043 12 3.73478 12 4V14C12 14.2652 11.8946 14.5196 11.7071 14.7071C11.5196 14.8946 11.2652 15 11 15H4C3.73478 15 3.48043 14.8946 3.29289 14.7071C3.10536 14.5196 3 14.2652 3 14V4Z" fill="white"/>
|
|
||||||
</g>
|
|
||||||
<defs>
|
|
||||||
<clipPath id="clip0_1_37">
|
|
||||||
<rect width="16" height="16" fill="white"/>
|
|
||||||
</clipPath>
|
|
||||||
</defs>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
@@ -1,3 +1 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-right-short" viewBox="0 0 16 16">
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-right-short" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/></svg>
|
||||||
<path fill-rule="evenodd" d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 316 B After Width: | Height: | Size: 312 B |
@@ -1,3 +1 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-book" viewBox="0 0 16 16">
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-book" viewBox="0 0 16 16"><path d="M1 2.828c.885-.37 2.154-.769 3.388-.893 1.33-.134 2.458.063 3.112.752v9.746c-.935-.53-2.12-.603-3.213-.493-1.18.12-2.37.461-3.287.811zm7.5-.141c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783"/></svg>
|
||||||
<path d="M1 2.828c.885-.37 2.154-.769 3.388-.893 1.33-.134 2.458.063 3.112.752v9.746c-.935-.53-2.12-.603-3.213-.493-1.18.12-2.37.461-3.287.811zm7.5-.141c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 770 B After Width: | Height: | Size: 766 B |
@@ -1,4 +1 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard" viewBox="0 0 16 16">
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard" viewBox="0 0 16 16"><path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z"/><path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z"/></svg>
|
||||||
<path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z"/>
|
|
||||||
<path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 496 B After Width: | Height: | Size: 489 B |
@@ -1,3 +1 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="43" height="43" fill="#007bff" class="bi bi-discord" viewBox="0 0 16 16">
|
<svg xmlns="http://www.w3.org/2000/svg" width="43" height="43" fill="#007bff" class="bi bi-discord" viewBox="0 0 16 16"><path d="M13.545 2.907a13.227 13.227 0 0 0-3.257-1.011.05.05 0 0 0-.052.025c-.141.25-.297.577-.406.833a12.19 12.19 0 0 0-3.658 0 8.258 8.258 0 0 0-.412-.833.051.051 0 0 0-.052-.025c-1.125.194-2.22.534-3.257 1.011a.041.041 0 0 0-.021.018C.356 6.024-.213 9.047.066 12.032c.001.014.01.028.021.037a13.276 13.276 0 0 0 3.995 2.02.05.05 0 0 0 .056-.019c.308-.42.582-.863.818-1.329a.05.05 0 0 0-.01-.059.051.051 0 0 0-.018-.011 8.875 8.875 0 0 1-1.248-.595.05.05 0 0 1-.02-.066.051.051 0 0 1 .015-.019c.084-.063.168-.129.248-.195a.05.05 0 0 1 .051-.007c2.619 1.196 5.454 1.196 8.041 0a.052.052 0 0 1 .053.007c.08.066.164.132.248.195a.051.051 0 0 1-.004.085 8.254 8.254 0 0 1-1.249.594.05.05 0 0 0-.03.03.052.052 0 0 0 .003.041c.24.465.515.909.817 1.329a.05.05 0 0 0 .056.019 13.235 13.235 0 0 0 4.001-2.02.049.049 0 0 0 .021-.037c.334-3.451-.559-6.449-2.366-9.106a.034.034 0 0 0-.02-.019Zm-8.198 7.307c-.789 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.45.73 1.438 1.613 0 .888-.637 1.612-1.438 1.612Zm5.316 0c-.788 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.451.73 1.438 1.613 0 .888-.631 1.612-1.438 1.612Z"/></svg>
|
||||||
<path d="M13.545 2.907a13.227 13.227 0 0 0-3.257-1.011.05.05 0 0 0-.052.025c-.141.25-.297.577-.406.833a12.19 12.19 0 0 0-3.658 0 8.258 8.258 0 0 0-.412-.833.051.051 0 0 0-.052-.025c-1.125.194-2.22.534-3.257 1.011a.041.041 0 0 0-.021.018C.356 6.024-.213 9.047.066 12.032c.001.014.01.028.021.037a13.276 13.276 0 0 0 3.995 2.02.05.05 0 0 0 .056-.019c.308-.42.582-.863.818-1.329a.05.05 0 0 0-.01-.059.051.051 0 0 0-.018-.011 8.875 8.875 0 0 1-1.248-.595.05.05 0 0 1-.02-.066.051.051 0 0 1 .015-.019c.084-.063.168-.129.248-.195a.05.05 0 0 1 .051-.007c2.619 1.196 5.454 1.196 8.041 0a.052.052 0 0 1 .053.007c.08.066.164.132.248.195a.051.051 0 0 1-.004.085 8.254 8.254 0 0 1-1.249.594.05.05 0 0 0-.03.03.052.052 0 0 0 .003.041c.24.465.515.909.817 1.329a.05.05 0 0 0 .056.019 13.235 13.235 0 0 0 4.001-2.02.049.049 0 0 0 .021-.037c.334-3.451-.559-6.449-2.366-9.106a.034.034 0 0 0-.02-.019Zm-8.198 7.307c-.789 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.45.73 1.438 1.613 0 .888-.637 1.612-1.438 1.612Zm5.316 0c-.788 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.451.73 1.438 1.613 0 .888-.631 1.612-1.438 1.612Z"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
@@ -1,6 +1 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 500 500"><path stroke="#007bff" stroke-width="38" d="M 297.507 242.806 L 339.507 242.806 M 247.507 242.806 L 289.507 242.806 M 198.507 242.806 L 240.507 242.806 M 149.507 242.806 L 190.507 242.806 M 99.507 242.806 L 141.507 242.806 M 149.507 196.806 L 190.507 196.806 M 198.507 196.806 L 240.507 196.806 M 247.507 196.806 L 289.507 196.806 M 247.507 150.806 L 289.507 150.806"/><path fill="#007bff" d="M 473.507 244.806 C 473.507 244.806 455.507 227.806 418.507 233.806 C 414.507 204.806 383.507 187.806 383.507 187.806 C 383.507 187.806 354.507 222.806 375.507 261.806 C 369.507 264.806 359.507 268.806 344.507 268.806 L 69.507 268.806 C 64.507 287.806 64.507 413.806 202.507 413.806 C 301.507 413.806 375.507 367.806 410.507 283.806 C 462.507 287.806 473.507 244.806 473.507 244.806"/></svg>
|
||||||
<svg width="50px" height="50px" viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path stroke="#007bff" stroke-width="38" d="M 297.507 242.806 L 339.507 242.806 M 247.507 242.806 L 289.507 242.806 M 198.507 242.806 L 240.507 242.806 M 149.507 242.806 L 190.507 242.806 M 99.507 242.806 L 141.507 242.806 M 149.507 196.806 L 190.507 196.806 M 198.507 196.806 L 240.507 196.806 M 247.507 196.806 L 289.507 196.806 M 247.507 150.806 L 289.507 150.806"/>
|
|
||||||
<path fill="#007bff" d="M 473.507 244.806 C 473.507 244.806 455.507 227.806 418.507 233.806 C 414.507 204.806 383.507 187.806 383.507 187.806 C 383.507 187.806 354.507 222.806 375.507 261.806 C 369.507 264.806 359.507 268.806 344.507 268.806 L 69.507 268.806 C 64.507 287.806 64.507 413.806 202.507 413.806 C 301.507 413.806 375.507 367.806 410.507 283.806 C 462.507 287.806 473.507 244.806 473.507 244.806"/>
|
|
||||||
</svg>
|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 921 B After Width: | Height: | Size: 869 B |
@@ -1,4 +1 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-pdf" viewBox="0 0 16 16">
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-pdf" viewBox="0 0 16 16"><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/><path d="M4.603 14.087a.8.8 0 0 1-.438-.42c-.195-.388-.13-.776.08-1.102.198-.307.526-.568.897-.787a7.7 7.7 0 0 1 1.482-.645 20 20 0 0 0 1.062-2.227 7.3 7.3 0 0 1-.43-1.295c-.086-.4-.119-.796-.046-1.136.075-.354.274-.672.65-.823.192-.077.4-.12.602-.077a.7.7 0 0 1 .477.365c.088.164.12.356.127.538.007.188-.012.396-.047.614-.084.51-.27 1.134-.52 1.794a11 11 0 0 0 .98 1.686 5.8 5.8 0 0 1 1.334.05c.364.066.734.195.96.465.12.144.193.32.2.518.007.192-.047.382-.138.563a1.04 1.04 0 0 1-.354.416.86.86 0 0 1-.51.138c-.331-.014-.654-.196-.933-.417a5.7 5.7 0 0 1-.911-.95 11.7 11.7 0 0 0-1.997.406 11.3 11.3 0 0 1-1.02 1.51c-.292.35-.609.656-.927.787a.8.8 0 0 1-.58.029m1.379-1.901q-.25.115-.459.238c-.328.194-.541.383-.647.547-.094.145-.096.25-.04.361q.016.032.026.044l.035-.012c.137-.056.355-.235.635-.572a8 8 0 0 0 .45-.606m1.64-1.33a13 13 0 0 1 1.01-.193 12 12 0 0 1-.51-.858 21 21 0 0 1-.5 1.05zm2.446.45q.226.245.435.41c.24.19.407.253.498.256a.1.1 0 0 0 .07-.015.3.3 0 0 0 .094-.125.44.44 0 0 0 .059-.2.1.1 0 0 0-.026-.063c-.052-.062-.2-.152-.518-.209a4 4 0 0 0-.612-.053zM8.078 7.8a7 7 0 0 0 .2-.828q.046-.282.038-.465a.6.6 0 0 0-.032-.198.5.5 0 0 0-.145.04c-.087.035-.158.106-.196.283-.04.192-.03.469.046.822q.036.167.09.346z"/></svg>
|
||||||
<path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
|
|
||||||
<path d="M4.603 14.087a.8.8 0 0 1-.438-.42c-.195-.388-.13-.776.08-1.102.198-.307.526-.568.897-.787a7.7 7.7 0 0 1 1.482-.645 20 20 0 0 0 1.062-2.227 7.3 7.3 0 0 1-.43-1.295c-.086-.4-.119-.796-.046-1.136.075-.354.274-.672.65-.823.192-.077.4-.12.602-.077a.7.7 0 0 1 .477.365c.088.164.12.356.127.538.007.188-.012.396-.047.614-.084.51-.27 1.134-.52 1.794a11 11 0 0 0 .98 1.686 5.8 5.8 0 0 1 1.334.05c.364.066.734.195.96.465.12.144.193.32.2.518.007.192-.047.382-.138.563a1.04 1.04 0 0 1-.354.416.86.86 0 0 1-.51.138c-.331-.014-.654-.196-.933-.417a5.7 5.7 0 0 1-.911-.95 11.7 11.7 0 0 0-1.997.406 11.3 11.3 0 0 1-1.02 1.51c-.292.35-.609.656-.927.787a.8.8 0 0 1-.58.029m1.379-1.901q-.25.115-.459.238c-.328.194-.541.383-.647.547-.094.145-.096.25-.04.361q.016.032.026.044l.035-.012c.137-.056.355-.235.635-.572a8 8 0 0 0 .45-.606m1.64-1.33a13 13 0 0 1 1.01-.193 12 12 0 0 1-.51-.858 21 21 0 0 1-.5 1.05zm2.446.45q.226.245.435.41c.24.19.407.253.498.256a.1.1 0 0 0 .07-.015.3.3 0 0 0 .094-.125.44.44 0 0 0 .059-.2.1.1 0 0 0-.026-.063c-.052-.062-.2-.152-.518-.209a4 4 0 0 0-.612-.053zM8.078 7.8a7 7 0 0 0 .2-.828q.046-.282.038-.465a.6.6 0 0 0-.032-.198.5.5 0 0 0-.145.04c-.087.035-.158.106-.196.283-.04.192-.03.469.046.822q.036.167.09.346z"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
@@ -1,7 +1 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-bg" viewBox="0 0 640 480">
|
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-bg" viewBox="0 0 640 480"><g fill-rule="evenodd" stroke-width="1pt"><path fill="#d62612" d="M0 320h640v160H0z"/><path fill="#fff" d="M0 0h640v160H0z"/><path fill="#00966e" d="M0 160h640v160H0z"/></g></svg>
|
||||||
<g fill-rule="evenodd" stroke-width="1pt">
|
|
||||||
<path fill="#d62612" d="M0 320h640v160H0z"/>
|
|
||||||
<path fill="#fff" d="M0 0h640v160H0z"/>
|
|
||||||
<path fill="#00966e" d="M0 160h640v160H0z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 283 B After Width: | Height: | Size: 260 B |