mirror of
				https://github.com/Frooodle/Stirling-PDF.git
				synced 2025-11-01 01:21:18 +01:00 
			
		
		
		
	Merge branch 'main' into patch-1
This commit is contained in:
		
						commit
						3388b9fafa
					
				@ -8,7 +8,7 @@ plugins {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
group = 'stirling.software'
 | 
			
		||||
version = '0.11.0'
 | 
			
		||||
version = '0.11.2'
 | 
			
		||||
sourceCompatibility = '17'
 | 
			
		||||
 | 
			
		||||
repositories {
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 118 KiB  | 
@ -43,7 +43,7 @@ public class ConvertImgPDFController {
 | 
			
		||||
            @Parameter(description = "Choose between a single image containing all pages or separate images for each page", schema = @Schema(allowableValues = {"single", "multiple"}))
 | 
			
		||||
                    String singleOrMultiple,
 | 
			
		||||
            @RequestParam("colorType")
 | 
			
		||||
            @Parameter(description = "The color type of the output image(s)", schema = @Schema(allowableValues = {"rgb", "greyscale", "blackwhite"}))
 | 
			
		||||
            @Parameter(description = "The color type of the output image(s)", schema = @Schema(allowableValues = {"color", "greyscale", "blackwhite"}))
 | 
			
		||||
                    String colorType,
 | 
			
		||||
            @RequestParam("dpi")
 | 
			
		||||
            @Parameter(description = "The DPI (dots per inch) for the output image(s)")
 | 
			
		||||
@ -94,7 +94,7 @@ public class ConvertImgPDFController {
 | 
			
		||||
            @Parameter(description = "Whether to stretch the images to fit the PDF page or maintain the aspect ratio", example = "false")
 | 
			
		||||
                    boolean stretchToFit,
 | 
			
		||||
            @RequestParam("colorType")
 | 
			
		||||
            @Parameter(description = "The color type of the output image(s)", schema = @Schema(allowableValues = {"rgb", "greyscale", "blackwhite"}))
 | 
			
		||||
            @Parameter(description = "The color type of the output image(s)", schema = @Schema(allowableValues = {"color", "greyscale", "blackwhite"}))
 | 
			
		||||
                    String colorType,
 | 
			
		||||
            @RequestParam(defaultValue = "false", name = "autoRotate")
 | 
			
		||||
            @Parameter(description = "Whether to automatically rotate the images to better fit the PDF page", example = "true")
 | 
			
		||||
 | 
			
		||||
@ -1,30 +1,25 @@
 | 
			
		||||
package stirling.software.SPDF.controller.web;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.nio.charset.StandardCharsets;
 | 
			
		||||
import java.nio.file.Files;
 | 
			
		||||
import java.nio.file.Path;
 | 
			
		||||
import java.nio.file.Paths;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
import java.util.stream.Stream;
 | 
			
		||||
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.core.io.Resource;
 | 
			
		||||
import org.springframework.core.io.ResourceLoader;
 | 
			
		||||
import org.springframework.core.io.support.ResourcePatternUtils;
 | 
			
		||||
import org.springframework.stereotype.Controller;
 | 
			
		||||
import org.springframework.ui.Model;
 | 
			
		||||
import org.springframework.web.bind.annotation.GetMapping;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.nio.file.Files;
 | 
			
		||||
import java.nio.file.Paths;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
import java.util.stream.Stream;
 | 
			
		||||
import org.springframework.web.bind.annotation.GetMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.ModelAttribute;
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.databind.ObjectMapper;
 | 
			
		||||
 | 
			
		||||
import io.swagger.v3.oas.annotations.Hidden;
 | 
			
		||||
@ -123,20 +118,32 @@ public class GeneralWebController {
 | 
			
		||||
        model.addAttribute("fonts", getFontNames());
 | 
			
		||||
        return "sign";
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ResourceLoader resourceLoader;
 | 
			
		||||
    
 | 
			
		||||
    private List<String> getFontNames() {
 | 
			
		||||
        try {
 | 
			
		||||
            return Files.list(Paths.get("src/main/resources/static/fonts"))
 | 
			
		||||
                    .map(Path::getFileName)
 | 
			
		||||
                    .map(Path::toString)
 | 
			
		||||
                    .filter(name -> name.endsWith(".woff2"))
 | 
			
		||||
                    .map(name -> name.substring(0, name.length() - 6)) // Remove .woff2 extension
 | 
			
		||||
            Resource[] resources = ResourcePatternUtils.getResourcePatternResolver(resourceLoader)
 | 
			
		||||
                    .getResources("classpath:static/fonts/*.woff2");
 | 
			
		||||
            
 | 
			
		||||
            return Arrays.stream(resources)
 | 
			
		||||
                    .map(resource -> {
 | 
			
		||||
                        try {
 | 
			
		||||
                            String filename = resource.getFilename();
 | 
			
		||||
                            return filename.substring(0, filename.length() - 6); // Remove .woff2 extension
 | 
			
		||||
                        } catch (Exception e) {
 | 
			
		||||
                            throw new RuntimeException("Error processing filename", e);
 | 
			
		||||
                        }
 | 
			
		||||
                    })
 | 
			
		||||
                    .collect(Collectors.toList());
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            throw new RuntimeException("Failed to read font directory", e);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/crop")
 | 
			
		||||
    @Hidden
 | 
			
		||||
    public String cropForm(Model model) {
 | 
			
		||||
 | 
			
		||||
@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid
 | 
			
		||||
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest.
 | 
			
		||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
 | 
			
		||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
 | 
			
		||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
 | 
			
		||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
 | 
			
		||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
 | 
			
		||||
autoSplitPDF.submit=Submit
 | 
			
		||||
 | 
			
		||||
@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid
 | 
			
		||||
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest.
 | 
			
		||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
 | 
			
		||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
 | 
			
		||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
 | 
			
		||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
 | 
			
		||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
 | 
			
		||||
autoSplitPDF.submit=Submit
 | 
			
		||||
 | 
			
		||||
@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid
 | 
			
		||||
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest.
 | 
			
		||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
 | 
			
		||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
 | 
			
		||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
 | 
			
		||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
 | 
			
		||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
 | 
			
		||||
autoSplitPDF.submit=Submit
 | 
			
		||||
 | 
			
		||||
@ -309,6 +309,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid
 | 
			
		||||
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest.
 | 
			
		||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
 | 
			
		||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
 | 
			
		||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
 | 
			
		||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
 | 
			
		||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
 | 
			
		||||
autoSplitPDF.submit=Submit
 | 
			
		||||
 | 
			
		||||
@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Escanee todos sus documentos a la vez insertando la ho
 | 
			
		||||
autoSplitPDF.selectText.3=Cargue un único archivo PDF escaneado de gran tamaño y deje que Stirling PDF se encargue del resto.
 | 
			
		||||
autoSplitPDF.selectText.4=Las páginas divisorias son automáticamente detectadas y eliminadas, garantizando un buen documento final.
 | 
			
		||||
autoSplitPDF.formPrompt=Entregar PDF conteniendo divisores de página de Stirling-PDF:
 | 
			
		||||
autoSplitPDF.duplexMode=Modo Dúplex (Escaneado de ambas caras)
 | 
			
		||||
autoSplitPDF.dividerDownload1=Descargar 'Auto Splitter Divider (mínima).pdf'
 | 
			
		||||
autoSplitPDF.dividerDownload2=Descargar 'Auto Splitter Divider (con instrucciones).pdf'
 | 
			
		||||
autoSplitPDF.submit=Entregar
 | 
			
		||||
 | 
			
		||||
@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid
 | 
			
		||||
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest.
 | 
			
		||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
 | 
			
		||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
 | 
			
		||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
 | 
			
		||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
 | 
			
		||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
 | 
			
		||||
autoSplitPDF.submit=Submit
 | 
			
		||||
 | 
			
		||||
@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid
 | 
			
		||||
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest.
 | 
			
		||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
 | 
			
		||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
 | 
			
		||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
 | 
			
		||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
 | 
			
		||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
 | 
			
		||||
autoSplitPDF.submit=Submit
 | 
			
		||||
 | 
			
		||||
@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid
 | 
			
		||||
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest.
 | 
			
		||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
 | 
			
		||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
 | 
			
		||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
 | 
			
		||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
 | 
			
		||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
 | 
			
		||||
autoSplitPDF.submit=Submit
 | 
			
		||||
 | 
			
		||||
@ -462,6 +462,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid
 | 
			
		||||
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest.
 | 
			
		||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
 | 
			
		||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
 | 
			
		||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
 | 
			
		||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
 | 
			
		||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
 | 
			
		||||
autoSplitPDF.submit=Submit
 | 
			
		||||
 | 
			
		||||
@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid
 | 
			
		||||
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest.
 | 
			
		||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
 | 
			
		||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
 | 
			
		||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
 | 
			
		||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
 | 
			
		||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
 | 
			
		||||
autoSplitPDF.submit=Submit
 | 
			
		||||
 | 
			
		||||
@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid
 | 
			
		||||
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest.
 | 
			
		||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
 | 
			
		||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
 | 
			
		||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
 | 
			
		||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
 | 
			
		||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
 | 
			
		||||
autoSplitPDF.submit=Submit
 | 
			
		||||
 | 
			
		||||
@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid
 | 
			
		||||
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest.
 | 
			
		||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
 | 
			
		||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
 | 
			
		||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
 | 
			
		||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
 | 
			
		||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
 | 
			
		||||
autoSplitPDF.submit=Submit
 | 
			
		||||
 | 
			
		||||
@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid
 | 
			
		||||
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest.
 | 
			
		||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
 | 
			
		||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
 | 
			
		||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
 | 
			
		||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
 | 
			
		||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
 | 
			
		||||
autoSplitPDF.submit=Submit
 | 
			
		||||
 | 
			
		||||
@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid
 | 
			
		||||
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest.
 | 
			
		||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
 | 
			
		||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
 | 
			
		||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
 | 
			
		||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
 | 
			
		||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
 | 
			
		||||
autoSplitPDF.submit=Submit
 | 
			
		||||
 | 
			
		||||
@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid
 | 
			
		||||
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest.
 | 
			
		||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
 | 
			
		||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
 | 
			
		||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
 | 
			
		||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
 | 
			
		||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
 | 
			
		||||
autoSplitPDF.submit=Submit
 | 
			
		||||
 | 
			
		||||
@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid
 | 
			
		||||
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest.
 | 
			
		||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
 | 
			
		||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
 | 
			
		||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
 | 
			
		||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
 | 
			
		||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
 | 
			
		||||
autoSplitPDF.submit=Submit
 | 
			
		||||
 | 
			
		||||
@ -155,10 +155,21 @@ async function submitMultiPdfForm(url, files) {
 | 
			
		||||
		jszip = new JSZip();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	// Get the form with the method attribute set to POST
 | 
			
		||||
	let postForm = document.querySelector('form[method="POST"]');
 | 
			
		||||
	
 | 
			
		||||
	// Get existing form data
 | 
			
		||||
	let formData = new FormData($('form')[0]);
 | 
			
		||||
	let formData;
 | 
			
		||||
	if (postForm) {
 | 
			
		||||
	    formData = new FormData($(postForm)[0]);  // Convert the form to a jQuery object and get the raw DOM element
 | 
			
		||||
	} else {
 | 
			
		||||
	    console.log("No form with POST method found.");
 | 
			
		||||
	}
 | 
			
		||||
	//Remove file to reuse parameters for other runs
 | 
			
		||||
	formData.delete('fileInput');
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	const CONCURRENCY_LIMIT = 8;
 | 
			
		||||
	const chunks = [];
 | 
			
		||||
	for (let i = 0; i < Array.from(files).length; i += CONCURRENCY_LIMIT) {
 | 
			
		||||
@ -169,10 +180,11 @@ async function submitMultiPdfForm(url, files) {
 | 
			
		||||
		const promises = chunk.map(async file => {
 | 
			
		||||
			let fileFormData = new FormData();
 | 
			
		||||
			fileFormData.append('fileInput', file);
 | 
			
		||||
 | 
			
		||||
			console.log(fileFormData); 
 | 
			
		||||
			// Add other form data
 | 
			
		||||
			for (let pair of formData.entries()) {
 | 
			
		||||
				fileFormData.append(pair[0], pair[1]);
 | 
			
		||||
				console.log(pair[0]+ ', ' + pair[1]); 
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			try {
 | 
			
		||||
 | 
			
		||||
@ -31,7 +31,7 @@
 | 
			
		||||
                            </div>
 | 
			
		||||
                            <div class="form-group">
 | 
			
		||||
                                <label th:text="#{pdfToImage.colorType}"></label> 
 | 
			
		||||
                                <select class="form-control" name="colorType">
 | 
			
		||||
                                <select class="form-control" id="colorType" name="colorType">
 | 
			
		||||
                                    <option value="color" th:text="#{pdfToImage.color}"></option>
 | 
			
		||||
                                    <option value="greyscale" th:text="#{pdfToImage.grey}"></option>
 | 
			
		||||
                                    <option value="blackwhite" th:text="#{pdfToImage.blackwhite}"></option>
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html th:lang="${#locale.toString()}" th:lang-direction="#{language.direction}" xmlns:th="http://www.thymeleaf.org">
 | 
			
		||||
 | 
			
		||||
<th:block th:insert="~{fragments/common :: head(title=#{HTMLToPDF.title})}"></th:block>
 | 
			
		||||
<th:block th:insert="~{fragments/common :: head(title=#{PDFToHTML.title})}"></th:block>
 | 
			
		||||
<body>
 | 
			
		||||
    <th:block th:insert="~{fragments/common :: game}"></th:block>
 | 
			
		||||
    <div id="page-container">
 | 
			
		||||
@ -11,14 +11,14 @@
 | 
			
		||||
            <div class="container">
 | 
			
		||||
                <div class="row justify-content-center">
 | 
			
		||||
                    <div class="col-md-6">
 | 
			
		||||
                        <h2 th:text="#{HTMLToPDF.header}"></h2>
 | 
			
		||||
                        <form method="post" enctype="multipart/form-data" th:action="@{html-to-pdf}">
 | 
			
		||||
                        <h2 th:text="#{PDFToHTML.header}"></h2>
 | 
			
		||||
                        <form method="post" enctype="multipart/form-data" th:action="@{pdf-to-html}">
 | 
			
		||||
                            <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
 | 
			
		||||
                            <br>
 | 
			
		||||
                            <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{HTMLToPDF.submit}"></button>
 | 
			
		||||
                            <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{PDFToHTML.submit}"></button>
 | 
			
		||||
 | 
			
		||||
                        </form>
 | 
			
		||||
                        <p class="mt-3" th:text="#{HTMLToPDF.credit}"></p>
 | 
			
		||||
                        <p class="mt-3" th:text="#{PDFToHTML.credit}"></p>
 | 
			
		||||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user