mirror of
				https://github.com/Frooodle/Stirling-PDF.git
				synced 2025-10-25 11:17:28 +02:00 
			
		
		
		
	Change to html5 (#958)
* Change to html5 with Nu Html Checker * Update scale-pages.html * Update sign.html * Update common.html * Update common.html * Update login.html
This commit is contained in:
		
							parent
							
								
									77354f47bf
								
							
						
					
					
						commit
						67a1529dc7
					
				| @ -114,28 +114,28 @@ hr { | ||||
|   border-color: #fff; | ||||
| } | ||||
| 
 | ||||
| #global-buttons-container input { | ||||
| .global-buttons-container input { | ||||
|   background-color: #323948; | ||||
|   caret-color: #ffffff; | ||||
|   color: #ffffff; | ||||
| } | ||||
| #global-buttons-container input::placeholder { | ||||
| .global-buttons-container input::placeholder { | ||||
|   color: #ffffff; | ||||
| } | ||||
| 
 | ||||
| #global-buttons-container input:disabled::-webkit-input-placeholder { | ||||
| .global-buttons-container input:disabled::-webkit-input-placeholder { | ||||
|   /* WebKit browsers */ | ||||
|   color: #6e6865; | ||||
| } | ||||
| #global-buttons-container input:disabled:-moz-placeholder { | ||||
| .global-buttons-container input:disabled:-moz-placeholder { | ||||
|   /* Mozilla Firefox 4 to 18 */ | ||||
|   color: #6e6865; | ||||
| } | ||||
| #global-buttons-container input:disabled::-moz-placeholder { | ||||
| .global-buttons-container input:disabled::-moz-placeholder { | ||||
|   /* Mozilla Firefox 19+ */ | ||||
|   color: #6e6865; | ||||
| } | ||||
| #global-buttons-container input:disabled:-ms-input-placeholder { | ||||
| .global-buttons-container input:disabled:-ms-input-placeholder { | ||||
|   /* Internet Explorer 10+ */ | ||||
|   color: #6e6865; | ||||
| } | ||||
|  | ||||
| @ -36,11 +36,11 @@ | ||||
|   visibility: hidden !important; | ||||
| } | ||||
| 
 | ||||
