mirror of
				https://github.com/Frooodle/Stirling-PDF.git
				synced 2025-10-25 11:17:28 +02:00 
			
		
		
		
	add: multi OAuth2 option README.md, small cosmetic repairs
This commit is contained in:
		
							parent
							
								
									0d193cd235
								
							
						
					
					
						commit
						cbb4ccd4b7
					
				| @ -29,7 +29,7 @@ If you would like to add or modify a translation, please see [How to add new lan | ||||
| 
 | ||||
| ## Docs | ||||
| 
 | ||||
| Documentation for Stirling-PDF is handled in a seperate repository. Please see [Docs repository](https://github.com/Stirling-Tools/Stirling-Tools.github.io) or use "edit this page"-button at the bottom of each page at [https://stirlingtools.com/docs/](https://stirlingtools.com/docs/). | ||||
| Documentation for Stirling-PDF is handled in a separate repository. Please see [Docs repository](https://github.com/Stirling-Tools/Stirling-Tools.github.io) or use "edit this page"-button at the bottom of each page at [https://stirlingtools.com/docs/](https://stirlingtools.com/docs/). | ||||
| 
 | ||||
| ## Fixing Bugs or Adding a New Feature | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										22
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								README.md
									
									
									
									
									
								
							| @ -159,7 +159,7 @@ Please view https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToUseOCR | ||||
| 
 | ||||
| ## Supported Languages | ||||
| 
 | ||||
| Stirling PDF currently supports 27! | ||||
| Stirling PDF currently supports 28! | ||||
| 
 | ||||
| | Language                                    | Progress                               | | ||||
| | ------------------------------------------- | -------------------------------------- | | ||||
| @ -191,6 +191,7 @@ Stirling PDF currently supports 27! | ||||
| | Sebian Latin alphabet (Srpski) (sr_LATN_RS) |    | | ||||
| | Ukrainian (Українська) (uk_UA)              |    | | ||||
| | Slovakian (Slovensky) (sk_SK)               |    | | ||||
| | Czech (Česky) (cs_CZ)                       |    | | ||||
| 
 | ||||
| ## Contributing (creating issues, translations, fixing bugs, etc.) | ||||
| 
 | ||||
| @ -226,7 +227,7 @@ security: | ||||
|   loginAttemptCount: 5 # lock user account after 5 tries | ||||
|   loginResetTimeMinutes: 120 # lock account for 2 hours after x attempts | ||||
| #  initialLogin: | ||||
| #    username: "admin" # Initial username for the first login (these are defaulted) | ||||
| #    username: "admin" # Initial username for the first login | ||||
| #    password: "stirling" # Initial password for the first login | ||||
| #  oauth2: | ||||
| #    enabled: false # set to 'true' to enable login (Note: enableLogin must also be 'true' for this to work) | ||||
| @ -237,6 +238,23 @@ security: | ||||
| #    useAsUsername: "email" # Default is 'email'; custom fields can be used as the username | ||||
| #    scopes: "openid, profile, email" # Specify the scopes for which the application will request permissions | ||||
| #    provider: "google" # Set this to your OAuth provider's name, e.g., 'google' or 'keycloak' | ||||
| #    client: | ||||
| #      google: | ||||
| #        clientId: "" # Client ID for Google OAuth2 | ||||
| #        clientSecret: "" # Client Secret for Google OAuth2 | ||||
| #        scopes: "https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/userinfo.profile" # Scopes for Google OAuth2 | ||||
| #        useAsUsername: "email" # Field to use as the username for Google OAuth2 | ||||
| #      github: | ||||
| #        clientId: "" # Client ID for GitHub OAuth2 | ||||
| #        clientSecret: "" # Client Secret for GitHub OAuth2 | ||||
| #        scopes: "read:user" # Scope for GitHub OAuth2 | ||||
| #        useAsUsername: "login" # Field to use as the username for GitHub OAuth2 | ||||
| #      keycloak: | ||||
| #        issuer: "http://192.168.0.123:8888/realms/stirling-pdf" # URL of the Keycloak realm's OpenID Connect Discovery endpoint | ||||
| #        clientId: "stirling-pdf" # Client ID for Keycloak OAuth2 | ||||
| #        clientSecret: "" # Client Secret for Keycloak OAuth2 | ||||
| #        scopes: "openid, profile, email" # Scopes for Keycloak OAuth2 | ||||
| #        useAsUsername: "email" # Field to use as the username for Keycloak OAuth2 | ||||
| 
 | ||||
| system: | ||||
|   defaultLocale: 'en-US' # Set the default language (e.g. 'de-DE', 'fr-FR', etc) | ||||
|  | ||||
| @ -56,7 +56,7 @@ public class ConvertImgPDFController { | ||||
|         String filename = | ||||
|                 Filenames.toSimpleFileName(file.getOriginalFilename()) | ||||
|                         .replaceFirst("[.][^.]+$", ""); | ||||
|          | ||||
| 
 | ||||
|         result = | ||||
|                 PdfUtils.convertFromPdf( | ||||
|                         pdfBytes, | ||||
| @ -65,10 +65,9 @@ public class ConvertImgPDFController { | ||||
|                         singleImage, | ||||
|                         Integer.valueOf(dpi), | ||||
|                         filename); | ||||
|          | ||||
| 
 | ||||
|         if(result == null || result.length == 0) { | ||||
|         	logger.error("resultant bytes for {} is null, error converting ", filename); | ||||
|         if (result == null || result.length == 0) { | ||||
|             logger.error("resultant bytes for {} is null, error converting ", filename); | ||||
|         } | ||||
|         if (singleImage) { | ||||
|             String docName = filename + "." + imageFormat; | ||||
|  | ||||
| @ -750,9 +750,6 @@ public class ApplicationProperties { | ||||
|             this.googlevisibility = googlevisibility; | ||||
|         } | ||||
| 
 | ||||
|        | ||||
| 
 | ||||
| 
 | ||||
|         @Override | ||||
|         public String toString() { | ||||
|             return "System [defaultLocale=" | ||||
|  | ||||
| @ -60,22 +60,22 @@ function handleDropdownItemClick(event) { | ||||
| } | ||||
| 
 | ||||
| document.addEventListener("DOMContentLoaded", function () { | ||||
| 	 | ||||
| document.querySelectorAll(".col-lg-2.col-sm-6").forEach((element) => { | ||||
|     const dropdownItems = element.querySelectorAll(".dropdown-item"); | ||||
|     const items = Array.from(dropdownItems).filter(item => !item.querySelector("hr.dropdown-divider")); | ||||
|      | ||||
|     if (items.length <= 2) { | ||||
|         if ( | ||||
|             element.previousElementSibling && | ||||
|             element.previousElementSibling.classList.contains("col-lg-2") && | ||||
|             element.previousElementSibling.classList.contains("nav-item-separator") | ||||
|         ) { | ||||
|             element.previousElementSibling.remove(); | ||||
|         } | ||||
|         element.remove(); | ||||
|     } | ||||
| }); | ||||
| 
 | ||||
|   document.querySelectorAll(".col-lg-2.col-sm-6").forEach((element) => { | ||||
|       const dropdownItems = element.querySelectorAll(".dropdown-item"); | ||||
|       const items = Array.from(dropdownItems).filter(item => !item.querySelector("hr.dropdown-divider")); | ||||
| 
 | ||||
|       if (items.length <= 2) { | ||||
|           if ( | ||||
|               element.previousElementSibling && | ||||
|               element.previousElementSibling.classList.contains("col-lg-2") && | ||||
|               element.previousElementSibling.classList.contains("nav-item-separator") | ||||
|           ) { | ||||
|               element.previousElementSibling.remove(); | ||||
|           } | ||||
|           element.remove(); | ||||
|       } | ||||
|   }); | ||||
| 
 | ||||
|   //Sort languages by alphabet
 | ||||
|   const list = Array.from(document.querySelector('.dropdown-menu[aria-labelledby="languageDropdown"]').children).filter( | ||||
|  | ||||
| @ -40,7 +40,6 @@ document.querySelector("#navbarSearchInput").addEventListener("input", function | ||||
|     var itemHref = item.getAttribute("href"); | ||||
|     var tags = item.getAttribute("data-bs-tags") || ""; // If no tags, default to empty string
 | ||||
| 
 | ||||
| 	 | ||||
|       if (titleElement && iconElement && itemHref !== "#") { | ||||
|         var title = titleElement.innerText; | ||||
|         if ( | ||||
|  | ||||
| @ -20,13 +20,13 @@ | ||||
|               <p th:text="#{pdfToPDFA.tip}"></p> | ||||
|               <form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/pdf/pdfa}"> | ||||
|                 <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> | ||||
| 					<div class="mb-3"> | ||||
| 						<label th:text="#{pdfToPDFA.outputFormat}"></label> | ||||
| 						<select class="form-control" name="outputFormat"> | ||||
| 							<option value="pdfa-1">PDF/A-1b</option> | ||||
| 							<option value="pdfa">PDF/A-2b</option> | ||||
| 						</select> | ||||
| 					</div> | ||||
|                 <div class="mb-3"> | ||||
|                   <label th:text="#{pdfToPDFA.outputFormat}"></label> | ||||
|                   <select class="form-control" name="outputFormat"> | ||||
|                     <option value="pdfa-1">PDF/A-1b</option> | ||||
|                     <option value="pdfa">PDF/A-2b</option> | ||||
|                   </select> | ||||
|                 </div> | ||||
|                 <br> | ||||
|                 <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{pdfToPDFA.submit}"></button> | ||||
|               </form> | ||||
|  | ||||
| @ -6,10 +6,10 @@ | ||||
|             <button type="button" class="btn btn-secondary" onclick="copytrace()" th:text="#{error.copyStack}"></button> | ||||
|             <button type="button" class="btn btn-info" onclick="showHelp()" th:text="#{help}"></button> | ||||
|             <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close" onclick="dismissError()"> | ||||
| 	        <span class="material-symbols-rounded"> | ||||
| 	          close | ||||
| 	        </span> | ||||
| 	      </button> | ||||
|               <span class="material-symbols-rounded"> | ||||
|                 close | ||||
|               </span> | ||||
|             </button> | ||||
|             <!-- Stack trace section --> | ||||
|             <div id="trace" style="max-height: 0; overflow: hidden;"> | ||||
|               <div> | ||||
| @ -23,11 +23,11 @@ | ||||
|               <div class="modal-content"> | ||||
|                 <div class="modal-header"> | ||||
|                   <h5 class="modal-title" id="helpModalLabel" th:text="#{help}"></h5> | ||||
|                  <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close" onclick="dismissError()"> | ||||
| 			        <span class="material-symbols-rounded"> | ||||
| 			          close | ||||
| 			        </span> | ||||
| 			      </button> | ||||
|                   <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close" onclick="dismissError()"> | ||||
|                     <span class="material-symbols-rounded"> | ||||
|                       close | ||||
|                     </span> | ||||
|                   </button> | ||||
|                 </div> | ||||
|                 <div class="modal-body"> | ||||
|                   <div class="container"> | ||||
|  | ||||
| @ -233,7 +233,6 @@ | ||||
| 
 | ||||
|           </li> | ||||
| 
 | ||||
| 
 | ||||
|           <li class="nav-item"> | ||||
|             <a class="nav-link" href="#" th:href="@{multi-tool}" | ||||
|               th:classappend="${currentPage}=='multi-tool' ? 'active' : ''" th:title="#{home.multiTool.desc}"> | ||||
| @ -254,7 +253,6 @@ | ||||
|             </a> | ||||
|           </li> | ||||
| 
 | ||||
| 
 | ||||
|           <li class="nav-item"> | ||||
|             <a class="nav-link" href="#" title="#{home.compressPdfs.title}" th:href="@{compress-pdf}" | ||||
|               th:classappend="${currentPage}=='compress-pdf' ? 'active' : ''" th:title="#{home.compressPdfs.desc}"> | ||||
| @ -276,8 +274,7 @@ | ||||
|             </a> | ||||
|           </li> | ||||
| 
 | ||||
| <!-- | ||||
|           <li class="nav-item"> | ||||
|           <!-- <li class="nav-item"> | ||||
|             <a class="nav-link" href="#" th:href="@{merge-pdfs}" | ||||
|               th:classappend="${currentPage}=='merge-pdfs' ? 'active' : ''" th:title="#{home.merge.desc}"> | ||||
|               <span class="material-symbols-rounded"> | ||||
| @ -285,8 +282,8 @@ | ||||
|               </span> | ||||
|               <span class="icon-text" th:data-text="#{home.merge.title}" th:text="#{home.merge.title}"></span> | ||||
|             </a> | ||||
|           </li> | ||||
| --> | ||||
|           </li> --> | ||||
| 
 | ||||
|         </ul> | ||||
|         <ul class="navbar-nav  flex-nowrap"> | ||||
|           <li class="nav-item dropdown"> | ||||
| @ -329,24 +326,22 @@ | ||||
|           </li> | ||||
|            | ||||
|           <li class="nav-item dropdown"> | ||||
| 			  <a class="nav-link" href="#" id="searchDropdown" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | ||||
| 			    <span class="material-symbols-rounded"> | ||||
| 			      search | ||||
| 			    </span> | ||||
| 			    <span class="icon-text icon-hide">Search</span> | ||||
| 			  </a> | ||||
| 			  <div class="dropdown-menu dropdown-menu-tp" aria-labelledby="searchDropdown"> | ||||
| 			    <div class="dropdown-menu-wrapper px-xl-2 px-2"> | ||||
| 			      <form class="d-flex p-2 search-form" id="searchForm"> | ||||
| 			        <input class="form-control search-input" type="search" placeholder="Search" aria-label="Search" id="navbarSearchInput"> | ||||
| 			      </form> | ||||
| 			      <!-- Search Results --> | ||||
| 			      <div id="searchResults" class="search-results scrollable-y dropdown-mw-20"></div> | ||||
| 			    </div> | ||||
| 			  </div> | ||||
| 			</li> | ||||
| 
 | ||||
| 
 | ||||
|             <a class="nav-link" href="#" id="searchDropdown" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | ||||
|               <span class="material-symbols-rounded"> | ||||
|                 search | ||||
|               </span> | ||||
|               <span class="icon-text icon-hide">Search</span> | ||||
|             </a> | ||||
|             <div class="dropdown-menu dropdown-menu-tp" aria-labelledby="searchDropdown"> | ||||
|               <div class="dropdown-menu-wrapper px-xl-2 px-2"> | ||||
|                 <form class="d-flex p-2 search-form" id="searchForm"> | ||||
|                   <input class="form-control search-input" type="search" placeholder="Search" aria-label="Search" id="navbarSearchInput"> | ||||
|                 </form> | ||||
|                 <!-- Search Results --> | ||||
|                 <div id="searchResults" class="search-results scrollable-y dropdown-mw-20"></div> | ||||
|               </div> | ||||
|             </div> | ||||
|           </li> | ||||
| 
 | ||||
|           <li class="nav-item"> | ||||
|             <!-- Settings Button --> | ||||
| @ -405,9 +400,6 @@ | ||||
|               target="_blank"></a> | ||||
|           </div> | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|           <div class="mb-3"> | ||||
|             <label for="downloadOption" th:utext="#{settings.downloadOption.title}"></label> | ||||
|             <select class="form-control" id="downloadOption"> | ||||
|  | ||||
| @ -25,7 +25,7 @@ | ||||
|                   <input type="checkbox" id="flattenOnlyForms" name="flattenOnlyForms"> | ||||
|                   <label for="flattenOnlyForms" th:text="#{flatten.flattenOnlyForms}" ></label> | ||||
|                 </div>          | ||||
|                 </div>	 | ||||
|                 </div> | ||||
|                 <br> | ||||
|                 <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{flatten.submit}"></button> | ||||
|               </form> | ||||
|  | ||||
| @ -19,8 +19,8 @@ | ||||
|                 <div class="card mb-3"> | ||||
|                   <div class="card-body"> | ||||
|                     <h4 th:text="#{printFile.selectText.1}">Select Printer</h4> <!-- Assuming the message code printFile.selectText.3 corresponds to "Select Printer" --> | ||||
| 				    <label for="printerName" th:text="#{printFile.selectText.2}">Printer Name:</label> <!-- Assuming the message code printFile.selectText.4 corresponds to "Printer Name:" --> | ||||
| 				    <input type="text" name="printerName" id="printerName" class="form-control"> | ||||
|                     <label for="printerName" th:text="#{printFile.selectText.2}">Printer Name:</label> <!-- Assuming the message code printFile.selectText.4 corresponds to "Printer Name:" --> | ||||
|                     <input type="text" name="printerName" id="printerName" class="form-control"> | ||||
|                   </div> | ||||
|                 </div> | ||||
|                 <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{printFile.submit}"></button> | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user