mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2024-11-13 03:00:10 +01:00
Merge branch 'main' into bugfix/1214-grab-zero-byte-pdf
This commit is contained in:
commit
17ef2e9b5d
25
Dockerfile
25
Dockerfile
@ -1,5 +1,5 @@
|
|||||||
# Main stage
|
# Main stage
|
||||||
FROM alpine:20240329
|
FROM alpine:3.20.0
|
||||||
|
|
||||||
# Copy necessary files
|
# Copy necessary files
|
||||||
COPY scripts /scripts
|
COPY scripts /scripts
|
||||||
@ -10,35 +10,33 @@ COPY build/libs/*.jar app.jar
|
|||||||
|
|
||||||
ARG VERSION_TAG
|
ARG VERSION_TAG
|
||||||
|
|
||||||
|
|
||||||
# Set Environment Variables
|
# Set Environment Variables
|
||||||
ENV DOCKER_ENABLE_SECURITY=false \
|
ENV DOCKER_ENABLE_SECURITY=false \
|
||||||
VERSION_TAG=$VERSION_TAG \
|
VERSION_TAG=$VERSION_TAG \
|
||||||
JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS -XX:MaxRAMPercentage=75" \
|
JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS -XX:MaxRAMPercentage=75" \
|
||||||
HOME=/home/stirlingpdfuser \
|
HOME=/home/stirlingpdfuser \
|
||||||
PUID=1000 \
|
PUID=1000 \
|
||||||
PGID=1000 \
|
PGID=1000 \
|
||||||
UMASK=022
|
UMASK=022
|
||||||
|
|
||||||
|
|
||||||
# JDK for app
|
# JDK for app
|
||||||
RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /etc/apk/repositories && \
|
RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /etc/apk/repositories && \
|
||||||
echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/community" | tee -a /etc/apk/repositories && \
|
echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/community" | tee -a /etc/apk/repositories && \
|
||||||
echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/testing" | tee -a /etc/apk/repositories && \
|
echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/testing" | tee -a /etc/apk/repositories && \
|
||||||
apk update && \
|
apk upgrade --no-cache -a && \
|
||||||
apk add --no-cache \
|
apk add --no-cache \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
tzdata \
|
tzdata \
|
||||||
tini \
|
tini \
|
||||||
openssl \
|
|
||||||
openssl-dev \
|
|
||||||
bash \
|
bash \
|
||||||
curl \
|
curl \
|
||||||
openjdk21-jre \
|
|
||||||
su-exec \
|
|
||||||
shadow \
|
shadow \
|
||||||
|
su-exec \
|
||||||
|
openssl \
|
||||||
|
openssl-dev \
|
||||||
|
openjdk21-jre \
|
||||||
# Doc conversion
|
# Doc conversion
|
||||||
libreoffice@testing \
|
libreoffice \
|
||||||
# pdftohtml
|
# pdftohtml
|
||||||
poppler-utils \
|
poppler-utils \
|
||||||
# OCR MY PDF (unpaper for descew and other advanced featues)
|
# OCR MY PDF (unpaper for descew and other advanced featues)
|
||||||
@ -60,10 +58,9 @@ openssl-dev \
|
|||||||
addgroup -S stirlingpdfgroup && adduser -S stirlingpdfuser -G stirlingpdfgroup && \
|
addgroup -S stirlingpdfgroup && adduser -S stirlingpdfuser -G stirlingpdfgroup && \
|
||||||
chown -R stirlingpdfuser:stirlingpdfgroup $HOME /scripts /usr/share/fonts/opentype/noto /configs /customFiles /pipeline && \
|
chown -R stirlingpdfuser:stirlingpdfgroup $HOME /scripts /usr/share/fonts/opentype/noto /configs /customFiles /pipeline && \
|
||||||
chown stirlingpdfuser:stirlingpdfgroup /app.jar && \
|
chown stirlingpdfuser:stirlingpdfgroup /app.jar && \
|
||||||
tesseract --list-langs && \
|
tesseract --list-langs
|
||||||
rm -rf /var/cache/apk/*
|
|
||||||
|
|
||||||
EXPOSE 8080
|
EXPOSE 8080/tcp
|
||||||
|
|
||||||
# Set user and run command
|
# Set user and run command
|
||||||
ENTRYPOINT ["tini", "--", "/scripts/init.sh"]
|
ENTRYPOINT ["tini", "--", "/scripts/init.sh"]
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# use alpine
|
# use alpine
|
||||||
FROM alpine:3.19.1
|
FROM alpine:3.20.0
|
||||||
|
|
||||||
ARG VERSION_TAG
|
ARG VERSION_TAG
|
||||||
|
|
||||||
@ -8,7 +8,7 @@ ENV DOCKER_ENABLE_SECURITY=false \
|
|||||||
HOME=/home/stirlingpdfuser \
|
HOME=/home/stirlingpdfuser \
|
||||||
VERSION_TAG=$VERSION_TAG \
|
VERSION_TAG=$VERSION_TAG \
|
||||||
JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS -XX:MaxRAMPercentage=75" \
|
JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS -XX:MaxRAMPercentage=75" \
|
||||||
PUID=1000 \
|
PUID=1000 \
|
||||||
PGID=1000 \
|
PGID=1000 \
|
||||||
UMASK=022
|
UMASK=022
|
||||||
|
|
||||||
@ -18,24 +18,23 @@ COPY scripts/init-without-ocr.sh /scripts/init-without-ocr.sh
|
|||||||
COPY pipeline /pipeline
|
COPY pipeline /pipeline
|
||||||
COPY build/libs/*.jar app.jar
|
COPY build/libs/*.jar app.jar
|
||||||
|
|
||||||
|
|
||||||
# Set up necessary directories and permissions
|
# Set up necessary directories and permissions
|
||||||
|
RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /etc/apk/repositories && \
|
||||||
RUN mkdir /configs /logs /customFiles && \
|
echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/community" | tee -a /etc/apk/repositories && \
|
||||||
chmod +x /scripts/*.sh && \
|
echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/testing" | tee -a /etc/apk/repositories && \
|
||||||
|
apk upgrade --no-cache -a && \
|
||||||
apk add --no-cache \
|
apk add --no-cache \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
tzdata \
|
tzdata \
|
||||||
tini \
|
tini \
|
||||||
bash \
|
bash \
|
||||||
curl \
|
curl \
|
||||||
su-exec \
|
|
||||||
shadow \
|
shadow \
|
||||||
|
su-exec \
|
||||||
openjdk21-jre && \
|
openjdk21-jre && \
|
||||||
echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /etc/apk/repositories && \
|
|
||||||
echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/community" | tee -a /etc/apk/repositories && \
|
|
||||||
echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/testing" | tee -a /etc/apk/repositories && \
|
|
||||||
# User permissions
|
# User permissions
|
||||||
|
mkdir /configs /logs /customFiles && \
|
||||||
|
chmod +x /scripts/*.sh && \
|
||||||
addgroup -S stirlingpdfgroup && adduser -S stirlingpdfuser -G stirlingpdfgroup && \
|
addgroup -S stirlingpdfgroup && adduser -S stirlingpdfuser -G stirlingpdfgroup && \
|
||||||
chown -R stirlingpdfuser:stirlingpdfgroup $HOME /scripts /configs /customFiles /pipeline && \
|
chown -R stirlingpdfuser:stirlingpdfgroup $HOME /scripts /configs /customFiles /pipeline && \
|
||||||
chown stirlingpdfuser:stirlingpdfgroup /app.jar
|
chown stirlingpdfuser:stirlingpdfgroup /app.jar
|
||||||
@ -43,9 +42,8 @@ RUN mkdir /configs /logs /customFiles && \
|
|||||||
# Set environment variables
|
# Set environment variables
|
||||||
ENV ENDPOINTS_GROUPS_TO_REMOVE=CLI
|
ENV ENDPOINTS_GROUPS_TO_REMOVE=CLI
|
||||||
|
|
||||||
EXPOSE 8080
|
EXPOSE 8080/tcp
|
||||||
|
|
||||||
ENTRYPOINT ["tini", "--", "/scripts/init-without-ocr.sh"]
|
|
||||||
|
|
||||||
# Run the application
|
# Run the application
|
||||||
|
ENTRYPOINT ["tini", "--", "/scripts/init-without-ocr.sh"]
|
||||||
CMD ["java", "-Dfile.encoding=UTF-8", "-jar", "/app.jar"]
|
CMD ["java", "-Dfile.encoding=UTF-8", "-jar", "/app.jar"]
|
||||||
|
36
README.md
36
README.md
@ -5,7 +5,7 @@
|
|||||||
[![Discord](https://img.shields.io/discord/1068636748814483718?label=Discord)](https://discord.gg/Cn8pWhQRxZ)
|
[![Discord](https://img.shields.io/discord/1068636748814483718?label=Discord)](https://discord.gg/Cn8pWhQRxZ)
|
||||||
[![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/frooodle/s-pdf/latest)](https://github.com/Stirling-Tools/Stirling-PDF/)
|
[![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/frooodle/s-pdf/latest)](https://github.com/Stirling-Tools/Stirling-PDF/)
|
||||||
[![GitHub Repo stars](https://img.shields.io/github/stars/stirling-tools/stirling-pdf?style=social)](https://github.com/Stirling-Tools/stirling-pdf)
|
[![GitHub Repo stars](https://img.shields.io/github/stars/stirling-tools/stirling-pdf?style=social)](https://github.com/Stirling-Tools/stirling-pdf)
|
||||||
[![Paypal Donate](https://img.shields.io/badge/Paypal%20Donate-yellow?style=flat&logo=paypal)](https://www.paypal.com/paypalme/froodleplex)
|
[![Paypal Donate](https://img.shields.io/badge/Paypal%20Donate-yellow?style=flat&logo=paypal)](https://www.paypal.com/donate/?hosted_button_id=MN7JPG5G6G3JL)
|
||||||
[![Github Sponsor](https://img.shields.io/badge/Github%20Sponsor-yellow?style=flat&logo=github)](https://github.com/sponsors/Frooodle)
|
[![Github Sponsor](https://img.shields.io/badge/Github%20Sponsor-yellow?style=flat&logo=github)](https://github.com/sponsors/Frooodle)
|
||||||
|
|
||||||
[![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/Stirling-Tools/Stirling-PDF/tree/digitalOcean&refcode=c3210994b1af)
|
[![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/Stirling-Tools/Stirling-PDF/tree/digitalOcean&refcode=c3210994b1af)
|
||||||
@ -167,12 +167,12 @@ Stirling PDF currently supports 27!
|
|||||||
| English (US) (en_US) | ![100%](https://geps.dev/progress/100) |
|
| English (US) (en_US) | ![100%](https://geps.dev/progress/100) |
|
||||||
| Arabic (العربية) (ar_AR) | ![41%](https://geps.dev/progress/41) |
|
| Arabic (العربية) (ar_AR) | ![41%](https://geps.dev/progress/41) |
|
||||||
| German (Deutsch) (de_DE) | ![97%](https://geps.dev/progress/97) |
|
| German (Deutsch) (de_DE) | ![97%](https://geps.dev/progress/97) |
|
||||||
| French (Français) (fr_FR) | ![89%](https://geps.dev/progress/89) |
|
| French (Français) (fr_FR) | ![94%](https://geps.dev/progress/94) |
|
||||||
| Spanish (Español) (es_ES) | ![97%](https://geps.dev/progress/97) |
|
| Spanish (Español) (es_ES) | ![97%](https://geps.dev/progress/97) |
|
||||||
| Simplified Chinese (简体中文) (zh_CN) | ![96%](https://geps.dev/progress/96) |
|
| Simplified Chinese (简体中文) (zh_CN) | ![96%](https://geps.dev/progress/96) |
|
||||||
| Traditional Chinese (繁體中文) (zh_TW) | ![96%](https://geps.dev/progress/96) |
|
| Traditional Chinese (繁體中文) (zh_TW) | ![96%](https://geps.dev/progress/96) |
|
||||||
| Catalan (Català) (ca_CA) | ![50%](https://geps.dev/progress/50) |
|
| Catalan (Català) (ca_CA) | ![50%](https://geps.dev/progress/50) |
|
||||||
| Italian (Italiano) (it_IT) | ![97%](https://geps.dev/progress/97) |
|
| Italian (Italiano) (it_IT) | ![99%](https://geps.dev/progress/99) |
|
||||||
| Swedish (Svenska) (sv_SE) | ![41%](https://geps.dev/progress/41) |
|
| Swedish (Svenska) (sv_SE) | ![41%](https://geps.dev/progress/41) |
|
||||||
| Polish (Polski) (pl_PL) | ![43%](https://geps.dev/progress/43) |
|
| Polish (Polski) (pl_PL) | ![43%](https://geps.dev/progress/43) |
|
||||||
| Romanian (Română) (ro_RO) | ![40%](https://geps.dev/progress/40) |
|
| Romanian (Română) (ro_RO) | ![40%](https://geps.dev/progress/40) |
|
||||||
@ -183,7 +183,7 @@ Stirling PDF currently supports 27!
|
|||||||
| Japanese (日本語) (ja_JP) | ![89%](https://geps.dev/progress/89) |
|
| Japanese (日本語) (ja_JP) | ![89%](https://geps.dev/progress/89) |
|
||||||
| Dutch (Nederlands) (nl_NL) | ![86%](https://geps.dev/progress/86) |
|
| Dutch (Nederlands) (nl_NL) | ![86%](https://geps.dev/progress/86) |
|
||||||
| Greek (Ελληνικά) (el_GR) | ![87%](https://geps.dev/progress/87) |
|
| Greek (Ελληνικά) (el_GR) | ![87%](https://geps.dev/progress/87) |
|
||||||
| Turkish (Türkçe) (tr_TR) | ![97%](https://geps.dev/progress/97) |
|
| Turkish (Türkçe) (tr_TR) | ![99%](https://geps.dev/progress/99) |
|
||||||
| Indonesia (Bahasa Indonesia) (id_ID) | ![80%](https://geps.dev/progress/80) |
|
| Indonesia (Bahasa Indonesia) (id_ID) | ![80%](https://geps.dev/progress/80) |
|
||||||
| Hindi (हिंदी) (hi_IN) | ![81%](https://geps.dev/progress/81) |
|
| Hindi (हिंदी) (hi_IN) | ![81%](https://geps.dev/progress/81) |
|
||||||
| Hungarian (Magyar) (hu_HU) | ![79%](https://geps.dev/progress/79) |
|
| Hungarian (Magyar) (hu_HU) | ![79%](https://geps.dev/progress/79) |
|
||||||
@ -222,27 +222,41 @@ The Current list of settings is
|
|||||||
```yaml
|
```yaml
|
||||||
security:
|
security:
|
||||||
enableLogin: false # set to 'true' to enable login
|
enableLogin: false # set to 'true' to enable login
|
||||||
csrfDisabled: true
|
csrfDisabled: true # Set to 'true' to disable CSRF protection (not recommended for production)
|
||||||
|
loginAttemptCount: 5 # lock user account after 5 tries
|
||||||
|
loginResetTimeMinutes: 120 # lock account for 2 hours after x attempts
|
||||||
|
# initialLogin:
|
||||||
|
# username: "admin" # Initial username for the first login (these are defaulted)
|
||||||
|
# password: "stirling" # Initial password for the first login
|
||||||
|
# oauth2:
|
||||||
|
# enabled: false # set to 'true' to enable login (Note: enableLogin must also be 'true' for this to work)
|
||||||
|
# issuer: "" # set to any provider that supports OpenID Connect Discovery (/.well-known/openid-configuration) end-point
|
||||||
|
# clientId: "" # Client ID from your provider
|
||||||
|
# clientSecret: "" # Client Secret from your provider
|
||||||
|
# autoCreateUser: false # set to 'true' to allow auto-creation of non-existing users
|
||||||
|
# useAsUsername: "email" # Default is 'email'; custom fields can be used as the username
|
||||||
|
# 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
|
||||||
customStaticFilePath: '/customFiles/static/' # Directory path for custom static files
|
enableAlphaFunctionality: false # Set to enable functionality which might need more testing before it fully goes live (This feature might make no changes)
|
||||||
showUpdate: true # see when a new update is available
|
showUpdate: true # see when a new update is available
|
||||||
showUpdateOnlyAdmin: false # Only admins can see when a new update is available, depending on showUpdate it must be set to 'true'
|
showUpdateOnlyAdmin: false # Only admins can see when a new update is available, depending on showUpdate it must be set to 'true'
|
||||||
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: exampleAppName # Application's visible name
|
appName: null # Application's visible name
|
||||||
# homeDescription: I am a description # Short description or tagline shown on homepage.
|
homeDescription: null # Short description or tagline shown on homepage.
|
||||||
# appNameNavbar: navbarName # Name displayed on the navigation bar
|
appNameNavbar: null # 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'])
|
||||||
groupsToRemove: [] # List groups to disable (e.g. ['LibreOffice'])
|
groupsToRemove: [] # List groups to disable (e.g. ['LibreOffice'])
|
||||||
|
|
||||||
metrics:
|
metrics:
|
||||||
enabled: true # 'true' to enable Info APIs endpoints (view http://localhost:8080/swagger-ui/index.html#/API to learn more), 'false' to disable
|
enabled: true # 'true' to enable Info APIs (`/api/*`) endpoints, 'false' to disable
|
||||||
```
|
```
|
||||||
|
|
||||||
There is an additional config file ``/configs/custom_settings.yml`` were users familiar with java and spring application.properties can input their own settings on-top of Stirling-PDFs existing ones
|
There is an additional config file ``/configs/custom_settings.yml`` were users familiar with java and spring application.properties can input their own settings on-top of Stirling-PDFs existing ones
|
||||||
|
@ -12,7 +12,7 @@ plugins {
|
|||||||
import com.github.jk1.license.render.*
|
import com.github.jk1.license.render.*
|
||||||
|
|
||||||
group = 'stirling.software'
|
group = 'stirling.software'
|
||||||
version = '0.24.0'
|
version = '0.24.6'
|
||||||
|
|
||||||
//17 is lowest but we support and recommend 21
|
//17 is lowest but we support and recommend 21
|
||||||
sourceCompatibility = '17'
|
sourceCompatibility = '17'
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
appVersion: 0.24.0
|
appVersion: 0.24.6
|
||||||
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
|
||||||
|
@ -22,10 +22,11 @@ services:
|
|||||||
DOCKER_ENABLE_SECURITY: "true"
|
DOCKER_ENABLE_SECURITY: "true"
|
||||||
SECURITY_ENABLELOGIN: "true"
|
SECURITY_ENABLELOGIN: "true"
|
||||||
SECURITY_OAUTH2_ENABLED: "true"
|
SECURITY_OAUTH2_ENABLED: "true"
|
||||||
SECURITY_OAUTH2_AUTOCREATEUSER: "true" # This is set to true to allow auto-creation of non-existing users in Striling-PDF
|
SECURITY_OAUTH2_AUTOCREATEUSER: "true" # This is set to true to allow auto-creation of non-existing users in Stirling-PDF
|
||||||
SECURITY_OAUTH2_ISSUER: "https://accounts.google.com" # Change with any other provider that supports OpenID Connect Discovery (/.well-known/openid-configuration) end-point
|
SECURITY_OAUTH2_ISSUER: "https://accounts.google.com" # Change with any other provider that supports OpenID Connect Discovery (/.well-known/openid-configuration) end-point
|
||||||
SECURITY_OAUTH2_CLIENTID: "<YOUR CLIENT ID>.apps.googleusercontent.com" # Client ID from your provider
|
SECURITY_OAUTH2_CLIENTID: "<YOUR CLIENT ID>.apps.googleusercontent.com" # Client ID from your provider
|
||||||
SECURITY_OAUTH2_CLIENTSECRET: "<YOUR CLIENT SECRET>" # Client Secret from your provider
|
SECURITY_OAUTH2_CLIENTSECRET: "<YOUR CLIENT SECRET>" # Client Secret from your provider
|
||||||
|
SECURITY_OAUTH2_SCOPES: "openid,profile,email" # Expected OAuth2 Scope
|
||||||
PUID: 1002
|
PUID: 1002
|
||||||
PGID: 1002
|
PGID: 1002
|
||||||
UMASK: "022"
|
UMASK: "022"
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 203 KiB After Width: | Height: | Size: 166 KiB |
@ -61,12 +61,33 @@ public class ConfigInitializer
|
|||||||
List<String> userLines =
|
List<String> userLines =
|
||||||
Files.exists(userPath) ? Files.readAllLines(userPath) : new ArrayList<>();
|
Files.exists(userPath) ? Files.readAllLines(userPath) : new ArrayList<>();
|
||||||
|
|
||||||
Map<String, String> templateEntries = extractEntries(templateLines);
|
List<String> resultLines = new ArrayList<>();
|
||||||
Map<String, String> userEntries = extractEntries(userLines);
|
|
||||||
|
|
||||||
List<String> mergedLines = mergeConfigs(templateLines, templateEntries, userEntries);
|
for (String templateLine : templateLines) {
|
||||||
mergedLines = cleanInvalidYamlEntries(mergedLines);
|
// Check if the line is a comment
|
||||||
Files.write(userPath, mergedLines);
|
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);
|
||||||
|
} 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);
|
||||||
|
}
|
||||||
|
// Handle empty lines
|
||||||
|
else if (templateLine.trim().length() == 0) {
|
||||||
|
resultLines.add("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write the result to the user settings file
|
||||||
|
Files.write(userPath, resultLines);
|
||||||
}
|
}
|
||||||
|
|
||||||
Path customSettingsPath = Paths.get("configs", "custom_settings.yml");
|
Path customSettingsPath = Paths.get("configs", "custom_settings.yml");
|
||||||
@ -74,129 +95,42 @@ public class ConfigInitializer
|
|||||||
Files.createFile(customSettingsPath);
|
Files.createFile(customSettingsPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Map<String, String> extractEntries(List<String> lines) {
|
|
||||||
Map<String, String> entries = new HashMap<>();
|
|
||||||
StringBuilder currentEntry = new StringBuilder();
|
//TODO check parent value instead of just indent lines for duplicate keys (like enabled etc)
|
||||||
String currentKey = null;
|
private static void addLine(List<String> resultLines, List<String> userLines, String templateLine, String key) {
|
||||||
int blockIndent = -1;
|
boolean added = false;
|
||||||
|
int templateIndentationLevel = getIndentationLevel(templateLine);
|
||||||
for (String line : lines) {
|
for (String settingsLine : userLines) {
|
||||||
if (line.trim().isEmpty()) {
|
if (settingsLine.trim().startsWith(key + ":")) {
|
||||||
if (currentKey != null) {
|
int settingsIndentationLevel = getIndentationLevel(settingsLine);
|
||||||
currentEntry.append(line).append("\n");
|
// Check if it is correct settingsLine and has the same parent as templateLine
|
||||||
|
if (settingsIndentationLevel == templateIndentationLevel) {
|
||||||
|
resultLines.add(settingsLine);
|
||||||
|
added = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
int indentLevel = getIndentationLevel(line);
|
|
||||||
if (line.trim().startsWith("#")) {
|
|
||||||
if (indentLevel <= blockIndent || blockIndent == -1) {
|
|
||||||
if (currentKey != null) {
|
|
||||||
entries.put(currentKey, currentEntry.toString().trim());
|
|
||||||
currentEntry = new StringBuilder();
|
|
||||||
}
|
|
||||||
currentKey = line.trim().replaceAll("#", "").split(":")[0].trim();
|
|
||||||
blockIndent = indentLevel;
|
|
||||||
}
|
|
||||||
currentEntry.append(line).append("\n");
|
|
||||||
} else if (indentLevel == 0 || indentLevel <= blockIndent) {
|
|
||||||
if (currentKey != null) {
|
|
||||||
entries.put(currentKey, currentEntry.toString().trim());
|
|
||||||
currentEntry = new StringBuilder();
|
|
||||||
}
|
|
||||||
currentKey = line.split(":")[0].trim();
|
|
||||||
blockIndent = indentLevel;
|
|
||||||
currentEntry.append(line).append("\n");
|
|
||||||
} else {
|
|
||||||
currentEntry.append(line).append("\n");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!added) {
|
||||||
if (currentKey != null) {
|
resultLines.add(templateLine);
|
||||||
entries.put(currentKey, currentEntry.toString().trim());
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return entries;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static List<String> mergeConfigs(
|
|
||||||
List<String> templateLines,
|
|
||||||
Map<String, String> templateEntries,
|
|
||||||
Map<String, String> userEntries) {
|
|
||||||
List<String> mergedLines = new ArrayList<>();
|
|
||||||
Set<String> handledKeys = new HashSet<>();
|
|
||||||
|
|
||||||
String currentBlockKey = null;
|
|
||||||
int blockIndent = -1;
|
|
||||||
|
|
||||||
for (String line : templateLines) {
|
|
||||||
if (line.trim().isEmpty()) {
|
|
||||||
mergedLines.add(line);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
int indentLevel = getIndentationLevel(line);
|
|
||||||
if (indentLevel == 0 || (indentLevel <= blockIndent && !line.trim().startsWith("#"))) {
|
|
||||||
currentBlockKey = line.split(":")[0].trim();
|
|
||||||
blockIndent = indentLevel;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (userEntries.containsKey(currentBlockKey)
|
|
||||||
&& !handledKeys.contains(currentBlockKey)) {
|
|
||||||
mergedLines.add(userEntries.get(currentBlockKey));
|
|
||||||
handledKeys.add(currentBlockKey);
|
|
||||||
} else if (!handledKeys.contains(currentBlockKey)) {
|
|
||||||
mergedLines.add(line);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return mergedLines;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static List<String> cleanInvalidYamlEntries(List<String> lines) {
|
|
||||||
List<String> cleanedLines = new ArrayList<>();
|
|
||||||
for (int i = 0; i < lines.size(); i++) {
|
|
||||||
String line = lines.get(i);
|
|
||||||
String trimmedLine = line.trim();
|
|
||||||
|
|
||||||
if (trimmedLine.startsWith("#")
|
|
||||||
|| !trimmedLine.endsWith(":")
|
|
||||||
|| trimmedLine.contains(" ")) {
|
|
||||||
cleanedLines.add(line);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isKeyWithoutChildrenOrValue(i, lines)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanedLines.add(line);
|
|
||||||
}
|
|
||||||
return cleanedLines;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static boolean isKeyWithoutChildrenOrValue(int currentIndex, List<String> lines) {
|
|
||||||
if (currentIndex + 1 < lines.size()) {
|
|
||||||
String currentLine = lines.get(currentIndex);
|
|
||||||
String nextLine = lines.get(currentIndex + 1);
|
|
||||||
int currentIndentation = getIndentationLevel(currentLine);
|
|
||||||
int nextIndentation = getIndentationLevel(nextLine);
|
|
||||||
|
|
||||||
// If the next line is less or equally indented, it's not a child or value
|
|
||||||
return nextIndentation <= currentIndentation;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If it's the last line, then it definitely has no children or value
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static int getIndentationLevel(String line) {
|
private static int getIndentationLevel(String line) {
|
||||||
int count = 0;
|
int indentationLevel = 0;
|
||||||
for (char ch : line.toCharArray()) {
|
String trimmedLine = line.trim();
|
||||||
if (ch == ' ') count++;
|
if (trimmedLine.startsWith("#")) {
|
||||||
else break;
|
line = trimmedLine.substring(1);
|
||||||
}
|
}
|
||||||
return count;
|
for (char c : line.toCharArray()) {
|
||||||
|
if (c == ' ') {
|
||||||
|
indentationLevel++;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return indentationLevel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,10 +54,8 @@ public class InitialSecuritySetup {
|
|||||||
&& !initialPassword.isEmpty()
|
&& !initialPassword.isEmpty()
|
||||||
&& !userService.findByUsernameIgnoreCase(initialUsername).isPresent()) {
|
&& !userService.findByUsernameIgnoreCase(initialUsername).isPresent()) {
|
||||||
try {
|
try {
|
||||||
if (userService.isUsernameValid(initialUsername)) {
|
userService.saveUser(initialUsername, initialPassword, Role.ADMIN.getRoleId());
|
||||||
userService.saveUser(initialUsername, initialPassword, Role.ADMIN.getRoleId());
|
logger.info("Admin user created: " + initialUsername);
|
||||||
logger.info("Admin user created: " + initialUsername);
|
|
||||||
}
|
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
logger.error("Failed to initialize security setup", e);
|
logger.error("Failed to initialize security setup", e);
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
|
@ -197,7 +197,13 @@ public class UserService implements UserServiceInterface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasUsers() {
|
public boolean hasUsers() {
|
||||||
return userRepository.count() > 0;
|
long userCount = userRepository.count();
|
||||||
|
if (userRepository
|
||||||
|
.findByUsernameIgnoreCase(Role.INTERNAL_API_USER.getRoleId())
|
||||||
|
.isPresent()) {
|
||||||
|
userCount -= 1;
|
||||||
|
}
|
||||||
|
return userCount > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateUserSettings(String username, Map<String, String> updates) {
|
public void updateUserSettings(String username, Map<String, String> updates) {
|
||||||
|
@ -327,9 +327,6 @@ public class ApplicationProperties {
|
|||||||
public static class System {
|
public static class System {
|
||||||
private String defaultLocale;
|
private String defaultLocale;
|
||||||
private Boolean googlevisibility;
|
private Boolean googlevisibility;
|
||||||
private String rootURIPath;
|
|
||||||
private String customStaticFilePath;
|
|
||||||
private Integer maxFileSize;
|
|
||||||
private boolean showUpdate;
|
private boolean showUpdate;
|
||||||
private Boolean showUpdateOnlyAdmin;
|
private Boolean showUpdateOnlyAdmin;
|
||||||
private boolean customHTMLFiles;
|
private boolean customHTMLFiles;
|
||||||
@ -384,29 +381,8 @@ public class ApplicationProperties {
|
|||||||
this.googlevisibility = googlevisibility;
|
this.googlevisibility = googlevisibility;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getRootURIPath() {
|
|
||||||
return rootURIPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRootURIPath(String rootURIPath) {
|
|
||||||
this.rootURIPath = rootURIPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCustomStaticFilePath() {
|
|
||||||
return customStaticFilePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCustomStaticFilePath(String customStaticFilePath) {
|
|
||||||
this.customStaticFilePath = customStaticFilePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getMaxFileSize() {
|
|
||||||
return maxFileSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMaxFileSize(Integer maxFileSize) {
|
|
||||||
this.maxFileSize = maxFileSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
@ -414,12 +390,6 @@ public class ApplicationProperties {
|
|||||||
+ defaultLocale
|
+ defaultLocale
|
||||||
+ ", googlevisibility="
|
+ ", googlevisibility="
|
||||||
+ googlevisibility
|
+ googlevisibility
|
||||||
+ ", rootURIPath="
|
|
||||||
+ rootURIPath
|
|
||||||
+ ", customStaticFilePath="
|
|
||||||
+ customStaticFilePath
|
|
||||||
+ ", maxFileSize="
|
|
||||||
+ maxFileSize
|
|
||||||
+ ", enableAlphaFunctionality="
|
+ ", enableAlphaFunctionality="
|
||||||
+ enableAlphaFunctionality
|
+ enableAlphaFunctionality
|
||||||
+ ", showUpdate="
|
+ ", showUpdate="
|
||||||
|
1075
src/main/resources/messages_cs_CZ.properties
Normal file
1075
src/main/resources/messages_cs_CZ.properties
Normal file
File diff suppressed because it is too large
Load Diff
@ -17,7 +17,7 @@ true=Vrai
|
|||||||
false=Faux
|
false=Faux
|
||||||
unknown=Inconnu
|
unknown=Inconnu
|
||||||
save=Enregistrer
|
save=Enregistrer
|
||||||
saveToBrowser=Save to Browser
|
saveToBrowser=Enregistrer dans le navigateur
|
||||||
close=Fermer
|
close=Fermer
|
||||||
filesSelected=fichiers sélectionnés
|
filesSelected=fichiers sélectionnés
|
||||||
noFavourites=Aucun favori ajouté
|
noFavourites=Aucun favori ajouté
|
||||||
@ -57,10 +57,10 @@ 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.
|
||||||
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.
|
||||||
downgradeCurrentUserLongMessage=Impossible de rétrograder le rôle de l'utilisateur actuel. Par conséquent, l'utilisateur actuel ne sera pas affiché.
|
downgradeCurrentUserLongMessage=Impossible de rétrograder le rôle de l'utilisateur actuel. Par conséquent, l'utilisateur actuel ne sera pas affiché.
|
||||||
userAlreadyExistsOAuthMessage=The user already exists as an OAuth2 user.
|
userAlreadyExistsOAuthMessage=L'utilisateur existe déjà en tant qu'utilisateur OAuth2.
|
||||||
userAlreadyExistsWebMessage=The user already exists as an web user.
|
userAlreadyExistsWebMessage=L'utilisateur existe déjà en tant qu'utilisateur Web.
|
||||||
error=Erreur
|
error=Erreur
|
||||||
oops=Oups !
|
oops=Oups !
|
||||||
help=Aide
|
help=Aide
|
||||||
@ -105,25 +105,25 @@ pipelineOptions.validateButton=Valider
|
|||||||
#############
|
#############
|
||||||
# NAVBAR #
|
# NAVBAR #
|
||||||
#############
|
#############
|
||||||
navbar.favorite=Favorites
|
navbar.favorite=Favoris
|
||||||
navbar.darkmode=Mode sombre
|
navbar.darkmode=Mode sombre
|
||||||
navbar.language=Languages
|
navbar.language=Langages
|
||||||
navbar.settings=Paramètres
|
navbar.settings=Paramètres
|
||||||
navbar.allTools=Tools
|
navbar.allTools=OUtils
|
||||||
navbar.multiTool=Multi Tools
|
navbar.multiTool=Multi Outils
|
||||||
navbar.sections.organize=Organize
|
navbar.sections.organize=Oragnisation
|
||||||
navbar.sections.convertTo=Convert to PDF
|
navbar.sections.convertTo=Convertir en PDF
|
||||||
navbar.sections.convertFrom=Convert from PDF
|
navbar.sections.convertFrom=Convertir depuis PDF
|
||||||
navbar.sections.security=Sign & Security
|
navbar.sections.security=Signalisation et sécurité
|
||||||
navbar.sections.advance=Advanced
|
navbar.sections.advance=Mode avancé
|
||||||
navbar.sections.edit=View & Edit
|
navbar.sections.edit=Voir la modification
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# SETTINGS #
|
# SETTINGS #
|
||||||
#############
|
#############
|
||||||
settings.title=Paramètres
|
settings.title=Paramètres
|
||||||
settings.update=Mise à jour disponible
|
settings.update=Mise à jour disponible
|
||||||
settings.updateAvailable={0} is the current installed version. A new version ({1}) is available.
|
settings.updateAvailable={0} est la version actuellement installée. Une nouvelle version ({1}) est disponible.
|
||||||
settings.appVersion=Version de l’application :
|
settings.appVersion=Version de l’application :
|
||||||
settings.downloadOption.title=Choisissez l’option de téléchargement (pour les téléchargements à fichier unique non ZIP) :
|
settings.downloadOption.title=Choisissez l’option de téléchargement (pour les téléchargements à fichier unique non ZIP) :
|
||||||
settings.downloadOption.1=Ouvrir dans la même fenêtre
|
settings.downloadOption.1=Ouvrir dans la même fenêtre
|
||||||
@ -133,8 +133,8 @@ settings.zipThreshold=Compresser les fichiers en ZIP lorsque le nombre de fichie
|
|||||||
settings.signOut=Déconnexion
|
settings.signOut=Déconnexion
|
||||||
settings.accountSettings=Paramètres du compte
|
settings.accountSettings=Paramètres du compte
|
||||||
settings.bored.help=Enables easter egg game
|
settings.bored.help=Enables easter egg game
|
||||||
settings.cacheInputs.name=Save form inputs
|
settings.cacheInputs.name=Sauvegarder les entrées du formulaire
|
||||||
settings.cacheInputs.help=Enable to store previously used inputs for future runs
|
settings.cacheInputs.help=Permet de stocker les entrées précédemment utilisées pour les exécutions futures
|
||||||
|
|
||||||
changeCreds.title=Modifiez vos identifiants
|
changeCreds.title=Modifiez vos identifiants
|
||||||
changeCreds.header=Mettez à jour vos identifiants de connexion
|
changeCreds.header=Mettez à jour vos identifiants de connexion
|
||||||
@ -185,7 +185,7 @@ adminUserSettings.internalApiUser=Internal API User
|
|||||||
adminUserSettings.forceChange=Forcer l’utilisateur à changer son nom d’utilisateur/mot de passe lors de la connexion
|
adminUserSettings.forceChange=Forcer l’utilisateur à changer son nom d’utilisateur/mot de passe lors de la connexion
|
||||||
adminUserSettings.submit=Ajouter
|
adminUserSettings.submit=Ajouter
|
||||||
adminUserSettings.changeUserRole=Changer le rôle de l'utilisateur
|
adminUserSettings.changeUserRole=Changer le rôle de l'utilisateur
|
||||||
adminUserSettings.authenticated=Authenticated
|
adminUserSettings.authenticated=Authentifié
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# HOME-PAGE #
|
# HOME-PAGE #
|
||||||
@ -429,11 +429,11 @@ AddStampRequest.tags=Tampon,Ajouter,Stamp,Add image,center image,Watermark,PDF,E
|
|||||||
|
|
||||||
|
|
||||||
home.PDFToBook.title=PDF to Book
|
home.PDFToBook.title=PDF to Book
|
||||||
home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
|
home.PDFToBook.desc=Convertit le PDF en formats livre/bande dessinée à l'aide de calibre
|
||||||
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
home.BookToPDF.title=Book to PDF
|
home.BookToPDF.title=Book to PDF
|
||||||
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
|
home.BookToPDF.desc=Convertit les formats de livres/bandes dessinées en PDF à l'aide de calibre
|
||||||
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
|
||||||
|
|
||||||
|
|
||||||
@ -675,15 +675,15 @@ compare.submit=Comparer
|
|||||||
#BookToPDF
|
#BookToPDF
|
||||||
BookToPDF.title=Books and Comics to PDF
|
BookToPDF.title=Books and Comics to PDF
|
||||||
BookToPDF.header=Book to PDF
|
BookToPDF.header=Book to PDF
|
||||||
BookToPDF.credit=Uses Calibre
|
BookToPDF.credit=Utiliser Calibre
|
||||||
BookToPDF.submit=Convert
|
BookToPDF.submit=Convertir
|
||||||
|
|
||||||
#PDFToBook
|
#PDFToBook
|
||||||
PDFToBook.title=PDF to Book
|
PDFToBook.title=PDF to Book
|
||||||
PDFToBook.header=PDF to Book
|
PDFToBook.header=PDF to Book
|
||||||
PDFToBook.selectText.1=Format
|
PDFToBook.selectText.1=Format
|
||||||
PDFToBook.credit=Uses Calibre
|
PDFToBook.credit=Utiliser Calibre
|
||||||
PDFToBook.submit=Convert
|
PDFToBook.submit=Convertir
|
||||||
|
|
||||||
#sign
|
#sign
|
||||||
sign.title=Signer
|
sign.title=Signer
|
||||||
@ -704,7 +704,7 @@ repair.submit=Réparer
|
|||||||
#flatten
|
#flatten
|
||||||
flatten.title=Rendre inerte
|
flatten.title=Rendre inerte
|
||||||
flatten.header=Rendre inerte
|
flatten.header=Rendre inerte
|
||||||
flatten.flattenOnlyForms=Flatten only forms
|
flatten.flattenOnlyForms=Aplatir uniquement les formulaires
|
||||||
flatten.submit=Rendre inerte
|
flatten.submit=Rendre inerte
|
||||||
|
|
||||||
|
|
||||||
@ -752,7 +752,7 @@ extractImages.submit=Extraire
|
|||||||
fileToPDF.title=Fichier en PDF
|
fileToPDF.title=Fichier en PDF
|
||||||
fileToPDF.header=Convertir un fichier en PDF
|
fileToPDF.header=Convertir un fichier en PDF
|
||||||
fileToPDF.credit=Ce service utilise LibreOffice et Unoconv pour la conversion de fichiers.
|
fileToPDF.credit=Ce service utilise LibreOffice et Unoconv pour la conversion de fichiers.
|
||||||
fileToPDF.supportedFileTypesInfo=Supported File types
|
fileToPDF.supportedFileTypesInfo=Types de fichiers pris en charge
|
||||||
fileToPDF.supportedFileTypes=Les types de fichiers pris en charge doivent inclure les éléments ci-dessous, mais pour une liste complète et mise à jour des formats pris en charge, veuillez vous reporter à la documentation de LibreOffice.
|
fileToPDF.supportedFileTypes=Les types de fichiers pris en charge doivent inclure les éléments ci-dessous, mais pour une liste complète et mise à jour des formats pris en charge, veuillez vous reporter à la documentation de LibreOffice.
|
||||||
fileToPDF.submit=Convertir
|
fileToPDF.submit=Convertir
|
||||||
|
|
||||||
@ -790,22 +790,22 @@ pdfOrganiser.title=Organiser
|
|||||||
pdfOrganiser.header=Organiser les pages
|
pdfOrganiser.header=Organiser les pages
|
||||||
pdfOrganiser.submit=Organiser
|
pdfOrganiser.submit=Organiser
|
||||||
pdfOrganiser.mode=Mode
|
pdfOrganiser.mode=Mode
|
||||||
pdfOrganiser.mode.1=Custom Page Order
|
pdfOrganiser.mode.1=Ordre des pages personnalisé
|
||||||
pdfOrganiser.mode.2=Reverse Order
|
pdfOrganiser.mode.2=Ordre inverse
|
||||||
pdfOrganiser.mode.3=Duplex Sort
|
pdfOrganiser.mode.3=Tri recto verso
|
||||||
pdfOrganiser.mode.4=Booklet Sort
|
pdfOrganiser.mode.4=Tri des livrets
|
||||||
pdfOrganiser.mode.5=Side Stitch Booklet Sort
|
pdfOrganiser.mode.5=Tri de livrets à points latéraux
|
||||||
pdfOrganiser.mode.6=Odd-Even Split
|
pdfOrganiser.mode.6=Partage impair-pair
|
||||||
pdfOrganiser.mode.7=Remove First
|
pdfOrganiser.mode.7=Supprimer le premier
|
||||||
pdfOrganiser.mode.8=Remove Last
|
pdfOrganiser.mode.8=Supprimer le dernier
|
||||||
pdfOrganiser.mode.9=Remove First and Last
|
pdfOrganiser.mode.9=Supprimer le premier et le dernier
|
||||||
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=Outil multifonction PDF
|
multiTool.title=Outil multifonction PDF
|
||||||
multiTool.header=Outil multifonction PDF
|
multiTool.header=Outil multifonction PDF
|
||||||
multiTool.uploadPrompts=File Name
|
multiTool.uploadPrompts=Nom du fichier
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=Visualiser un PDF
|
viewPdf.title=Visualiser un PDF
|
||||||
@ -957,8 +957,8 @@ pdfToPDFA.title=PDF en PDF/A
|
|||||||
pdfToPDFA.header=PDF en PDF/A
|
pdfToPDFA.header=PDF en PDF/A
|
||||||
pdfToPDFA.credit=Ce service utilise OCRmyPDF pour la conversion en PDF/A.
|
pdfToPDFA.credit=Ce service utilise OCRmyPDF pour la conversion en PDF/A.
|
||||||
pdfToPDFA.submit=Convertir
|
pdfToPDFA.submit=Convertir
|
||||||
pdfToPDFA.tip=Currently does not work for multiple inputs at once
|
pdfToPDFA.tip=Ne fonctionne actuellement pas pour plusieurs entrées à la fois
|
||||||
pdfToPDFA.outputFormat=Output format
|
pdfToPDFA.outputFormat=Format de sortie
|
||||||
|
|
||||||
|
|
||||||
#PDFToWord
|
#PDFToWord
|
||||||
@ -1044,11 +1044,11 @@ split-by-sections.merge=Fusionner en un seul PDF
|
|||||||
|
|
||||||
|
|
||||||
#printFile
|
#printFile
|
||||||
printFile.title=Print File
|
printFile.title=Imprimer le fichier
|
||||||
printFile.header=Print File to Printer
|
printFile.header=Imprimer le fichier sur l'imprimante
|
||||||
printFile.selectText.1=Select File to Print
|
printFile.selectText.1=Sélectionner le fichier à imprimer
|
||||||
printFile.selectText.2=Enter Printer Name
|
printFile.selectText.2=Entrez le nom de l'imprimante
|
||||||
printFile.submit=Print
|
printFile.submit=Imprimer
|
||||||
|
|
||||||
|
|
||||||
#licenses
|
#licenses
|
||||||
|
@ -59,8 +59,8 @@ 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
|
||||||
downgradeCurrentUserLongMessage=Impossibile declassare il ruolo dell'utente corrente. Pertanto, l'utente corrente non verrà visualizzato.
|
downgradeCurrentUserLongMessage=Impossibile declassare il ruolo dell'utente corrente. Pertanto, l'utente corrente non verrà visualizzato.
|
||||||
userAlreadyExistsOAuthMessage=The user already exists as an OAuth2 user.
|
userAlreadyExistsOAuthMessage=L'utente esiste già come utente OAuth2.
|
||||||
userAlreadyExistsWebMessage=The user already exists as an web user.
|
userAlreadyExistsWebMessage=L'utente esiste già come utente web.
|
||||||
error=Errore
|
error=Errore
|
||||||
oops=Oops!
|
oops=Oops!
|
||||||
help=Aiuto
|
help=Aiuto
|
||||||
@ -105,18 +105,18 @@ pipelineOptions.validateButton=Convalidare
|
|||||||
#############
|
#############
|
||||||
# NAVBAR #
|
# NAVBAR #
|
||||||
#############
|
#############
|
||||||
navbar.favorite=Favorites
|
navbar.favorite=Preferiti
|
||||||
navbar.darkmode=Modalità Scura
|
navbar.darkmode=Modalità Scura
|
||||||
navbar.language=Languages
|
navbar.language=Lingue
|
||||||
navbar.settings=Impostazioni
|
navbar.settings=Impostazioni
|
||||||
navbar.allTools=Tools
|
navbar.allTools=Strumenti
|
||||||
navbar.multiTool=Multi Tools
|
navbar.multiTool=Strumenti multipli
|
||||||
navbar.sections.organize=Organize
|
navbar.sections.organize=Organizza
|
||||||
navbar.sections.convertTo=Convert to PDF
|
navbar.sections.convertTo=Converti in PDF
|
||||||
navbar.sections.convertFrom=Convert from PDF
|
navbar.sections.convertFrom=Converti da PDF
|
||||||
navbar.sections.security=Sign & Security
|
navbar.sections.security=Firma Firma & Sicurezza
|
||||||
navbar.sections.advance=Advanced
|
navbar.sections.advance=Avanzate
|
||||||
navbar.sections.edit=View & Edit
|
navbar.sections.edit=Visualizza & Modifica
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# SETTINGS #
|
# SETTINGS #
|
||||||
@ -185,7 +185,7 @@ adminUserSettings.internalApiUser=API utente interna
|
|||||||
adminUserSettings.forceChange=Forza l'utente a cambiare nome username/password all'accesso
|
adminUserSettings.forceChange=Forza l'utente a cambiare nome username/password all'accesso
|
||||||
adminUserSettings.submit=Salva utente
|
adminUserSettings.submit=Salva utente
|
||||||
adminUserSettings.changeUserRole=Cambia il ruolo dell'utente
|
adminUserSettings.changeUserRole=Cambia il ruolo dell'utente
|
||||||
adminUserSettings.authenticated=Authenticated
|
adminUserSettings.authenticated=Autenticato
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# HOME-PAGE #
|
# HOME-PAGE #
|
||||||
@ -752,7 +752,7 @@ extractImages.submit=Estrai
|
|||||||
fileToPDF.title=Converti file in PDF
|
fileToPDF.title=Converti file in PDF
|
||||||
fileToPDF.header=Converti qualsiasi file in PDF
|
fileToPDF.header=Converti qualsiasi file in PDF
|
||||||
fileToPDF.credit=Questo servizio utilizza LibreOffice e Unoconv per la conversione dei file.
|
fileToPDF.credit=Questo servizio utilizza LibreOffice e Unoconv per la conversione dei file.
|
||||||
fileToPDF.supportedFileTypesInfo=Supported File types
|
fileToPDF.supportedFileTypesInfo=Tipi di file supportati
|
||||||
fileToPDF.supportedFileTypes=I formati file supportati dovrebbero includere quelli sottostanti. Tuttavia, per una lista aggiornata controlla la documentazione di LibreOffice
|
fileToPDF.supportedFileTypes=I formati file supportati dovrebbero includere quelli sottostanti. Tuttavia, per una lista aggiornata controlla la documentazione di LibreOffice
|
||||||
fileToPDF.submit=Converti in PDF
|
fileToPDF.submit=Converti in PDF
|
||||||
|
|
||||||
@ -805,7 +805,7 @@ pdfOrganiser.placeholder=(ad es. 1,3,2 o 4-8,2,10-12 o 2n-1)
|
|||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=Multifunzione PDF
|
multiTool.title=Multifunzione PDF
|
||||||
multiTool.header=Multifunzione PDF
|
multiTool.header=Multifunzione PDF
|
||||||
multiTool.uploadPrompts=File Name
|
multiTool.uploadPrompts=Nome file
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=Visualizza PDF
|
viewPdf.title=Visualizza PDF
|
||||||
|
@ -5,14 +5,14 @@
|
|||||||
language.direction=ltr
|
language.direction=ltr
|
||||||
|
|
||||||
pdfPrompt=PDF(leri) seçin
|
pdfPrompt=PDF(leri) seçin
|
||||||
multiPdfPrompt=PDF seçin (2+)
|
multiPdfPrompt=PDFleri seçin (2+)
|
||||||
multiPdfDropPrompt=Tüm gerekli PDF'leri seçin (ya da sürükleyip bırakın)
|
multiPdfDropPrompt=Tüm gerekli PDF'leri seçin (ya da sürükleyip bırakın)
|
||||||
imgPrompt=Resim(leri) seçin
|
imgPrompt=Resim(leri) seçin
|
||||||
genericSubmit=Gönder
|
genericSubmit=Gönder
|
||||||
processTimeWarning=Uyarı: Bu işlem, dosya boyutuna bağlı olarak bir dakikaya kadar sürebilir.
|
processTimeWarning=Uyarı: Bu işlem, dosya boyutuna bağlı olarak bir dakikaya kadar sürebilir.
|
||||||
pageOrderPrompt=Özel Sayfa Sırası (Virgülle ayrılmış sayfa numaraları veya 2n+1 gibi bir fonksiyon girin) :
|
pageOrderPrompt=Özel Sayfa Sırası (Virgülle ayrılmış sayfa numaraları veya 2n+1 gibi bir fonksiyon girin) :
|
||||||
pageSelectionPrompt=Özel Sayfa Seçimi (1,5,6 sayfa numaralarının virgülle ayrılmış bir listesini veya 2n+1 gibi bir fonksiyon girin) :
|
pageSelectionPrompt=Özel Sayfa Seçimi (1,5,6 sayfa numaralarının virgülle ayrılmış bir listesini veya 2n+1 gibi bir fonksiyon girin) :
|
||||||
goToPage=Git
|
goToPage=Sayfaya Git
|
||||||
true=Doğru
|
true=Doğru
|
||||||
false=Yanlış
|
false=Yanlış
|
||||||
unknown=Bilinmeyen
|
unknown=Bilinmeyen
|
||||||
@ -59,8 +59,8 @@ 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
|
||||||
downgradeCurrentUserLongMessage=Mevcut kullanıcının rolü düşürülemiyor. Bu nedenle, mevcut kullanıcı gösterilmeyecektir.
|
downgradeCurrentUserLongMessage=Mevcut kullanıcının rolü düşürülemiyor. Bu nedenle, mevcut kullanıcı gösterilmeyecektir.
|
||||||
userAlreadyExistsOAuthMessage=The user already exists as an OAuth2 user.
|
userAlreadyExistsOAuthMessage=Kullanıcı zaten bir OAuth2 kullanıcısı olarak mevcut.
|
||||||
userAlreadyExistsWebMessage=The user already exists as an web user.
|
userAlreadyExistsWebMessage=Kullanıcı zaten bir web kullanıcısı olarak mevcut.
|
||||||
error=Hata
|
error=Hata
|
||||||
oops=Tüh!
|
oops=Tüh!
|
||||||
help=Yardım
|
help=Yardım
|
||||||
@ -71,7 +71,7 @@ visitGithub=Github Deposunu Ziyaret Edin
|
|||||||
donate=Bağış Yapın
|
donate=Bağış Yapın
|
||||||
color=Renk
|
color=Renk
|
||||||
sponsor=Bağış
|
sponsor=Bağış
|
||||||
info=Info
|
info=Bilgi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -105,18 +105,18 @@ pipelineOptions.validateButton=Doğrula
|
|||||||
#############
|
#############
|
||||||
# NAVBAR #
|
# NAVBAR #
|
||||||
#############
|
#############
|
||||||
navbar.favorite=Favorites
|
navbar.favorite=Favoriler
|
||||||
navbar.darkmode=Karanlık Mod
|
navbar.darkmode=Karanlık Mod
|
||||||
navbar.language=Languages
|
navbar.language=Diller
|
||||||
navbar.settings=Ayarlar
|
navbar.settings=Ayarlar
|
||||||
navbar.allTools=Tools
|
navbar.allTools=Araçlar
|
||||||
navbar.multiTool=Multi Tools
|
navbar.multiTool=Çoklu Araçlar
|
||||||
navbar.sections.organize=Organize
|
navbar.sections.organize=Düzenle
|
||||||
navbar.sections.convertTo=Convert to PDF
|
navbar.sections.convertTo=PDF'ye dönüştür
|
||||||
navbar.sections.convertFrom=Convert from PDF
|
navbar.sections.convertFrom=PDF'den dönüştür
|
||||||
navbar.sections.security=Sign & Security
|
navbar.sections.security=Oturum & Güvenlik
|
||||||
navbar.sections.advance=Advanced
|
navbar.sections.advance=Gelişmiş
|
||||||
navbar.sections.edit=View & Edit
|
navbar.sections.edit=Görüntüle ve Düzenle
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# SETTINGS #
|
# SETTINGS #
|
||||||
@ -130,7 +130,7 @@ settings.downloadOption.1=Aynı pencerede aç
|
|||||||
settings.downloadOption.2=Yeni pencerede aç
|
settings.downloadOption.2=Yeni pencerede aç
|
||||||
settings.downloadOption.3=Dosyayı indir
|
settings.downloadOption.3=Dosyayı indir
|
||||||
settings.zipThreshold=İndirilen dosya sayısı şu değeri aştığında zip dosyası oluştur:
|
settings.zipThreshold=İndirilen dosya sayısı şu değeri aştığında zip dosyası oluştur:
|
||||||
settings.signOut=Oturumu Kapat
|
settings.signOut=Çıkış Yap
|
||||||
settings.accountSettings=Hesap Ayarları
|
settings.accountSettings=Hesap Ayarları
|
||||||
settings.bored.help=Paskalya yumurtası oyunu etkinleştirir
|
settings.bored.help=Paskalya yumurtası oyunu etkinleştirir
|
||||||
settings.cacheInputs.name=Form girdilerini kaydet
|
settings.cacheInputs.name=Form girdilerini kaydet
|
||||||
@ -138,7 +138,7 @@ settings.cacheInputs.help=Gelecekteki çalıştırmalar için önceden kullanıl
|
|||||||
|
|
||||||
changeCreds.title=Giriş Bilgilerini Değiştir
|
changeCreds.title=Giriş Bilgilerini Değiştir
|
||||||
changeCreds.header=Hesap Detaylarınızı Güncelleyin
|
changeCreds.header=Hesap Detaylarınızı Güncelleyin
|
||||||
changeCreds.changePassword=You are using default login credentials. Please enter a new password
|
changeCreds.changePassword=Varsayılan giriş bilgilerini kullanıyorsunuz. Lütfen yeni bir şifre girin.
|
||||||
changeCreds.newUsername=Yeni Kullanıcı Adı
|
changeCreds.newUsername=Yeni Kullanıcı Adı
|
||||||
changeCreds.oldPassword=Mevcut Şifre
|
changeCreds.oldPassword=Mevcut Şifre
|
||||||
changeCreds.newPassword=Yeni Şifre
|
changeCreds.newPassword=Yeni Şifre
|
||||||
@ -185,7 +185,7 @@ adminUserSettings.internalApiUser=Dahili API Kullanıcısı
|
|||||||
adminUserSettings.forceChange=Kullanıcının girişte kullanıcı adı/şifre değiştirmesini zorla
|
adminUserSettings.forceChange=Kullanıcının girişte kullanıcı adı/şifre değiştirmesini zorla
|
||||||
adminUserSettings.submit=Kullanıcıyı Kaydet
|
adminUserSettings.submit=Kullanıcıyı Kaydet
|
||||||
adminUserSettings.changeUserRole=Kullanıcı rolünü değiştir
|
adminUserSettings.changeUserRole=Kullanıcı rolünü değiştir
|
||||||
adminUserSettings.authenticated=Authenticated
|
adminUserSettings.authenticated=Onaylandı
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# HOME-PAGE #
|
# HOME-PAGE #
|
||||||
@ -738,7 +738,7 @@ ocr.selectText.11=OCR'den sonra resimleri kaldır (TÜM resimleri kaldırır, sa
|
|||||||
ocr.selectText.12=Render Türü (İleri Seviye)
|
ocr.selectText.12=Render Türü (İleri Seviye)
|
||||||
ocr.help=Lütfen bu belgede başka dillerde nasıl kullanılacağı ve/veya docker'da kullanılmaması hakkında bilgi edinin
|
ocr.help=Lütfen bu belgede başka dillerde nasıl kullanılacağı ve/veya docker'da kullanılmaması hakkında bilgi edinin
|
||||||
ocr.credit=Bu hizmet OCR için OCRmyPDF ve Tesseract'ı kullanır.
|
ocr.credit=Bu hizmet OCR için OCRmyPDF ve Tesseract'ı kullanır.
|
||||||
ocr.submit=PDF'i OCR ile İşle
|
ocr.submit=PDF'i OCR(Metin Tanıma) ile İşle
|
||||||
|
|
||||||
|
|
||||||
#extractImages
|
#extractImages
|
||||||
@ -752,7 +752,7 @@ extractImages.submit=Çıkar
|
|||||||
fileToPDF.title=Dosyadan PDF'e
|
fileToPDF.title=Dosyadan PDF'e
|
||||||
fileToPDF.header=Herhangi bir dosyayı PDF'e dönüştür
|
fileToPDF.header=Herhangi bir dosyayı PDF'e dönüştür
|
||||||
fileToPDF.credit=Bu hizmet dosya dönüşümü için LibreOffice ve Unoconv'u kullanır.
|
fileToPDF.credit=Bu hizmet dosya dönüşümü için LibreOffice ve Unoconv'u kullanır.
|
||||||
fileToPDF.supportedFileTypesInfo=Supported File types
|
fileToPDF.supportedFileTypesInfo=Desteklenen Dosya türleri
|
||||||
fileToPDF.supportedFileTypes=Desteklenen dosya türleri aşağıdakileri içermelidir ancak desteklenen formatların tam güncellenmiş listesi için lütfen LibreOffice dokümantasyonuna başvurun
|
fileToPDF.supportedFileTypes=Desteklenen dosya türleri aşağıdakileri içermelidir ancak desteklenen formatların tam güncellenmiş listesi için lütfen LibreOffice dokümantasyonuna başvurun
|
||||||
fileToPDF.submit=PDF'e Dönüştür
|
fileToPDF.submit=PDF'e Dönüştür
|
||||||
|
|
||||||
@ -772,7 +772,7 @@ compress.submit=Sıkıştır
|
|||||||
#Add image
|
#Add image
|
||||||
addImage.title=Resim Ekle
|
addImage.title=Resim Ekle
|
||||||
addImage.header=PDF'e resim ekle
|
addImage.header=PDF'e resim ekle
|
||||||
addImage.everyPage=Her Sayfa?
|
addImage.everyPage=Her Sayfa mı?
|
||||||
addImage.upload=Resim ekle
|
addImage.upload=Resim ekle
|
||||||
addImage.submit=Resim ekle
|
addImage.submit=Resim ekle
|
||||||
|
|
||||||
@ -805,7 +805,7 @@ pdfOrganiser.placeholder=(örn. 1,3,2 veya 4-8,2,10-12 veya 2n-1)
|
|||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title=PDF Çoklu Araç
|
multiTool.title=PDF Çoklu Araç
|
||||||
multiTool.header=PDF Çoklu Araç
|
multiTool.header=PDF Çoklu Araç
|
||||||
multiTool.uploadPrompts=File Name
|
multiTool.uploadPrompts=Dosya Adı
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=PDF Görüntüle
|
viewPdf.title=PDF Görüntüle
|
||||||
|
@ -4,18 +4,21 @@
|
|||||||
|
|
||||||
security:
|
security:
|
||||||
enableLogin: false # set to 'true' to enable login
|
enableLogin: false # set to 'true' to enable login
|
||||||
csrfDisabled: true
|
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
|
||||||
# oauth2:
|
# initialLogin:
|
||||||
# enabled: false # set to 'true' to enable login (Note: enableLogin must also be 'true' for this to work)
|
# username: "admin" # Initial username for the first login
|
||||||
# issuer: "" # set to any provider that supports OpenID Connect Discovery (/.well-known/openid-configuration) end-point
|
# password: "stirling" # Initial password for the first login
|
||||||
# clientId: "" # Client ID from your provider
|
# oauth2:
|
||||||
# clientSecret: "" # Client Secret from your provider
|
# enabled: false # set to 'true' to enable login (Note: enableLogin must also be 'true' for this to work)
|
||||||
# autoCreateUser: false # set to 'true' to allow auto-creation of non-existing users
|
# issuer: "" # set to any provider that supports OpenID Connect Discovery (/.well-known/openid-configuration) end-point
|
||||||
# useAsUsername: "email" # Default is 'email'; custom fields can be used as the username
|
# clientId: "" # Client ID from your provider
|
||||||
# scopes: "openid, profile, email" # Specify the scopes for which the application will request permissions
|
# clientSecret: "" # Client Secret from your provider
|
||||||
# provider: "google" # Set this to your OAuth provider's name, e.g., 'google' or 'keycloak'
|
# autoCreateUser: false # set to 'true' to allow auto-creation of non-existing users
|
||||||
|
# useAsUsername: "email" # Default is 'email'; custom fields can be used as the username
|
||||||
|
# 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)
|
||||||
@ -23,6 +26,7 @@ system:
|
|||||||
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: true # see when a new update is available
|
showUpdate: true # see when a new update is available
|
||||||
showUpdateOnlyAdmin: false # Only admins can see when a new update is available, depending on showUpdate it must be set to 'true'
|
showUpdateOnlyAdmin: false # Only admins can see when a new update is available, depending on showUpdate it must be set to 'true'
|
||||||
|
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: null # Application's visible name
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<browserconfig>
|
<browserconfig>
|
||||||
<msapplication>
|
<msapplication>
|
||||||
<tile>
|
<tile>
|
||||||
<square150x150logo src="/mstile-150x150.png?v=2"/>
|
<square150x150logo src="/mstile-150x150.png"/>
|
||||||
<TileColor>#00aba9</TileColor>
|
<TileColor>#00aba9</TileColor>
|
||||||
</tile>
|
</tile>
|
||||||
</msapplication>
|
</msapplication>
|
||||||
|
@ -65,7 +65,7 @@ label {
|
|||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#bg-card {
|
.bg-card {
|
||||||
background-color: var(--md-sys-color-surface-5);
|
background-color: var(--md-sys-color-surface-5);
|
||||||
border-radius: 3rem;
|
border-radius: 3rem;
|
||||||
padding: 25px 0 0;
|
padding: 25px 0 0;
|
||||||
|
@ -58,7 +58,7 @@ td {
|
|||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#bg-card {
|
.bg-card {
|
||||||
background-color: var(--md-sys-color-surface-5);
|
background-color: var(--md-sys-color-surface-5);
|
||||||
border-radius: 3rem;
|
border-radius: 3rem;
|
||||||
padding: 2.5rem;
|
padding: 2.5rem;
|
||||||
|
4
src/main/resources/static/images/file-earmark-pdf.svg
Normal file
4
src/main/resources/static/images/file-earmark-pdf.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<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>
|
After Width: | Height: | Size: 1.5 KiB |
6
src/main/resources/static/images/flags/cz.svg
Normal file
6
src/main/resources/static/images/flags/cz.svg
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="900" height="600">
|
||||||
|
<rect width="900" height="600" fill="#d7141a"/>
|
||||||
|
<rect width="900" height="300" fill="#fff"/>
|
||||||
|
<path d="M 450,300 0,0 V 600 z" fill="#11457e"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 270 B |
@ -60,23 +60,22 @@ function handleDropdownItemClick(event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", function () {
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
document.querySelectorAll(".nav-item.dropdown").forEach((element) => {
|
|
||||||
const dropdownMenu = element.querySelector(".dropdown-menu");
|
document.querySelectorAll(".col-lg-2.col-sm-6").forEach((element) => {
|
||||||
if (
|
const dropdownItems = element.querySelectorAll(".dropdown-item");
|
||||||
dropdownMenu.id !== "favoritesDropdown" &&
|
const items = Array.from(dropdownItems).filter(item => !item.querySelector("hr.dropdown-divider"));
|
||||||
dropdownMenu.children.length <= 2 &&
|
|
||||||
dropdownMenu.querySelectorAll("hr.dropdown-divider").length === dropdownMenu.children.length
|
if (items.length <= 2) {
|
||||||
) {
|
if (
|
||||||
if (
|
element.previousElementSibling &&
|
||||||
element.previousElementSibling &&
|
element.previousElementSibling.classList.contains("col-lg-2") &&
|
||||||
element.previousElementSibling.classList.contains("nav-item") &&
|
element.previousElementSibling.classList.contains("nav-item-separator")
|
||||||
element.previousElementSibling.classList.contains("nav-item-separator")
|
) {
|
||||||
) {
|
element.previousElementSibling.remove();
|
||||||
element.previousElementSibling.remove();
|
}
|
||||||
}
|
element.remove();
|
||||||
element.remove();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
//Sort languages by alphabet
|
//Sort languages by alphabet
|
||||||
const list = Array.from(document.querySelector('.dropdown-menu[aria-labelledby="languageDropdown"]').children).filter(
|
const list = Array.from(document.querySelector('.dropdown-menu[aria-labelledby="languageDropdown"]').children).filter(
|
||||||
|
@ -3,12 +3,12 @@
|
|||||||
"short_name": "Stirling PDF",
|
"short_name": "Stirling PDF",
|
||||||
"icons": [
|
"icons": [
|
||||||
{
|
{
|
||||||
"src": "/android-chrome-192x192.png?v=2",
|
"src": "/android-chrome-192x192.png",
|
||||||
"sizes": "192x192",
|
"sizes": "192x192",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "/android-chrome-512x512.png?v=2",
|
"src": "/android-chrome-512x512.png",
|
||||||
"sizes": "512x512",
|
"sizes": "512x512",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title='<3')}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title='<3')}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card"></div>
|
<div class="col-md-6 bg-card"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{account.title})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{account.title})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -21,6 +21,7 @@
|
|||||||
<span th:text="#{${messageType}}">Default message if not found</span>
|
<span th:text="#{${messageType}}">Default message if not found</span>
|
||||||
</div>
|
</div>
|
||||||
</th:block>
|
</th:block>
|
||||||
|
|
||||||
<!-- At the top of the user settings -->
|
<!-- At the top of the user settings -->
|
||||||
<h3 class="text-center"><span th:text="#{welcome} + ' ' + ${username}">User</span>!</h3>
|
<h3 class="text-center"><span th:text="#{welcome} + ' ' + ${username}">User</span>!</h3>
|
||||||
<th:block th:if="${error}">
|
<th:block th:if="${error}">
|
||||||
@ -28,13 +29,15 @@
|
|||||||
<span th:text="${error}">Error Message</span>
|
<span th:text="${error}">Error Message</span>
|
||||||
</div>
|
</div>
|
||||||
</th:block>
|
</th:block>
|
||||||
|
|
||||||
<!-- Change Username Form -->
|
<!-- Change Username Form -->
|
||||||
<th:block th:if="${!oAuth2Login}">
|
<th:block th:if="${!oAuth2Login}">
|
||||||
<h4 th:text="#{account.changeUsername}">Change Username?</h4>
|
<h4 th:text="#{account.changeUsername}">Change Username?</h4>
|
||||||
<form id="bg-card" class="mt-4 mb-4" action="api/v1/user/change-username" method="post">
|
<form id="formsavechangeusername" class="bg-card mt-4 mb-4" action="api/v1/user/change-username" method="post">
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="newUsername" th:text="#{account.newUsername}">Change Username</label>
|
<label for="newUsername" th:text="#{account.newUsername}">Change Username</label>
|
||||||
<input type="text" class="form-control" name="newUsername" id="newUsername" th:placeholder="#{account.newUsername}">
|
<input type="text" class="form-control" name="newUsername" id="newUsername" th:placeholder="#{account.newUsername}">
|
||||||
|
<span id="usernameError" style="display: none;" th:text="#{invalidUsernameMessage}">Invalid username!</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="currentPassword" th:text="#{password}">Password</label>
|
<label for="currentPassword" th:text="#{password}">Password</label>
|
||||||
@ -49,10 +52,10 @@
|
|||||||
<!-- Change Password Form -->
|
<!-- Change Password Form -->
|
||||||
<th:block th:if="${!oAuth2Login}">
|
<th:block th:if="${!oAuth2Login}">
|
||||||
<h4 th:text="#{account.changePassword}">Change Password?</h4>
|
<h4 th:text="#{account.changePassword}">Change Password?</h4>
|
||||||
<form id="bg-card" class="mt-4 mb-4" action="api/v1/user/change-password" method="post">
|
<form id="formsavechangepassword" class="bg-card mt-4 mb-4" action="api/v1/user/change-password" method="post">
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="currentPassword" th:text="#{account.oldPassword}">Old Password</label>
|
<label for="currentPassword" th:text="#{account.oldPassword}">Old Password</label>
|
||||||
<input type="password" class="form-control" name="currentPassword" id="currentPasswordPassword" th:placeholder="#{account.oldPassword}">
|
<input type="password" class="form-control" name="currentPassword" id="currentPassword" th:placeholder="#{account.oldPassword}">
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="newPassword" th:text="#{account.newPassword}">New Password</label>
|
<label for="newPassword" th:text="#{account.newPassword}">New Password</label>
|
||||||
@ -95,6 +98,76 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<script th:inline="javascript">
|
||||||
|
jQuery.validator.addMethod("usernamePattern", function(value, element) {
|
||||||
|
return this.optional(element) || /^[a-zA-Z0-9][a-zA-Z0-9@._+-]*[a-zA-Z0-9]$|^(?=.{1,64}@)[A-Za-z0-9]+(\.[A-Za-z0-9_+.-]+)*@[^-][A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,})$/.test(value);
|
||||||
|
}, /*[[#{invalidUsernameMessage}]]*/ "Invalid username format");
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('#formsavechangepassword').validate({
|
||||||
|
rules: {
|
||||||
|
currentPassword: {
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
newPassword: {
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
confirmNewPassword: {
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#formsavechangeusername').validate({
|
||||||
|
rules: {
|
||||||
|
newUsername: {
|
||||||
|
required: true,
|
||||||
|
usernamePattern: true
|
||||||
|
},
|
||||||
|
currentPassword: {
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
messages: {
|
||||||
|
newUsername: {
|
||||||
|
usernamePattern: /*[[#{invalidUsernameMessage}]]*/ "Invalid username format"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
errorPlacement: function(error, element) {
|
||||||
|
if (element.attr("name") === "newUsername") {
|
||||||
|
$("#usernameError").text(error.text()).show();
|
||||||
|
} else {
|
||||||
|
error.insertAfter(element);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
success: function(label, element) {
|
||||||
|
if ($(element).attr("name") === "newUsername") {
|
||||||
|
$("#usernameError").hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#formsavechangepassword').on('submit', function(event) {
|
||||||
|
var newPassword = $('#newPassword').val();
|
||||||
|
var confirmNewPassword = $('#confirmNewPassword').val();
|
||||||
|
|
||||||
|
if (newPassword !== confirmNewPassword) {
|
||||||
|
alert('New Password and Confirm New Password must match.');
|
||||||
|
event.preventDefault();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#newUsername').on('input', function() {
|
||||||
|
var usernameInput = $(this);
|
||||||
|
var isValid = usernameInput[0].checkValidity();
|
||||||
|
var errorSpan = $('#usernameError');
|
||||||
|
|
||||||
|
if (isValid) {
|
||||||
|
usernameInput.removeClass('invalid').addClass('valid');
|
||||||
|
errorSpan.hide();
|
||||||
|
} else {
|
||||||
|
usernameInput.removeClass('valid').addClass('invalid');
|
||||||
|
errorSpan.show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
function copyToClipboard() {
|
function copyToClipboard() {
|
||||||
@ -180,7 +253,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<h4 th:text="#{account.syncTitle}">Sync browser settings with Account</h4>
|
<h4 th:text="#{account.syncTitle}">Sync browser settings with Account</h4>
|
||||||
<div id="bg-card" class="container mt-4">
|
<div class="bg-card container mt-4">
|
||||||
<h3 th:text="#{account.settingsCompare}">Settings Comparison:</h3>
|
<h3 th:text="#{account.settingsCompare}">Settings Comparison:</h3>
|
||||||
<table id="settingsTable" class="table table-bordered table-sm table-striped">
|
<table id="settingsTable" class="table table-bordered table-sm table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{adminUserSettings.title}, header=#{adminUserSettings.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{adminUserSettings.title}, header=#{adminUserSettings.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-8" id="bg-card">
|
<div class="col-md-8 bg-card">
|
||||||
|
|
||||||
<!-- User Settings Title -->
|
<!-- User Settings Title -->
|
||||||
<h2 class="text-center" th:text="#{adminUserSettings.header}">Admin User Control Settings</h2>
|
<h2 class="text-center" th:text="#{adminUserSettings.header}">Admin User Control Settings</h2>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}"
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}"
|
||||||
xmlns:th="http://www.thymeleaf.org">
|
xmlns:th="https://www.thymeleaf.org">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{autoSplitPDF.title}, header=#{autoSplitPDF.header})}">
|
<th:block th:insert="~{fragments/common :: head(title=#{autoSplitPDF.title}, header=#{autoSplitPDF.header})}">
|
||||||
@ -15,7 +15,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon advance">cut</span>
|
<span class="material-symbols-rounded tool-header-icon advance">cut</span>
|
||||||
<span class="tool-header-text" th:text="#{autoSplitPDF.header}"></span>
|
<span class="tool-header-text" th:text="#{autoSplitPDF.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{changeCreds.title}, header=#{changeCreds.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{changeCreds.title}, header=#{changeCreds.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-9" id="bg-card">
|
<div class="col-md-9 bg-card">
|
||||||
|
|
||||||
<!-- User Settings Title -->
|
<!-- User Settings Title -->
|
||||||
<h2 class="text-center" th:text="#{changeCreds.header}">User Settings</h2>
|
<h2 class="text-center" th:text="#{changeCreds.header}">User Settings</h2>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{BookToPDF.title}, header=#{BookToPDF.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{BookToPDF.title}, header=#{BookToPDF.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}"
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}"
|
||||||
xmlns:th="http://www.thymeleaf.org">
|
xmlns:th="https://www.thymeleaf.org">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{fileToPDF.title}, header=#{fileToPDF.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{fileToPDF.title}, header=#{fileToPDF.header})}"></th:block>
|
||||||
@ -14,7 +14,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon convert">draft</span>
|
<span class="material-symbols-rounded tool-header-icon convert">draft</span>
|
||||||
<span class="tool-header-text" th:text="#{fileToPDF.header}"></span>
|
<span class="tool-header-text" th:text="#{fileToPDF.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{HTMLToPDF.title}, header=#{HTMLToPDF.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{HTMLToPDF.title}, header=#{HTMLToPDF.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="mb-3" id="bg-card">
|
<div class="mb-3 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon convert">html</span>
|
<span class="material-symbols-rounded tool-header-icon convert">html</span>
|
||||||
<span class="tool-header-text" th:text="#{HTMLToPDF.header}"></span>
|
<span class="tool-header-text" th:text="#{HTMLToPDF.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{imageToPDF.title}, header=#{imageToPDF.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{imageToPDF.title}, header=#{imageToPDF.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon image">image</span>
|
<span class="material-symbols-rounded tool-header-icon image">image</span>
|
||||||
<span class="tool-header-text" th:text="#{imageToPDF.header}"></span>
|
<span class="tool-header-text" th:text="#{imageToPDF.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{MarkdownToPDF.title}, header=#{MarkdownToPDF.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{MarkdownToPDF.title}, header=#{MarkdownToPDF.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon convert">markdown</span>
|
<span class="material-symbols-rounded tool-header-icon convert">markdown</span>
|
||||||
<span class="tool-header-text" th:text="#{MarkdownToPDF.header}"></span>
|
<span class="tool-header-text" th:text="#{MarkdownToPDF.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{PDFToBook.title}, header=#{PDFToBook.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{PDFToBook.title}, header=#{PDFToBook.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{PDFToCSV.title}, header=#{PDFToCSV.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{PDFToCSV.title}, header=#{PDFToCSV.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon convert">csv</span>
|
<span class="material-symbols-rounded tool-header-icon convert">csv</span>
|
||||||
<span class="tool-header-text" th:text="#{PDFToCSV.header}"></span>
|
<span class="tool-header-text" th:text="#{PDFToCSV.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{PDFToHTML.title}, header=#{PDFToHTML.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{PDFToHTML.title}, header=#{PDFToHTML.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon convert">html</span>
|
<span class="material-symbols-rounded tool-header-icon convert">html</span>
|
||||||
<span class="tool-header-text" th:text="#{PDFToHTML.header}"></span>
|
<span class="tool-header-text" th:text="#{PDFToHTML.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{pdfToImage.title}, header=#{pdfToImage.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{pdfToImage.title}, header=#{pdfToImage.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon image">image</span>
|
<span class="material-symbols-rounded tool-header-icon image">image</span>
|
||||||
<span class="tool-header-text" th:text="#{pdfToImage.header}"></span>
|
<span class="tool-header-text" th:text="#{pdfToImage.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{pdfToPDFA.title}, header=#{pdfToPDFA.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{pdfToPDFA.title}, header=#{pdfToPDFA.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon convert">picture_as_pdf</span>
|
<span class="material-symbols-rounded tool-header-icon convert">picture_as_pdf</span>
|
||||||
<span class="tool-header-text" th:text="#{pdfToPDFA.header}"></span>
|
<span class="tool-header-text" th:text="#{pdfToPDFA.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{PDFToPresentation.title}, header=#{PDFToPresentation.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{PDFToPresentation.title}, header=#{PDFToPresentation.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon ppt">slideshow</span>
|
<span class="material-symbols-rounded tool-header-icon ppt">slideshow</span>
|
||||||
<span class="tool-header-text" th:text="#{PDFToPresentation.header}"></span>
|
<span class="tool-header-text" th:text="#{PDFToPresentation.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{PDFToText.title}, header=#{PDFToText.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{PDFToText.title}, header=#{PDFToText.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon convert">text_fields</span>
|
<span class="material-symbols-rounded tool-header-icon convert">text_fields</span>
|
||||||
<span class="tool-header-text" th:text="#{PDFToText.header}"></span>
|
<span class="tool-header-text" th:text="#{PDFToText.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{PDFToWord.title}, header=#{PDFToWord.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{PDFToWord.title}, header=#{PDFToWord.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon word">description</span>
|
<span class="material-symbols-rounded tool-header-icon word">description</span>
|
||||||
<span class="tool-header-text" th:text="#{PDFToWord.header}"></span>
|
<span class="tool-header-text" th:text="#{PDFToWord.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{PDFToXML.title}, header=#{PDFToXML.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{PDFToXML.title}, header=#{PDFToXML.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon convert">code</span>
|
<span class="material-symbols-rounded tool-header-icon convert">code</span>
|
||||||
<span class="tool-header-text" th:text="#{PDFToXML.header}"></span>
|
<span class="tool-header-text" th:text="#{PDFToXML.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{URLToPDF.title}, header=#{URLToPDF.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{URLToPDF.title}, header=#{URLToPDF.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon convert">link</span>
|
<span class="material-symbols-rounded tool-header-icon convert">link</span>
|
||||||
<span class="tool-header-text" th:text="#{URLToPDF.header}"></span>
|
<span class="tool-header-text" th:text="#{URLToPDF.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{crop.title}, header=#{crop.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{crop.title}, header=#{crop.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon organize">crop</span>
|
<span class="material-symbols-rounded tool-header-icon organize">crop</span>
|
||||||
<span class="tool-header-text" th:text="#{crop.header}"></span>
|
<span class="tool-header-text" th:text="#{crop.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{error.404.head})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{error.404.head})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -10,7 +10,7 @@
|
|||||||
<th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block>
|
<th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div th:insert="~{fragments/errorBanner.html :: errorBanner}"></div>
|
<div th:insert="~{fragments/errorBanner.html :: errorBanner}"></div>
|
||||||
<div id="bg-card" class="text-center">
|
<div class="bg-card text-center">
|
||||||
<h1 class="display-2" th:text="#{oops}"></h1>
|
<h1 class="display-2" th:text="#{oops}"></h1>
|
||||||
<p class="lead" th:if="${param.status == '404'}" th:text="#{error.404.1}"></p>
|
<p class="lead" th:if="${param.status == '404'}" th:text="#{error.404.1}"></p>
|
||||||
<p class="lead" th:unless="${param.status == '404'}" th:text="#{error.404.2}"></p>
|
<p class="lead" th:unless="${param.status == '404'}" th:text="#{error.404.2}"></p>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{pageExtracter.title}, header=#{pageExtracter.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{pageExtracter.title}, header=#{pageExtracter.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon organize">upload</span>
|
<span class="material-symbols-rounded tool-header-icon organize">upload</span>
|
||||||
<span class="tool-header-text" th:text="#{pageExtracter.header}"></span>
|
<span class="tool-header-text" th:text="#{pageExtracter.header}"></span>
|
||||||
|
@ -10,12 +10,12 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
<!-- Icons -->
|
<!-- Icons -->
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png?v=2">
|
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png?v=2">
|
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png?v=2">
|
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
|
||||||
<link rel="manifest" href="site.webmanifest?v=2">
|
<link rel="manifest" href="site.webmanifest">
|
||||||
<link rel="mask-icon" href="safari-pinned-tab.svg?v=2" color="#ca2b2a">
|
<link rel="mask-icon" href="safari-pinned-tab.svg" color="#ca2b2a">
|
||||||
<link rel="shortcut icon" href="favicon.ico?v=2">
|
<link rel="shortcut icon" href="favicon.ico">
|
||||||
<meta name="apple-mobile-web-app-title" content="Stirling PDF">
|
<meta name="apple-mobile-web-app-title" content="Stirling PDF">
|
||||||
<meta name="application-name" content="Stirling PDF">
|
<meta name="application-name" content="Stirling PDF">
|
||||||
<meta name="msapplication-TileColor" content="#00aba9">
|
<meta name="msapplication-TileColor" content="#00aba9">
|
||||||
@ -35,22 +35,22 @@
|
|||||||
<link rel="stylesheet" href="css/bootstrap-icons.min.css">
|
<link rel="stylesheet" href="css/bootstrap-icons.min.css">
|
||||||
|
|
||||||
<!-- PDF.js -->
|
<!-- PDF.js -->
|
||||||
<script th:src="@{pdfjs/pdf.js}"></script>
|
<script src="pdfjs/pdf.js"></script>
|
||||||
|
|
||||||
<!-- PDF-Lib -->
|
<!-- PDF-Lib -->
|
||||||
<script src="js/thirdParty/pdf-lib.min.js"></script>
|
<script src="js/thirdParty/pdf-lib.min.js"></script>
|
||||||
|
|
||||||
<!-- Custom -->
|
<!-- Custom -->
|
||||||
<link rel="stylesheet" href="css/general.css">
|
<link rel="stylesheet" href="css/general.css">
|
||||||
<link rel="stylesheet" th:href="@{css/theme/theme.css}">
|
<link rel="stylesheet" href="css/theme/theme.css">
|
||||||
<link rel="stylesheet" th:href="@{css/theme/componentes.css}">
|
<link rel="stylesheet" href="css/theme/componentes.css">
|
||||||
<link rel="stylesheet" th:href="@{css/theme/theme.light.css}" id="light-mode-styles">
|
<link rel="stylesheet" href="css/theme/theme.light.css" id="light-mode-styles">
|
||||||
<link rel="stylesheet" th:href="@{css/theme/theme.dark.css}" id="dark-mode-styles">
|
<link rel="stylesheet" href="css/theme/theme.dark.css" id="dark-mode-styles">
|
||||||
<link rel="stylesheet" th:href="@{css/rainbow-mode.css}" id="rainbow-mode-styles" disabled>
|
<link rel="stylesheet" href="css/rainbow-mode.css" id="rainbow-mode-styles" disabled>
|
||||||
<link rel="stylesheet" href="css/tab-container.css">
|
<link rel="stylesheet" href="css/tab-container.css">
|
||||||
<link rel="stylesheet" href="css/navbar.css">
|
<link rel="stylesheet" href="css/navbar.css">
|
||||||
|
|
||||||
<link rel="stylesheet" th:href="@{/css/error.css}" th:if="${error}">
|
<link rel="stylesheet" href="css/error.css" th:if="${error}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="css/home.css" th:if="${currentPage == 'home'}">
|
<link rel="stylesheet" href="css/home.css" th:if="${currentPage == 'home'}">
|
||||||
<link rel="stylesheet" href="css/account.css" th:if="${currentPage == 'account'}">
|
<link rel="stylesheet" href="css/account.css" th:if="${currentPage == 'account'}">
|
||||||
|
@ -28,4 +28,5 @@
|
|||||||
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="hi_IN"> <img src="images/flags/in.svg" alt="icon" width="20" height="15"> हिन्दी</a>
|
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="hi_IN"> <img src="images/flags/in.svg" alt="icon" width="20" height="15"> हिन्दी</a>
|
||||||
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="sr_LATN_RS"> <img src="images/flags/rs.svg" alt="icon" width="20" height="15"> Srpski</a>
|
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="sr_LATN_RS"> <img src="images/flags/rs.svg" alt="icon" width="20" height="15"> Srpski</a>
|
||||||
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="uk_UA"> <img src="images/flags/ua.svg" alt="icon" width="20" height="15"> Українська</a>
|
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="uk_UA"> <img src="images/flags/ua.svg" alt="icon" width="20" height="15"> Українська</a>
|
||||||
|
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="cs_CZ"> <img src="images/flags/cz.svg" alt="icon" width="20" height="15"> Česky</a>
|
||||||
</th:block>
|
</th:block>
|
||||||
|
@ -5,11 +5,11 @@
|
|||||||
const noFavourites = /*[[#{noFavourites}]]*/ '';
|
const noFavourites = /*[[#{noFavourites}]]*/ '';
|
||||||
const updateAvailable = /*[[#{settings.updateAvailable}]]*/ '';
|
const updateAvailable = /*[[#{settings.updateAvailable}]]*/ '';
|
||||||
</script>
|
</script>
|
||||||
<script th:src="@{js/githubVersion.js}"></script>
|
<script src="js/githubVersion.js"></script>
|
||||||
<nav class="navbar navbar-expand-lg">
|
<nav class="navbar navbar-expand-lg">
|
||||||
<div class="container ">
|
<div class="container ">
|
||||||
<a class="navbar-brand" href="#" th:href="@{/}" style="display: flex;">
|
<a class="navbar-brand" href="/" style="display: flex;">
|
||||||
<img class="main-icon" src="favicon.svg?v=2" alt="icon">
|
<img class="main-icon" src="favicon.svg" alt="icon">
|
||||||
<span class="icon-text" th:text="${@navBarText}"></span>
|
<span class="icon-text" th:text="${@navBarText}"></span>
|
||||||
</a>
|
</a>
|
||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}"
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}"
|
||||||
xmlns:th="http://www.thymeleaf.org">
|
xmlns:th="https://www.thymeleaf.org">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title='')}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title='')}"></th:block>
|
||||||
@ -219,10 +219,10 @@
|
|||||||
th:replace="~{fragments/card :: card(id='split-pdf-by-sections', cardTitle=#{home.split-by-sections.title}, cardText=#{home.split-by-sections.desc}, cardLink='split-pdf-by-sections', toolIcon='grid_on', tags=#{split-by-sections.tags}, toolGroup='advance')}">
|
th:replace="~{fragments/card :: card(id='split-pdf-by-sections', cardTitle=#{home.split-by-sections.title}, cardText=#{home.split-by-sections.desc}, cardLink='split-pdf-by-sections', toolIcon='grid_on', tags=#{split-by-sections.tags}, toolGroup='advance')}">
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
th:replace="~{fragments/card :: card(id='book-to-pdf', cardTitle=#{home.BookToPDF.title}, cardText=#{home.BookToPDF.desc}, cardLink='book-to-pdf', toolIcon='images/book.svg', tags=#{BookToPDF.tags}, toolGroup='convert')}">
|
th:replace="~{fragments/card :: card(id='book-to-pdf', cardTitle=#{home.BookToPDF.title}, cardText=#{home.BookToPDF.desc}, cardLink='book-to-pdf', toolIcon='book', tags=#{BookToPDF.tags}, toolGroup='convert')}">
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
th:replace="~{fragments/card :: card(id='pdf-to-book', cardTitle=#{home.PDFToBook.title}, cardText=#{home.PDFToBook.desc}, cardLink='pdf-to-book', toolIcon='images/book.svg', tags=#{PDFToBook.tags}, toolGroup='convert')}">
|
th:replace="~{fragments/card :: card(id='pdf-to-book', cardTitle=#{home.PDFToBook.title}, cardText=#{home.PDFToBook.desc}, cardLink='pdf-to-book', toolIcon='book', tags=#{PDFToBook.tags}, toolGroup='convert')}">
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
th:replace="~{fragments/card :: card(id='stamp', cardTitle=#{home.AddStampRequest.title}, cardText=#{home.AddStampRequest.desc}, cardLink='stamp', toolIcon='approval', tags=#{AddStampRequest.tags}, toolGroup='security')}">
|
th:replace="~{fragments/card :: card(id='stamp', cardTitle=#{home.AddStampRequest.title}, cardText=#{home.AddStampRequest.desc}, cardLink='stamp', toolIcon='approval', tags=#{AddStampRequest.tags}, toolGroup='security')}">
|
||||||
@ -234,4 +234,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{licenses.title}, header=#{licenses.title})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{licenses.title}, header=#{licenses.title})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<h2 th:text="#{licenses.header}">3rd Party licenses</h2>
|
<h2 th:text="#{licenses.header}">3rd Party licenses</h2>
|
||||||
<table class="table table-striped">
|
<table class="table table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{login.title}, header=#{login.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{login.title}, header=#{login.header})}"></th:block>
|
||||||
<link rel="stylesheet" href="css/login.css">
|
<link rel="stylesheet" href="css/login.css">
|
||||||
@ -113,7 +113,7 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<img class="mb-4" src="favicon.svg?v=2" alt="favicon" width="144" height="144">
|
<img class="mb-4" src="favicon.svg" alt="favicon" width="144" height="144">
|
||||||
|
|
||||||
<h1 class="h1 mb-3 fw-normal" th:text="${@appName}">Stirling-PDF</h1>
|
<h1 class="h1 mb-3 fw-normal" th:text="${@appName}">Stirling-PDF</h1>
|
||||||
<div th:if="${oAuth2Enabled}">
|
<div th:if="${oAuth2Enabled}">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{merge.title}, header=#{merge.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{merge.title}, header=#{merge.header})}"></th:block>
|
||||||
<link rel="stylesheet" href="css/merge.css">
|
<link rel="stylesheet" href="css/merge.css">
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container" id="dropContainer">
|
<div class="container" id="dropContainer">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon organize">add_to_photos</span>
|
<span class="material-symbols-rounded tool-header-icon organize">add_to_photos</span>
|
||||||
<span class="tool-header-text" th:text="#{merge.header}"></span>
|
<span class="tool-header-text" th:text="#{merge.header}"></span>
|
||||||
@ -39,4 +39,4 @@
|
|||||||
<th:block th:insert="~{fragments/footer.html :: footer}"></th:block>
|
<th:block th:insert="~{fragments/footer.html :: footer}"></th:block>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{addImage.title}, header=#{addImage.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{addImage.title}, header=#{addImage.header})}"></th:block>
|
||||||
<script src="js/thirdParty/interact.min.js"></script>
|
<script src="js/thirdParty/interact.min.js"></script>
|
||||||
@ -13,7 +13,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon other">add_photo_alternate</span>
|
<span class="material-symbols-rounded tool-header-icon other">add_photo_alternate</span>
|
||||||
<span class="tool-header-text" th:text="#{addImage.header}"></span>
|
<span class="tool-header-text" th:text="#{addImage.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{addPageNumbers.title}, header=#{addPageNumbers.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{addPageNumbers.title}, header=#{addPageNumbers.header})}"></th:block>
|
||||||
<style>
|
<style>
|
||||||
@ -55,7 +55,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon other">123</span>
|
<span class="material-symbols-rounded tool-header-icon other">123</span>
|
||||||
<span class="tool-header-text" th:text="#{addPageNumbers.header}"></span>
|
<span class="tool-header-text" th:text="#{addPageNumbers.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{adjustContrast.title}, header=#{adjustContrast.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{adjustContrast.title}, header=#{adjustContrast.header})}"></th:block>
|
||||||
<style>
|
<style>
|
||||||
@ -20,7 +20,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-12" id="bg-card">
|
<div class="col-md-12 bg-card">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<div id="sliders-container" style="display:none;">
|
<div id="sliders-container" style="display:none;">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{autoCrop.title}, header=#{autoCrop.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{autoCrop.title}, header=#{autoCrop.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon advance">crop</span>
|
<span class="material-symbols-rounded tool-header-icon advance">crop</span>
|
||||||
<span class="tool-header-text" th:text="#{autoCrop.header}"></span>
|
<span class="tool-header-text" th:text="#{autoCrop.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{auto-rename.title}, header=#{auto-rename.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{auto-rename.title}, header=#{auto-rename.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon advance">text_fields_alt</span>
|
<span class="material-symbols-rounded tool-header-icon advance">text_fields_alt</span>
|
||||||
<span class="tool-header-text" th:text="#{auto-rename.header}"></span>
|
<span class="tool-header-text" th:text="#{auto-rename.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{changeMetadata.title}, header=#{changeMetadata.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{changeMetadata.title}, header=#{changeMetadata.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon other">assignment</span>
|
<span class="material-symbols-rounded tool-header-icon other">assignment</span>
|
||||||
<span class="tool-header-text" th:text="#{changeMetadata.header}"></span>
|
<span class="tool-header-text" th:text="#{changeMetadata.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{compare.title}, header=#{compare.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{compare.title}, header=#{compare.header})}"></th:block>
|
||||||
<style>
|
<style>
|
||||||
@ -20,7 +20,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-9" id="bg-card">
|
<div class="col-md-9 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon other">compare</span>
|
<span class="material-symbols-rounded tool-header-icon other">compare</span>
|
||||||
<span class="tool-header-text" th:text="#{compare.header}"></span>
|
<span class="tool-header-text" th:text="#{compare.header}"></span>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}"
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}"
|
||||||
xmlns:th="http://www.thymeleaf.org">
|
xmlns:th="https://www.thymeleaf.org">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{compress.title}, header=#{compress.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{compress.title}, header=#{compress.header})}"></th:block>
|
||||||
@ -14,7 +14,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon advance">zoom_in_map</span>
|
<span class="material-symbols-rounded tool-header-icon advance">zoom_in_map</span>
|
||||||
<span class="tool-header-text" th:text="#{compress.header}"></span>
|
<span class="tool-header-text" th:text="#{compress.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{home.ScannerImageSplit.title}, header=#{home.ScannerImageSplit.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{home.ScannerImageSplit.title}, header=#{home.ScannerImageSplit.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon advance">scanner</span>
|
<span class="material-symbols-rounded tool-header-icon advance">scanner</span>
|
||||||
<span class="tool-header-text" th:text="#{home.ScannerImageSplit.title}"></span>
|
<span class="tool-header-text" th:text="#{home.ScannerImageSplit.title}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{extractImages.title}, header=#{extractImages.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{extractImages.title}, header=#{extractImages.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon other">photo_library</span>
|
<span class="material-symbols-rounded tool-header-icon other">photo_library</span>
|
||||||
<span class="tool-header-text" th:text="#{extractImages.header}"></span>
|
<span class="tool-header-text" th:text="#{extractImages.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{fakeScan.title}, header=#{fakeScan.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{fakeScan.title}, header=#{fakeScan.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{flatten.title}, header=#{flatten.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{flatten.title}, header=#{flatten.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
|
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon other">layers_clear</span>
|
<span class="material-symbols-rounded tool-header-icon other">layers_clear</span>
|
||||||
<span class="tool-header-text" th:text="#{flatten.header}"></span>
|
<span class="tool-header-text" th:text="#{flatten.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{ocr.title}, header=#{ocr.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{ocr.title}, header=#{ocr.header})}"></th:block>
|
||||||
<script>
|
<script>
|
||||||
@ -34,7 +34,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon other">quick_reference_all</span>
|
<span class="material-symbols-rounded tool-header-icon other">quick_reference_all</span>
|
||||||
<span class="tool-header-text" th:text="#{ocr.header}"></span>
|
<span class="tool-header-text" th:text="#{ocr.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{printFile.title}, header=#{printFile.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{printFile.title}, header=#{printFile.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{removeAnnotations.title}, header=#{removeAnnotations.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{removeAnnotations.title}, header=#{removeAnnotations.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon other">thread_unread</span>
|
<span class="material-symbols-rounded tool-header-icon other">thread_unread</span>
|
||||||
<span class="tool-header-text" th:text="#{removeAnnotations.header}"></span>
|
<span class="tool-header-text" th:text="#{removeAnnotations.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{removeBlanks.title}, header=#{removeBlanks.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{removeBlanks.title}, header=#{removeBlanks.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon other">scan_delete</span>
|
<span class="material-symbols-rounded tool-header-icon other">scan_delete</span>
|
||||||
<span class="tool-header-text" th:text="#{removeBlanks.header}"></span>
|
<span class="tool-header-text" th:text="#{removeBlanks.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{repair.title}, header=#{repair.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{repair.title}, header=#{repair.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon advance">build</span>
|
<span class="material-symbols-rounded tool-header-icon advance">build</span>
|
||||||
<span class="tool-header-text" th:text="#{repair.header}"></span>
|
<span class="tool-header-text" th:text="#{repair.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{showJS.title}, header=#{showJS.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{showJS.title}, header=#{showJS.header})}"></th:block>
|
||||||
<link href="css/prism.css" rel="stylesheet">
|
<link href="css/prism.css" rel="stylesheet">
|
||||||
@ -20,7 +20,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-12" id="bg-card">
|
<div class="col-md-12 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon advance">javascript</span>
|
<span class="material-symbols-rounded tool-header-icon advance">javascript</span>
|
||||||
<span class="tool-header-text" th:text="#{showJS.header}"></span>
|
<span class="tool-header-text" th:text="#{showJS.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{AddStampRequest.title}, header=#{AddStampRequest.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{AddStampRequest.title}, header=#{AddStampRequest.header})}"></th:block>
|
||||||
<style>
|
<style>
|
||||||
@ -22,7 +22,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon security">approval</span>
|
<span class="material-symbols-rounded tool-header-icon security">approval</span>
|
||||||
<span class="tool-header-text" th:text="#{AddStampRequest.header}"></span>
|
<span class="tool-header-text" th:text="#{AddStampRequest.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{pageLayout.title}, header=#{pageLayout.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{pageLayout.title}, header=#{pageLayout.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon organize">dashboard</span>
|
<span class="material-symbols-rounded tool-header-icon organize">dashboard</span>
|
||||||
<span class="tool-header-text" th:text="#{pageLayout.header}"></span>
|
<span class="tool-header-text" th:text="#{pageLayout.header}"></span>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}"
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}"
|
||||||
xmlns:th="http://www.thymeleaf.org">
|
xmlns:th="https://www.thymeleaf.org">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{multiTool.title}, header=#{multiTool.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{multiTool.title}, header=#{multiTool.header})}"></th:block>
|
||||||
@ -15,7 +15,7 @@
|
|||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div id="bg-card">
|
<div class="bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon advance">construction</span>
|
<span class="material-symbols-rounded tool-header-icon advance">construction</span>
|
||||||
<span class="tool-header-text" th:text="#{multiTool.header}"></span>
|
<span class="tool-header-text" th:text="#{multiTool.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{split-by-size-or-count.title}, header=#{split-by-size-or-count.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{split-by-size-or-count.title}, header=#{split-by-size-or-count.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon advance">layers</span>
|
<span class="material-symbols-rounded tool-header-icon advance">layers</span>
|
||||||
<span class="tool-header-text" th:text="#{overlay-pdfs.header}"></span>
|
<span class="tool-header-text" th:text="#{overlay-pdfs.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{pdfOrganiser.title}, header=#{pdfOrganiser.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{pdfOrganiser.title}, header=#{pdfOrganiser.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon organize">format_list_bulleted</span>
|
<span class="material-symbols-rounded tool-header-icon organize">format_list_bulleted</span>
|
||||||
<span class="tool-header-text" th:text="#{pdfOrganiser.header}"></span>
|
<span class="tool-header-text" th:text="#{pdfOrganiser.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{pdfToSinglePage.title}, header=#{pdfToSinglePage.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{pdfToSinglePage.title}, header=#{pdfToSinglePage.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon organize">looks_one</span>
|
<span class="material-symbols-rounded tool-header-icon organize">looks_one</span>
|
||||||
<span class="tool-header-text" th:text="#{pdfToSinglePage.header}"></span>
|
<span class="tool-header-text" th:text="#{pdfToSinglePage.header}"></span>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
th:lang="${#locale.language}"
|
th:lang="${#locale.language}"
|
||||||
th:dir="#{language.direction}"
|
th:dir="#{language.direction}"
|
||||||
th:data-language="${#locale.toString()}"
|
th:data-language="${#locale.toString()}"
|
||||||
xmlns:th="http://www.thymeleaf.org"
|
xmlns:th="https://www.thymeleaf.org"
|
||||||
>
|
>
|
||||||
<head>
|
<head>
|
||||||
<th:block
|
<th:block
|
||||||
@ -26,7 +26,7 @@
|
|||||||
<br /><br />
|
<br /><br />
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon advance">family_history</span>
|
<span class="material-symbols-rounded tool-header-icon advance">family_history</span>
|
||||||
<span class="tool-header-text" th:text="#{pipeline.header}"></span>
|
<span class="tool-header-text" th:text="#{pipeline.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{pageRemover.title}, header=#{pageRemover.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{pageRemover.title}, header=#{pageRemover.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon organize">delete</span>
|
<span class="material-symbols-rounded tool-header-icon organize">delete</span>
|
||||||
<span class="tool-header-text" th:text="#{pageRemover.header}"></span>
|
<span class="tool-header-text" th:text="#{pageRemover.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{rotate.title}, header=#{rotate.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{rotate.title}, header=#{rotate.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon organize">rotate_right</span>
|
<span class="material-symbols-rounded tool-header-icon organize">rotate_right</span>
|
||||||
<span class="tool-header-text" th:text="#{rotate.header}"></span>
|
<span class="tool-header-text" th:text="#{rotate.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{scalePages.title}, header=#{scalePages.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{scalePages.title}, header=#{scalePages.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon organize">fullscreen</span>
|
<span class="material-symbols-rounded tool-header-icon organize">fullscreen</span>
|
||||||
<span class="tool-header-text" th:text="#{scalePages.header}"></span>
|
<span class="tool-header-text" th:text="#{scalePages.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{addPassword.title}, header=#{addPassword.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{addPassword.title}, header=#{addPassword.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon security">lock</span>
|
<span class="material-symbols-rounded tool-header-icon security">lock</span>
|
||||||
<span class="tool-header-text" th:text="#{addPassword.header}"></span>
|
<span class="tool-header-text" th:text="#{addPassword.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{watermark.title}, header=#{watermark.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{watermark.title}, header=#{watermark.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon security">water_drop</span>
|
<span class="material-symbols-rounded tool-header-icon security">water_drop</span>
|
||||||
<span class="tool-header-text" th:text="#{watermark.header}"></span>
|
<span class="tool-header-text" th:text="#{watermark.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{autoRedact.title}, header=#{autoRedact.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{autoRedact.title}, header=#{autoRedact.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon security">ink_eraser</span>
|
<span class="material-symbols-rounded tool-header-icon security">ink_eraser</span>
|
||||||
<span class="tool-header-text" th:text="#{autoRedact.header}"></span>
|
<span class="tool-header-text" th:text="#{autoRedact.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{certSign.title}, header=#{certSign.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{certSign.title}, header=#{certSign.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon security">workspace_premium</span>
|
<span class="material-symbols-rounded tool-header-icon security">workspace_premium</span>
|
||||||
<span class="tool-header-text" th:text="#{certSign.header}"></span>
|
<span class="tool-header-text" th:text="#{certSign.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{permissions.title}, header=#{permissions.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{permissions.title}, header=#{permissions.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon security">encrypted</span>
|
<span class="material-symbols-rounded tool-header-icon security">encrypted</span>
|
||||||
<span class="tool-header-text" th:text="#{permissions.header}"></span>
|
<span class="tool-header-text" th:text="#{permissions.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{getPdfInfo.title}, header=#{getPdfInfo.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{getPdfInfo.title}, header=#{getPdfInfo.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon other">info</span>
|
<span class="material-symbols-rounded tool-header-icon other">info</span>
|
||||||
<span class="tool-header-text" th:text="#{getPdfInfo.header}"></span>
|
<span class="tool-header-text" th:text="#{getPdfInfo.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{removePassword.title}, header=#{removePassword.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{removePassword.title}, header=#{removePassword.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon security">lock_open_right</span>
|
<span class="material-symbols-rounded tool-header-icon security">lock_open_right</span>
|
||||||
<span class="tool-header-text" th:text="#{removePassword.header}"></span>
|
<span class="tool-header-text" th:text="#{removePassword.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{remove-watermark.title}, header=#{remove-watermark.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{remove-watermark.title}, header=#{remove-watermark.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon security">water_drop</span>
|
<span class="material-symbols-rounded tool-header-icon security">water_drop</span>
|
||||||
<span class="tool-header-text" th:text="#{remove-watermark.header}"></span>
|
<span class="tool-header-text" th:text="#{remove-watermark.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{sanitizePDF.title}, header=#{sanitizePDF.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{sanitizePDF.title}, header=#{sanitizePDF.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon security">sanitizer</span>
|
<span class="material-symbols-rounded tool-header-icon security">sanitizer</span>
|
||||||
<span class="tool-header-text" th:text="#{sanitizePDF.header}"></span>
|
<span class="tool-header-text" th:text="#{sanitizePDF.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{sign.title}, header=#{sign.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{sign.title}, header=#{sign.header})}"></th:block>
|
||||||
<link rel="stylesheet" href="css/sign.css">
|
<link rel="stylesheet" href="css/sign.css">
|
||||||
@ -29,7 +29,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon sign">signature</span>
|
<span class="material-symbols-rounded tool-header-icon sign">signature</span>
|
||||||
<span class="tool-header-text" th:text="#{sign.header}"></span>
|
<span class="tool-header-text" th:text="#{sign.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{split-by-size-or-count.title}, header=#{split-by-size-or-count.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{split-by-size-or-count.title}, header=#{split-by-size-or-count.header})}"></th:block>
|
||||||
</head>
|
</head>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon advance">vertical_split</span>
|
<span class="material-symbols-rounded tool-header-icon advance">vertical_split</span>
|
||||||
<span class="tool-header-text" th:text="#{split-by-size-or-count.header}"></span>
|
<span class="tool-header-text" th:text="#{split-by-size-or-count.header}"></span>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{split-by-sections.title}, header=#{split-by-sections.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{split-by-sections.title}, header=#{split-by-sections.header})}"></th:block>
|
||||||
<link rel="stylesheet" href="css/split-pdf-by-sections.css">
|
<link rel="stylesheet" href="css/split-pdf-by-sections.css">
|
||||||
@ -13,7 +13,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon advance">grid_on</span>
|
<span class="material-symbols-rounded tool-header-icon advance">grid_on</span>
|
||||||
<span class="tool-header-text" th:text="#{split-by-sections.header}"></span>
|
<span class="tool-header-text" th:text="#{split-by-sections.header}"></span>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}"
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}"
|
||||||
xmlns:th="http://www.thymeleaf.org">
|
xmlns:th="https://www.thymeleaf.org">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{split.title}, header=#{split.header})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{split.title}, header=#{split.header})}"></th:block>
|
||||||
@ -13,7 +13,7 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6" id="bg-card">
|
<div class="col-md-6 bg-card">
|
||||||
<div class="tool-header">
|
<div class="tool-header">
|
||||||
<span class="material-symbols-rounded tool-header-icon organize">cut</span>
|
<span class="material-symbols-rounded tool-header-icon organize">cut</span>
|
||||||
<span class="tool-header-text" th:text="#{split.header}"></span>
|
<span class="tool-header-text" th:text="#{split.header}"></span>
|
||||||
|
@ -32,11 +32,11 @@ See https://github.com/adobe-type-tools/cmap-resources
|
|||||||
<script src="js/thirdParty/bootstrap.min.js"></script>
|
<script src="js/thirdParty/bootstrap.min.js"></script>
|
||||||
|
|
||||||
<!-- This snippet is used in production (included from view-pdf.html) -->
|
<!-- This snippet is used in production (included from view-pdf.html) -->
|
||||||
<link rel="resource" type="application/l10n" th:href="@{pdfjs/locale/locale.properties}">
|
<link rel="resource" type="application/l10n" href="pdfjs/locale/locale.properties">
|
||||||
<script th:src="@{pdfjs/pdf.js}" type="module"></script>
|
<script src="pdfjs/pdf.js" type="module"></script>
|
||||||
|
|
||||||
<link rel="stylesheet" th:href="@{pdfjs/css/viewer.css}">
|
<link rel="stylesheet" href="pdfjs/css/viewer.css">
|
||||||
<script th:src="@{pdfjs/js/viewer.js}" type="module"></script>
|
<script src="pdfjs/js/viewer.js" type="module"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body tabindex="1">
|
<body tabindex="1">
|
||||||
@ -348,7 +348,7 @@ See https://github.com/adobe-type-tools/cmap-resources
|
|||||||
|
|
||||||
<a id="backToHome" class="toolbarButton hiddenLargeView" title="Back to Main Page"
|
<a id="backToHome" class="toolbarButton hiddenLargeView" title="Back to Main Page"
|
||||||
tabindex="30"
|
tabindex="30"
|
||||||
data-l10n-id="back_to_home" th:href="@{/}">
|
data-l10n-id="back_to_home" href="/">
|
||||||
<span data-l10n-id="back_to_home_label">Back to Main Page</span>
|
<span data-l10n-id="back_to_home_label">Back to Main Page</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user