Compare commits

...

8 Commits

Author SHA1 Message Date
arsvendg
8f2f715c3e Merge branch 'Stirling-Tools:main' into main
Some checks failed
Build repo / build (push) Has been cancelled
Push Docker Image with VersionNumber / push (push) Has been cancelled
Sync Files / sync-versions (push) Has been cancelled
Sync Files / sync-readme (push) Has been cancelled
2024-06-18 09:14:22 +02:00
github-actions[bot]
7768dc9fd9 📝 Update README: Translation Progress Table (#1485)
📝 Sync README
> Made via sync_files.yml

Co-authored-by: GitHub Action action@github.com <GitHub Action action@github.com>
2024-06-17 20:37:27 +01:00
Alex
b739d3847e Update messages_nl_NL.properties (#1483)
Added new translations
2024-06-17 20:36:41 +01:00
M0C
a3e5cb51b0 Polish translation (#1482)
pigers full polish translation
2024-06-17 20:36:29 +01:00
Anthony Stirling
ab7a41d155 Update README.md 2024-06-17 18:40:07 +01:00
Anthony Stirling
3576c32c52 add fat jar 2024-06-16 15:42:45 +01:00
Ludy
f43fe15193 further bug fixes when using context path (#1475)
Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
2024-06-15 22:07:09 +01:00
arsvendg
234ae17dc8 Edit norwegian translations (#1476)
* Minor correction

* Endringer oversettelser
2024-06-15 21:40:52 +01:00
63 changed files with 772 additions and 765 deletions

View File

@@ -9,6 +9,7 @@
[![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)
[<img src="https://www.ssdnodes.com/wp-content/uploads/2023/11/footer-logo.svg" alt="Name" height="40">](https://www.ssdnodes.com/manage/aff.php?aff=2216&register=true)
This is a robust, locally hosted web-based PDF manipulation tool using Docker. It enables you to carry out various operations on PDF files, including splitting, merging, converting, reorganizing, adding images, rotating, compressing, and more. This locally hosted web application has evolved to encompass a comprehensive set of features, addressing all your PDF requirements. This is a robust, locally hosted web-based PDF manipulation tool using Docker. It enables you to carry out various operations on PDF files, including splitting, merging, converting, reorganizing, adding images, rotating, compressing, and more. This locally hosted web application has evolved to encompass a comprehensive set of features, addressing all your PDF requirements.
@@ -105,33 +106,36 @@ Please view https://github.com/Stirling-Tools/Stirling-PDF/blob/main/LocalRunGui
https://hub.docker.com/r/frooodle/s-pdf https://hub.docker.com/r/frooodle/s-pdf
Stirling PDF has 2 different versions, a Full version and ultra-Lite version. Depending on the types of features you use you may want a smaller image to save on space. Stirling PDF has 3 different versions, a Full version and ultra-Lite version as well as a 'Fat' version. Depending on the types of features you use you may want a smaller image to save on space.
To see what the different versions offer please look at our [version mapping](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/Version-groups.md) To see what the different versions offer please look at our [version mapping](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/Version-groups.md)
For people that don't mind about space optimization just use the latest tag. For people that don't mind about space optimization just use the latest tag.
![Docker Image Size (tag)](https://img.shields.io/docker/image-size/frooodle/s-pdf/latest?label=Stirling-PDF%20Full) ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/frooodle/s-pdf/latest?label=Stirling-PDF%20Full)
![Docker Image Size (tag)](https://img.shields.io/docker/image-size/frooodle/s-pdf/latest-ultra-lite?label=Stirling-PDF%20Ultra-Lite) ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/frooodle/s-pdf/latest-ultra-lite?label=Stirling-PDF%20Ultra-Lite)
![Docker Image Size (tag)](https://img.shields.io/docker/image-size/frooodle/s-pdf/latest-fat?label=Stirling-PDF%20Fat)
Docker Run Please note in below examples you may need to change the volume paths as needed, current examples install them to the current working directory
eg ``./extraConfigs:/configs`` to ``/opt/stirlingpdf/extraConfigs:/configs``
### Docker Run
```bash ```bash
docker run -d \ docker run -d \
-p 8080:8080 \ -p 8080:8080 \
-v /location/of/trainingData:/usr/share/tessdata \ -v ./trainingData:/usr/share/tessdata \
-v /location/of/extraConfigs:/configs \ -v ./extraConfigs:/configs \
-v /location/of/logs:/logs \ -v ./logs:/logs \
-e DOCKER_ENABLE_SECURITY=false \ -e DOCKER_ENABLE_SECURITY=false \
-e INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false \ -e INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false \
-e LANGS=en_GB \ -e LANGS=en_GB \
--name stirling-pdf \ --name stirling-pdf \
frooodle/s-pdf:latest frooodle/s-pdf:latest
Can also add these for customisation but are not required Can also add these for customisation but are not required
-v /location/of/customFiles:/customFiles \ -v /location/of/customFiles:/customFiles \
``` ```
Docker Compose ### Docker Compose
```yaml ```yaml
version: '3.3' version: '3.3'
@@ -141,10 +145,10 @@ services:
ports: ports:
- '8080:8080' - '8080:8080'
volumes: volumes:
- /location/of/trainingData:/usr/share/tessdata #Required for extra OCR languages - ./trainingData:/usr/share/tessdata #Required for extra OCR languages
- /location/of/extraConfigs:/configs - ./extraConfigs:/configs
# - /location/of/customFiles:/customFiles/ # - ./customFiles:/customFiles/
# - /location/of/logs:/logs/ # - ./logs:/logs/
environment: environment:
- DOCKER_ENABLE_SECURITY=false - DOCKER_ENABLE_SECURITY=false
- INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false - INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false
@@ -174,7 +178,7 @@ Stirling PDF currently supports 32!
| Catalan (Català) (ca_CA) | ![49%](https://geps.dev/progress/49) | | Catalan (Català) (ca_CA) | ![49%](https://geps.dev/progress/49) |
| Italian (Italiano) (it_IT) | ![99%](https://geps.dev/progress/99) | | Italian (Italiano) (it_IT) | ![99%](https://geps.dev/progress/99) |
| Swedish (Svenska) (sv_SE) | ![40%](https://geps.dev/progress/40) | | Swedish (Svenska) (sv_SE) | ![40%](https://geps.dev/progress/40) |
| Polish (Polski) (pl_PL) | ![42%](https://geps.dev/progress/42) | | Polish (Polski) (pl_PL) | ![92%](https://geps.dev/progress/92) |
| Romanian (Română) (ro_RO) | ![39%](https://geps.dev/progress/39) | | Romanian (Română) (ro_RO) | ![39%](https://geps.dev/progress/39) |
| Korean (한국어) (ko_KR) | ![86%](https://geps.dev/progress/86) | | Korean (한국어) (ko_KR) | ![86%](https://geps.dev/progress/86) |
| Portuguese Brazilian (Português) (pt_BR) | ![61%](https://geps.dev/progress/61) | | Portuguese Brazilian (Português) (pt_BR) | ![61%](https://geps.dev/progress/61) |
@@ -182,7 +186,7 @@ Stirling PDF currently supports 32!
| Russian (Русский) (ru_RU) | ![86%](https://geps.dev/progress/86) | | Russian (Русский) (ru_RU) | ![86%](https://geps.dev/progress/86) |
| Basque (Euskara) (eu_ES) | ![63%](https://geps.dev/progress/63) | | Basque (Euskara) (eu_ES) | ![63%](https://geps.dev/progress/63) |
| Japanese (日本語) (ja_JP) | ![92%](https://geps.dev/progress/92) | | Japanese (日本語) (ja_JP) | ![92%](https://geps.dev/progress/92) |
| Dutch (Nederlands) (nl_NL) | ![83%](https://geps.dev/progress/83) | | Dutch (Nederlands) (nl_NL) | ![96%](https://geps.dev/progress/96) |
| Greek (Ελληνικά) (el_GR) | ![84%](https://geps.dev/progress/84) | | Greek (Ελληνικά) (el_GR) | ![84%](https://geps.dev/progress/84) |
| Turkish (Türkçe) (tr_TR) | ![96%](https://geps.dev/progress/96) | | Turkish (Türkçe) (tr_TR) | ![96%](https://geps.dev/progress/96) |
| Indonesia (Bahasa Indonesia) (id_ID) | ![78%](https://geps.dev/progress/78) | | Indonesia (Bahasa Indonesia) (id_ID) | ![78%](https://geps.dev/progress/78) |

View File

@@ -1,4 +1,7 @@
| Technology | Ultra-Lite | Full | |All versions in a Docker envrionment can download Calibre as a optional extra at runtime to support `book-to-pdf` and `pdf-to-book` using parameter ``INSTALL_BOOK_AND_ADVANCED_HTML_OPS``.
The 'Fat' container contains all those found in 'Full' with security jar along with this Calibre install.
Technology | Ultra-Lite | Full |
| ---------- | :--------: | :---: | | ---------- | :--------: | :---: |
| Java | ✔️ | ✔️ | | Java | ✔️ | ✔️ |
| JavaScript | ✔️ | ✔️ | | JavaScript | ✔️ | ✔️ |

View File

@@ -11,17 +11,17 @@ imgPrompt=Selecteer afbeelding(en)
genericSubmit=Indienen genericSubmit=Indienen
processTimeWarning=Waarschuwing: Dit proces kan tot een minuut duren afhankelijk van de bestandsgrootte processTimeWarning=Waarschuwing: Dit proces kan tot een minuut duren afhankelijk van de bestandsgrootte
pageOrderPrompt=Aangepaste pagina volgorde (Voer een komma-gescheiden lijst van paginanummers of functies in, zoals 2n+1) : pageOrderPrompt=Aangepaste pagina volgorde (Voer een komma-gescheiden lijst van paginanummers of functies in, zoals 2n+1) :
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) : pageSelectionPrompt=Aangepaste pagina selectie (Voer een komma-gescheiden lijst van paginanummer 1,5,6 of functies zoals 2n+1 in) :
goToPage=Ga goToPage=Ga
true=Waar true=Waar
false=Onwaar false=Onwaar
unknown=Onbekend unknown=Onbekend
save=Opslaan save=Opslaan
saveToBrowser=Save to Browser saveToBrowser=Opslaan in browser
close=Sluiten close=Sluiten
filesSelected=Bestanden geselecteerd filesSelected=Bestanden geselecteerd
noFavourites=Geen favorieten toegevoegd noFavourites=Geen favorieten toegevoegd
downloadComplete=Download Complete downloadComplete=Download klaar
bored=Verveeld met wachten? bored=Verveeld met wachten?
alphabet=Alfabet alphabet=Alfabet
downloadPdf=Download PDF downloadPdf=Download PDF
@@ -54,23 +54,23 @@ notAuthenticatedMessage=Gebruiker niet ingelogd.
userNotFoundMessage=Gebruiker niet gevonden. userNotFoundMessage=Gebruiker niet gevonden.
incorrectPasswordMessage=Huidige wachtwoord is onjuist. incorrectPasswordMessage=Huidige wachtwoord is onjuist.
usernameExistsMessage=Nieuwe gebruikersnaam bestaat al. usernameExistsMessage=Nieuwe gebruikersnaam bestaat al.
invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address. invalidUsernameMessage=Ongeldige gebruikersnaam, gebruikersnaam kan alleen letters, nummers en de volgende speciale tekens @._+- bevatten of moet een geldig emailadres zijn.
confirmPasswordErrorMessage=New Password and Confirm New Password must match. confirmPasswordErrorMessage=Nieuw wachtwoord en bevestig wachtwoord moeten overeenkomen.
deleteCurrentUserMessage=Cannot delete currently logged in user. deleteCurrentUserMessage=Kan niet een momenteel ingelogde gebruiker verwijderen.
deleteUsernameExistsMessage=The username does not exist and cannot be deleted. deleteUsernameExistsMessage=De gebruikersnaam bestaat niet en kan niet verwijderd worden.
downgradeCurrentUserMessage=Kan de rol van de huidige gebruiker niet downgraden downgradeCurrentUserMessage=Kan de rol van de huidige gebruiker niet downgraden
downgradeCurrentUserLongMessage=Kan de rol van de huidige gebruiker niet downgraden. Huidige gebruiker wordt dus niet weergegeven. downgradeCurrentUserLongMessage=Kan de rol van de huidige gebruiker niet downgraden. Huidige gebruiker wordt dus niet weergegeven.
userAlreadyExistsOAuthMessage=The user already exists as an OAuth2 user. userAlreadyExistsOAuthMessage=De gebruiker bestaat al als een OAuth2 gebruiker.
userAlreadyExistsWebMessage=The user already exists as an web user. userAlreadyExistsWebMessage=De gebruiker bestaat al als een web gebruiker.
error=Error error=Error
oops=Oops! oops=Oeps!
help=Help help=Help
goHomepage=Go to Homepage goHomepage=Ga naar de startpagina
joinDiscord=Join our Discord server joinDiscord=Word lid van onze Discord server
seeDockerHub=See Docker Hub seeDockerHub=Zie Docker Hub
visitGithub=Visit Github Repository visitGithub=Ga naar de Github Repository
donate=Donate donate=Doneer
color=Color color=Kleur
sponsor=Sponsor sponsor=Sponsor
info=Info info=Info
@@ -79,14 +79,14 @@ info=Info
############### ###############
# Pipeline # # Pipeline #
############### ###############
pipeline.header=Pijplijn menu (Alpha) pipeline.header=Pijplijn menu (Beta)
pipeline.uploadButton=Aangepast uploaden pipeline.uploadButton=Aangepast uploaden
pipeline.configureButton=Configureren pipeline.configureButton=Configureren
pipeline.defaultOption=Aangepast pipeline.defaultOption=Aangepast
pipeline.submitButton=Opslaan pipeline.submitButton=Opslaan
pipeline.help=Pipeline Help pipeline.help=Pijplijn help
pipeline.scanHelp=Folder Scanning Help pipeline.scanHelp=Map scannen help
pipeline.deletePrompt=Are you sure you want to delete pipeline pipeline.deletePrompt=Weet je zeker dat je deze pijplijn wil verwijderen?
###################### ######################
# Pipeline Options # # Pipeline Options #
@@ -107,25 +107,25 @@ pipelineOptions.validateButton=Valideren
############# #############
# NAVBAR # # NAVBAR #
############# #############
navbar.favorite=Favorites navbar.favorite=Favorieten
navbar.darkmode=Donkere modus navbar.darkmode=Donkere modus
navbar.language=Languages navbar.language=Talen
navbar.settings=Instellingen navbar.settings=Instellingen
navbar.allTools=Tools navbar.allTools=Tools
navbar.multiTool=Multi Tools navbar.multiTool=Multitools
navbar.sections.organize=Organize navbar.sections.organize=Organizeren
navbar.sections.convertTo=Convert to PDF navbar.sections.convertTo=Converteren naar PDF
navbar.sections.convertFrom=Convert from PDF navbar.sections.convertFrom=Converteren van PDF
navbar.sections.security=Sign & Security navbar.sections.security=Ondertekenen & beveiliging
navbar.sections.advance=Advanced navbar.sections.advance=Geavanceerd
navbar.sections.edit=View & Edit navbar.sections.edit=Bekijken & wijzigen
############# #############
# SETTINGS # # SETTINGS #
############# #############
settings.title=Instellingen settings.title=Instellingen
settings.update=Update beschikbaar settings.update=Update beschikbaar
settings.updateAvailable={0} is the current installed version. A new version ({1}) is available. settings.updateAvailable={0} is de huidig geïnstalleerde versie. Een nieuwe versie ({1}) is beschikbaar.
settings.appVersion=App versie: settings.appVersion=App versie:
settings.downloadOption.title=Kies download optie (Voor enkelvoudige bestanddownloads zonder zip): settings.downloadOption.title=Kies download optie (Voor enkelvoudige bestanddownloads zonder zip):
settings.downloadOption.1=Open in hetzelfde venster settings.downloadOption.1=Open in hetzelfde venster
@@ -134,13 +134,13 @@ settings.downloadOption.3=Download bestand
settings.zipThreshold=Bestanden zippen wanneer het aantal gedownloade bestanden meer is dan settings.zipThreshold=Bestanden zippen wanneer het aantal gedownloade bestanden meer is dan
settings.signOut=Uitloggen settings.signOut=Uitloggen
settings.accountSettings=Account instellingen settings.accountSettings=Account instellingen
settings.bored.help=Enables easter egg game settings.bored.help=Schakelt geheim spelletje in
settings.cacheInputs.name=Save form inputs settings.cacheInputs.name=Sla invoer in formulieren op
settings.cacheInputs.help=Enable to store previously used inputs for future runs settings.cacheInputs.help=Schakel in om eerdere invoeren op te slaan voor toekomstige uitvoeren
changeCreds.title=Inloggegevens wijzigen changeCreds.title=Inloggegevens wijzigen
changeCreds.header=Werk je accountgegevens bij changeCreds.header=Werk je accountgegevens bij
changeCreds.changePassword=You are using default login credentials. Please enter a new password changeCreds.changePassword=Je gebruikt de standaard inloggegevens. Voer alstublieft een nieuw wachtwoord in
changeCreds.newUsername=Nieuwe gebruikersnaam changeCreds.newUsername=Nieuwe gebruikersnaam
changeCreds.oldPassword=Huidige wachtwoord changeCreds.oldPassword=Huidige wachtwoord
changeCreds.newPassword=Nieuw wachtwoord changeCreds.newPassword=Nieuw wachtwoord
@@ -175,21 +175,21 @@ adminUserSettings.header=Beheer gebruikers
adminUserSettings.admin=Beheerder adminUserSettings.admin=Beheerder
adminUserSettings.user=Gebruiker adminUserSettings.user=Gebruiker
adminUserSettings.addUser=Voeg nieuwe gebruiker toe adminUserSettings.addUser=Voeg nieuwe gebruiker toe
adminUserSettings.deleteUser=Delete User adminUserSettings.deleteUser=Verwijder gebruiker
adminUserSettings.confirmDeleteUser=Should the user be deleted? adminUserSettings.confirmDeleteUser=Moet deze gebruiker verwijderd worden?
adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address. adminUserSettings.usernameInfo=Gebruikersnaam kan alleen letters, nummers en de volgende speciale tekens @._+- bevatten of moet een geldig emailadres zijn.
adminUserSettings.roles=Rollen adminUserSettings.roles=Rollen
adminUserSettings.role=Rol adminUserSettings.role=Rol
adminUserSettings.actions=Acties adminUserSettings.actions=Acties
adminUserSettings.apiUser=Beperkte API gebruiker adminUserSettings.apiUser=Beperkte API gebruiker
adminUserSettings.extraApiUser=Additional Limited API User adminUserSettings.extraApiUser=Extra beperkte API gebruiker
adminUserSettings.webOnlyUser=Alleen web gebruiker adminUserSettings.webOnlyUser=Alleen web gebruiker
adminUserSettings.demoUser=Demogebruiker (geen aangepaste instellingen) adminUserSettings.demoUser=Demogebruiker (geen aangepaste instellingen)
adminUserSettings.internalApiUser=Internal API User adminUserSettings.internalApiUser=Interne API gebruiker
adminUserSettings.forceChange=Forceer gebruiker om gebruikersnaam/wachtwoord te wijzigen bij inloggen adminUserSettings.forceChange=Forceer gebruiker om gebruikersnaam/wachtwoord te wijzigen bij inloggen
adminUserSettings.submit=Gebruiker opslaan adminUserSettings.submit=Gebruiker opslaan
adminUserSettings.changeUserRole=De rol van de gebruiker wijzigen adminUserSettings.changeUserRole=De rol van de gebruiker wijzigen
adminUserSettings.authenticated=Authenticated adminUserSettings.authenticated=Geauthenticeerd
############# #############
# HOME-PAGE # # HOME-PAGE #
@@ -204,11 +204,11 @@ viewPdf.tags=bekijken,lezen,annoteren,tekst,afbeelding
home.multiTool.title=PDF multitool home.multiTool.title=PDF multitool
home.multiTool.desc=Pagina's samenvoegen, draaien, herschikken en verwijderen home.multiTool.desc=Pagina's samenvoegen, draaien, herschikken en verwijderen
multiTool.tags=Multitool,Multi bewerking,UI,klik sleep,voorkant,clientzijde,interactief,beweegbaar,verplaats multiTool.tags=Multitool,meerdere bewerkingen,UI,klik sleep,voorkant,clientzijde,interactief,beweegbaar,verplaats
home.merge.title=Samenvoegen home.merge.title=Samenvoegen
home.merge.desc=Voeg eenvoudig meerdere PDF's samen tot één. home.merge.desc=Voeg eenvoudig meerdere PDF's samen tot één.
merge.tags=samenvoegen,Pagina bewerkingen,Serverkant merge.tags=samenvoegen,pagina bewerkingen,serverzijde
home.split.title=Splitsen home.split.title=Splitsen
home.split.desc=Splits PDF's in meerdere documenten home.split.desc=Splits PDF's in meerdere documenten
@@ -255,7 +255,7 @@ addPassword.tags=veilig,beveiliging
home.removePassword.title=Wachtwoord verwijderen home.removePassword.title=Wachtwoord verwijderen
home.removePassword.desc=Verwijder wachtwoordbeveiliging van je PDF-document. home.removePassword.desc=Verwijder wachtwoordbeveiliging van je PDF-document.
removePassword.tags=veilig,Decrypteren,beveiliging,wachtwoord verwijderen removePassword.tags=veilig,ontsleutelen,beveiliging,wachtwoord verwijderen
home.compressPdfs.title=Comprimeren home.compressPdfs.title=Comprimeren
home.compressPdfs.desc=Comprimeer PDF's om hun bestandsgrootte te verkleinen. home.compressPdfs.desc=Comprimeer PDF's om hun bestandsgrootte te verkleinen.
@@ -336,9 +336,9 @@ home.certSign.title=Ondertekenen met certificaat
home.certSign.desc=Ondertekent een PDF met een certificaat/sleutel (PEM/P12) home.certSign.desc=Ondertekent een PDF met een certificaat/sleutel (PEM/P12)
certSign.tags=authenticeren,PEM,P12,officieel,versleutelen certSign.tags=authenticeren,PEM,P12,officieel,versleutelen
home.removeCertSign.title=Remove Certificate Sign home.removeCertSign.title=Verwijder certificaat
home.removeCertSign.desc=Remove certificate signature from PDF home.removeCertSign.desc=Verwijder certificaat van PDF
removeCertSign.tags=authenticate,PEM,P12,official,decrypt removeCertSign.tags=authenticeren,PEM,P12,officieel,ontsleutelen
home.pageLayout.title=Multi-pagina indeling home.pageLayout.title=Multi-pagina indeling
home.pageLayout.desc=Voeg meerdere pagina's van een PDF-document samen op één pagina home.pageLayout.desc=Voeg meerdere pagina's van een PDF-document samen op één pagina
@@ -437,12 +437,12 @@ AddStampRequest.tags=Stempel, Afbeelding toevoegen, afbeelding centreren, waterm
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=Converteert PDF naar boek-/stripformaat met gebruik van Calibre
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle PDFToBook.tags=Boek,Strip,Comic,Calibre,Converteren,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=Converteert boek-/stripformaat naar PDF met gebruik van Calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle BookToPDF.tags=Boek,Strip,Comic,Calibre,Converteren,manga,amazon,kindle
########################### ###########################
@@ -460,12 +460,12 @@ login.locked=Je account is geblokkeerd.
login.signinTitle=Gelieve in te loggen login.signinTitle=Gelieve in te loggen
login.ssoSignIn=Inloggen via Single Sign-on login.ssoSignIn=Inloggen via Single Sign-on
login.oauth2AutoCreateDisabled=OAUTH2 Automatisch aanmaken gebruiker uitgeschakeld login.oauth2AutoCreateDisabled=OAUTH2 Automatisch aanmaken gebruiker uitgeschakeld
login.oauth2RequestNotFound=Authorization request not found login.oauth2RequestNotFound=Autorisatieverzoek niet gevonden
login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2InvalidUserInfoResponse=Ongeldige reactie op gebruikersinfo
login.oauth2invalidRequest=Invalid Request login.oauth2invalidRequest=Ongeldig verzoek
login.oauth2AccessDenied=Access Denied login.oauth2AccessDenied=Toegang geweigerd
login.oauth2InvalidTokenResponse=Invalid Token Response login.oauth2InvalidTokenResponse=Ongeldige tokenreactie
login.oauth2InvalidIdToken=Invalid Id Token login.oauth2InvalidIdToken=Ongeldige ID token
#auto-redact #auto-redact
@@ -512,7 +512,7 @@ getPdfInfo.downloadJson=Download JSON
MarkdownToPDF.title=Markdown naar PDF MarkdownToPDF.title=Markdown naar PDF
MarkdownToPDF.header=Markdown naar PDF MarkdownToPDF.header=Markdown naar PDF
MarkdownToPDF.submit=Converteren MarkdownToPDF.submit=Converteren
MarkdownToPDF.help=in ontwikkeling MarkdownToPDF.help=In ontwikkeling
MarkdownToPDF.credit=Gebruikt WeasyPrint MarkdownToPDF.credit=Gebruikt WeasyPrint
@@ -664,10 +664,10 @@ certSign.submit=PDF ondertekenen
#removeCertSign #removeCertSign
removeCertSign.title=Remove Certificate Signature removeCertSign.title=Verwijder certificaat
removeCertSign.header=Remove the digital certificate from the PDF removeCertSign.header=Verwijder het digitale certificaat van de PDF
removeCertSign.selectPDF=Select a PDF file: removeCertSign.selectPDF=Selecteer een PDF bestand:
removeCertSign.submit=Remove Signature removeCertSign.submit=Verwijder certificaat
#removeBlanks #removeBlanks
@@ -694,17 +694,17 @@ compare.document.2=Document 2
compare.submit=Vergelijken compare.submit=Vergelijken
#BookToPDF #BookToPDF
BookToPDF.title=Books and Comics to PDF BookToPDF.title=Boeken en strips naar PDF
BookToPDF.header=Book to PDF BookToPDF.header=Boek naar PDF
BookToPDF.credit=Uses Calibre BookToPDF.credit=Gebruikt Calibre
BookToPDF.submit=Convert BookToPDF.submit=Converteer
#PDFToBook #PDFToBook
PDFToBook.title=PDF to Book PDFToBook.title=PDF naar boek
PDFToBook.header=PDF to Book PDFToBook.header=PDF naar boek
PDFToBook.selectText.1=Format PDFToBook.selectText.1=Formaat
PDFToBook.credit=Uses Calibre PDFToBook.credit=Gebruikt Calibre
PDFToBook.submit=Convert PDFToBook.submit=Converteer
#sign #sign
sign.title=Ondertekenen sign.title=Ondertekenen
@@ -725,7 +725,7 @@ repair.submit=Repareren
#flatten #flatten
flatten.title=Afvlakken flatten.title=Afvlakken
flatten.header=PDF's afvlakken flatten.header=PDF's afvlakken
flatten.flattenOnlyForms=Flatten only forms flatten.flattenOnlyForms=Alleen formulieren afvlakken
flatten.submit=Afvlakken flatten.submit=Afvlakken
@@ -756,7 +756,7 @@ ocr.selectText.8=Normaal (Zal een fout geven als de PDF tekst bevat)
ocr.selectText.9=Aanvullende instellingen ocr.selectText.9=Aanvullende instellingen
ocr.selectText.10=OCR-modus ocr.selectText.10=OCR-modus
ocr.selectText.11=Verwijder afbeeldingen na OCR (Verwijdert ALLE afbeeldingen, alleen nuttig als onderdeel van conversiestap) ocr.selectText.11=Verwijder afbeeldingen na OCR (Verwijdert ALLE afbeeldingen, alleen nuttig als onderdeel van conversiestap)
ocr.selectText.12=Render Type (Geavanceerd) ocr.selectText.12=Weergave Type (Geavanceerd)
ocr.help=Lees deze documentatie over hoe dit te gebruiken voor andere talen en/of gebruik buiten docker ocr.help=Lees deze documentatie over hoe dit te gebruiken voor andere talen en/of gebruik buiten docker
ocr.credit=Deze dienst maakt gebruik van OCRmyPDF en Tesseract voor OCR. ocr.credit=Deze dienst maakt gebruik van OCRmyPDF en Tesseract voor OCR.
ocr.submit=Verwerk PDF met OCR ocr.submit=Verwerk PDF met OCR
@@ -803,7 +803,7 @@ merge.title=Samenvoegen
merge.header=Meerdere PDF's samenvoegen (2+) merge.header=Meerdere PDF's samenvoegen (2+)
merge.sortByName=Sorteer op naam merge.sortByName=Sorteer op naam
merge.sortByDate=Sorteer op datum merge.sortByDate=Sorteer op datum
merge.removeCertSign=Remove digital signature in the merged file? merge.removeCertSign=Verwijder digitale handtekening in het samengevoegde bestand?
merge.submit=Samenvoegen merge.submit=Samenvoegen
@@ -811,24 +811,24 @@ merge.submit=Samenvoegen
pdfOrganiser.title=Pagina organisator pdfOrganiser.title=Pagina organisator
pdfOrganiser.header=PDF pagina organisator pdfOrganiser.header=PDF pagina organisator
pdfOrganiser.submit=Pagina's herschikken pdfOrganiser.submit=Pagina's herschikken
pdfOrganiser.mode=Mode pdfOrganiser.mode=Modus
pdfOrganiser.mode.1=Custom Page Order pdfOrganiser.mode.1=Aangepaste paginavolgorde
pdfOrganiser.mode.2=Reverse Order pdfOrganiser.mode.2=Omgekeerde volgorde
pdfOrganiser.mode.3=Duplex Sort pdfOrganiser.mode.3=Duplex sorteren
pdfOrganiser.mode.4=Booklet Sort pdfOrganiser.mode.4=Boekje sorteren
pdfOrganiser.mode.5=Side Stitch Booklet Sort pdfOrganiser.mode.5=Zijsteek boekje sorteren
pdfOrganiser.mode.6=Odd-Even Split pdfOrganiser.mode.6=Oneven-even splitsen
pdfOrganiser.mode.7=Remove First pdfOrganiser.mode.7=Eerste verwijderen
pdfOrganiser.mode.8=Remove Last pdfOrganiser.mode.8=Laatste verwijderen
pdfOrganiser.mode.9=Remove First and Last pdfOrganiser.mode.9=Eerste en laaste verwijderen
pdfOrganiser.mode.10=Odd-Even Merge pdfOrganiser.mode.10=Oneven-even samenvoeken
pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1) pdfOrganiser.placeholder=(bijv. 1,3,2 of 4-8,2,10-12 of 2n-1)
#multiTool #multiTool
multiTool.title=PDF Multitool multiTool.title=PDF Multitool
multiTool.header=PDF Multitool multiTool.header=PDF Multitool
multiTool.uploadPrompts=File Name multiTool.uploadPrompts=Bestandsnaam
#view pdf #view pdf
viewPdf.title=PDF bekijken viewPdf.title=PDF bekijken
@@ -839,7 +839,7 @@ pageRemover.title=Pagina verwijderaar
pageRemover.header=PDF pagina verwijderaar pageRemover.header=PDF pagina verwijderaar
pageRemover.pagesToDelete=Te verwijderen pagina's (Voer een door komma's gescheiden lijst met paginanummers in): pageRemover.pagesToDelete=Te verwijderen pagina's (Voer een door komma's gescheiden lijst met paginanummers in):
pageRemover.submit=Pagina's verwijderen pageRemover.submit=Pagina's verwijderen
pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30) pageRemover.placeholder=(bijv. 1,2,6 of 1-10,15-30)
#rotate #rotate
@@ -980,9 +980,9 @@ pdfToPDFA.title=PDF naar PDF/A
pdfToPDFA.header=PDF naar PDF/A pdfToPDFA.header=PDF naar PDF/A
pdfToPDFA.credit=Deze service gebruikt OCRmyPDF voor PDF/A-conversie pdfToPDFA.credit=Deze service gebruikt OCRmyPDF voor PDF/A-conversie
pdfToPDFA.submit=Converteren pdfToPDFA.submit=Converteren
pdfToPDFA.tip=Currently does not work for multiple inputs at once pdfToPDFA.tip=Werkt momenteel niet voor meerdere inputs tegelijkertijd.
pdfToPDFA.outputFormat=Output format pdfToPDFA.outputFormat=Output format
pdfToPDFA.pdfWithDigitalSignature=The PDF contains a digital signature. This will be removed in the next step. pdfToPDFA.pdfWithDigitalSignature=Dit PDF bestand bevat een digitale handtekening. Deze wordt in de volgende stap verwijderd.
#PDFToWord #PDFToWord
@@ -1064,14 +1064,14 @@ split-by-sections.vertical.label=Verticale secties
split-by-sections.horizontal.placeholder=Voer het aantal horizontale secties in split-by-sections.horizontal.placeholder=Voer het aantal horizontale secties in
split-by-sections.vertical.placeholder=Voer het aantal verticale secties in split-by-sections.vertical.placeholder=Voer het aantal verticale secties in
split-by-sections.submit=PDF splitsen split-by-sections.submit=PDF splitsen
split-by-sections.merge=Merge Into One PDF split-by-sections.merge=Samenvoegen in één PDF
#printFile #printFile
printFile.title=Print File printFile.title=Print bestand
printFile.header=Print File to Printer printFile.header=Print bestand naar printer
printFile.selectText.1=Select File to Print printFile.selectText.1=Selecteer bestand om te printen
printFile.selectText.2=Enter Printer Name printFile.selectText.2=Voer printernaam in
printFile.submit=Print printFile.submit=Print
@@ -1084,25 +1084,25 @@ licenses.version=Versie
licenses.license=Licentie licenses.license=Licentie
#survey #survey
survey.nav=Survey survey.nav=Enquête
survey.title=Stirling-PDF Survey survey.title=Stirling-PDF Enquête
survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF! survey.description=Stirling-PDF heeft geen tracking, dus we willen van onze gebruikers horen om Stirling-PDF te verbeteren.
survey.please=Please consider taking our survey! survey.please=Overweeg alstublieft om onze enquête in te vullen!
survey.disabled=(Survey popup will be disabled in following updates but available at foot of page) survey.disabled=(Enquête popup wordt in een toekomstige update weggehaald, maar is beschikbaar aan de onderkant van de pagina.)
survey.button=Take Survey survey.button=Vul enquête in.
survey.dontShowAgain=Don't show again survey.dontShowAgain=Niet weer tonen
#error #error
error.sorry=Sorry for the issue! error.sorry=Excuses voor het probleem!
error.needHelp=Need help / Found an issue? error.needHelp=Hulp nodig / probleem gevonden?
error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord: error.contactTip=Als je nog steeds problemen hebt, schroom niet om contact met ons op te nemen voor hulp. Je kan een ticket op onze Github pagina indienen of ons via Discord bereiken:
error.404.head=404 - Page Not Found | Oops, we tripped in the code! error.404.head=404 - Pagina niet gevonden | Oeps, we struikelden over de code!
error.404.1=We can't seem to find the page you're looking for. error.404.1=We kunnen de pagina die je zoek niet vinden.
error.404.2=Something went wrong error.404.2=Er ging iets mis.
error.github=Submit a ticket on GitHub error.github=Dien een ticket op Github in.
error.showStack=Show Stack Trace error.showStack=Geeft tracering weer
error.copyStack=Copy Stack Trace error.copyStack=Kopieer tracering
error.githubSubmit=GitHub - Submit a ticket error.githubSubmit=GitHub - Dien een ticket in
error.discordSubmit=Discord - Submit Support post error.discordSubmit=Discord - Maak een support post

812
src/main/resources/messages_pl_PL.properties Normal file → Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -329,8 +329,8 @@
}); });
</script> </script>
<div class="mb-3 mt-4 text-center"> <div class="mb-3 mt-4 text-center">
<a href="logout" role="button" class="btn btn-danger" th:text="#{account.signOut}">Sign Out</a> <a th:href="@{'/logout'}" role="button" class="btn btn-danger" th:text="#{account.signOut}">Sign Out</a>
<a th:if="${role == 'ROLE_ADMIN'}" class="btn btn-info" href="addUsers" role="button" th:text="#{account.adminSettings}" target="_blank">Admin Settings</a> <a th:if="${role == 'ROLE_ADMIN'}" class="btn btn-info" th:href="@{'/addUsers'}" role="button" th:text="#{account.adminSettings}" target="_blank">Admin Settings</a>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -21,7 +21,7 @@
<span class="tool-header-text" th:text="#{autoSplitPDF.header}"></span> <span class="tool-header-text" th:text="#{autoSplitPDF.header}"></span>
</div> </div>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/misc/auto-split-pdf}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/misc/auto-split-pdf'}">
<p th:text="#{autoSplitPDF.formPrompt}"></p> <p th:text="#{autoSplitPDF.formPrompt}"></p>
<div <div
th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"> th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}">
@@ -43,9 +43,9 @@
<li th:text="#{autoSplitPDF.selectText.3}"></li> <li th:text="#{autoSplitPDF.selectText.3}"></li>
<li th:text="#{autoSplitPDF.selectText.4}"></li> <li th:text="#{autoSplitPDF.selectText.4}"></li>
</ul> </ul>
<p><a th:href="@{files/Auto%20Splitter%20Divider%20(minimal).pdf}" download <p><a th:href="@{'/files/Auto%20Splitter%20Divider%20(minimal).pdf'}" download
th:text="#{autoSplitPDF.dividerDownload1}"></a></p> th:text="#{autoSplitPDF.dividerDownload1}"></a></p>
<p><a th:href="@{files/Auto%20Splitter%20Divider%20(with%20instructions).pdf}" download <p><a th:href="@{'/files/Auto%20Splitter%20Divider%20(with%20instructions).pdf'}" download
th:text="#{autoSplitPDF.dividerDownload2}"></a></p> th:text="#{autoSplitPDF.dividerDownload2}"></a></p>
</div> </div>

View File

@@ -14,7 +14,7 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-md-6"> <div class="col-md-6">
<h2 th:text="#{BookToPDF.header}"></h2> <h2 th:text="#{BookToPDF.header}"></h2>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/book/pdf}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/convert/book/pdf'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false)}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false)}"></div>
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{BookToPDF.submit}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{BookToPDF.submit}"></button>
</form> </form>

View File

@@ -20,7 +20,7 @@
<span class="tool-header-text" th:text="#{fileToPDF.header}"></span> <span class="tool-header-text" th:text="#{fileToPDF.header}"></span>
</div> </div>
<p th:text="#{processTimeWarning}"></p> <p th:text="#{processTimeWarning}"></p>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/file/pdf}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/convert/file/pdf'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false)}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false)}"></div>
<a class="btn btn-outline-primary" data-bs-toggle="collapse" href="#info" role="button" <a class="btn btn-outline-primary" data-bs-toggle="collapse" href="#info" role="button"
aria-expanded="false" aria-controls="info" th:text="#{fileToPDF.supportedFileTypesInfo}"></a> aria-expanded="false" aria-controls="info" th:text="#{fileToPDF.supportedFileTypesInfo}"></a>

View File

@@ -17,7 +17,7 @@
<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>
</div> </div>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/html/pdf}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/convert/html/pdf'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='text/html,application/zip' )}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='text/html,application/zip' )}"></div>
<div class="mb-3"> <div class="mb-3">
<label for="zoom" th:text="#{HTMLToPDF.zoom}" class="form-label"></label> <label for="zoom" th:text="#{HTMLToPDF.zoom}" class="form-label"></label>

View File

@@ -17,7 +17,7 @@
<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>
</div> </div>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/img/pdf}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/convert/img/pdf'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='image/*', inputText=#{imgPrompt})}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='image/*', inputText=#{imgPrompt})}"></div>
<div class="mb-3"> <div class="mb-3">
<label for="fitOption" th:text="#{imageToPDF.selectLabel}">Fit Options</label> <label for="fitOption" th:text="#{imageToPDF.selectLabel}">Fit Options</label>

View File

@@ -17,7 +17,7 @@
<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>
</div> </div>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/markdown/pdf}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/convert/markdown/pdf'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='text/markdown')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='text/markdown')}"></div>
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{MarkdownToPDF.submit}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{MarkdownToPDF.submit}"></button>
</form> </form>

View File

@@ -14,7 +14,7 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-md-6"> <div class="col-md-6">
<h2 th:text="#{PDFToBook.header}"></h2> <h2 th:text="#{PDFToBook.header}"></h2>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/pdf/book}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/convert/pdf/book'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<div class="mb-3"> <div class="mb-3">
<label th:text="#{PDFToBook.selectText.1}"></label> <label th:text="#{PDFToBook.selectText.1}"></label>

View File

@@ -16,7 +16,7 @@
<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>
</div> </div>
<form id="PDFToCSVForm" th:action="@{api/v1/convert/pdf/csv}" method="post" enctype="multipart/form-data"> <form id="PDFToCSVForm" th:action="@{'/api/v1/convert/pdf/csv'}" method="post" enctype="multipart/form-data">
<input id="pageId" type="hidden" name="pageId"> <input id="pageId" type="hidden" name="pageId">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<button type="submit" class="btn btn-primary" th:text="#{PDFToCSV.submit}"></button> <button type="submit" class="btn btn-primary" th:text="#{PDFToCSV.submit}"></button>

View File

@@ -17,7 +17,7 @@
<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>
</div> </div>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/pdf/html}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/convert/pdf/html'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<br> <br>
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{PDFToHTML.submit}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{PDFToHTML.submit}"></button>

View File

@@ -18,7 +18,7 @@
<span class="tool-header-text" th:text="#{pdfToImage.header}"></span> <span class="tool-header-text" th:text="#{pdfToImage.header}"></span>
</div> </div>
<p th:text="#{processTimeWarning}"></p> <p th:text="#{processTimeWarning}"></p>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/pdf/img}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/convert/pdf/img'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<div class="mb-3"> <div class="mb-3">
<label th:text="#{pdfToImage.selectText}"></label> <label th:text="#{pdfToImage.selectText}"></label>

View File

@@ -18,7 +18,7 @@
<span class="tool-header-text" th:text="#{pdfToPDFA.header}"></span> <span class="tool-header-text" th:text="#{pdfToPDFA.header}"></span>
</div> </div>
<p th:text="#{pdfToPDFA.tip}"></p> <p th:text="#{pdfToPDFA.tip}"></p>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/pdf/pdfa}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/convert/pdf/pdfa'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<div class="mb-3"> <div class="mb-3">
<label for="outputFormat" th:text="#{pdfToPDFA.outputFormat}"></label> <label for="outputFormat" th:text="#{pdfToPDFA.outputFormat}"></label>

View File

@@ -17,7 +17,7 @@
<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>
</div> </div>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/pdf/presentation}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/convert/pdf/presentation'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<div class="mb-3"> <div class="mb-3">
<label th:text="#{PDFToPresentation.selectText.1}"></label> <label th:text="#{PDFToPresentation.selectText.1}"></label>

View File

@@ -17,7 +17,7 @@
<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>
</div> </div>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/pdf/text}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/convert/pdf/text'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<div class="mb-3"> <div class="mb-3">
<label th:text="#{PDFToText.selectText.1}"></label> <label th:text="#{PDFToText.selectText.1}"></label>

View File

@@ -17,7 +17,7 @@
<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>
</div> </div>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/pdf/word}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/convert/pdf/word'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<div class="mb-3"> <div class="mb-3">
<label th:text="#{PDFToWord.selectText.1}"></label> <label th:text="#{PDFToWord.selectText.1}"></label>

View File

@@ -17,7 +17,7 @@
<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>
</div> </div>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/pdf/xml}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/convert/pdf/xml'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<br> <br>
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{PDFToXML.submit}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{PDFToXML.submit}"></button>

View File

@@ -17,7 +17,7 @@
<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>
</div> </div>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/url/pdf}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/convert/url/pdf'}">
<input type="text" class="form-control" id="urlInput" name="urlInput" placeholder="http://"> <input type="text" class="form-control" id="urlInput" name="urlInput" placeholder="http://">
<br> <br>
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{URLToPDF.submit}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{URLToPDF.submit}"></button>

View File

@@ -16,7 +16,7 @@
<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>
</div> </div>
<form id="cropForm" th:action="@{/api/v1/general/crop}" method="post" enctype="multipart/form-data"> <form id="cropForm" th:action="@{'/api/v1/general/crop'}" method="post" enctype="multipart/form-data">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<input id="x" type="hidden" name="x"> <input id="x" type="hidden" name="x">
<input id="y" type="hidden" name="y"> <input id="y" type="hidden" name="y">

View File

@@ -21,7 +21,7 @@
<a href="https://github.com/Stirling-Tools/Stirling-PDF/issues" id="github-button" class="btn btn-primary" target="_blank" th:text="#{error.github}"></a> <a href="https://github.com/Stirling-Tools/Stirling-PDF/issues" id="github-button" class="btn btn-primary" target="_blank" th:text="#{error.github}"></a>
<a href="https://discord.gg/Cn8pWhQRxZ" id="discord-button" class="btn btn-primary" target="_blank" th:text="#{joinDiscord}"></a> <a href="https://discord.gg/Cn8pWhQRxZ" id="discord-button" class="btn btn-primary" target="_blank" th:text="#{joinDiscord}"></a>
</div> </div>
<a th:href="@{/}" id="home-button" class="home-button btn btn-primary" th:text="#{goHomepage}"></a> <a th:href="@{'/'}" id="home-button" class="home-button btn btn-primary" th:text="#{goHomepage}"></a>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -16,7 +16,7 @@
<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>
</div> </div>
<form th:action="@{api/v1/general/rearrange-pages}" method="post" enctype="multipart/form-data"> <form th:action="@{'/api/v1/general/rearrange-pages'}" method="post" enctype="multipart/form-data">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<input type="hidden" id="customMode" name="customMode" value=""> <input type="hidden" id="customMode" name="customMode" value="">
<div class="mb-3"> <div class="mb-3">

View File

@@ -10,67 +10,67 @@
<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"> <link rel="apple-touch-icon" sizes="180x180" th:href="@{'/apple-touch-icon.png'}">
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png"> <link rel="icon" type="image/png" sizes="32x32" th:href="@{'/favicon-32x32.png'}">
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png"> <link rel="icon" type="image/png" sizes="16x16" th:href="@{'/favicon-16x16.png'}">
<link rel="manifest" href="site.webmanifest"> <link rel="manifest" th:href="@{'/site.webmanifest'}">
<link rel="mask-icon" href="safari-pinned-tab.svg" color="#ca2b2a"> <link rel="mask-icon" th:href="@{'/safari-pinned-tab.svg'}" color="#ca2b2a">
<link rel="shortcut icon" href="favicon.ico"> <link rel="shortcut icon" th: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">
<meta name="theme-color" content="#ffffff"> <meta name="theme-color" content="#ffffff">
<!-- jQuery --> <!-- jQuery -->
<script src="js/thirdParty/jquery.min.js"></script> <script th:src="@{'/js/thirdParty/jquery.min.js'}"></script>
<script src="js/thirdParty/jquery.validate.min.js"></script> <script th:src="@{'/js/thirdParty/jquery.validate.min.js'}"></script>
<script src="js/thirdParty/jszip.min.js"></script> <script th:src="@{'/js/thirdParty/jszip.min.js'}"></script>
<!-- Bootstrap --> <!-- Bootstrap -->
<script src="js/thirdParty/popper.min.js"></script> <script th:src="@{'/js/thirdParty/popper.min.js'}"></script>
<script src="js/thirdParty/bootstrap.min.js"></script> <script th:src="@{'/js/thirdParty/bootstrap.min.js'}"></script>
<link rel="stylesheet" href="css/bootstrap.min.css"> <link rel="stylesheet" th:href="@{'/css/bootstrap.min.css'}">
<!-- Bootstrap Icons --> <!-- Bootstrap Icons -->
<link rel="stylesheet" href="css/bootstrap-icons.min.css"> <link rel="stylesheet" th:href="@{'/css/bootstrap-icons.min.css'}">
<!-- PDF.js --> <!-- PDF.js -->
<script type="module" src="./pdfjs-legacy/pdf.mjs"></script> <script type="module" th:src="@{'/pdfjs-legacy/pdf.mjs'}"></script>
<!-- PDF-Lib --> <!-- PDF-Lib -->
<script src="js/thirdParty/pdf-lib.min.js"></script> <script th:src="@{'/js/thirdParty/pdf-lib.min.js'}"></script>
<!-- Custom --> <!-- Custom -->
<link rel="stylesheet" href="css/general.css"> <link rel="stylesheet" th:href="@{'/css/general.css'}">
<link rel="stylesheet" href="css/theme/theme.css"> <link rel="stylesheet" th:href="@{'/css/theme/theme.css'}">
<link rel="stylesheet" href="css/theme/componentes.css"> <link rel="stylesheet" th:href="@{'/css/theme/componentes.css'}">
<link rel="stylesheet" href="css/theme/theme.light.css" id="light-mode-styles"> <link rel="stylesheet" th:href="@{'/css/theme/theme.light.css'}" id="light-mode-styles">
<link rel="stylesheet" href="css/theme/theme.dark.css" id="dark-mode-styles"> <link rel="stylesheet" th:href="@{'/css/theme/theme.dark.css'}" id="dark-mode-styles">
<link rel="stylesheet" href="css/rainbow-mode.css" id="rainbow-mode-styles" disabled> <link rel="stylesheet" th:href="@{'/css/rainbow-mode.css'}" id="rainbow-mode-styles" disabled>
<link rel="stylesheet" href="css/tab-container.css"> <link rel="stylesheet" th:href="@{'/css/tab-container.css'}">
<link rel="stylesheet" href="css/navbar.css"> <link rel="stylesheet" th:href="@{'/css/navbar.css'}">
<link rel="stylesheet" href="css/error.css" th:if="${error}"> <link rel="stylesheet" th:href="@{'/css/error.css'}" th:if="${error}">
<link rel="stylesheet" href="css/home.css" th:if="${currentPage == 'home'}"> <link rel="stylesheet" th:href="@{'/css/home.css'}" th:if="${currentPage == 'home'}">
<link rel="stylesheet" href="css/account.css" th:if="${currentPage == 'account'}"> <link rel="stylesheet" th:href="@{'/css/account.css'}" th:if="${currentPage == 'account'}">
<link rel="stylesheet" href="css/licenses.css" th:if="${currentPage == 'licenses'}"> <link rel="stylesheet" th:href="@{'/css/licenses.css'}" th:if="${currentPage == 'licenses'}">
<link rel="stylesheet" href="css/multi-tool.css" th:if="${currentPage == 'multi-tool'}"> <link rel="stylesheet" th:href="@{'/css/multi-tool.css'}" th:if="${currentPage == 'multi-tool'}">
<link rel="stylesheet" href="css/rotate-pdf.css" th:if="${currentPage == 'rotate-pdf'}"> <link rel="stylesheet" th:href="@{'/css/rotate-pdf.css'}" th:if="${currentPage == 'rotate-pdf'}">
<link rel="stylesheet" href="css/stamp.css" th:if="${currentPage == 'stamp'}"> <link rel="stylesheet" th:href="@{'/css/stamp.css'}" th:if="${currentPage == 'stamp'}">
<link rel="stylesheet" href="css/fileSelect.css"> <link rel="stylesheet" th:href="@{'/css/fileSelect.css'}">
<link rel="stylesheet" href="css/footer.css"> <link rel="stylesheet" th:href="@{'/css/footer.css'}">
<script src="js/thirdParty/fontfaceobserver.standalone.js"></script> <script th:src="@{'/js/thirdParty/fontfaceobserver.standalone.js'}"></script>
<!-- Google MD Icons --> <!-- Google MD Icons -->
<link rel="stylesheet" href="css/theme/font.css"> <link rel="stylesheet" th:href="@{'/css/theme/font.css'}">
<!-- Help Modal --> <!-- Help Modal -->
<link rel="stylesheet" href="css/errorBanner.css"> <link rel="stylesheet" th:href="@{'/css/errorBanner.css'}">
<script src="js/cacheFormInputs.js"></script> <script th:src="@{'/js/cacheFormInputs.js'}"></script>
<script src="js/tab-container.js"></script> <script th:src="@{'/js/tab-container.js'}"></script>
<script src="js/darkmode.js"></script> <script th:src="@{'/js/darkmode.js'}"></script>
</th:block> </th:block>
<th:block th:fragment="game"> <th:block th:fragment="game">
@@ -138,9 +138,9 @@
<div id="score">Score: 0</div> <div id="score">Score: 0</div>
<div id="high-score">High Score: 0</div> <div id="high-score">High Score: 0</div>
<div id="level">Level: 1</div> <div id="level">Level: 1</div>
<img src="favicon.svg" class="player" id="player" alt="favicon"> <img th:src="@{'/favicon.svg'}" class="player" id="player" alt="favicon">
</div> </div>
<link rel="stylesheet" href="css/game.css"> <link rel="stylesheet" th:href="@{'/css/game.css'}">
</dialog> </dialog>
</th:block> </th:block>
@@ -150,7 +150,7 @@
const multiple = [[${multiple}]] || false; const multiple = [[${multiple}]] || false;
const remoteCall = [[${remoteCall}]] || true; const remoteCall = [[${remoteCall}]] || true;
</script> </script>
<script src="js/downloader.js"></script> <script th:src="@{'/js/downloader.js'}"></script>
<div class="custom-file-chooser" th:attr="data-bs-unique-id=${name}, data-bs-element-id=${name+'-input'}, data-bs-files-selected=#{filesSelected}, data-bs-pdf-prompt=#{pdfPrompt}"> <div class="custom-file-chooser" th:attr="data-bs-unique-id=${name}, data-bs-element-id=${name+'-input'}, data-bs-files-selected=#{filesSelected}, data-bs-pdf-prompt=#{pdfPrompt}">
<div class="mb-3"> <div class="mb-3">
@@ -166,5 +166,5 @@
</div> </div>
</div> </div>
</div> </div>
<script src="js/fileInput.js"></script> <script th:src="@{'/js/fileInput.js'}"></script>
</th:block> </th:block>

View File

@@ -41,7 +41,7 @@
<a href="https://github.com/Stirling-Tools/Stirling-PDF/issues" id="github-button" target="_blank" th:text="#{error.githubSubmit}"></a> <a href="https://github.com/Stirling-Tools/Stirling-PDF/issues" id="github-button" target="_blank" th:text="#{error.githubSubmit}"></a>
<a href="https://discord.gg/Cn8pWhQRxZ" id="discord-button" target="_blank" th:text="#{error.discordSubmit}"></a> <a href="https://discord.gg/Cn8pWhQRxZ" id="discord-button" target="_blank" th:text="#{error.discordSubmit}"></a>
</div> </div>
<a href="/" class="home-button" th:text="#{goHomepage}"></a> <a th:href="@{'/'}" class="home-button" th:text="#{goHomepage}"></a>
<a data-bs-dismiss="modal" class="home-button" th:text="#{close}"></a> <a data-bs-dismiss="modal" class="home-button" th:text="#{close}"></a>
</div> </div>
</div> </div>
@@ -49,5 +49,5 @@
</div> </div>
</div> </div>
</div> </div>
<script src="js/errorBanner.js"></script> <script th:src="@{'/js/errorBanner.js'}"></script>
</th:block> </th:block>

View File

@@ -3,7 +3,7 @@
<div class="footer-powered-by"> <div class="footer-powered-by">
<span th:text="#{poweredBy} + ' Stirling PDF'"></span> <span th:text="#{poweredBy} + ' Stirling PDF'"></span>
</div> </div>
<a href="licenses" id="licenses" target="_blank" class="mx-1" title="" th:text="#{licenses.nav}">Licenses</a> <a th:href="@{'/licenses'}" id="licenses" target="_blank" class="mx-1" title="" th:text="#{licenses.nav}">Licenses</a>
<a href="https://stirlingpdf.info/s/clwzgtfw7000gltkmwz1n212m" id="survey" target="_blank" class="mx-1" title="" th:text="#{survey.nav}">Survey</a> <a href="https://stirlingpdf.info/s/clwzgtfw7000gltkmwz1n212m" id="survey" target="_blank" class="mx-1" title="" th:text="#{survey.nav}">Survey</a>
</div> </div>
</footer> </footer>

View File

@@ -1,34 +1,34 @@
<th:block th:fragment="langs"> <th:block th:fragment="langs">
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="bg_BG"> <img src="images/flags/bg.svg" alt="icon" width="20" height="15"> Български</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="bg_BG"> <img th:src="@{'/images/flags/bg.svg'}" alt="icon" width="20" height="15"> Български</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="ar_AR"> <img src="images/flags/sa.svg" alt="icon" width="20" height="15"> العربية</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="ar_AR"> <img th:src="@{'/images/flags/sa.svg'}" alt="icon" width="20" height="15"> العربية</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="ca_CA"> <img src="images/flags/es-ct.svg" alt="icon" width="20" height="15"> Català</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="ca_CA"> <img th:src="@{'/images/flags/es-ct.svg'}" alt="icon" width="20" height="15"> Català</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="zh_CN"> <img src="images/flags/cn.svg" alt="icon" width="20" height="15"> 简体中文</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="zh_CN"> <img th:src="@{'/images/flags/cn.svg'}" alt="icon" width="20" height="15"> 简体中文</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="zh_TW"> <img src="images/flags/tw.svg" alt="icon" width="20" height="15"> 繁體中文</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="zh_TW"> <img th:src="@{'/images/flags/tw.svg'}" alt="icon" width="20" height="15"> 繁體中文</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="de_DE"> <img src="images/flags/de.svg" alt="icon" width="20" height="15"> Deutsch</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="de_DE"> <img th:src="@{'/images/flags/de.svg'}" alt="icon" width="20" height="15"> Deutsch</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="en_GB"> <img src="images/flags/gb.svg" alt="icon" width="20" height="15"> English (GB)</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="en_GB"> <img th:src="@{'/images/flags/gb.svg'}" alt="icon" width="20" height="15"> English (GB)</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="en_US"> <img src="images/flags/us.svg" alt="icon" width="20" height="15"> English (US)</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="en_US"> <img th:src="@{'/images/flags/us.svg'}" alt="icon" width="20" height="15"> English (US)</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="eu_ES"> <img src="images/flags/eu.svg" alt="icon" width="20" height="15"> Euskara</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="eu_ES"> <img th:src="@{'/images/flags/eu.svg'}" alt="icon" width="20" height="15"> Euskara</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="es_ES"> <img src="images/flags/es.svg" alt="icon" width="20" height="15"> Español</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="es_ES"> <img th:src="@{'/images/flags/es.svg'}" alt="icon" width="20" height="15"> Español</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="fr_FR"> <img src="images/flags/fr.svg" alt="icon" width="20" height="15"> Français</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="fr_FR"> <img th:src="@{'/images/flags/fr.svg'}" alt="icon" width="20" height="15"> Français</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="id_ID"> <img src="images/flags/id.svg" alt="icon" width="20" height="15"> Indonesia</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="id_ID"> <img th:src="@{'/images/flags/id.svg'}" alt="icon" width="20" height="15"> Indonesia</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="it_IT"> <img src="images/flags/it.svg" alt="icon" width="20" height="15"> Italiano</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="it_IT"> <img th:src="@{'/images/flags/it.svg'}" alt="icon" width="20" height="15"> Italiano</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="nl_NL"> <img src="images/flags/nl.svg" alt="icon" width="20" height="15"> Nederlands</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="nl_NL"> <img th:src="@{'/images/flags/nl.svg'}" alt="icon" width="20" height="15"> Nederlands</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="pl_PL"> <img src="images/flags/pl.svg" alt="icon" width="20" height="15"> Polski</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="pl_PL"> <img th:src="@{'/images/flags/pl.svg'}" alt="icon" width="20" height="15"> Polski</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="pt_BR"> <img src="images/flags/pt_br.svg" alt="icon" width="20" height="15"> Português (BR)</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="pt_BR"> <img th:src="@{'/images/flags/pt_br.svg'}" alt="icon" width="20" height="15"> Português (BR)</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="pt_PT"> <img src="images/flags/pt_pt.svg" alt="icon" width="20" height="15"> Português (PT)</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="pt_PT"> <img th:src="@{'/images/flags/pt_pt.svg'}" alt="icon" width="20" height="15"> Português (PT)</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="ro_RO"> <img src="images/flags/ro.svg" alt="icon" width="20" height="15"> Romanian</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="ro_RO"> <img th:src="@{'/images/flags/ro.svg'}" alt="icon" width="20" height="15"> Romanian</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="sk_SK"> <img src="images/flags/sk.svg" alt="icon" width="20" height="15"> Slovensky</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="sk_SK"> <img th:src="@{'/images/flags/sk.svg'}" alt="icon" width="20" height="15"> Slovensky</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="sv_SE"> <img src="images/flags/se.svg" alt="icon" width="20" height="15"> Svenska</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="sv_SE"> <img th:src="@{'/images/flags/se.svg'}" alt="icon" width="20" height="15"> Svenska</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="tr_TR"> <img src="images/flags/tr.svg" alt="icon" width="20" height="15"> Türkçe</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="tr_TR"> <img th:src="@{'/images/flags/tr.svg'}" alt="icon" width="20" height="15"> Türkçe</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="ru_RU"> <img src="images/flags/ru.svg" alt="icon" width="20" height="15"> Русский</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="ru_RU"> <img th:src="@{'/images/flags/ru.svg'}" alt="icon" width="20" height="15"> Русский</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="ko_KR"> <img src="images/flags/kr.svg" alt="icon" width="20" height="15"> 한국어</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="ko_KR"> <img th:src="@{'/images/flags/kr.svg'}" alt="icon" width="20" height="15"> 한국어</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="ja_JP"> <img src="images/flags/jp.svg" alt="icon" width="20" height="15"> 日本語</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="ja_JP"> <img th:src="@{'/images/flags/jp.svg'}" alt="icon" width="20" height="15"> 日本語</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="el_GR"> <img src="images/flags/gr.svg" alt="icon" width="20" height="15"> Ελληνικά</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="el_GR"> <img th:src="@{'/images/flags/gr.svg'}" alt="icon" width="20" height="15"> Ελληνικά</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="hu_HU"> <img src="images/flags/hu.svg" alt="icon" width="20" height="15"> Hungarian</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="hu_HU"> <img th:src="@{'/images/flags/hu.svg'}" alt="icon" width="20" height="15"> Hungarian</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="hi_IN"> <img th: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 th: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 th: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> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="cs_CZ"> <img th:src="@{'/images/flags/cz.svg'}" alt="icon" width="20" height="15"> Česky</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="hr_HR"> <img src="images/flags/hr.svg" alt="icon" width="20" height="15"> Hrvatski</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="hr_HR"> <img th:src="@{'/images/flags/hr.svg'}" alt="icon" width="20" height="15"> Hrvatski</a>
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="no_NB"> <img src="images/flags/no.svg" alt="icon" width="20" height="15"> Norsk</a> <a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="no_NB"> <img th:src="@{'/images/flags/no.svg'}" alt="icon" width="20" height="15"> Norsk</a>
</th:block> </th:block>

View File

@@ -1,15 +1,15 @@
<div th:fragment="navbar" class="mx-auto"> <div th:fragment="navbar" class="mx-auto">
<script src="js/languageSelection.js"></script> <script th:src="@{'/js/languageSelection.js'}"></script>
<script th:inline="javascript"> <script th:inline="javascript">
const currentVersion = /*[[${@appVersion}]]*/ ''; const currentVersion = /*[[${@appVersion}]]*/ '';
const noFavourites = /*[[#{noFavourites}]]*/ ''; const noFavourites = /*[[#{noFavourites}]]*/ '';
const updateAvailable = /*[[#{settings.updateAvailable}]]*/ ''; const updateAvailable = /*[[#{settings.updateAvailable}]]*/ '';
</script> </script>
<script src="js/githubVersion.js"></script> <script th: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" th:href="@{/}" style="display: flex;"> <a class="navbar-brand" th:href="@{'/'}" style="display: flex;">
<img class="main-icon" src="favicon.svg" alt="icon"> <img class="main-icon" th: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"
@@ -242,7 +242,7 @@
</li> </li>
<li class="nav-item" th:if="${@endpointConfiguration.isEndpointEnabled('multi-tool')}"> <li class="nav-item" th:if="${@endpointConfiguration.isEndpointEnabled('multi-tool')}">
<a class="nav-link" href="#" th:href="@{multi-tool}" <a class="nav-link" href="#" th:href="@{'/multi-tool'}"
th:classappend="${currentPage}=='multi-tool' ? 'active' : ''" th:title="#{home.multiTool.desc}"> th:classappend="${currentPage}=='multi-tool' ? 'active' : ''" th:title="#{home.multiTool.desc}">
<span class="material-symbols-rounded"> <span class="material-symbols-rounded">
construction construction
@@ -252,7 +252,7 @@
</li> </li>
<li class="nav-item" th:if="${@endpointConfiguration.isEndpointEnabled('pipeline')}" > <li class="nav-item" th:if="${@endpointConfiguration.isEndpointEnabled('pipeline')}" >
<a class="nav-link" href="#" th:href="@{pipeline}" <a class="nav-link" href="#" th:href="@{'/pipeline'}"
th:classappend="${currentPage}=='pipeline' ? 'active' : ''" th:title="#{home.pipeline.desc}"> th:classappend="${currentPage}=='pipeline' ? 'active' : ''" th:title="#{home.pipeline.desc}">
<span class="material-symbols-rounded"> <span class="material-symbols-rounded">
family_history family_history
@@ -262,7 +262,7 @@
</li> </li>
<li class="nav-item" th:if="${@endpointConfiguration.isEndpointEnabled('compress-pdf')}" > <li class="nav-item" th:if="${@endpointConfiguration.isEndpointEnabled('compress-pdf')}" >
<a class="nav-link" href="#" title="#{home.compressPdfs.title}" th:href="@{compress-pdf}" <a class="nav-link" href="#" title="#{home.compressPdfs.title}" th:href="@{'/compress-pdf'}"
th:classappend="${currentPage}=='compress-pdf' ? 'active' : ''" th:title="#{home.compressPdfs.desc}"> th:classappend="${currentPage}=='compress-pdf' ? 'active' : ''" th:title="#{home.compressPdfs.desc}">
<span class="material-symbols-rounded"> <span class="material-symbols-rounded">
zoom_in_map zoom_in_map
@@ -273,7 +273,7 @@
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="#" th:href="@{split-pdfs}" <a class="nav-link" href="#" th:href="@{'/split-pdfs'}"
th:classappend="${currentPage}=='split-pdfs' ? 'active' : ''" th:title="#{home.split-pdfs.desc}"> th:classappend="${currentPage}=='split-pdfs' ? 'active' : ''" th:title="#{home.split-pdfs.desc}">
<span class="material-symbols-rounded"> <span class="material-symbols-rounded">
cut cut
@@ -283,7 +283,7 @@
</li> </li>
<!-- <li class="nav-item"> <!-- <li class="nav-item">
<a class="nav-link" href="#" th:href="@{merge-pdfs}" <a class="nav-link" href="#" th:href="@{'/merge-pdfs'}"
th:classappend="${currentPage}=='merge-pdfs' ? 'active' : ''" th:title="#{home.merge.desc}"> th:classappend="${currentPage}=='merge-pdfs' ? 'active' : ''" th:title="#{home.merge.desc}">
<span class="material-symbols-rounded"> <span class="material-symbols-rounded">
add_to_photos add_to_photos
@@ -363,8 +363,8 @@
</ul> </ul>
</div> </div>
</div> </div>
<script src="js/favourites.js"></script> <script th:src="@{'/js/favourites.js'}"></script>
<script src="js/search.js"></script> <script th:src="@{'/js/search.js'}"></script>
</nav> </nav>
<th:block th:insert="~{fragments/errorBannerPerPage.html :: errorBannerPerPage}"></th:block> <th:block th:insert="~{fragments/errorBannerPerPage.html :: errorBannerPerPage}"></th:block>
@@ -386,13 +386,13 @@
<div class="footer-center" style="flex-direction: row;"> <div class="footer-center" style="flex-direction: row;">
<a href="https://github.com/Stirling-Tools/Stirling-PDF" class="mx-1" role="button" <a href="https://github.com/Stirling-Tools/Stirling-PDF" class="mx-1" role="button"
th:title="#{visitGithub}"> th:title="#{visitGithub}">
<img src="images/github.svg" alt="github"> <img th:src="@{'/images/github.svg'}" alt="github">
</a> </a>
<a href="https://hub.docker.com/r/frooodle/s-pdf" class="mx-1" role="button" th:title="#{seeDockerHub}"> <a href="https://hub.docker.com/r/frooodle/s-pdf" class="mx-1" role="button" th:title="#{seeDockerHub}">
<img src="images/docker.svg" alt="docker"> <img th:src="@{'/images/docker.svg'}" alt="docker">
</a> </a>
<a href="https://discord.gg/Cn8pWhQRxZ" class="mx-1" role="button" th:title="#{joinDiscord}"> <a href="https://discord.gg/Cn8pWhQRxZ" class="mx-1" role="button" th:title="#{joinDiscord}">
<img src="images/discord.svg" alt="discord"> <img th:src="@{'/images/discord.svg'}" alt="discord">
</a> </a>
<a href="https://github.com/sponsors/Frooodle" class="mx-1" role="button" th:title="#{donate}"> <a href="https://github.com/sponsors/Frooodle" class="mx-1" role="button" th:title="#{donate}">
<span class="material-symbols-rounded fill footer-icon" style="font-size: 2.5rem;"> <span class="material-symbols-rounded fill footer-icon" style="font-size: 2.5rem;">
@@ -401,7 +401,7 @@
</a> </a>
</div> </div>
<a href="swagger-ui/index.html" class="btn btn-sm btn-outline-primary mx-1" role="button" <a th:href="@{'/swagger-ui/index.html'}" class="btn btn-sm btn-outline-primary mx-1" role="button"
target="_blank">API</a> target="_blank">API</a>
<a href="https://github.com/Stirling-Tools/Stirling-PDF/releases" <a href="https://github.com/Stirling-Tools/Stirling-PDF/releases"
class="btn btn-sm btn-outline-primary mx-1" id="update-btn" th:utext="#{settings.update}" role="button" class="btn btn-sm btn-outline-primary mx-1" id="update-btn" th:utext="#{settings.update}" role="button"
@@ -430,16 +430,16 @@
<label for="cacheInputs" th:text="#{settings.cacheInputs.name}"></label> <label for="cacheInputs" th:text="#{settings.cacheInputs.name}"></label>
</div> </div>
<a th:if="${@loginEnabled and @activSecurity}" href="account" class="btn btn-sm btn-outline-primary" <a th:if="${@loginEnabled and @activSecurity}" th:href="@{'/account'}" class="btn btn-sm btn-outline-primary"
role="button" th:text="#{settings.accountSettings}" target="_blank">Account Settings</a> role="button" th:text="#{settings.accountSettings}" target="_blank">Account Settings</a>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<a th:if="${@loginEnabled and @activSecurity}" class="btn btn-danger" role="button" <a th:if="${@loginEnabled and @activSecurity}" class="btn btn-danger" role="button"
th:text="#{settings.signOut}" href="logout">Sign Out</a> th:text="#{settings.signOut}" th:href="@{'/logout'}">Sign Out</a>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" th:text="#{close}"></button> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal" th:text="#{close}"></button>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<script src="js/settings.js"></script> <script th:src="@{'/js/settings.js'}"></script>
</div> </div>

View File

@@ -21,7 +21,7 @@
</div> </div>
<br class="d-md-none"> <br class="d-md-none">
<!-- Features --> <!-- Features -->
<script src="js/homecard.js"></script> <script th:src="@{'/js/homecard.js'}"></script>
<div class=" container"> <div class=" container">
<br> <br>
<span class="material-symbols-rounded search-icon"> <span class="material-symbols-rounded search-icon">

View File

@@ -2,7 +2,7 @@
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://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" th:href="@{'/css/login.css'}">
</head> </head>
<body> <body>
@@ -111,7 +111,7 @@
} }
</script> </script>
<div class="text-center"> <div class="text-center">
<img class="mb-4" src="favicon.svg" alt="favicon" width="144" height="144"> <img class="mb-4" th: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} and (${loginMethod} == 'all' or ${loginMethod} == 'oauth2')"> <div th:if="${oAuth2Enabled} and (${loginMethod} == 'all' or ${loginMethod} == 'oauth2')">
@@ -134,7 +134,7 @@
</div> </div>
</div> </div>
</div> </div>
<form th:if="${loginMethod} == 'all' or ${loginMethod} == 'normal'" th:action="@{login}" method="post"> <form th:if="${loginMethod} == 'all' or ${loginMethod} == 'normal'" th:action="@{'/login'}" method="post">
<h2 class="h5 mb-3 fw-normal" th:text="#{login.signinTitle}">Please sign in</h2> <h2 class="h5 mb-3 fw-normal" th:text="#{login.signinTitle}">Please sign in</h2>
<div class="form-floating"> <div class="form-floating">
<input type="text" class="form-control" id="username" name="username" placeholder="admin"> <input type="text" class="form-control" id="username" name="username" placeholder="admin">
@@ -154,7 +154,7 @@
<div class="mt-3"> <!-- Added a margin-top for spacing --> <div class="mt-3"> <!-- Added a margin-top for spacing -->
<div class="dropdown text-center"> <div class="dropdown text-center">
<button class="btn btn-secondary dropdown-toggle" type="button" id="languageDropdown" data-bs-toggle="dropdown" aria-expanded="false"> <button class="btn btn-secondary dropdown-toggle" type="button" id="languageDropdown" data-bs-toggle="dropdown" aria-expanded="false">
<img src="images/flags/gb.svg" alt="icon" width="20" height="15"> English (GB) <img th:src="@{'/images/flags/gb.svg'}" alt="icon" width="20" height="15"> English (GB)
<!-- Default language placeholder --> <!-- Default language placeholder -->
</button> </button>
<div class="dropdown-menu" aria-labelledby="languageDropdown"> <div class="dropdown-menu" aria-labelledby="languageDropdown">

View File

@@ -2,7 +2,7 @@
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://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" th:href="@{'/css/merge.css'}">
</head> </head>
<body> <body>
@@ -35,7 +35,7 @@
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{merge.submit}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{merge.submit}"></button>
</div> </div>
</form> </form>
<script src="js/merge.js"></script> <script th:src="@{'/js/merge.js'}"></script>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -2,8 +2,8 @@
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://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 th:src="@{'/js/thirdParty/interact.min.js'}"></script>
<link rel="stylesheet" href="css/add-image.css"> <link rel="stylesheet" th:href="@{'/css/add-image.css'}">
</head> </head>
<body> <body>
@@ -68,7 +68,7 @@
<!-- draggables box --> <!-- draggables box -->
<div id="box-drag-container" class="show-on-file-selected"> <div id="box-drag-container" class="show-on-file-selected">
<canvas id="pdf-canvas"></canvas> <canvas id="pdf-canvas"></canvas>
<script src="js/draggable-utils.js"></script> <script th:src="@{'/js/draggable-utils.js'}"></script>
<div class="draggable-buttons-box ignore-rtl"> <div class="draggable-buttons-box ignore-rtl">
<button class="btn btn-outline-secondary" onclick="DraggableUtils.deleteDraggableCanvas(DraggableUtils.getLastInteracted())"> <button class="btn btn-outline-secondary" onclick="DraggableUtils.deleteDraggableCanvas(DraggableUtils.getLastInteracted())">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trash" viewBox="0 0 16 16"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trash" viewBox="0 0 16 16">

View File

@@ -60,7 +60,7 @@
<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>
</div> </div>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/misc/add-page-numbers}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/misc/add-page-numbers'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<br> <br>
<div class="mb-3"> <div class="mb-3">

View File

@@ -17,7 +17,7 @@
<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>
</div> </div>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/misc/auto-crop}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/misc/auto-crop'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<br> <br>
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{autoCrop.submit}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{autoCrop.submit}"></button>

View File

@@ -17,7 +17,7 @@
<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>
</div> </div>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/misc/auto-rename}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/misc/auto-rename'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<br> <br>
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{auto-rename.submit}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{auto-rename.submit}"></button>

View File

@@ -16,7 +16,7 @@
<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>
</div> </div>
<form method="post" id="form1" enctype="multipart/form-data" th:action="@{api/v1/misc/update-metadata}"> <form method="post" id="form1" enctype="multipart/form-data" th:action="@{'/api/v1/misc/update-metadata'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<p class="text-muted" th:text="#{changeMetadata.selectText.1}"></p> <p class="text-muted" th:text="#{changeMetadata.selectText.1}"></p>
<div class="form-check mb-3-inline ms-3"> <div class="form-check mb-3-inline ms-3">

View File

@@ -19,7 +19,7 @@
<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>
</div> </div>
<form action="#" th:action="@{api/v1/misc/compress-pdf}" method="post" enctype="multipart/form-data"> <form action="#" th:action="@{'/api/v1/misc/compress-pdf'}" method="post" enctype="multipart/form-data">
<div <div
th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"> th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}">
</div> </div>

View File

@@ -18,7 +18,7 @@
<span class="tool-header-text" th:text="#{home.ScannerImageSplit.title}"></span> <span class="tool-header-text" th:text="#{home.ScannerImageSplit.title}"></span>
</div> </div>
<form id="multiPdfForm" th:action="@{api/v1/misc/extract-image-scans}" method="post" enctype="multipart/form-data"> <form id="multiPdfForm" th:action="@{'/api/v1/misc/extract-image-scans'}" method="post" enctype="multipart/form-data">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='image/*, application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='image/*, application/pdf')}"></div>
<div class="mb-3"> <div class="mb-3">
<label for="angleThreshold" th:text="#{ScannerImageSplit.selectText.1}"></label> <label for="angleThreshold" th:text="#{ScannerImageSplit.selectText.1}"></label>

View File

@@ -17,7 +17,7 @@
<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>
</div> </div>
<form id="multiPdfForm" th:action="@{api/v1/misc/extract-images}" method="post" enctype="multipart/form-data"> <form id="multiPdfForm" th:action="@{'/api/v1/misc/extract-images'}" method="post" enctype="multipart/form-data">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<div class="mb-3"> <div class="mb-3">
<label th:text="#{extractImages.selectText}"></label> <label th:text="#{extractImages.selectText}"></label>

View File

@@ -14,7 +14,7 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-md-6"> <div class="col-md-6">
<h2 th:text="#{fakeScan.header}"></h2> <h2 th:text="#{fakeScan.header}"></h2>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/misc/fake-scan}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/misc/fake-scan'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<br> <br>
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{fakeScan.submit}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{fakeScan.submit}"></button>

View File

@@ -17,7 +17,7 @@
<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>
</div> </div>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/misc/flatten}" id="pdfForm" class="mb-3"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/misc/flatten'}" id="pdfForm" class="mb-3">
<div class="custom-file"> <div class="custom-file">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
</div> </div>

View File

@@ -39,7 +39,7 @@
<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>
</div> </div>
<form th:if="${#lists.size(languages) > 0}" action="#" th:action="@{api/v1/misc/ocr-pdf}" method="post" enctype="multipart/form-data" class="mb-3"> <form th:if="${#lists.size(languages) > 0}" action="#" th:action="@{'/api/v1/misc/ocr-pdf'}" method="post" enctype="multipart/form-data" class="mb-3">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<div class="mb-3"> <div class="mb-3">
<label for="languages" class="form-label" th:text="#{ocr.selectText.1}"></label> <label for="languages" class="form-label" th:text="#{ocr.selectText.1}"></label>

View File

@@ -14,7 +14,7 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-md-6"> <div class="col-md-6">
<h2 th:text="#{printFile.header}"></h2> <h2 th:text="#{printFile.header}"></h2>
<form action="#" th:action="@{api/v1/misc/print-file}" method="post" enctype="multipart/form-data"> <form action="#" th:action="@{'/api/v1/misc/print-file'}" method="post" enctype="multipart/form-data">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf,image/*')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf,image/*')}"></div>
<div class="card mb-3"> <div class="card mb-3">
<div class="card-body"> <div class="card-body">

View File

@@ -28,7 +28,7 @@
</div> </div>
<th:block th:insert="~{fragments/footer.html :: footer}"></th:block> <th:block th:insert="~{fragments/footer.html :: footer}"></th:block>
</div> </div>
<script src="js/local-pdf-input-download.js"></script> <script th:src="@{'/js/local-pdf-input-download.js'}"></script>
<script> <script>
document.getElementById('pdfForm').addEventListener('submit', async (e) => { document.getElementById('pdfForm').addEventListener('submit', async (e) => {
e.preventDefault(); e.preventDefault();

View File

@@ -16,7 +16,7 @@
<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>
</div> </div>
<form id="multiPdfForm" th:action="@{api/v1/misc/remove-blanks}" method="post" enctype="multipart/form-data"> <form id="multiPdfForm" th:action="@{'/api/v1/misc/remove-blanks'}" method="post" enctype="multipart/form-data">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<div class="mb-3"> <div class="mb-3">
<label for="threshold" th:text="#{removeBlanks.threshold}"></label> <label for="threshold" th:text="#{removeBlanks.threshold}"></label>

View File

@@ -16,7 +16,7 @@
<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>
</div> </div>
<form id="multiPdfForm" th:action="@{api/v1/misc/repair}" method="post" enctype="multipart/form-data"> <form id="multiPdfForm" th:action="@{'/api/v1/misc/repair'}" method="post" enctype="multipart/form-data">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{repair.submit}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{repair.submit}"></button>
</form> </form>

View File

@@ -2,8 +2,8 @@
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://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 th:href="@{'/css/prism.css'}" rel="stylesheet">
<script src="js/thirdParty/prism.js"></script> <script th:src="@{'/js/thirdParty/prism.js'}"></script>
<style> <style>
/* Add a max-height and make it scrollable */ /* Add a max-height and make it scrollable */
#script-content { #script-content {
@@ -25,7 +25,7 @@
<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>
</div> </div>
<form id="pdfInfoForm" method="post" enctype="multipart/form-data" th:action="@{show-javascript}"> <form id="pdfInfoForm" method="post" enctype="multipart/form-data" th:action="@{'/show-javascript'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, remoteCall='false', accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, remoteCall='false', accept='application/pdf')}"></div>
<br> <br>
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{showJS.submit}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{showJS.submit}"></button>

View File

@@ -27,7 +27,7 @@
<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>
</div> </div>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/misc/add-stamp}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/misc/add-stamp'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<br> <br>
<div class="mb-3"> <div class="mb-3">

View File

@@ -16,7 +16,7 @@
<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>
</div> </div>
<form id="multiPdfForm" th:action="@{api/v1/general/multi-page-layout}" method="post" enctype="multipart/form-data"> <form id="multiPdfForm" th:action="@{'/api/v1/general/multi-page-layout'}" method="post" enctype="multipart/form-data">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<div class="mb-3"> <div class="mb-3">
<label for="pagesPerSheet" th:text="#{pageLayout.pagesPerSheet}"></label> <label for="pagesPerSheet" th:text="#{pageLayout.pagesPerSheet}"></label>

View File

@@ -17,7 +17,7 @@
<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>
</div> </div>
<form id="overlayForm" method="post" enctype="multipart/form-data" th:action="@{/api/v1/general/overlay-pdfs}"> <form id="overlayForm" method="post" enctype="multipart/form-data" th:action="@{'/api/v1/general/overlay-pdfs'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<div th:replace="~{fragments/common :: fileSelector(name='overlayFiles', multiple=true, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='overlayFiles', multiple=true, accept='application/pdf')}"></div>

View File

@@ -17,7 +17,7 @@
<span class="tool-header-text" th:text="#{pdfOrganiser.header}"></span> <span class="tool-header-text" th:text="#{pdfOrganiser.header}"></span>
</div> </div>
<form th:action="@{api/v1/general/rearrange-pages}" method="post" enctype="multipart/form-data"> <form th:action="@{'/api/v1/general/rearrange-pages'}" method="post" enctype="multipart/form-data">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<div class="mb-3"> <div class="mb-3">
<label for="customMode" th:text="#{pdfOrganiser.mode}">Mode</label> <label for="customMode" th:text="#{pdfOrganiser.mode}">Mode</label>

View File

@@ -16,7 +16,7 @@
<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>
</div> </div>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/general/pdf-to-single-page}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/general/pdf-to-single-page'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{pdfToSinglePage.submit}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{pdfToSinglePage.submit}"></button>
</form> </form>

View File

@@ -11,7 +11,7 @@
></th:block> ></th:block>
<link <link
rel="stylesheet" rel="stylesheet"
href="css/pipeline.css" th:href="@{'/css/pipeline.css'}"
th:if="${currentPage == 'pipeline'}" th:if="${currentPage == 'pipeline'}"
/> />
<script th:inline="javascript"> <script th:inline="javascript">
@@ -192,7 +192,7 @@
</div> </div>
</div> </div>
</div> </div>
<script src="js/pipeline.js"></script>\ <script th:src="@{'/js/pipeline.js'}"></script>\
</div> </div>
</div> </div>
</div> </div>

View File

@@ -17,7 +17,7 @@
<span class="tool-header-text" th:text="#{pageRemover.header}"></span> <span class="tool-header-text" th:text="#{pageRemover.header}"></span>
</div> </div>
<form th:action="@{api/v1/general/remove-pages}" method="post" enctype="multipart/form-data"> <form th:action="@{'/api/v1/general/remove-pages'}" method="post" enctype="multipart/form-data">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<div class="mb-3"> <div class="mb-3">
<label for="fileInput" th:text="#{pageRemover.pagesToDelete}"></label> <label for="fileInput" th:text="#{pageRemover.pagesToDelete}"></label>

View File

@@ -17,7 +17,7 @@
<span class="tool-header-text" th:text="#{rotate.header}"></span> <span class="tool-header-text" th:text="#{rotate.header}"></span>
</div> </div>
<form action="#" th:action="@{api/v1/general/rotate-pdf}" th:object="${rotateForm}" method="post" enctype="multipart/form-data"> <form action="#" th:action="@{'/api/v1/general/rotate-pdf'}" th:object="${rotateForm}" method="post" enctype="multipart/form-data">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<input type="hidden" id="angleInput" name="angle" value="0"> <input type="hidden" id="angleInput" name="angle" value="0">

View File

@@ -16,7 +16,7 @@
<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>
</div> </div>
<form id="scalePagesFrom" th:action="@{api/v1/general/scale-pages}" method="post" enctype="multipart/form-data"> <form id="scalePagesFrom" th:action="@{'/api/v1/general/scale-pages'}" method="post" enctype="multipart/form-data">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<div class="mb-3"> <div class="mb-3">
<label for="pageSize" th:text="#{scalePages.pageSize}"></label> <label for="pageSize" th:text="#{scalePages.pageSize}"></label>

View File

@@ -16,7 +16,7 @@
<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>
</div> </div>
<form id="pdfInfoForm" method="post" enctype="multipart/form-data" th:action="@{api/v1/security/get-info-on-pdf}"> <form id="pdfInfoForm" method="post" enctype="multipart/form-data" th:action="@{'/api/v1/security/get-info-on-pdf'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, remoteCall='false', accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, remoteCall='false', accept='application/pdf')}"></div>
<br> <br>
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{getPdfInfo.submit}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{getPdfInfo.submit}"></button>

View File

@@ -2,7 +2,7 @@
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://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" th:href="@{'/css/sign.css'}">
<th:block th:each="font : ${fonts}"> <th:block th:each="font : ${fonts}">
<style th:inline="text"> <style th:inline="text">
@font-face { @font-face {
@@ -18,8 +18,8 @@
} }
</style> </style>
</th:block> </th:block>
<script src="js/thirdParty/signature_pad.umd.min.js"></script> <script th:src="@{'/js/thirdParty/signature_pad.umd.min.js'}"></script>
<script src="js/thirdParty/interact.min.js"></script> <script th:src="@{'/js/thirdParty/interact.min.js'}"></script>
</head> </head>
<body> <body>
@@ -229,7 +229,7 @@
<!-- draggables box --> <!-- draggables box -->
<div id="box-drag-container" class="show-on-file-selected"> <div id="box-drag-container" class="show-on-file-selected">
<canvas id="pdf-canvas"></canvas> <canvas id="pdf-canvas"></canvas>
<script src="js/draggable-utils.js"></script> <script th:src="@{'/js/draggable-utils.js'}"></script>
<div class="draggable-buttons-box ignore-rtl"> <div class="draggable-buttons-box ignore-rtl">
<button class="btn btn-outline-secondary" onclick="DraggableUtils.deleteDraggableCanvas(DraggableUtils.getLastInteracted())"> <button class="btn btn-outline-secondary" onclick="DraggableUtils.deleteDraggableCanvas(DraggableUtils.getLastInteracted())">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trash" viewBox="0 0 16 16"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trash" viewBox="0 0 16 16">

View File

@@ -17,7 +17,7 @@
<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>
</div> </div>
<form method="post" enctype="multipart/form-data" th:action="@{/api/v1/general/split-by-size-or-count}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/general/split-by-size-or-count'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<label for="splitType" th:text="#{split-by-size-or-count.type.label}">Split Type</label> <label for="splitType" th:text="#{split-by-size-or-count.type.label}">Split Type</label>
<select id="splitType" name="splitType" class="form-control"> <select id="splitType" name="splitType" class="form-control">

View File

@@ -2,7 +2,7 @@
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://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" th:href="@{'/css/split-pdf-by-sections.css'}">
</head> </head>
<body> <body>
@@ -18,7 +18,7 @@
<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>
</div> </div>
<form method="post" enctype="multipart/form-data" th:action="@{/api/v1/general/split-pdf-by-sections}"> <form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/general/split-pdf-by-sections'}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<label for="horizontalDivisions" th:text="#{split-by-sections.horizontal.label}">Horizontal Divisions</label> <label for="horizontalDivisions" th:text="#{split-by-sections.horizontal.label}">Horizontal Divisions</label>
<input type="number" id="horizontalDivisions" name="horizontalDivisions" class="form-control" min="0" max="300" value="0" required th:placeholder="#{split-by-sections.horizontal.placeholder}"> <input type="number" id="horizontalDivisions" name="horizontalDivisions" class="form-control" min="0" max="300" value="0" required th:placeholder="#{split-by-sections.horizontal.placeholder}">

View File

@@ -18,7 +18,7 @@
<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>
</div> </div>
<form th:action="@{api/v1/general/split-pages}" method="post" enctype="multipart/form-data"> <form th:action="@{'/api/v1/general/split-pages'}" method="post" enctype="multipart/form-data">
<div <div
th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"> th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}">
</div> </div>

View File

@@ -28,18 +28,18 @@ See https://github.com/adobe-type-tools/cmap-resources
<title>PDF.js viewer</title> <title>PDF.js viewer</title>
<!-- Bootstrap --> <!-- Bootstrap -->
<script src="js/thirdParty/popper.min.js"></script> <script th:src="@{'/js/thirdParty/popper.min.js'}"></script>
<script src="js/thirdParty/bootstrap.min.js"></script> <script th:src="@{'/js/thirdParty/bootstrap.min.js'}"></script>
<link rel="stylesheet" href="css/theme/componentes.css"> <link rel="stylesheet" th:href="@{'/css/theme/componentes.css'}">
<link rel="stylesheet" href="css/navbar.css"> <link rel="stylesheet" th:href="@{'/css/navbar.css'}">
<!-- 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" href="./pdfjs-legacy/locale/locale.json"> <link rel="resource" type="application/l10n" th:href="@{'/pdfjs-legacy/locale/locale.json'}">
<script src="./pdfjs-legacy/pdf.mjs" type="module"></script> <script th:src="@{'/pdfjs-legacy/pdf.mjs'}" type="module"></script>
<link rel="stylesheet" href="./pdfjs-legacy/css/viewer.css"> <link rel="stylesheet" th:href="@{'/pdfjs-legacy/css/viewer.css'}">
<script src="./pdfjs-legacy/js/viewer.mjs" type="module"></script> <script th:src="@{'/pdfjs-legacy/js/viewer.mjs'}" type="module"></script>
</head> </head>
<body tabindex="1"> <body tabindex="1">
@@ -298,8 +298,8 @@ See https://github.com/adobe-type-tools/cmap-resources
<input type="number" id="pageNumber" class="toolbarField" title="Page" value="1" min="1" tabindex="15" data-l10n-id="pdfjs-page-input" autocomplete="off"> <input type="number" id="pageNumber" class="toolbarField" title="Page" value="1" min="1" tabindex="15" data-l10n-id="pdfjs-page-input" autocomplete="off">
</span> </span>
<span id="numPages" class="toolbarLabel"></span> <span id="numPages" class="toolbarLabel"></span>
<a class="navbar-brand hiddenMediumView" th:href="@{/}" tabindex="16" > <a class="navbar-brand hiddenMediumView" th:href="@{'/'}" tabindex="16" >
<img class="main-icon" src="favicon.svg" alt="icon" style="max-height: 1.6rem; width: auto;"> <img class="main-icon" th:src="@{'/favicon.svg'}" alt="icon" style="max-height: 1.6rem; width: auto;">
<span class="icon-text" style="color: #ffffff;" th:text="${@appName}">Stirling PDF</span> <span class="icon-text" style="color: #ffffff;" th:text="${@appName}">Stirling PDF</span>
</a> </a>
</div> </div>
@@ -308,7 +308,7 @@ See https://github.com/adobe-type-tools/cmap-resources
<button id="editorHighlight" class="toolbarButton" hidden="true" disabled="disabled" title="Highlight" role="radio" aria-checked="false" aria-controls="editorHighlightParamsToolbar" tabindex="31" data-l10n-id="pdfjs-editor-highlight-button"> <button id="editorHighlight" class="toolbarButton" hidden="true" disabled="disabled" title="Highlight" role="radio" aria-checked="false" aria-controls="editorHighlightParamsToolbar" tabindex="31" data-l10n-id="pdfjs-editor-highlight-button">
<span data-l10n-id="pdfjs-editor-highlight-button-label">Highlight</span> <span data-l10n-id="pdfjs-editor-highlight-button-label">Highlight</span>
</button> </button>
<a id="backToHome" class="toolbarButton hiddenMediumView" title="Back to Main Page" role="radio" aria-checked="false" tabindex="32" th:href="@{/}"> <a id="backToHome" class="toolbarButton hiddenMediumView" title="Back to Main Page" role="radio" aria-checked="false" tabindex="32" th:href="@{'/'}">
<span data-l10n-id="pdfjs-open-file-button-label">Back to Main Page</span> <span data-l10n-id="pdfjs-open-file-button-label">Back to Main Page</span>
</a> </a>
<button id="openFile" class="toolbarButton hiddenMediumView" title="Open File" role="radio" aria-checked="false" tabindex="33" data-l10n-id="pdfjs-open-file-button"> <button id="openFile" class="toolbarButton hiddenMediumView" title="Open File" role="radio" aria-checked="false" tabindex="33" data-l10n-id="pdfjs-open-file-button">