| html[lang-direction="ltr"] .drag-manager_draghover img { | ||||
| html[dir="ltr"] .drag-manager_draghover img { | ||||
|   left: calc(50% + 62.5px) !important; | ||||
| } | ||||
| 
 | ||||
| html[lang-direction="rtl"] .drag-manager_draghover img { | ||||
| html[dir="rtl"] .drag-manager_draghover img { | ||||
|   left: 125px; | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -68,11 +68,11 @@ p { | ||||
| 
 | ||||
| #github-button:hover, | ||||
| #discord-button:hover, | ||||
| #home-button:hover { | ||||
| .home-button:hover { | ||||
|   background-color: #005b7f; | ||||
| } | ||||
| 
 | ||||
| #home-button { | ||||
| .home-button { | ||||
|   display: block; | ||||
|   width: 200px; | ||||
|   height: 50px; | ||||
|  | ||||
| @ -77,11 +77,11 @@ | ||||
| 
 | ||||
| #github-button:hover, | ||||
| #discord-button:hover, | ||||
| #home-button:hover { | ||||
| .home-button:hover { | ||||
|   background-color: #005b7f; | ||||
| } | ||||
| 
 | ||||
| #home-button { | ||||
| .home-button { | ||||
|   display: block; | ||||
|   width: 200px; | ||||
|   height: 50px; | ||||
|  | ||||
| @ -25,10 +25,10 @@ | ||||
|     margin-right: auto; | ||||
| }*/ | ||||
| 
 | ||||
| html[lang-direction="ltr"] * { | ||||
| html[dir="ltr"] * { | ||||
|   direction: ltr; | ||||
| } | ||||
| html[lang-direction="rtl"] * { | ||||
| html[dir="rtl"] * { | ||||
|   direction: rtl; | ||||
|   text-align: right; | ||||
| } | ||||
| @ -63,11 +63,11 @@ html[lang-direction="rtl"] * { | ||||
|   border-bottom-left-radius: 0.25rem !important; | ||||
| } | ||||
| 
 | ||||
| html[lang-direction="rtl"] input.form-check-input { | ||||
| html[dir="rtl"] input.form-check-input { | ||||
|   position: relative; | ||||
|   margin-left: 0px; | ||||
| } | ||||
| html[lang-direction="rtl"] label.form-check-label { | ||||
| html[dir="rtl"] label.form-check-label { | ||||
|   display: inline; | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -4,20 +4,20 @@ body { | ||||
|   --base-font-color: 33, 37, 41; | ||||
| } | ||||
| 
 | ||||
| #global-buttons-container input { | ||||
| .global-buttons-container input { | ||||
|   background-color: #ffffff; | ||||
|   /*caret-color: #ffffff;*/ | ||||
|   /*color: #ffffff;*/ | ||||
| } | ||||
| /*#global-buttons-container input:disabled::-webkit-input-placeholder { !* WebKit browsers *!*/ | ||||
| /*.global-buttons-container input:disabled::-webkit-input-placeholder { !* WebKit browsers *!*/ | ||||
| /*    color:    #98A0AB;*/ | ||||
| /*}*/ | ||||
| /*#global-buttons-container input:disabled:-moz-placeholder { !* Mozilla Firefox 4 to 18 *!*/ | ||||
| /*.global-buttons-container input:disabled:-moz-placeholder { !* Mozilla Firefox 4 to 18 *!*/ | ||||
| /*    color:    #98A0AB;*/ | ||||
| /*}*/ | ||||
| /*#global-buttons-container input:disabled::-moz-placeholder { !* Mozilla Firefox 19+ *!*/ | ||||
| /*.global-buttons-container input:disabled::-moz-placeholder { !* Mozilla Firefox 19+ *!*/ | ||||
| /*    color:    #98A0AB;*/ | ||||
| /*}*/ | ||||
| /*#global-buttons-container input:disabled:-ms-input-placeholder { !* Internet Explorer 10+ *!*/ | ||||
| /*.global-buttons-container input:disabled:-ms-input-placeholder { !* Internet Explorer 10+ *!*/ | ||||
| /*    color:    #98A0AB;*/ | ||||
| /*}*/ | ||||
|  | ||||
| @ -3,7 +3,7 @@ | ||||
|   margin: 0 auto; | ||||
| } | ||||
| 
 | ||||
| #global-buttons-container { | ||||
| .global-buttons-container { | ||||
|   display: flex; | ||||
|   gap: 10px; | ||||
|   align-items: start; | ||||
| @ -17,11 +17,11 @@ | ||||
|   padding: 10px; | ||||
|   border-radius: 8px; | ||||
| } | ||||
| #global-buttons-container > * { | ||||
| .global-buttons-container > * { | ||||
|   padding: 0.6rem 0.75rem; | ||||
| } | ||||
| 
 | ||||
| #global-buttons-container svg { | ||||
| .global-buttons-container svg { | ||||
|   width: 20px; | ||||
|   height: 20px; | ||||
| } | ||||
|  | ||||
| @ -45,11 +45,11 @@ | ||||
|   right: -20px; | ||||
| } | ||||
| 
 | ||||
| html[lang-direction="ltr"] .pdf-actions_insert-file-button-container.right { | ||||
| html[dir="ltr"] .pdf-actions_insert-file-button-container.right { | ||||
|   display: none; | ||||
| } | ||||
| 
 | ||||
| html[lang-direction="rtl"] .pdf-actions_insert-file-button-container.left { | ||||
| html[dir="rtl"] .pdf-actions_insert-file-button-container.left { | ||||
|   display: none; | ||||
| } | ||||
| 
 | ||||
| @ -63,11 +63,11 @@ html[lang-direction="rtl"] .pdf-actions_insert-file-button-container.left { | ||||
|   translate: 0 -50%; | ||||
| } | ||||
| 
 | ||||
| html[lang-direction="ltr"] .pdf-actions_container:last-child > .pdf-actions_insert-file-button-container.right { | ||||
| html[dir="ltr"] .pdf-actions_container:last-child > .pdf-actions_insert-file-button-container.right { | ||||
|   display: block; | ||||
| } | ||||
| 
 | ||||
| html[lang-direction="rtl"] .pdf-actions_container:last-child > .pdf-actions_insert-file-button-container.left { | ||||
| html[dir="rtl"] .pdf-actions_container:last-child > .pdf-actions_insert-file-button-container.left { | ||||
|   display: block; | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -11,7 +11,7 @@ | ||||
|   translate: -50% -50%; | ||||
| } | ||||
| 
 | ||||
| .previewContainer { | ||||
| #previewContainer { | ||||
|   aspect-ratio: 1; | ||||
|   width: 100%; | ||||
|   border: 1px solid rgba(0, 0, 0, 0.125); | ||||
|  | ||||
| @ -79,8 +79,8 @@ async function handleSingleDownload(url, formData, isMulti = false, isZip = fals | ||||
| 
 | ||||
|     if (!response.ok) { | ||||
|       if (contentType && contentType.includes("application/json")) { | ||||
|         return handleJsonResponse(response); | ||||
|         console.error("Throwing error banner, response was not okay"); | ||||
|         return handleJsonResponse(response); | ||||
|       } | ||||
|       throw new Error(`HTTP error! status: ${response.status}`); | ||||
|     } | ||||
| @ -177,10 +177,10 @@ async function submitMultiPdfForm(url, files) { | ||||
|   const zipFiles = files.length > zipThreshold; | ||||
|   let jszip = null; | ||||
|   // Show the progress bar
 | ||||
|   $("#progressBarContainer").show(); | ||||
|   $(".progressBarContainer").show(); | ||||
|   // Initialize the progress bar
 | ||||
| 
 | ||||
|   let progressBar = $("#progressBar"); | ||||
|   let progressBar = $(".progressBar"); | ||||
|   progressBar.css("width", "0%"); | ||||
|   progressBar.attr("aria-valuenow", 0); | ||||
|   progressBar.attr("aria-valuemax", files.length); | ||||
|  | ||||
| @ -26,7 +26,7 @@ document.addEventListener("DOMContentLoaded", function () { | ||||
| }); | ||||
| 
 | ||||
| function setLanguageForDropdown(dropdownClass) { | ||||
|   const defaultLocale = document.documentElement.language || "en_GB"; | ||||
|   const defaultLocale = document.documentElement.getAttribute("data-language") || "en_GB"; | ||||
|   const storedLocale = localStorage.getItem("languageCode") || defaultLocale; | ||||
|   const dropdownItems = document.querySelectorAll(dropdownClass); | ||||
| 
 | ||||
|  | ||||
| @ -11,7 +11,7 @@ class DragDropManager { | ||||
| 
 | ||||
|   constructor(id, wrapperId) { | ||||
|     this.dragContainer = document.getElementById(id); | ||||
|     this.pageDirection = document.documentElement.getAttribute("lang-direction"); | ||||
|     this.pageDirection = document.documentElement.getAttribute("dir"); | ||||
|     this.wrapper = document.getElementById(wrapperId); | ||||
|     this.pageDragging = false; | ||||
|     this.hoveredEl = undefined; | ||||
|  | ||||
| @ -4,7 +4,7 @@ class PdfActionsManager { | ||||
| 
 | ||||
|   constructor(id) { | ||||
|     this.pagesContainer = document.getElementById(id); | ||||
|     this.pageDirection = document.documentElement.getAttribute("lang-direction"); | ||||
|     this.pageDirection = document.documentElement.getAttribute("dir"); | ||||
| 
 | ||||
|     var styleElement = document.createElement("link"); | ||||
|     styleElement.rel = "stylesheet"; | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title='<3')}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"></div> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{account.title})}"></th:block> | ||||
|   </head> | ||||
| @ -9,14 +9,14 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-9"> | ||||
| 
 | ||||
|               <!-- User Settings Title --> | ||||
|               <h2 class="text-center" th:text="#{account.accountSettings}">User Settings</h2> | ||||
|               <hr /> | ||||
|               <hr> | ||||
|               <th:block th:if="${param.messageType != null and param.messageType.size() > 0}"> | ||||
|               <div th:if="${param.messageType[0] == 'notAuthenticated'}" class="alert alert-danger"> | ||||
|                 <span th:text="#{notAuthenticatedMessage}">Default message if not found</span> | ||||
| @ -42,7 +42,6 @@ | ||||
|               </div> | ||||
|               </th:block> | ||||
|               <!-- Change Username Form --> | ||||
|               <h4></h4> | ||||
|               <form action="api/v1/user/change-username" method="post"> | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="newUsername" th:text="#{account.changeUsername}">Change Username</label> | ||||
| @ -50,14 +49,14 @@ | ||||
|                 </div> | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="currentPassword" th:text="#{password}">Password</label> | ||||
|                   <input type="password" class="form-control" name="currentPassword" id="currentPasswordUsername" th:placeholder="#{password}"> | ||||
|                   <input type="password" class="form-control" name="currentPassword" id="currentPassword" th:placeholder="#{password}"> | ||||
|                 </div> | ||||
|                 <div class="mb-3"> | ||||
|                   <button type="submit" class="btn btn-primary" th:text="#{account.changeUsername}">Change Username</button> | ||||
|                 </div> | ||||
|               </form> | ||||
| 
 | ||||
|               <hr /> <!-- Separator Line --> | ||||
|               <hr> <!-- Separator Line --> | ||||
| 
 | ||||
|               <!-- Change Password Form --> | ||||
|               <h4 th:text="#{account.changePassword}">Change Password?</h4> | ||||
| @ -79,7 +78,7 @@ | ||||
|                 </div> | ||||
|               </form> | ||||
| 
 | ||||
|               <hr /> | ||||
|               <hr> | ||||
| 
 | ||||
|               <div class="card"> | ||||
|                 <div class="card-header" th:text="#{account.yourApiKey}"></div> | ||||
| @ -94,7 +93,7 @@ | ||||
|                         <img class="blackwhite-icon" id="eyeIcon" src="images/eye.svg" alt="Toggle API Key Visibility" style="height:20px;"> | ||||
|                       </button> | ||||
|                       <button class="btn btn-outline-secondary" id="refreshBtn" type="button" onclick="refreshApiKey()"> | ||||
|                         <img class="blackwhite-icon" id="eyeIcon" src="images/arrow-clockwise.svg" alt="Refresh API-Key" style="height:20px;"> | ||||
|                         <img class="blackwhite-icon" id="arrowIcon" src="images/arrow-clockwise.svg" alt="Refresh API-Key" style="height:20px;"> | ||||
|                       </button> | ||||
|                     </div> | ||||
|                   </div> | ||||
| @ -169,7 +168,6 @@ | ||||
|                   } | ||||
|                 } | ||||
| 
 | ||||
| 
 | ||||
|                 document.addEventListener("DOMContentLoaded", function() { | ||||
|                   const form = document.querySelector('form[action="api/v1/user/change-password"]'); | ||||
| 
 | ||||
| @ -185,7 +183,7 @@ | ||||
|                 }); | ||||
|               </script> | ||||
| 
 | ||||
|               <hr /> <!-- Separator Line --> | ||||
|               <hr> <!-- Separator Line --> | ||||
| 
 | ||||
|               <h4 th:text="#{account.syncTitle}">Sync browser settings with Account</h4> | ||||
|               <div class="container mt-4"> | ||||
| @ -271,13 +269,9 @@ | ||||
| 
 | ||||
|                 }); | ||||
|               </script> | ||||
|               <div class="mb-3 mt-4"> | ||||
|                 <a href="logout"> | ||||
|                     <button type="button" class="btn btn-danger" th:text="#{account.signOut}">Sign Out</button> | ||||
|                 </a> | ||||
|                 <a th:if="${role == 'ROLE_ADMIN'}" href="addUsers" target="_blank"> | ||||
|                   <button type="button" class="btn btn-info" th:text="#{account.adminSettings}">Admin Settings</button> | ||||
|                 </a> | ||||
|               <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:if="${role == 'ROLE_ADMIN'}" class="btn btn-info" href="addUsers" role="button" th:text="#{account.adminSettings}" target="_blank">Admin Settings</a> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{adminUserSettings.title}, header=#{adminUserSettings.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-8"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{autoSplitPDF.title}, header=#{autoSplitPDF.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -29,8 +29,8 @@ | ||||
|                   <input type="checkbox" class="form-check-input" name="duplexMode" id="duplexMode"> | ||||
|                   <label class="ms-3" for="duplexMode" th:text=#{autoSplitPDF.duplexMode}></label> | ||||
|                 </div> | ||||
|                 <p><a th:href="@{files/Auto Splitter Divider (minimal).pdf}" download th:text="#{autoSplitPDF.dividerDownload1}"></a></p> | ||||
|                 <p><a th:href="@{files/Auto Splitter Divider (with instructions).pdf}" download th:text="#{autoSplitPDF.dividerDownload2}"></a></p> | ||||
|                 <p><a th:href="@{files/Auto%20Splitter%20Divider%20(minimal).pdf}" download th:text="#{autoSplitPDF.dividerDownload1}"></a></p> | ||||
|                 <p><a th:href="@{files/Auto%20Splitter%20Divider%20(with%20instructions).pdf}" download th:text="#{autoSplitPDF.dividerDownload2}"></a></p> | ||||
|                 <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{autoSplitPDF.submit}"></button> | ||||
|               </form> | ||||
|             </div> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{changeCreds.title}, header=#{changeCreds.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,14 +9,14 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-9"> | ||||
| 
 | ||||
|               <!-- User Settings Title --> | ||||
|               <h2 class="text-center" th:text="#{changeCreds.header}">User Settings</h2> | ||||
|               <hr /> | ||||
|               <hr> | ||||
|               <th:block th:if="${param.messageType != null and param.messageType.size() > 0}"> | ||||
|               <div th:if="${param.messageType[0] == 'notAuthenticated'}" class="alert alert-danger"> | ||||
|                 <span th:text="#{notAuthenticatedMessage}">Default message if not found</span> | ||||
| @ -35,7 +35,6 @@ | ||||
|               <h3 class="text-center"><span th:text="#{welcome} + ' ' + ${username}">User</span>!</h3> | ||||
| 
 | ||||
|               <!-- Change Username Form --> | ||||
|               <h4></h4> | ||||
|               <h4 th:text="#{changeCreds.changePassword}">Change password</h4> | ||||
|               <form action="api/v1/user/change-password-on-login" method="post"> | ||||
|                 <div class="mb-3"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{BookToPDF.title}, header=#{BookToPDF.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{fileToPDF.title}, header=#{fileToPDF.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -17,7 +17,6 @@ | ||||
|               <p th:text="#{processTimeWarning}"></p> | ||||
|               <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> | ||||
|                     <br> | ||||
|                 <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{fileToPDF.submit}"></button> | ||||
|               </form> | ||||
|               <p class="mt-3" th:text="#{fileToPDF.credit}"></p> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{HTMLToPDF.title}, header=#{HTMLToPDF.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="mb-3"> | ||||
| @ -18,7 +18,7 @@ | ||||
|                 <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='text/html,application/zip' )}"></div> | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="zoom" th:text="#{HTMLToPDF.zoom}" class="form-label"></label> | ||||
|                   <input type="number" step="0.1" class="form-control" id="zoom" name="zoom" value="1" /> | ||||
|                   <input type="number" step="0.1" class="form-control" id="zoom" name="zoom" value="1"> | ||||
|                 </div> | ||||
|                 <br> | ||||
|                 <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{HTMLToPDF.submit}"></button> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{imageToPDF.title}, header=#{imageToPDF.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -46,7 +46,7 @@ | ||||
|                     <option value="convert" th:text=#{imageToPDF.selectText.5} selected></option> | ||||
|                   </select> | ||||
|                 </div> | ||||
|                 <br /><br /> | ||||
|                 <br><br> | ||||
|                 <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{imageToPDF.submit}"></button> | ||||
|                 <script> | ||||
|                   $('#fileInput-input').on('change', function() { | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{MarkdownToPDF.title}, header=#{MarkdownToPDF.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,14 +9,13 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|               <h2 th:text="#{MarkdownToPDF.header}"></h2> | ||||
|               <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> | ||||
|                 <br> | ||||
|                 <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{MarkdownToPDF.submit}"></button> | ||||
|               </form> | ||||
|               <p class="mt-3" th:text="#{MarkdownToPDF.help}"></p> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{PDFToBook.title}, header=#{PDFToBook.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{PDFToCSV.title}, header=#{PDFToCSV.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,13 +8,13 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|               <h2 th:text="#{PDFToCSV.header}"></h2> | ||||
|               <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> | ||||
|                 <button type="submit" class="btn btn-primary" th:text="#{PDFToCSV.submit}"></button> | ||||
|               </form> | ||||
| @ -23,8 +23,8 @@ | ||||
|               <div style="position: relative; display: inline-block;"> | ||||
|                 <div> | ||||
|                   <div style="display:none ;margin: 3px;position: absolute;top: 0;width: 120px;justify-content:space-between;z-index: 10" id="pagination-button-container"> | ||||
|                       <button id='previous-page-btn' style='opacity: 80% ; width: 50px; height: 30px; display: flex;align-items: center;justify-content: center; background: grey; color: #ffffff;  ;border: none;outline: none; border-radius: 4px;'> < </button> | ||||
|                       <button id='next-page-btn' style='opacity: 80% ; width: 50px; height: 30px; display: flex;align-items: center;justify-content: center; background: grey; color: #ffffff;  ;border: none;outline: none; border-radius: 4px;'> > </button> | ||||
|                     <button id='previous-page-btn' style='opacity: 80% ; width: 50px; height: 30px; display: flex;align-items: center;justify-content: center; background: grey; color: #ffffff;  ;border: none;outline: none; border-radius: 4px;'> < </button> | ||||
|                     <button id='next-page-btn' style='opacity: 80% ; width: 50px; height: 30px; display: flex;align-items: center;justify-content: center; background: grey; color: #ffffff;  ;border: none;outline: none; border-radius: 4px;'> > </button> | ||||
|                   </div> | ||||
|                   <canvas id="crop-pdf-canvas" style="position: absolute; top: 0; left: 0; z-index: 1;"></canvas> | ||||
|                 </div> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{PDFToHTML.title}, header=#{PDFToHTML.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{pdfToImage.title}, header=#{pdfToImage.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{pdfToPDFA.title}, header=#{pdfToPDFA.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{PDFToPresentation.title}, header=#{PDFToPresentation.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{PDFToText.title}, header=#{PDFToText.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -35,4 +35,3 @@ | ||||
|     </div> | ||||
|   </body> | ||||
| </html> | ||||
| 
 | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{PDFToWord.title}, header=#{PDFToWord.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -36,6 +36,3 @@ | ||||
|     </div> | ||||
|   </body> | ||||
| </html> | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{PDFToXML.title}, header=#{PDFToXML.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{URLToPDF.title}, header=#{URLToPDF.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,13 +9,13 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|               <h2 th:text="#{URLToPDF.header}"></h2> | ||||
|               <form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/url/pdf}"> | ||||
|                 <input type="text" class="form-control" id="urlInput" name="urlInput"> | ||||
|                 <input type="text" class="form-control" id="urlInput" name="urlInput" placeholder="http://"> | ||||
|                 <br> | ||||
|                 <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{URLToPDF.submit}"></button> | ||||
|               </form> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{crop.title}, header=#{crop.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -25,6 +25,8 @@ | ||||
|                 <canvas id="crop-pdf-canvas" style="position: absolute; top: 0; left: 0; z-index: 1;"></canvas> | ||||
|                 <canvas id="overlayCanvas" style="position: absolute; top: 0; left: 0; z-index: 2;"></canvas> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|           <script> | ||||
|             let pdfCanvas  = document.getElementById('crop-pdf-canvas'); | ||||
|             let overlayCanvas = document.getElementById('overlayCanvas'); | ||||
| @ -129,6 +131,7 @@ | ||||
|             } | ||||
|           </script> | ||||
|         </div> | ||||
|       </div> | ||||
|       <th:block th:insert="~{fragments/footer.html :: footer}"></th:block> | ||||
|     </div> | ||||
|   </body> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title='404 - Page Not Found | Oops, we tripped in the code!')}"></th:block> | ||||
|   </head> | ||||
| @ -29,7 +29,7 @@ | ||||
|               <a href="https://github.com/Stirling-Tools/Stirling-PDF/issues" id="github-button" target="_blank">Submit a ticket on GitHub</a> | ||||
|               <a href="https://discord.gg/Cn8pWhQRxZ" id="discord-button" target="_blank">Join our Discord server</a> | ||||
|             </div> | ||||
|             <a href="/" id="home-button">Go back to homepage</a> | ||||
|             <a href="/" class="home-button">Go back to homepage</a> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{pageExtracter.title}, header=#{pageExtracter.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| <div th:fragment="card" class="feature-card" th:id="${id}" th:if="${@endpointConfiguration.isEndpointEnabled(cardLink)}" th:data-bs-tags="${tags}"> | ||||
|               <a th:href="${cardLink}"> | ||||
|                 <div class="d-flex align-items-center"> <!-- Add a flex container to align the SVG and title --> | ||||
|                   <img th:if="${svgPath}" id="card-icon" class="home-card-icon home-card-icon-colour" th:src="${svgPath}" alt="Icon" width="30" height="30"> | ||||
|                   <img th:if="${svgPath}" class="card-icon home-card-icon home-card-icon-colour" th:src="${svgPath}" alt="Icon" width="30" height="30"> | ||||
|                   <h5 class="card-title  ms-2" th:text="${cardTitle}"></h5> <!-- Add some margin-left (ms-2) for spacing between SVG and title --> | ||||
|                 </div> | ||||
|                 <p class="card-text" th:text="${cardText}"></p> | ||||
|  | ||||
| @ -3,8 +3,8 @@ | ||||
|     <title th:text="${@appName} + (${title} != null and ${title} != '' ? ' - ' + ${title} : '')"></title> | ||||
| 
 | ||||
|     <!-- Metadata --> | ||||
|     <meta charset="UTF-8"> | ||||
|     <meta name="description" th:content="${@appName} + (${header} != null and ${header} != '' ? ' - ' + ${header} : '')"/> | ||||
|     <meta charset="utf-8"> | ||||
|     <meta name="description" th:content="${@appName} + (${header} != null and ${header} != '' ? ' - ' + ${header} : '')"> | ||||
|     <meta name="msapplication-TileColor" content="#2d89ef"> | ||||
|     <meta name="theme-color" content="#ffffff"> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||
| @ -43,7 +43,7 @@ | ||||
|     <link rel="stylesheet" href="css/general.css"> | ||||
|     <link rel="stylesheet" th:href="@{css/light-mode.css}" id="light-mode-styles"> | ||||
|     <link rel="stylesheet" th:href="@{css/dark-mode.css}" id="dark-mode-styles"> | ||||
|     <link rel="stylesheet" th:href="@{css/rainbow-mode.css}" id="rainbow-mode-styles" disabled="true"> | ||||
|     <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" href="css/navbar.css"> | ||||
| 
 | ||||
| @ -84,7 +84,7 @@ | ||||
|           const downloadCompleteText = /*[[#{downloadComplete}]]*/ 'Download Complete'; | ||||
|           window.downloadCompleteText = downloadCompleteText; | ||||
|           // Create the 'show-game-btn' button | ||||
|           var gameButton = $('<button type="button" class="btn btn-primary" id="show-game-btn" style="display:none;">' + boredWaitingText + '</button><br /><br />'); | ||||
|           var gameButton = $('<button type="button" class="btn btn-primary" id="show-game-btn" style="display:none;">' + boredWaitingText + '</button><br><br>'); | ||||
|            | ||||
|           // Insert the 'show-game-btn' just above the submit button | ||||
|           submitButton.before(gameButton); | ||||
| @ -130,11 +130,10 @@ | ||||
|         <div id="score">Score: 0</div> | ||||
|         <div id="high-score">High Score: 0</div> | ||||
|         <div id="level">Level: 1</div> | ||||
|         <img src="favicon.svg" class="player" id="player"> | ||||
|         <img src="favicon.svg" class="player" id="player" alt="favicon"> | ||||
|       </div> | ||||
|       <link rel="stylesheet" href="css/game.css"> | ||||
|     </dialog> | ||||
| 
 | ||||
| </th:block> | ||||
| 
 | ||||
| <th:block th:fragment="fileSelector(name, multiple)" th:with="accept=${accept} ?: '*/*', inputText=${inputText} ?: #{pdfPrompt}, remoteCall=${remoteCall} ?: true, notRequired=${notRequired} ?: false"> | ||||
| @ -152,16 +151,12 @@ | ||||
|                   <div class="selected-files"></div> | ||||
|                 </div> | ||||
| 
 | ||||
|               <div id="progressBarContainer" style="display: none; position: relative;"> | ||||
|                 <div class="progressBarContainer" style="display: none; position: relative;"> | ||||
|                   <div class="progress" style="height: 1rem;"> | ||||
|                   <div id="progressBar" class="progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"> | ||||
|                     <div class="progressBar progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"> | ||||
|                       <span class="visually-hidden">Loading...</span> | ||||
|                     </div> | ||||
|                   </div> | ||||
|                 </div> | ||||
|               | ||||
|   | ||||
|            | ||||
|      | ||||
|                 <script src="js/fileInput.js"></script> | ||||
| </th:block> | ||||
| @ -37,8 +37,8 @@ | ||||
|                         <a href="https://github.com/Stirling-Tools/Stirling-PDF/issues" id="github-button" target="_blank">GitHub - Submit a ticket</a> | ||||
|                         <a href="https://discord.gg/Cn8pWhQRxZ" id="discord-button" target="_blank">Discord - Submit Support post</a> | ||||
|                       </div> | ||||
|                       <a href="/" id="home-button">Go to Homepage</a> | ||||
|                       <a data-bs-dismiss="modal" id="home-button">Close</a> | ||||
|                       <a href="/" class="home-button">Go to Homepage</a> | ||||
|                       <a data-bs-dismiss="modal" class="home-button">Close</a> | ||||
|                     </div> | ||||
|                   </div> | ||||
|                 </div> | ||||
|  | ||||
| @ -1,19 +1,19 @@ | ||||
| <footer th:fragment="footer" id="footer" class="text-center py-3"> | ||||
|         <div class="footer-center"> | ||||
|           <a href="https://github.com/Stirling-Tools/Stirling-PDF" target="_blank" class="mx-1" title="Visit Github Repository"> | ||||
|                 <img src="images/github.svg"> | ||||
|             <img src="images/github.svg" alt="github"> | ||||
|           </a> | ||||
|           <a href="https://hub.docker.com/r/frooodle/s-pdf" target="_blank" class="mx-1" title="See Docker Hub"> | ||||
|                 <img src="images/docker.svg"> | ||||
|             <img src="images/docker.svg" alt="docker"> | ||||
|           </a> | ||||
|           <a href="https://discord.gg/Cn8pWhQRxZ" target="_blank" class="mx-1" title="Join Discord Channel"> | ||||
|                 <img src="images/discord.svg"> | ||||
|             <img src="images/discord.svg" alt="discord"> | ||||
|           </a> | ||||
|           <a href="https://github.com/sponsors/Frooodle" target="_blank" class="mx-1" title="Donate"> | ||||
|                 <img src="images/suit-heart-fill.svg"> | ||||
|             <img src="images/suit-heart-fill.svg" alt="suit-heart-fill"> | ||||
|           </a> | ||||
|             <div style="color: grey;" th:if="${@appName} != 'Stirling PDF'" class="footer-powered-by" th:text="#{poweredBy} + ' Stirling PDF'"></div> | ||||
|         </div> | ||||
|         <div style="color: grey;" th:if="${@appName} != 'Stirling PDF'" class="footer-powered-by" th:text="#{poweredBy} + ' Stirling PDF'"></div> | ||||
|         <a href="licenses" id="licenses" target="_blank" class="mx-1" title="" th:text="#{licenses.nav}">Licenses</a> | ||||
|       </footer> | ||||
| 
 | ||||
|  | ||||
| @ -31,11 +31,11 @@ | ||||
|                   </li> | ||||
|                   <li class="nav-item nav-item-separator"></li> | ||||
|                   <li class="nav-item dropdown" th:classappend="${currentPage}=='remove-pages' OR ${currentPage}=='merge-pdfs' OR ${currentPage}=='split-pdfs' OR ${currentPage}=='crop' OR ${currentPage}=='adjust-contrast' OR ${currentPage}=='pdf-organizer' OR ${currentPage}=='rotate-pdf' OR ${currentPage}=='multi-page-layout' OR ${currentPage}=='scale-pages' OR ${currentPage}=='auto-split-pdf' OR ${currentPage}=='extract-page' OR ${currentPage}=='pdf-to-single-page' ? 'active' : ''"> | ||||
|                     <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | ||||
|                     <a class="nav-link dropdown-toggle" id="navbarDropdown-1" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | ||||
|                       <img class="icon" src="images/file-earmark-pdf.svg" alt="icon"> | ||||
|                       <span class="icon-text" th:text="#{navbar.pageOps}"></span> | ||||
|                     </a> | ||||
|                     <div class="dropdown-menu" aria-labelledby="navbarDropdown"> | ||||
|                     <div class="dropdown-menu" aria-labelledby="navbarDropdown-1"> | ||||
|                       <!-- Existing menu items --> | ||||
|                       <div th:replace="~{fragments/navbarEntry :: navbarEntry ('merge-pdfs', 'images/union.svg', 'home.merge.title', 'home.merge.desc', 'merge.tags')}"></div> | ||||
|                       <div th:replace="~{fragments/navbarEntry :: navbarEntry ('split-pdfs', 'images/layout-split.svg', 'home.split.title', 'home.split.desc', 'split.tags')}"></div> | ||||
| @ -58,11 +58,11 @@ | ||||
|                   <li class="nav-item nav-item-separator"></li> | ||||
| 
 | ||||
|                   <li class="nav-item dropdown" th:classappend="${currentPage}=='pdf-to-img' OR ${currentPage}=='img-to-pdf' OR ${currentPage}=='pdf-to-pdfa' OR ${currentPage}=='file-to-pdf' OR ${currentPage}=='xlsx-to-pdf' OR ${currentPage}=='pdf-to-word' OR ${currentPage}=='pdf-to-presentation' OR ${currentPage}=='pdf-to-text' OR ${currentPage}=='pdf-to-html' OR ${currentPage}=='pdf-to-xml' ? 'active' : ''"> | ||||
|                     <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | ||||
|                     <a class="nav-link dropdown-toggle" id="navbarDropdown-2" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | ||||
|                       <img class="icon" src="images/arrow-left-right.svg" alt="icon" style="width: 16px; height: 16px; vertical-align: middle;"> | ||||
|                       <span class="icon-text" th:text="#{navbar.convert}"></span> | ||||
|                     </a> | ||||
|                     <div class="dropdown-menu" aria-labelledby="navbarDropdown"> | ||||
|                     <div class="dropdown-menu" aria-labelledby="navbarDropdown-2"> | ||||
|                       <!-- Existing menu items --> | ||||
|                       <div th:replace="~{fragments/navbarEntry :: navbarEntry ('img-to-pdf', 'images/image.svg', 'home.imageToPdf.title', 'home.imageToPdf.desc', 'imageToPdf.tags')}"></div> | ||||
|                       <div th:replace="~{fragments/navbarEntry :: navbarEntry ('file-to-pdf', 'images/file.svg', 'home.fileToPDF.title', 'home.fileToPDF.desc', 'fileToPDF.tags')}"></div> | ||||
| @ -86,10 +86,10 @@ | ||||
|                   <li class="nav-item nav-item-separator"></li> | ||||
| 
 | ||||
|                   <li class="nav-item dropdown" th:classappend="${currentPage}=='add-password' OR ${currentPage}=='remove-password' OR ${currentPage}=='add-watermark' OR ${currentPage}=='cert-sign' OR ${currentPage}=='sanitize-pdf' ? 'active' : ''"> | ||||
|                     <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | ||||
|                     <a class="nav-link dropdown-toggle" id="navbarDropdown-3" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | ||||
|                       <img class="icon" src="images/shield-check.svg" alt="icon" style="width: 16px; height: 16px; vertical-align: middle;"> <span class="icon-text" th:text="#{navbar.security}"></span> | ||||
|                     </a> | ||||
|                     <div class="dropdown-menu" aria-labelledby="navbarDropdown"> | ||||
|                     <div class="dropdown-menu" aria-labelledby="navbarDropdown-3"> | ||||
|                       <div th:replace="~{fragments/navbarEntry :: navbarEntry ('add-password', 'images/lock.svg', 'home.addPassword.title', 'home.addPassword.desc', 'addPassword.tags')}"></div> | ||||
|                       <div th:replace="~{fragments/navbarEntry :: navbarEntry ('remove-password', 'images/unlock.svg', 'home.removePassword.title', 'home.removePassword.desc', 'removePassword.tags')}"></div> | ||||
|                       <div th:replace="~{fragments/navbarEntry :: navbarEntry ('change-permissions', 'images/shield-lock.svg', 'home.permissions.title', 'home.permissions.desc', 'permissions.tags')}"></div> | ||||
| @ -103,11 +103,11 @@ | ||||
|                   <li class="nav-item nav-item-separator"></li> | ||||
| 
 | ||||
|                   <li class="nav-item dropdown" th:classappend="${currentPage}=='sign' OR ${currentPage}=='repair' OR ${currentPage}=='compare' OR ${currentPage}=='show-javascript' OR ${currentPage}=='flatten' OR ${currentPage}=='remove-blanks' OR ${currentPage}=='remove-annotations' OR ${currentPage}=='extract-image-scans' OR ${currentPage}=='change-metadata' OR ${currentPage}=='add-image' OR ${currentPage}=='ocr-pdf' OR ${currentPage}=='change-permissions' OR ${currentPage}=='extract-images' OR ${currentPage}=='compress-pdf' OR ${currentPage}=='add-page-numbers' OR ${currentPage}=='auto-rename' OR ${currentPage}=='get-info-on-pdf' ? 'active' : ''"> | ||||
|                     <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | ||||
|                     <a class="nav-link dropdown-toggle" id="navbarDropdown-4" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | ||||
|                       <img class="icon" src="images/card-list.svg" alt="icon" style="width: 16px; height: 16px; vertical-align: middle;"> | ||||
|                       <span class="icon-text" th:text="#{navbar.other}"></span> | ||||
|                     </a> | ||||
|                     <div class="dropdown-menu" aria-labelledby="navbarDropdown"> | ||||
|                     <div class="dropdown-menu" aria-labelledby="navbarDropdown-4"> | ||||
|                       <!--<div th:replace="~{fragments/navbarEntry :: navbarEntry ('pipeline', 'images/pipeline.svg', 'home.pipeline.title', 'home.pipeline.desc', 'pipeline.tags')}"></div> --> | ||||
|                       <div th:replace="~{fragments/navbarEntry :: navbarEntry ('view-pdf', 'images/book-opened.svg', 'home.viewPdf.title', 'home.viewPdf.desc', 'viewPdf.tags')}"></div> | ||||
|                       <div th:replace="~{fragments/navbarEntry :: navbarEntry ('ocr-pdf', 'images/search.svg', 'home.ocr.title', 'home.ocr.desc', 'ocr.tags')}"></div> | ||||
| @ -132,16 +132,16 @@ | ||||
|                 </ul> | ||||
|                 <ul class="navbar-nav  flex-nowrap"> | ||||
|                   <li class="nav-item dropdown"> | ||||
|                     <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | ||||
|                     <a class="nav-link dropdown-toggle" id="navbarDropdown-5" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | ||||
|                       <img class="navbar-icon" src="images/star.svg" alt="icon" width="24" height="24"> | ||||
|                     </a> | ||||
|                     <div class="dropdown-menu" id="favoritesDropdown" aria-labelledby="navbarDropdown"> | ||||
|                     <div class="dropdown-menu" id="favoritesDropdown" aria-labelledby="navbarDropdown-5"> | ||||
|                       <!-- Dropdown items will be added here by JavaScript --> | ||||
|                     </div> | ||||
|                   </li> | ||||
|                   <li class="nav-item"> | ||||
|                     <a class="nav-link" id="dark-mode-toggle" href="#"> | ||||
|                       <img class="navbar-icon" id="dark-mode-icon" src="moon.svg" alt="icon" /> | ||||
|                       <img class="navbar-icon" id="dark-mode-icon" src="moon.svg" alt="icon" > | ||||
|                     </a> | ||||
|                   </li> | ||||
|                   <li class="nav-item dropdown"> | ||||
| @ -192,15 +192,9 @@ | ||||
|                 <div class="modal-body"> | ||||
|                   <div class="d-flex justify-content-between align-items-center mb-3"> | ||||
|                     <p class="mb-0" th:utext="#{settings.appVersion} + ' ' + ${@appVersion}"></p> | ||||
|                     <a href="https://github.com/sponsors/Frooodle" target="_blank"> | ||||
|                       <button type="button" class="btn btn-sm btn-outline-primary">Sponsor Stirling-PDF</button> | ||||
|                     </a> | ||||
|                     <a href="swagger-ui/index.html" target="_blank"> | ||||
|                       <button type="button" class="btn btn-sm btn-outline-primary">API</button> | ||||
|                     </a> | ||||
|                     <a href="https://github.com/Stirling-Tools/Stirling-PDF/releases" target="_blank"> | ||||
|                       <button type="button" class="btn btn-sm btn-outline-primary" id="update-btn" th:utext="#{settings.update}"></button> | ||||
|                     </a> | ||||
|                     <a href="https://github.com/sponsors/Frooodle" class="btn btn-sm btn-outline-primary" role="button" target="_blank">Sponsor Stirling-PDF</a> | ||||
|                     <a href="swagger-ui/index.html" class="btn btn-sm btn-outline-primary" role="button" target="_blank">API</a> | ||||
|                     <a href="https://github.com/Stirling-Tools/Stirling-PDF/releases" class="btn btn-sm btn-outline-primary" id="update-btn" th:utext="#{settings.update}" role="button" target="_blank"></a> | ||||
|                   </div> | ||||
|                   <div class="mb-3"> | ||||
|                     <label for="downloadOption" th:utext="#{settings.downloadOption.title}"></label> | ||||
| @ -219,14 +213,10 @@ | ||||
|                     <input type="checkbox" class="form-check-input" id="boredWaiting"> | ||||
|                     <label class="form-check-label" for="boredWaiting" th:text="#{bored}"></label> | ||||
|                   </div> | ||||
|                   <a th:if="${@loginEnabled}" href="account" target="_blank"> | ||||
|                     <button type="button" class="btn btn-sm btn-outline-primary" th:text="#{settings.accountSettings}">Account Settings</button> | ||||
|                   </a> | ||||
|                   <a th:if="${@loginEnabled}" href="account" class="btn btn-sm btn-outline-primary" role="button" th:text="#{settings.accountSettings}" target="_blank">Account Settings</a> | ||||
|                 </div> | ||||
|                 <div class="modal-footer"> | ||||
|                   <a th:if="${@loginEnabled}" href="logout"> | ||||
|                     <button type="button" class="btn btn-danger" th:text="#{settings.signOut}">Sign Out</button> | ||||
|                   </a> | ||||
|                   <a th:if="${@loginEnabled}" class="btn btn-danger" role="button" th:text="#{settings.signOut}" href="logout">Sign Out</a> | ||||
|                   <button type="button" class="btn btn-secondary" data-bs-dismiss="modal" th:text="#{close}"></button> | ||||
|                 </div> | ||||
|               </div> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title='')}"></th:block> | ||||
|   </head> | ||||
| @ -21,7 +21,7 @@ | ||||
| 
 | ||||
|         <div class=" container"> | ||||
|           <br> | ||||
|           <input type="text" id="searchBar" onkeyup="filterCards()" th:placeholder="#{home.searchBar}"> | ||||
|           <input type="text" id="searchBar" onkeyup="filterCards()" th:placeholder="#{home.searchBar}" autofocus> | ||||
|           <div class="features-container"> | ||||
|             <div th:replace="~{fragments/card :: card(id='pipeline', cardTitle=#{home.pipeline.title}, cardText=#{home.pipeline.desc}, cardLink='pipeline', svgPath='images/pipeline.svg', tags=#{pipeline.tags})}"></div> | ||||
| 
 | ||||
| @ -75,7 +75,6 @@ | ||||
|             <div th:replace="~{fragments/card :: card(id='multi-page-layout', cardTitle=#{home.pageLayout.title}, cardText=#{home.pageLayout.desc}, cardLink='multi-page-layout', svgPath='images/page-layout.svg', tags=#{pageLayout.tags})}"></div> | ||||
|             <div th:replace="~{fragments/card :: card(id='scale-pages', cardTitle=#{home.scalePages.title}, cardText=#{home.scalePages.desc}, cardLink='scale-pages', svgPath='images/scale-pages.svg', tags=#{scalePages.tags})}"></div> | ||||
| 
 | ||||
| 
 | ||||
|             <div th:replace="~{fragments/card :: card(id='auto-rename', cardTitle=#{home.auto-rename.title}, cardText=#{home.auto-rename.desc}, cardLink='auto-rename', svgPath='images/fonts.svg', tags=#{auto-rename.tags})}"></div> | ||||
|             <div th:replace="~{fragments/card :: card(id='auto-split-pdf', cardTitle=#{home.autoSplitPDF.title}, cardText=#{home.autoSplitPDF.desc}, cardLink='auto-split-pdf', svgPath='images/layout-split.svg', tags=#{autoSplitPDF.tags})}"></div> | ||||
|             <div th:replace="~{fragments/card :: card(id='sanitize-pdf', cardTitle=#{home.sanitizePdf.title}, cardText=#{home.sanitizePdf.desc}, cardLink='sanitize-pdf', svgPath='images/sanitize.svg', tags=#{sanitizePdf.tags})}"></div> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{licenses.title}, header=#{licenses.title})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -23,15 +23,12 @@ | ||||
|                 </thead> | ||||
|                 <tbody> | ||||
|                   <tr th:each="dep : ${dependencies}"> | ||||
|                     <td><a th:href="${dep.moduleUrl}" | ||||
|                       th:text="${dep.moduleName}"></a></td> | ||||
|                     <td><a th:href="${dep.moduleUrl}" th:text="${dep.moduleName}"></a></td> | ||||
|                     <td th:text="${dep.moduleVersion}"></td> | ||||
|                     <td><a th:href="${dep.moduleLicenseUrl}" | ||||
|                       th:text="${dep.moduleLicense}"></a></td> | ||||
|                     <td><a th:href="${dep.moduleLicenseUrl}" th:text="${dep.moduleLicense}"></a></td> | ||||
|                   </tr> | ||||
|                 </tbody> | ||||
|               </table> | ||||
| 
 | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{login.title}, header=#{login.header})}"></th:block> | ||||
|     <link rel="stylesheet" href="css/login.css"> | ||||
| @ -52,7 +52,7 @@ | ||||
| 
 | ||||
|           document.addEventListener('DOMContentLoaded', function() { | ||||
| 
 | ||||
|             const defaultLocale = document.documentElement.language || 'en_GB'; | ||||
|             const defaultLocale = document.documentElement.getAttribute('language') || 'en_GB'; | ||||
|             const storedLocale = localStorage.getItem('languageCode') || defaultLocale; | ||||
| 
 | ||||
|             const currentURL = new URL(window.location.href); | ||||
| @ -142,23 +142,25 @@ | ||||
|           <h2 class="h5 mb-3 fw-normal" th:text="#{login.signinTitle}">Please sign in</h2> | ||||
| 
 | ||||
|           <div class="form-floating"> | ||||
|             <input type="text" class="form-control bg-dark text-light" id="username" name="username" placeholder="admin"> <label for="username" th:text="#{username}">Username</label> | ||||
|             <input type="text" class="form-control bg-dark text-light" id="username" name="username" placeholder="admin"> | ||||
|             <label for="username" th:text="#{username}">Username</label> | ||||
|           </div> | ||||
|           <div class="form-floating"> | ||||
|             <input type="password" class="form-control bg-dark text-light" id="password" name="password" placeholder="Password"> <label for="password" th:text="#{password}">Password</label> | ||||
|             <input type="password" class="form-control bg-dark text-light" id="password" name="password" placeholder="Password"> | ||||
|             <label for="password" th:text="#{password}">Password</label> | ||||
|           </div> | ||||
| 
 | ||||
|           <div class="checkbox mb-3"> | ||||
|             <label > <input type="checkbox" value="remember-me"> | ||||
|               <span th:text="#{login.rememberme}"></span> | ||||
|             </label> | ||||
|             <input type="checkbox" id="remember" value="remember-me"> | ||||
|             <label for="remember" th:text="#{login.rememberme}"></label>  | ||||
|           </div> | ||||
|           <button class="w-100 btn btn-lg btn-primary" type="submit" th:text="#{login.signin}">Sign in</button> | ||||
|         </form> | ||||
|         <div class="mt-3"> <!-- Added a margin-top for spacing --> | ||||
|           <div class="dropdown"> | ||||
|             <button class="btn btn-secondary dropdown-toggle" type="button" id="languageDropdown" data-bs-toggle="dropdown" aria-expanded="false"> | ||||
|               English (GB) <!-- Default language placeholder --> | ||||
|               <img src="images/flags/gb.svg" alt="icon" width="20" height="15"> English (GB) | ||||
|               <!-- Default language placeholder --> | ||||
|             </button> | ||||
|             <div class="dropdown-menu" aria-labelledby="languageDropdown"> | ||||
|               <!-- Here's where the fragment will be included --> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{merge.title}, header=#{merge.header})}"></th:block> | ||||
|     <link rel="stylesheet" href="css/merge.css"> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container" id="dropContainer"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{addImage.title}, header=#{addImage.header})}"></th:block> | ||||
|     <script src="js/thirdParty/interact.min.js"></script> | ||||
| @ -10,7 +10,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -73,12 +73,12 @@ | ||||
|                       <path d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1ZM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118ZM2.5 3h11V2h-11v1Z"/> | ||||
|                     </svg> | ||||
|                   </button> | ||||
|                     <button class="btn btn-outline-secondary" onclick="document.documentElement.getAttribute('lang-direction')==='rtl' ? DraggableUtils.incrementPage() : DraggableUtils.decrementPage()" style="margin-left:auto"> | ||||
|                   <button class="btn btn-outline-secondary" onclick="document.documentElement.getAttribute('dir')==='rtl' ? DraggableUtils.incrementPage() : DraggableUtils.decrementPage()" style="margin-left:auto"> | ||||
|                     <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-left" viewBox="0 0 16 16"> | ||||
|                       <path fill-rule="evenodd" d="M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z"/> | ||||
|                     </svg> | ||||
|                   </button> | ||||
|                     <button class="btn btn-outline-secondary" onclick="document.documentElement.getAttribute('lang-direction')==='rtl' ? DraggableUtils.decrementPage() : DraggableUtils.incrementPage()"> | ||||
|                   <button class="btn btn-outline-secondary" onclick="document.documentElement.getAttribute('dir')==='rtl' ? DraggableUtils.decrementPage() : DraggableUtils.incrementPage()"> | ||||
|                     <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-right" viewBox="0 0 16 16"> | ||||
|                       <path fill-rule="evenodd" d="M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z"/> | ||||
|                     </svg> | ||||
| @ -105,7 +105,6 @@ | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|       </div> | ||||
|       <th:block th:insert="~{fragments/footer.html :: footer}"></th:block> | ||||
|     </div> | ||||
|   </body> | ||||
|  | ||||
| @ -1,12 +1,12 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{addPageNumbers.title}, header=#{addPageNumbers.header})}"></th:block> | ||||
|     <style> | ||||
|       .a4container { | ||||
|         position: relative; | ||||
|         width: 50%; | ||||
|         aspect-ratio: 0.707; | ||||
|         aspect-ratio: 0.707/1; | ||||
|         border: 1px solid #ddd; | ||||
|         box-sizing: border-box; | ||||
|         background-color: white; | ||||
| @ -52,7 +52,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -62,7 +62,7 @@ | ||||
|                 <br> | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="customMargin" th:text="#{addPageNumbers.selectText.2}"></label> | ||||
|                   <select class="form-control" id="customMargin" name="customMargin" required> | ||||
|                   <select class="form-control" id="customMargin" name="customMargin"> | ||||
|                     <option value="small" th:text="#{sizes.small}"></option> | ||||
|                     <option value="medium" selected th:text="#{sizes.medium}"></option> | ||||
|                     <option value="large" th:text="#{sizes.large}"></option> | ||||
| @ -70,7 +70,7 @@ | ||||
|                   </select> | ||||
|                 </div> | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="position" th:text="#{addPageNumbers.selectText.3}"></label> | ||||
|                   <label th:text="#{addPageNumbers.selectText.3}"></label> | ||||
|                   <div class="a4container"> | ||||
|                     <div class="pageNumber" id="1" style="top: 10%; left: 10%;">1</div> | ||||
|                     <div class="pageNumber" id="2" style="top: 10%; left: 50%;">2</div> | ||||
| @ -83,18 +83,18 @@ | ||||
|                     <div class="pageNumber" id="9" style="top: 90%; left: 90%;">9</div> | ||||
|                   </div> | ||||
|                 </div> | ||||
|                 <input type="hidden" id="numberInput" name="position" min="1" max="9" value="8" required /> | ||||
|                 <input type="hidden" id="numberInput" name="position" value="8"> | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="startingNumber" th:text="#{addPageNumbers.selectText.4}"></label> | ||||
|                   <input type="number" class="form-control" id="startingNumber" name="startingNumber" min="1" required value="1" /> | ||||
|                   <input type="number" class="form-control" id="startingNumber" name="startingNumber" min="1" required value="1"> | ||||
|                 </div> | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="pagesToNumber" th:text="#{addPageNumbers.selectText.5}"></label> | ||||
|                   <input type="text" class="form-control" id="pagesToNumber" name="pagesToNumber" th:placeholder="#{addPageNumbers.numberPagesDesc}" /> | ||||
|                   <input type="text" class="form-control" id="pagesToNumber" name="pagesToNumber" th:placeholder="#{addPageNumbers.numberPagesDesc}"> | ||||
|                 </div> | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="customText" th:text="#{addPageNumbers.selectText.6}"></label> | ||||
|                   <input type="text" class="form-control" id="customText" name="customText" th:placeholder="#{addPageNumbers.customNumberDesc}" /> | ||||
|                   <input type="text" class="form-control" id="customText" name="customText" th:placeholder="#{addPageNumbers.customNumberDesc}"> | ||||
|                 </div> | ||||
|                 <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{addPageNumbers.submit}"></button> | ||||
|               </form> | ||||
|  | ||||
| @ -1,40 +1,7 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{adjustContrast.title}, header=#{adjustContrast.header})}"></th:block> | ||||
|   </head> | ||||
| 
 | ||||
|   <body> | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-12"> | ||||
|               <div class="row justify-content-center"> | ||||
|                 <div class="col-md-3"> | ||||
|                     <div id="sliders-container" style="display:none;"> | ||||
|                       <h4><span th:text="#{adjustContrast.contrast}"></span> <span id="contrast-val">100</span>%</h4> | ||||
|                       <input type="range" min="0" max="200" value="100" id="contrast-slider" /> | ||||
| 
 | ||||
|                       <h4><span th:text="#{adjustContrast.brightness}"></span> <span id="brightness-val">100</span>%</h4> | ||||
|                       <input type="range" min="0" max="200" value="100" id="brightness-slider" /> | ||||
| 
 | ||||
|                       <h4><span th:text="#{adjustContrast.saturation}"></span> <span id="saturation-val">100</span>%</h4> | ||||
|                       <input type="range" min="0" max="200" value="100" id="saturation-slider" /> | ||||
|                     </div> | ||||
|                 </div> | ||||
|                 <div class="col-md-7"> | ||||
|                   <h2 th:text="#{adjustContrast.header}"></h2> | ||||
|                   <div class="col-md-8"> | ||||
|                     <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf', remoteCall='false')}"></div> | ||||
|                   </div> | ||||
|                   <br /> | ||||
|                   <canvas id="contrast-pdf-canvas"></canvas> | ||||
|                   <button id="download-button" class="btn btn-primary" th:text="#{adjustContrast.download}"></button> | ||||
|                 </div> | ||||
|               </div> | ||||
|     <style> | ||||
|       #flex-container { | ||||
|         display: flex; | ||||
| @ -44,6 +11,39 @@ | ||||
|         padding: 0 20px;  /* Add some padding to separate sliders from canvas */ | ||||
|       } | ||||
|     </style> | ||||
|   </head> | ||||
| 
 | ||||
|   <body> | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-12"> | ||||
|               <div class="row justify-content-center"> | ||||
|                 <div class="col-md-3"> | ||||
|                   <div id="sliders-container" style="display:none;"> | ||||
|                     <h4><span th:text="#{adjustContrast.contrast}"></span> <span id="contrast-val">100</span>%</h4> | ||||
|                     <input type="range" min="0" max="200" value="100" id="contrast-slider"> | ||||
| 
 | ||||
|                     <h4><span th:text="#{adjustContrast.brightness}"></span> <span id="brightness-val">100</span>%</h4> | ||||
|                     <input type="range" min="0" max="200" value="100" id="brightness-slider"> | ||||
| 
 | ||||
|                     <h4><span th:text="#{adjustContrast.saturation}"></span> <span id="saturation-val">100</span>%</h4> | ||||
|                     <input type="range" min="0" max="200" value="100" id="saturation-slider"> | ||||
|                   </div> | ||||
|                 </div> | ||||
|                 <div class="col-md-7"> | ||||
|                   <h2 th:text="#{adjustContrast.header}"></h2> | ||||
|                   <div class="col-md-8"> | ||||
|                     <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf', remoteCall='false')}"></div> | ||||
|                   </div> | ||||
|                   <br> | ||||
|                   <canvas id="contrast-pdf-canvas"></canvas> | ||||
|                   <button id="download-button" class="btn btn-primary" th:text="#{adjustContrast.download}"></button> | ||||
|                 </div> | ||||
|               </div> | ||||
| 
 | ||||
|               <script> | ||||
|                 var canvas = document.getElementById('contrast-pdf-canvas'); | ||||
| @ -69,7 +69,6 @@ | ||||
|                     // Render the first page in the viewer | ||||
|                     await renderPageAndAdjustImageProperties(1); | ||||
|                     document.getElementById("sliders-container").style.display = "block"; | ||||
| 
 | ||||
|                   }; | ||||
|                   fileReader.readAsArrayBuffer(file); | ||||
|                 } | ||||
| @ -130,7 +129,6 @@ | ||||
|                       newImageData.data[i+1] = rgb[1]; | ||||
|                       newImageData.data[i+2] = rgb[2]; | ||||
|                     } | ||||
| 
 | ||||
|                     context.putImageData(newImageData, 0, 0); | ||||
|                   } | ||||
|                 } | ||||
| @ -256,7 +254,6 @@ | ||||
|                   if (pdf !== null) { | ||||
|                     renderPageAndAdjustImageProperties(1); | ||||
|                   } | ||||
| 
 | ||||
|                 } | ||||
| 
 | ||||
|                 // Event listeners | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{autoCrop.title}, header=#{autoCrop.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{auto-rename.title}, header=#{auto-rename.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{changeMetadata.title}, header=#{changeMetadata.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{compare.title}, header=#{compare.header})}"></th:block> | ||||
|     <style> | ||||
| @ -17,7 +17,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-9"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{compress.title}, header=#{compress.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -32,7 +32,7 @@ | ||||
|                   <div class="card-body"> | ||||
|                     <h4 th:text="#{compress.selectText.4}"></h4> | ||||
|                     <label for="expectedOutputSize" th:text="#{compress.selectText.5}"></label> | ||||
|                     <input type="text" name="expectedOutputSize" id="expectedOutputSize" min="1" class="form-control"> | ||||
|                     <input type="text" name="expectedOutputSize" id="expectedOutputSize" class="form-control"> | ||||
|                   </div> | ||||
|                 </div> | ||||
|                 <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{compress.submit}"></button> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{home.ScannerImageSplit.title}, header=#{home.ScannerImageSplit.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{extractImages.title}, header=#{extractImages.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{flatten.title}, header=#{flatten.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -51,5 +51,4 @@ | ||||
|       <th:block th:insert="~{fragments/footer.html :: footer}"></th:block> | ||||
|     </div> | ||||
|   </body> | ||||
| 
 | ||||
| </html> | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{ocr.title}, header=#{ocr.header})}"></th:block> | ||||
|     <script> | ||||
| @ -31,7 +31,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -40,14 +40,14 @@ | ||||
|                 <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="languages" class="form-label" th:text="#{ocr.selectText.1}"></label> | ||||
|                   <hr /> | ||||
|                   <hr> | ||||
|                   <div id="languages"> | ||||
|                     <div th:each="language, iterStat : ${languages}"> | ||||
|                       <input type="checkbox" th:name="languages" th:value="${language}" required th:id="${'language-' + language}" onchange="handleLangSelection()" /> | ||||
|                       <label class="form-check-label" th:for="${'language-' + language}" th:text="${language}"></label> | ||||
|                     </div> | ||||
|                   </div> | ||||
|                   <hr /> | ||||
|                   <hr> | ||||
|                 </div> | ||||
|                 <div class="mb-3"> | ||||
|                   <label th:text="#{ocr.selectText.10}"></label> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{removeAnnotations.title}, header=#{removeAnnotations.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{removeBlanks.title}, header=#{removeBlanks.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -35,4 +35,3 @@ | ||||
|     </div> | ||||
|   </body> | ||||
| </html> | ||||
| 
 | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{repair.title}, header=#{repair.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,8 +1,8 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{showJS.title}, header=#{showJS.header})}"></th:block> | ||||
|     <link href="css/prism.css" rel="stylesheet" /> | ||||
|     <link href="css/prism.css" rel="stylesheet"> | ||||
|     <script src="js/thirdParty/prism.js"></script> | ||||
|     <style> | ||||
|       /* Add a max-height and make it scrollable */ | ||||
| @ -17,7 +17,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-12"> | ||||
|  | ||||
| @ -1,7 +1,17 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{AddStampRequest.title}, header=#{AddStampRequest.header})}"></th:block> | ||||
|     <style> | ||||
|       .a4container { | ||||
|         position: relative; | ||||
|         width: 50%; | ||||
|         aspect-ratio: 0.707/1; | ||||
|         border: 1px solid #ddd; | ||||
|         box-sizing: border-box; | ||||
|         background-color: white; | ||||
|       } | ||||
|     </style> | ||||
|   </head> | ||||
| 
 | ||||
|   <body> | ||||
| @ -9,7 +19,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -33,7 +43,7 @@ | ||||
|                 </div> | ||||
| 
 | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="position" th:text="#{AddStampRequest.position}"></label> | ||||
|                   <label th:text="#{AddStampRequest.position}"></label> | ||||
|                   <div class="a4container"> | ||||
|                     <div class="pageNumber" id="1" style="top: 10%; left: 10%;">1</div> | ||||
|                     <div class="pageNumber" id="2" style="top: 10%; left: 50%;">2</div> | ||||
| @ -47,11 +57,11 @@ | ||||
|                   </div> | ||||
|                 </div> | ||||
| 
 | ||||
|                 <input type="hidden" id="numberInput" name="position" min="1" max="9" value="8" required /> | ||||
|                 <input type="hidden" id="numberInput" name="position" value="8"> | ||||
| 
 | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="stampType" class="form-label" th:text="#{AddStampRequest.stampType}">Stamp Type</label> | ||||
|                   <select class="form-select" id="stampType" name="stampType" onchange="toggleFileOption()" required> | ||||
|                   <select class="form-select" id="stampType" name="stampType" onchange="toggleFileOption()"> | ||||
|                     <option value="text">Text</option> | ||||
|                     <option value="image">Image</option> | ||||
|                   </select> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{pageLayout.title}, header=#{pageLayout.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -17,7 +17,7 @@ | ||||
|                 <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="pagesPerSheet" th:text="#{pageLayout.pagesPerSheet}"></label> | ||||
|                   <select id="pagesPerSheet" name="pagesPerSheet" required> | ||||
|                   <select id="pagesPerSheet" name="pagesPerSheet"> | ||||
|                     <option value="2">2</option> | ||||
|                     <option value="3">3</option> | ||||
|                     <option value="4">4</option> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{multiTool.title}, header=#{multiTool.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="multi-tool-container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <h2 th:text="#{multiTool.header}"></h2> | ||||
| @ -28,13 +28,13 @@ | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6" style="text-align: center"> | ||||
|               <div id="global-buttons-container" class="d-flex align-content-center justify-content-center"> | ||||
|               <div class="global-buttons-container d-flex align-content-center justify-content-center"> | ||||
|                 <div class="form-group"> | ||||
|                   <label for="filename-input">Filename</label> | ||||
|                   <input type="text" class="form-control" id="filename-input" placeholder="filename"> | ||||
|                   <label for="filename-input" th:text="#{multiTool.filename}">Filename</label> | ||||
|                   <input type="text" class="form-control" id="filename-input" th:placeholder="#{multiTool.filename}"> | ||||
|                 </div> | ||||
|               </div> | ||||
|               <div id="global-buttons-container"> | ||||
|               <div class="global-buttons-container"> | ||||
|                 <button class="btn btn-primary" onclick="addPdfs()"> | ||||
|                   <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-plus" viewBox="0 0 16 16"> | ||||
|                     <path d="M8 6.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V11a.5.5 0 0 1-1 0V9.5H6a.5.5 0 0 1 0-1h1.5V7a.5.5 0 0 1 .5-.5z"/> | ||||
| @ -64,9 +64,9 @@ | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|       <div id="drag-container"></div> | ||||
|       <th:block th:insert="~{fragments/footer.html :: footer}"></th:block> | ||||
|     </div> | ||||
|     <div id="drag-container"></div> | ||||
| 
 | ||||
|     <script type="module"> | ||||
|       import PdfContainer from './js/multitool/PdfContainer.js'; | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{split-by-size-or-count.title}, header=#{split-by-size-or-count.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{pdfOrganiser.title}, header=#{pdfOrganiser.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{pdfToSinglePage.title}, header=#{pdfToSinglePage.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{pipeline.title}, header=#{pipeline.header})}"></th:block> | ||||
|     <link rel="stylesheet" href="css/pipeline.css" th:if="${currentPage == 'pipeline'}"> | ||||
| @ -12,7 +12,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
| 
 | ||||
| @ -21,7 +21,6 @@ | ||||
|               <img src="images/pipeline.svg" alt="icon" style="filter: invert(33%) sepia(100%) saturate(5000%) hue-rotate(183deg) brightness(90%) contrast(100%); width: 100px; height: 100px;"> | ||||
|             </div> | ||||
|            | ||||
| 			 | ||||
|             <div class="bordered-box"> | ||||
|               <div class="text-end text-top"> | ||||
|                 <button id="uploadPipelineBtn" class="btn btn-primary" th:text="#{pipeline.uploadButton}"></button> | ||||
| @ -44,7 +43,7 @@ | ||||
|                   <button class="btn btn-primary" id="submitConfigBtn" th:text="#{pipeline.submitButton}"></button> | ||||
|                 </div> | ||||
|                 <a href="https://github.com/Stirling-Tools/Stirling-PDF/blob/main/PipelineFeature.md" target="_blank">Pipeline Help</a> | ||||
|               </br> | ||||
|                 <br> | ||||
|                 <a href="https://github.com/Stirling-Tools/Stirling-PDF/blob/main/FolderScanning.md" target="_blank">Folder Scanning Help</a> | ||||
|               </div> | ||||
|             </div> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{pageRemover.title}, header=#{pageRemover.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -17,7 +17,7 @@ | ||||
|               <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 class="mb-3"> | ||||
|                   <label for="pageNumbers" th:text="#{pageRemover.pagesToDelete}"></label> | ||||
|                   <label for="fileInput" th:text="#{pageRemover.pagesToDelete}"></label> | ||||
|                   <input type="text" class="form-control" id="fileInput" name="pageNumbers" placeholder="(e.g. 1,2,6 or 1-10,15-30)" required> | ||||
|                 </div> | ||||
|                 <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{pageRemover.submit}"></button> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{rotate.title}, header=#{rotate.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -19,8 +19,8 @@ | ||||
|                 <input type="hidden" id="angleInput" name="angle" value="0"> | ||||
| 
 | ||||
|                 <div id="editSection" style="display: none"> | ||||
|                     <div class="previewContainer"> | ||||
|                         <img id="pdf-preview"> | ||||
|                   <div id="previewContainer"> | ||||
|                     <!-- pdf-preview --> | ||||
|                   </div> | ||||
| 
 | ||||
|                   <div class="buttonContainer"> | ||||
| @ -49,7 +49,8 @@ | ||||
|     <script> | ||||
|       const angleInput = document.getElementById("angleInput"); | ||||
|       const fileInput = document.getElementById("fileInput-input"); | ||||
|       const preview = document.getElementById("pdf-preview"); | ||||
|       const previewContainer = document.getElementById("previewContainer"); | ||||
|       // const preview = document.getElementById("pdf-preview"); | ||||
|       fileInput.addEventListener("change", async function() { | ||||
|         console.log("loading pdf"); | ||||
| 
 | ||||
| @ -78,21 +79,24 @@ | ||||
|         }; | ||||
| 
 | ||||
|         await page.render(renderContext).promise; | ||||
|         const  preview = document.createElement("img"); | ||||
|         preview.id = "pdf-preview"; | ||||
|         preview.alt = "preview"; | ||||
|         preview.src = canvas.toDataURL(); | ||||
|         previewContainer.appendChild(preview); | ||||
|       }); | ||||
| 
 | ||||
|       function rotate(deg) { | ||||
|         const preview = document.getElementById("pdf-preview"); | ||||
|         var lastTransform = preview.style.rotate; | ||||
|         if (!lastTransform) { | ||||
|           lastTransform = "0"; | ||||
|         } | ||||
|         const lastAngle = parseInt(lastTransform.replace(/[^\d-]/g, '')); | ||||
|         const newAngle = lastAngle + deg; | ||||
| 
 | ||||
|         preview.style.rotate = newAngle + "deg"; | ||||
|         angleInput.value = newAngle; | ||||
|       } | ||||
|     </script> | ||||
|   </body> | ||||
| 
 | ||||
| </html> | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{scalePages.title}, header=#{scalePages.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -17,7 +17,7 @@ | ||||
|                 <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="pageSize" th:text="#{scalePages.pageSize}"></label> | ||||
|                   <select id="pageSize" name="pageSize" required> | ||||
|                   <select id="pageSize" name="pageSize"> | ||||
|                     <option value="A0">A0</option> | ||||
|                     <option value="A1">A1</option> | ||||
|                     <option value="A2">A2</option> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{addPassword.title}, header=#{addPassword.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{watermark.title}, header=#{watermark.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -18,7 +18,7 @@ | ||||
|                 <div class="mb-3"> | ||||
|                   <label th:text="#{watermark.selectText.1}"></label> | ||||
|                   <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"> | ||||
|                             <input type="file" id="fileInput" name="fileInput" class="form-control-file" accept="application/pdf" required /> | ||||
|                     <input type="file" id="fileInput" name="fileInput" class="form-control-file" accept="application/pdf" required> | ||||
|                   </div> | ||||
|                 </div> | ||||
| 
 | ||||
| @ -41,21 +41,21 @@ | ||||
|                 </div> | ||||
|                 <div id="watermarkTextGroup" class="mb-3"> | ||||
|                   <label for="watermarkText" th:text="#{watermark.selectText.2}"></label> | ||||
|                         <input type="text" id="watermarkText" name="watermarkText" class="form-control" placeholder="Stirling-PDF" required /> | ||||
|                   <input type="text" id="watermarkText" name="watermarkText" class="form-control" placeholder="Stirling-PDF" required> | ||||
|                 </div> | ||||
| 
 | ||||
|                 <div id="watermarkImageGroup" class="mb-3" style="display: none;"> | ||||
|                   <label for="watermarkImage" th:text="#{watermark.selectText.9}"></label> | ||||
|                         <input type="file" id="watermarkImage" name="watermarkImage" class="form-control-file" accept="image/*" /> | ||||
|                   <input type="file" id="watermarkImage" name="watermarkImage" class="form-control-file" accept="image/*"> | ||||
|                 </div> | ||||
| 
 | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="fontSize" th:text="#{watermark.selectText.3}"></label> | ||||
|                         <input type="text" id="fontSize" name="fontSize" class="form-control" value="30" /> | ||||
|                   <input type="text" id="fontSize" name="fontSize" class="form-control" value="30"> | ||||
|                 </div> | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="opacity" th:text="#{watermark.selectText.7}"></label> | ||||
|                       <input type="text" id="opacity" name="opacityText" class="form-control" value="50" onblur="updateOpacityValue()" /> | ||||
|                   <input type="text" id="opacity" name="opacityText" class="form-control" value="50" onblur="updateOpacityValue()"> | ||||
|                   <input type="hidden" id="opacityReal" name="opacity" value="0.5"> | ||||
|                 </div> | ||||
|                 <script> | ||||
| @ -93,18 +93,18 @@ | ||||
| 
 | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="rotation" th:text="#{watermark.selectText.4}"></label> | ||||
|                       <input type="text" id="rotation" name="rotation" class="form-control" value="45" /> | ||||
|                   <input type="text" id="rotation" name="rotation" class="form-control" value="45"> | ||||
|                 </div> | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="widthSpacer" th:text="#{watermark.selectText.5}"></label> | ||||
|                       <input type="text" id="widthSpacer" name="widthSpacer" class="form-control" value="50" /> | ||||
|                   <input type="text" id="widthSpacer" name="widthSpacer" class="form-control" value="50"> | ||||
|                 </div> | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="heightSpacer" th:text="#{watermark.selectText.6}"></label> | ||||
|                       <input type="text" id="heightSpacer" name="heightSpacer" class="form-control" value="50" /> | ||||
|                   <input type="text" id="heightSpacer" name="heightSpacer" class="form-control" value="50"> | ||||
|                 </div> | ||||
|                 <div class="mb-3 text-center"> | ||||
|                       <input type="submit" id="submitBtn" th:value="#{watermark.submit}" class="btn btn-primary" /> | ||||
|                   <input type="submit" id="submitBtn" th:value="#{watermark.submit}" class="btn btn-primary"> | ||||
|                 </div> | ||||
|               </form> | ||||
| 
 | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{autoRedact.title}, header=#{autoRedact.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{certSign.title}, header=#{certSign.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -23,7 +23,8 @@ | ||||
|                   <label th:text="#{certSign.jksNote}"></label> | ||||
|                 </div> | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="certType" th:text="#{certSign.certType}"></label> <select class="form-control" id="certType" name="certType"> | ||||
|                   <label for="certType" th:text="#{certSign.certType}"></label> | ||||
|                   <select class="form-control" id="certType" name="certType"> | ||||
|                     <option value="" th:text="#{selectFillter}"></option> | ||||
|                     <option value="PEM">PEM</option> | ||||
|                     <option value="PKCS12">PKCS12</option> | ||||
| @ -49,10 +50,12 @@ | ||||
|                   <div th:replace="~{fragments/common :: fileSelector(name='jksFile', notRequired=true, multiple=false, accept='.jks,.keystore')}"></div> | ||||
|                 </div> | ||||
|                 <div class="mb-3"> | ||||
|                   <label th:text="#{certSign.password}"></label> <input type="password" class="form-control" id="password" name="password"> | ||||
|                   <label th:text="#{certSign.password}" for="password"></label> | ||||
|                   <input type="password" class="form-control" id="password" name="password"> | ||||
|                 </div> | ||||
|                 <div class="mb-3"> | ||||
|                   <label><input type="checkbox" id="showSignature" name="showSignature" th:text="#{certSign.showSig}"></label> | ||||
|                   <input type="checkbox" id="showSignature" name="showSignature"> | ||||
|                   <label th:text="#{certSign.showSig}" for="showSignature"></label> | ||||
|                 </div> | ||||
|                 <div id="signatureDetails" style="display: none;"> | ||||
|                   <div class="mb-3"> | ||||
| @ -78,7 +81,7 @@ | ||||
|       </div> | ||||
|       <th:block th:insert="~{fragments/footer.html :: footer}"></th:block> | ||||
|     </div> | ||||
|     <script type="text/javascript"> | ||||
|     <script> | ||||
|       document.getElementById('certType').addEventListener('change', function() { | ||||
|         var pemGroup = document.getElementById('pemGroup'); | ||||
|         var p12Group = document.getElementById('p12Group'); | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{permissions.title}, header=#{permissions.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{getPdfInfo.title}, header=#{getPdfInfo.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{removePassword.title}, header=#{removePassword.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{remove-watermark.title}, header=#{remove-watermark.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{sanitizePDF.title}, header=#{sanitizePDF.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{sign.title}, header=#{sign.header})}"></th:block> | ||||
|     <link rel="stylesheet" href="css/sign.css"> | ||||
| @ -26,7 +26,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -162,10 +162,7 @@ | ||||
|                     <textarea class="form-control" id="sigText" name="sigText" rows="3"></textarea> | ||||
|                     <label th:text="#{font}"></label> | ||||
|                     <select class="form-control" name="font" id="font-select"> | ||||
|                       <option th:each="font : ${fonts}" | ||||
|                               th:value="${font.name}" | ||||
|                               th:text="${font.name}" | ||||
|                               th:class="${font.name.toLowerCase()+'-font'}"> | ||||
|                       <option th:each="font : ${fonts}" th:value="${font.name}" th:text="${font.name}" th:class="${font.name.toLowerCase()+'-font'}"> | ||||
|                       </option> | ||||
|                     </select> | ||||
|                     <div class="margin-auto-parent"> | ||||
| @ -237,12 +234,12 @@ | ||||
|                       <path d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1ZM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118ZM2.5 3h11V2h-11v1Z"/> | ||||
|                     </svg> | ||||
|                   </button> | ||||
|                   <button class="btn btn-outline-secondary" onclick="document.documentElement.getAttribute('lang-direction')==='rtl' ? DraggableUtils.incrementPage() : DraggableUtils.decrementPage()" style="margin-left:auto"> | ||||
|                   <button class="btn btn-outline-secondary" onclick="document.documentElement.getAttribute('dir')==='rtl' ? DraggableUtils.incrementPage() : DraggableUtils.decrementPage()" style="margin-left:auto"> | ||||
|                     <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-left" viewBox="0 0 16 16"> | ||||
|                       <path fill-rule="evenodd" d="M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z"/> | ||||
|                     </svg> | ||||
|                   </button> | ||||
|                   <button class="btn btn-outline-secondary" onclick="document.documentElement.getAttribute('lang-direction')==='rtl' ? DraggableUtils.decrementPage() : DraggableUtils.incrementPage()"> | ||||
|                   <button class="btn btn-outline-secondary" onclick="document.documentElement.getAttribute('dir')==='rtl' ? DraggableUtils.decrementPage() : DraggableUtils.incrementPage()"> | ||||
|                     <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-right" viewBox="0 0 16 16"> | ||||
|                       <path fill-rule="evenodd" d="M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z"/> | ||||
|                     </svg> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{split-by-size-or-count.title}, header=#{split-by-size-or-count.header})}"></th:block> | ||||
|   </head> | ||||
| @ -9,7 +9,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <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"> | ||||
| @ -10,7 +10,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -23,8 +23,8 @@ | ||||
|                 <label for="verticalDivisions" th:text="#{split-by-sections.vertical.label}">Vertical Divisions</label> | ||||
|                 <input type="number" id="verticalDivisions" name="verticalDivisions" class="form-control" min="0" max="300" required value="1" th:placeholder="#{split-by-sections.vertical.placeholder}"> | ||||
|                 <br> | ||||
|                   <label for="verticalDivisions" th:text="#{split-by-sections.merge}">merge PDFs into one</label> | ||||
|                   <input type="checkbox" id="merge" name="merge" th:placeholder="#{split-by-sections.merge}"> | ||||
|                 <label for="merge" th:text="#{split-by-sections.merge}">merge PDFs into one</label> | ||||
|                 <input type="checkbox" id="merge" name="merge"> | ||||
|                 <br> | ||||
|                 <div id="pdfVisualAid" class="pdf-visual-aid"></div> | ||||
|                 <script> | ||||
| @ -33,10 +33,12 @@ | ||||
|                     const verticalDivisions = document.getElementById('verticalDivisions').value; | ||||
|                     const aid = document.getElementById('pdfVisualAid'); | ||||
| 
 | ||||
|                       if(horizontalDivisions > 300) | ||||
|                     if(horizontalDivisions > 300) { | ||||
|                       horizontalDivisions = 300 | ||||
|                         if(verticalDivisions > 300) | ||||
|                     } | ||||
|                     if(verticalDivisions > 300) { | ||||
|                       verticalDivisions = 300 | ||||
|                     } | ||||
|                     // Clear existing lines | ||||
|                     aid.innerHTML = ''; | ||||
| 
 | ||||
| @ -75,7 +77,6 @@ | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|       </div> | ||||
|       <th:block th:insert="~{fragments/footer.html :: footer}"></th:block> | ||||
|     </div> | ||||
|   </body> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html th:lang="${#locale.language}" th:lang-direction="#{language.direction}" th:language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
| <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="http://www.thymeleaf.org"> | ||||
|   <head> | ||||
|   <th:block th:insert="~{fragments/common :: head(title=#{split.title}, header=#{split.header})}"></th:block> | ||||
|   </head> | ||||
| @ -8,7 +8,7 @@ | ||||
|     <div id="page-container"> | ||||
|       <div id="content-wrap"> | ||||
|         <th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block> | ||||
|         <br /><br /> | ||||
|         <br><br> | ||||
|         <div class="container"> | ||||
|           <div class="row justify-content-center"> | ||||
|             <div class="col-md-6"> | ||||
| @ -26,7 +26,7 @@ | ||||
|                 <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> | ||||
| 
 | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="pages" th:text="#{split.splitPages}"></label> | ||||
|                   <label for="pageNumbers" th:text="#{split.splitPages}"></label> | ||||
|                   <input type="text" class="form-control" id="pageNumbers" name="pageNumbers" placeholder="1,3,5-10" required> | ||||
|                 </div> | ||||
|                 <br> | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user