diff --git a/Dockerfile b/Dockerfile
index 6aab1d8b..44031ba7 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,5 @@
# Main stage
-FROM alpine:3.20.0
+FROM alpine:3.20.2
# Copy necessary files
COPY scripts /scripts
@@ -45,8 +45,8 @@ RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /et
# CV
py3-opencv \
# python3/pip
- python3 && \
- wget https://bootstrap.pypa.io/get-pip.py -qO - | python3 - --break-system-packages --no-cache-dir --upgrade && \
+ python3 \
+ py3-pip && \
# uno unoconv and HTML
pip install --break-system-packages --no-cache-dir --upgrade unoconv WeasyPrint && \
mv /usr/share/tessdata /usr/share/tessdata-original && \
diff --git a/Dockerfile-fat b/Dockerfile-fat
index 53f1c1fc..c31fe348 100644
--- a/Dockerfile-fat
+++ b/Dockerfile-fat
@@ -12,7 +12,7 @@ RUN DOCKER_ENABLE_SECURITY=true \
./gradlew clean build
# Main stage
-FROM alpine:3.20.0
+FROM alpine:3.20.2
# Copy necessary files
COPY scripts /scripts
@@ -61,8 +61,8 @@ RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /et
# CV
py3-opencv \
# python3/pip
- python3 && \
- wget https://bootstrap.pypa.io/get-pip.py -qO - | python3 - --break-system-packages --no-cache-dir --upgrade && \
+ python3 \
+ py3-pip && \
# uno unoconv and HTML
pip install --break-system-packages --no-cache-dir --upgrade unoconv WeasyPrint && \
mv /usr/share/tessdata /usr/share/tessdata-original && \
diff --git a/Dockerfile-ultra-lite b/Dockerfile-ultra-lite
index e3718497..1b2ee76f 100644
--- a/Dockerfile-ultra-lite
+++ b/Dockerfile-ultra-lite
@@ -1,5 +1,5 @@
# use alpine
-FROM alpine:3.20.0
+FROM alpine:3.20.2
ARG VERSION_TAG
diff --git a/README.md b/README.md
index 6cc2a899..4e887454 100644
--- a/README.md
+++ b/README.md
@@ -170,41 +170,41 @@ Stirling PDF currently supports 38!
| Language | Progress |
| ------------------------------------------- | -------------------------------------- |
| Arabic (العربية) (ar_AR) |  |
-| Basque (Euskara) (eu_ES) |  |
+| Basque (Euskara) (eu_ES) |  |
| Bulgarian (Български) (bg_BG) |  |
| Catalan (Català) (ca_CA) |  |
-| Croatian (Hrvatski) (hr_HR) |  |
-| Czech (Česky) (cs_CZ) |  |
-| Danish (Dansk) (da_DK) |  |
-| Dutch (Nederlands) (nl_NL) |  |
+| Croatian (Hrvatski) (hr_HR) |  |
+| Czech (Česky) (cs_CZ) |  |
+| Danish (Dansk) (da_DK) |  |
+| Dutch (Nederlands) (nl_NL) |  |
| English (English) (en_GB) |  |
| English (US) (en_US) |  |
| French (Français) (fr_FR) |  |
| German (Deutsch) (de_DE) |  |
-| Greek (Ελληνικά) (el_GR) |  |
-| Hindi (हिंदी) (hi_IN) |  |
-| Hungarian (Magyar) (hu_HU) |  |
+| Greek (Ελληνικά) (el_GR) |  |
+| Hindi (हिंदी) (hi_IN) |  |
+| Hungarian (Magyar) (hu_HU) |  |
| Indonesia (Bahasa Indonesia) (id_ID) |  |
-| Irish (Gaeilge) (ga_IE) |  |
+| Irish (Gaeilge) (ga_IE) |  |
| Italian (Italiano) (it_IT) |  |
-| Japanese (日本語) (ja_JP) |  |
+| Japanese (日本語) (ja_JP) |  |
| Korean (한국어) (ko_KR) |  |
-| Norwegian (Norsk) (no_NB) |  |
-| Polish (Polski) (pl_PL) |  |
+| Norwegian (Norsk) (no_NB) |  |
+| Polish (Polski) (pl_PL) |  |
| Portuguese (Português) (pt_PT) |  |
| Portuguese Brazilian (Português) (pt_BR) |  |
-| Romanian (Română) (ro_RO) |  |
-| Russian (Русский) (ru_RU) |  |
+| Romanian (Română) (ro_RO) |  |
+| Russian (Русский) (ru_RU) |  |
| Sebian Latin alphabet (Srpski) (sr_LATN_RS) |  |
-| Simplified Chinese (简体中文) (zh_CN) |  |
-| Slovakian (Slovensky) (sk_SK) |  |
-| Spanish (Español) (es_ES) |  |
+| Simplified Chinese (简体中文) (zh_CN) |  |
+| Slovakian (Slovensky) (sk_SK) |  |
+| Spanish (Español) (es_ES) |  |
| Swedish (Svenska) (sv_SE) |  |
| Thai (ไทย) (th_TH) |  |
-| Traditional Chinese (繁體中文) (zh_TW) |  |
-| Turkish (Türkçe) (tr_TR) |  |
-| Ukrainian (Українська) (uk_UA) |  |
-| Vietnamese (Tiếng Việt) (vi_VN) |  |
+| Traditional Chinese (繁體中文) (zh_TW) |  |
+| Turkish (Türkçe) (tr_TR) |  |
+| Ukrainian (Українська) (uk_UA) |  |
+| Vietnamese (Tiếng Việt) (vi_VN) |  |
## Contributing (creating issues, translations, fixing bugs, etc.)
diff --git a/build.gradle b/build.gradle
index 07abc000..8bf7f15d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -16,7 +16,7 @@ ext {
}
group = "stirling.software"
-version = "0.26.2"
+version = "0.27.0"
java {
// 17 is lowest but we support and recommend 21
@@ -134,8 +134,8 @@ dependencies {
implementation "org.apache.xmlgraphics:batik-all:1.17"
// TwelveMonkeys
- implementation "com.twelvemonkeys.imageio:imageio-batik:3.10.1"
- implementation "com.twelvemonkeys.imageio:imageio-bmp:3.10.1"
+ implementation "com.twelvemonkeys.imageio:imageio-batik:3.11.0"
+ implementation "com.twelvemonkeys.imageio:imageio-bmp:3.11.0"
// implementation "com.twelvemonkeys.imageio:imageio-hdr:3.10.1"
// implementation "com.twelvemonkeys.imageio:imageio-icns:3.10.1"
// implementation "com.twelvemonkeys.imageio:imageio-iff:3.10.1"
@@ -147,8 +147,8 @@ dependencies {
// implementation "com.twelvemonkeys.imageio:imageio-sgi:3.10.1"
// implementation "com.twelvemonkeys.imageio:imageio-tga:3.10.1"
// implementation "com.twelvemonkeys.imageio:imageio-thumbsdb:3.10.1"
- implementation "com.twelvemonkeys.imageio:imageio-tiff:3.10.1"
- implementation "com.twelvemonkeys.imageio:imageio-webp:3.10.1"
+ implementation "com.twelvemonkeys.imageio:imageio-tiff:3.11.0"
+ implementation "com.twelvemonkeys.imageio:imageio-webp:3.11.0"
// implementation "com.twelvemonkeys.imageio:imageio-xwd:3.10.1"
implementation "commons-io:commons-io:2.16.1"
diff --git a/chart/stirling-pdf/Chart.yaml b/chart/stirling-pdf/Chart.yaml
index 9b633ddb..2a21f9c5 100644
--- a/chart/stirling-pdf/Chart.yaml
+++ b/chart/stirling-pdf/Chart.yaml
@@ -1,5 +1,5 @@
apiVersion: v2
-appVersion: 0.26.2
+appVersion: 0.27.0
description: locally hosted web application that allows you to perform various operations
on PDF files
home: https://github.com/Stirling-Tools/Stirling-PDF
diff --git a/src/main/java/stirling/software/SPDF/SPdfApplication.java b/src/main/java/stirling/software/SPDF/SPdfApplication.java
index 3b4ea174..3410b950 100644
--- a/src/main/java/stirling/software/SPDF/SPdfApplication.java
+++ b/src/main/java/stirling/software/SPDF/SPdfApplication.java
@@ -78,7 +78,8 @@ public class SPdfApplication {
// custom javs settings file
if (Files.exists(Paths.get("configs/custom_settings.yml"))) {
- String existingLocation = propertyFiles.getOrDefault("spring.config.additional-location", "");
+ String existingLocation =
+ propertyFiles.getOrDefault("spring.config.additional-location", "");
if (!existingLocation.isEmpty()) {
existingLocation += ",";
}
diff --git a/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java b/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java
index 43180753..303de37f 100644
--- a/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java
+++ b/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java
@@ -137,6 +137,7 @@ public class EndpointConfiguration {
addEndpointToGroup("Other", "auto-rename");
addEndpointToGroup("Other", "get-info-on-pdf");
addEndpointToGroup("Other", "show-javascript");
+ addEndpointToGroup("Other", "remove-image-pdf");
// CLI
addEndpointToGroup("CLI", "compress-pdf");
@@ -221,6 +222,7 @@ public class EndpointConfiguration {
addEndpointToGroup("Java", "split-pdf-by-sections");
addEndpointToGroup("Java", REMOVE_BLANKS);
addEndpointToGroup("Java", "pdf-to-text");
+ addEndpointToGroup("Java", "remove-image-pdf");
// Javascript
addEndpointToGroup("Javascript", "pdf-organizer");
diff --git a/src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java b/src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java
new file mode 100644
index 00000000..d56b7d2d
--- /dev/null
+++ b/src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java
@@ -0,0 +1,82 @@
+package stirling.software.SPDF.controller.api;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+import org.apache.pdfbox.Loader;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import io.swagger.v3.oas.annotations.Operation;
+
+import stirling.software.SPDF.model.api.PDFFile;
+import stirling.software.SPDF.service.PdfImageRemovalService;
+import stirling.software.SPDF.utils.WebResponseUtils;
+
+/**
+ * Controller class for handling PDF image removal requests. Provides an endpoint to remove images
+ * from a PDF file to reduce its size.
+ */
+@RestController
+@RequestMapping("/api/v1/general")
+public class PdfImageRemovalController {
+
+ // Service for removing images from PDFs
+ @Autowired private PdfImageRemovalService pdfImageRemovalService;
+
+ /**
+ * Constructor for dependency injection of PdfImageRemovalService.
+ *
+ * @param pdfImageRemovalService The service used for removing images from PDFs.
+ */
+ public PdfImageRemovalController(PdfImageRemovalService pdfImageRemovalService) {
+ this.pdfImageRemovalService = pdfImageRemovalService;
+ }
+
+ /**
+ * Endpoint to remove images from a PDF file.
+ *
+ *
This method processes the uploaded PDF file, removes all images, and returns the modified
+ * PDF file with a new name indicating that images were removed.
+ *
+ * @param file The PDF file with images to be removed.
+ * @return ResponseEntity containing the modified PDF file as byte array with appropriate
+ * content type and filename.
+ * @throws IOException If an error occurs while processing the PDF file.
+ */
+ @PostMapping(consumes = "multipart/form-data", value = "/remove-image-pdf")
+ @Operation(
+ summary = "Remove images from file to reduce the file size.",
+ description =
+ "This endpoint remove images from file to reduce the file size.Input:PDF Output:PDF Type:MISO")
+ public ResponseEntity removeImages(@ModelAttribute PDFFile file) throws IOException {
+
+ MultipartFile pdf = file.getFileInput();
+
+ // Convert the MultipartFile to a byte array
+ byte[] pdfBytes = pdf.getBytes();
+
+ // Load the PDF document from the byte array
+ PDDocument document = Loader.loadPDF(pdfBytes);
+
+ // Remove images from the PDF document using the service
+ PDDocument modifiedDocument = pdfImageRemovalService.removeImagesFromPdf(document);
+
+ // Create a ByteArrayOutputStream to hold the modified PDF data
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+
+ // Save the modified PDF document to the output stream
+ modifiedDocument.save(outputStream);
+ modifiedDocument.close();
+
+ // Generate a new filename for the modified PDF
+ String mergedFileName =
+ pdf.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_removed_images.pdf";
+
+ // Convert the byte array to a web response and return it
+ return WebResponseUtils.bytesToWebResponse(outputStream.toByteArray(), mergedFileName);
+ }
+}
diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java
index 8bce1b22..026690fd 100644
--- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java
+++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java
@@ -39,6 +39,12 @@ public class ConvertWebsiteToPDF {
if (!URL.matches("^https?://.*") || !GeneralUtils.isValidURL(URL)) {
throw new IllegalArgumentException("Invalid URL format provided.");
}
+
+ // validate the URL is reachable
+ if (!GeneralUtils.isURLReachable(URL)) {
+ throw new IllegalArgumentException("URL is not reachable, please provide a valid URL.");
+ }
+
Path tempOutputFile = null;
byte[] pdfBytes;
try {
diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java
index 3931e2df..dcbc00aa 100644
--- a/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java
+++ b/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java
@@ -1,13 +1,16 @@
package stirling.software.SPDF.controller.api.misc;
-import java.awt.Graphics2D;
-import java.awt.Image;
+import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
import java.util.zip.Deflater;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@@ -47,16 +50,19 @@ public class ExtractImagesController {
@Operation(
summary = "Extract images from a PDF file",
description =
- "This endpoint extracts images from a given PDF file and returns them in a zip file. Users can specify the output image format. Input:PDF Output:IMAGE/ZIP Type:SIMO")
+ "This endpoint extracts images from a given PDF file and returns them in a zip file. Users can specify the output image format. Input: PDF Output: IMAGE/ZIP Type: SIMO")
public ResponseEntity extractImages(@ModelAttribute PDFWithImageFormatRequest request)
- throws IOException {
+ throws IOException, InterruptedException, ExecutionException {
MultipartFile file = request.getFileInput();
String format = request.getFormat();
System.out.println(
- System.currentTimeMillis() + "file=" + file.getName() + ", format=" + format);
+ System.currentTimeMillis() + " file=" + file.getName() + ", format=" + format);
PDDocument document = Loader.loadPDF(file.getBytes());
+ // Determine if multithreading should be used based on PDF size or number of pages
+ boolean useMultithreading = shouldUseMultithreading(file, document);
+
// Create ByteArrayOutputStream to write zip file to byte array
ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -66,71 +72,51 @@ public class ExtractImagesController {
// Set compression level
zos.setLevel(Deflater.BEST_COMPRESSION);
- int imageIndex = 1;
String filename =
Filenames.toSimpleFileName(file.getOriginalFilename())
.replaceFirst("[.][^.]+$", "");
- int pageNum = 0;
Set processedImages = new HashSet<>();
- // Iterate over each page
- for (PDPage page : document.getPages()) {
- ++pageNum;
- // Extract images from page
- for (COSName name : page.getResources().getXObjectNames()) {
- if (page.getResources().isImageXObject(name)) {
- PDImageXObject image = (PDImageXObject) page.getResources().getXObject(name);
- int imageHash = image.hashCode();
- if (processedImages.contains(imageHash)) {
- continue; // Skip already processed images
- }
- processedImages.add(imageHash);
- // Convert image to desired format
- RenderedImage renderedImage = image.getImage();
- BufferedImage bufferedImage = null;
- if ("png".equalsIgnoreCase(format)) {
- bufferedImage =
- new BufferedImage(
- renderedImage.getWidth(),
- renderedImage.getHeight(),
- BufferedImage.TYPE_INT_ARGB);
- } else if ("jpeg".equalsIgnoreCase(format) || "jpg".equalsIgnoreCase(format)) {
- bufferedImage =
- new BufferedImage(
- renderedImage.getWidth(),
- renderedImage.getHeight(),
- BufferedImage.TYPE_INT_RGB);
- } else if ("gif".equalsIgnoreCase(format)) {
- bufferedImage =
- new BufferedImage(
- renderedImage.getWidth(),
- renderedImage.getHeight(),
- BufferedImage.TYPE_BYTE_INDEXED);
- }
+ if (useMultithreading) {
+ // Executor service to handle multithreading
+ ExecutorService executor =
+ Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
+ Set> futures = new HashSet<>();
- // Write image to zip file
- String imageName =
- filename + "_" + imageIndex + " (Page " + pageNum + ")." + format;
- ZipEntry zipEntry = new ZipEntry(imageName);
- zos.putNextEntry(zipEntry);
+ // Iterate over each page
+ for (int pgNum = 0; pgNum < document.getPages().getCount(); pgNum++) {
+ PDPage page = document.getPage(pgNum);
+ int pageNum = document.getPages().indexOf(page) + 1;
+ // Submit a task for processing each page
+ Future future =
+ executor.submit(
+ () -> {
+ extractImagesFromPage(
+ page, format, filename, pageNum, processedImages, zos);
+ return null;
+ });
- Graphics2D g = bufferedImage.createGraphics();
- g.drawImage((Image) renderedImage, 0, 0, null);
- g.dispose();
- // Write image bytes to zip file
- ByteArrayOutputStream imageBaos = new ByteArrayOutputStream();
- ImageIO.write(bufferedImage, format, imageBaos);
- zos.write(imageBaos.toByteArray());
+ futures.add(future);
+ }
- zos.closeEntry();
- imageIndex++;
- }
+ // Wait for all tasks to complete
+ for (Future future : futures) {
+ future.get();
+ }
+
+ // Close executor service
+ executor.shutdown();
+ } else {
+ // Single-threaded extraction
+ for (int pgNum = 0; pgNum < document.getPages().getCount(); pgNum++) {
+ PDPage page = document.getPage(pgNum);
+ extractImagesFromPage(page, format, filename, pgNum + 1, processedImages, zos);
}
}
- // Close ZipOutputStream and PDDocument
- zos.close();
+ // Close PDDocument and ZipOutputStream
document.close();
+ zos.close();
// Create ByteArrayResource from byte array
byte[] zipContents = baos.toByteArray();
@@ -138,4 +124,69 @@ public class ExtractImagesController {
return WebResponseUtils.boasToWebResponse(
baos, filename + "_extracted-images.zip", MediaType.APPLICATION_OCTET_STREAM);
}
+
+ private boolean shouldUseMultithreading(MultipartFile file, PDDocument document) {
+ // Criteria: Use multithreading if file size > 10MB or number of pages > 20
+ long fileSizeInMB = file.getSize() / (1024 * 1024);
+ int numberOfPages = document.getPages().getCount();
+ return fileSizeInMB > 10 || numberOfPages > 20;
+ }
+
+ private void extractImagesFromPage(
+ PDPage page,
+ String format,
+ String filename,
+ int pageNum,
+ Set processedImages,
+ ZipOutputStream zos)
+ throws IOException {
+ for (COSName name : page.getResources().getXObjectNames()) {
+ if (page.getResources().isImageXObject(name)) {
+ PDImageXObject image = (PDImageXObject) page.getResources().getXObject(name);
+ int imageHash = image.hashCode();
+ synchronized (processedImages) {
+ if (processedImages.contains(imageHash)) {
+ continue; // Skip already processed images
+ }
+ processedImages.add(imageHash);
+ }
+
+ RenderedImage renderedImage = image.getImage();
+
+ // Convert to standard RGB colorspace if needed
+ BufferedImage bufferedImage = convertToRGB(renderedImage, format);
+
+ // Write image to zip file
+ String imageName = filename + "_" + imageHash + " (Page " + pageNum + ")." + format;
+ synchronized (zos) {
+ zos.putNextEntry(new ZipEntry(imageName));
+ ByteArrayOutputStream imageBaos = new ByteArrayOutputStream();
+ ImageIO.write(bufferedImage, format, imageBaos);
+ zos.write(imageBaos.toByteArray());
+ zos.closeEntry();
+ }
+ }
+ }
+ }
+
+ private BufferedImage convertToRGB(RenderedImage renderedImage, String format) {
+ int width = renderedImage.getWidth();
+ int height = renderedImage.getHeight();
+ BufferedImage rgbImage;
+
+ if ("png".equalsIgnoreCase(format)) {
+ rgbImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
+ } else if ("jpeg".equalsIgnoreCase(format) || "jpg".equalsIgnoreCase(format)) {
+ rgbImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+ } else if ("gif".equalsIgnoreCase(format)) {
+ rgbImage = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_INDEXED);
+ } else {
+ rgbImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+ }
+
+ Graphics2D g = rgbImage.createGraphics();
+ g.drawImage((Image) renderedImage, 0, 0, null);
+ g.dispose();
+ return rgbImage;
+ }
}
diff --git a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java
index bb730dc9..93ad5f34 100644
--- a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java
+++ b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java
@@ -310,4 +310,11 @@ public class GeneralWebController {
model.addAttribute("currentPage", "auto-split-pdf");
return "auto-split-pdf";
}
+
+ @GetMapping("/remove-image-pdf")
+ @Hidden
+ public String removeImagePdfForm(Model model) {
+ model.addAttribute("currentPage", "remove-image-pdf");
+ return "remove-image-pdf";
+ }
}
diff --git a/src/main/java/stirling/software/SPDF/service/PdfImageRemovalService.java b/src/main/java/stirling/software/SPDF/service/PdfImageRemovalService.java
new file mode 100644
index 00000000..985d1f48
--- /dev/null
+++ b/src/main/java/stirling/software/SPDF/service/PdfImageRemovalService.java
@@ -0,0 +1,41 @@
+package stirling.software.SPDF.service;
+
+import java.io.IOException;
+
+import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDPage;
+import org.apache.pdfbox.pdmodel.PDResources;
+import org.apache.pdfbox.pdmodel.graphics.PDXObject;
+import org.springframework.stereotype.Service;
+
+/** Service class responsible for removing image objects from a PDF document. */
+@Service
+public class PdfImageRemovalService {
+
+ /**
+ * Removes all image objects from the provided PDF document.
+ *
+ * This method iterates over each page in the document and removes any image XObjects found
+ * in the page's resources.
+ *
+ * @param document The PDF document from which images will be removed.
+ * @return The modified PDF document with images removed.
+ * @throws IOException If an error occurs while processing the PDF document.
+ */
+ public PDDocument removeImagesFromPdf(PDDocument document) throws IOException {
+ // Iterate over each page in the PDF document
+ for (PDPage page : document.getPages()) {
+ PDResources resources = page.getResources();
+ // Iterate over all XObject names in the page's resources
+ for (COSName name : resources.getXObjectNames()) {
+ // Check if the XObject is an image
+ if (resources.isImageXObject(name)) {
+ // Remove the image XObject by setting it to null
+ resources.put(name, (PDXObject) null);
+ }
+ }
+ }
+ return document;
+ }
+}
diff --git a/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java b/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java
index ae86d8c1..aa5f3aea 100644
--- a/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java
+++ b/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java
@@ -13,6 +13,8 @@ import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.List;
+import java.net.URL;
+import java.net.HttpURLConnection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -71,6 +73,21 @@ public class GeneralUtils {
} catch (MalformedURLException e) {
return false;
}
+
+ }
+
+ public static boolean isURLReachable(String urlStr) {
+ try {
+ URL url = new URL(urlStr);
+ HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+ connection.setRequestMethod("HEAD");
+ int responseCode = connection.getResponseCode();
+ return (200 <= responseCode && responseCode <= 399);
+ } catch (MalformedURLException e) {
+ return false;
+ } catch (IOException e) {
+ return false;
+ }
}
public static File multipartToFile(MultipartFile multipart) throws IOException {
@@ -95,19 +112,16 @@ public class GeneralUtils {
sizeStr = sizeStr.replace(",", ".").replace(" ", "");
try {
if (sizeStr.endsWith("KB")) {
- return (long)
- (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) * 1024);
+ return (long) (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) * 1024);
} else if (sizeStr.endsWith("MB")) {
- return (long)
- (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2))
- * 1024
- * 1024);
+ return (long) (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2))
+ * 1024
+ * 1024);
} else if (sizeStr.endsWith("GB")) {
- return (long)
- (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2))
- * 1024
- * 1024
- * 1024);
+ return (long) (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2))
+ * 1024
+ * 1024
+ * 1024);
} else if (sizeStr.endsWith("B")) {
return Long.parseLong(sizeStr.substring(0, sizeStr.length() - 1));
} else {
@@ -170,13 +184,15 @@ public class GeneralUtils {
int n = 0;
while (true) {
- // Replace 'n' with the current value of n, correctly handling numbers before 'n'
+ // Replace 'n' with the current value of n, correctly handling numbers before
+ // 'n'
String sanitizedExpression = insertMultiplicationBeforeN(expression, n);
Double result = evaluator.evaluate(sanitizedExpression);
// Check if the result is null or not within bounds
if (result == null || result <= 0 || result.intValue() > maxValue) {
- if (n != 0) break;
+ if (n != 0)
+ break;
} else {
results.add(result.intValue());
}
diff --git a/src/main/resources/messages_ar_AR.properties b/src/main/resources/messages_ar_AR.properties
index 3e194292..88ec9539 100644
--- a/src/main/resources/messages_ar_AR.properties
+++ b/src/main/resources/messages_ar_AR.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Book to PDF
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace
error.copyStack=Copy Stack Trace
error.githubSubmit=GitHub - Submit a ticket
error.discordSubmit=Discord - Submit Support post
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_bg_BG.properties b/src/main/resources/messages_bg_BG.properties
index 43349364..ce8bcc5e 100644
--- a/src/main/resources/messages_bg_BG.properties
+++ b/src/main/resources/messages_bg_BG.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Книга към PDF
home.BookToPDF.desc=Преобразува формати на книги/комикси в PDF с помощта на calibre
BookToPDF.tags=Книга,комикс,calibre,конвертиране,манга,Amazon,Kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Покажи проследяване на стека
error.copyStack=Копиране на проследяване на стека
error.githubSubmit=GitHub - Изпратете запитване
error.discordSubmit=Discord - Изпратете запитване за поддръжка
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_ca_CA.properties b/src/main/resources/messages_ca_CA.properties
index 8c400bfd..3d52a609 100644
--- a/src/main/resources/messages_ca_CA.properties
+++ b/src/main/resources/messages_ca_CA.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Book to PDF
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace
error.copyStack=Copy Stack Trace
error.githubSubmit=GitHub - Submit a ticket
error.discordSubmit=Discord - Submit Support post
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_cs_CZ.properties b/src/main/resources/messages_cs_CZ.properties
index 6ca4cbf0..490de1f7 100644
--- a/src/main/resources/messages_cs_CZ.properties
+++ b/src/main/resources/messages_cs_CZ.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Kniha na PDF
home.BookToPDF.desc=Převádí formáty knih/komiksů do PDF pomocí calibre
BookToPDF.tags=Kniha,Komiks,Calibre,Konvertovat,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Zobrazit stopu zásobníku
error.copyStack=Kopírovat stopu zásobníku
error.githubSubmit=GitHub - Odeslat požadavek
error.discordSubmit=Discord - Odeslat příspěvek podpory
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_da_DK.properties b/src/main/resources/messages_da_DK.properties
index a56596dd..d445e4ef 100644
--- a/src/main/resources/messages_da_DK.properties
+++ b/src/main/resources/messages_da_DK.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Book to PDF
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Vis Stack Trace
error.copyStack=Kopier Stack Trace
error.githubSubmit=GitHub - Indsend en ticket
error.discordSubmit=Discord - Indsend Support post
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_de_DE.properties b/src/main/resources/messages_de_DE.properties
index 3a75642d..d3f085cc 100644
--- a/src/main/resources/messages_de_DE.properties
+++ b/src/main/resources/messages_de_DE.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Buch als PDF
home.BookToPDF.desc=Konvertiert Buch-/Comic-Formate mithilfe von Calibre in PDF
BookToPDF.tags=buch,comic,calibre,convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Stack-Trace anzeigen
error.copyStack=Stack-Trace kopieren
error.githubSubmit=GitHub - Ein Ticket einreichen
error.discordSubmit=Discord - Unterstützungsbeitrag einreichen
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_el_GR.properties b/src/main/resources/messages_el_GR.properties
index b6db871f..22faef0e 100644
--- a/src/main/resources/messages_el_GR.properties
+++ b/src/main/resources/messages_el_GR.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Book σε PDF
home.BookToPDF.desc=Μετατρέπει τις μορφές Books/Comics σε PDF χρησιμοποιώντας calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Εμφάνιση Stack Trace
error.copyStack=Αντιγραφή Stack Trace
error.githubSubmit=GitHub - Υποβάλετε ένα ticket
error.discordSubmit=Discord - Υποβάλετε ένα Support post
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties
index f6f77624..e072dc64 100644
--- a/src/main/resources/messages_en_GB.properties
+++ b/src/main/resources/messages_en_GB.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Book to PDF
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace
error.copyStack=Copy Stack Trace
error.githubSubmit=GitHub - Submit a ticket
error.discordSubmit=Discord - Submit Support post
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
\ No newline at end of file
diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties
index b90bef09..bd31c0b0 100644
--- a/src/main/resources/messages_en_US.properties
+++ b/src/main/resources/messages_en_US.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Book to PDF
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace
error.copyStack=Copy Stack Trace
error.githubSubmit=GitHub - Submit a ticket
error.discordSubmit=Discord - Submit Support post
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties
index 58e38223..30fd1194 100644
--- a/src/main/resources/messages_es_ES.properties
+++ b/src/main/resources/messages_es_ES.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Libro a PDF
home.BookToPDF.desc=Convierte formatos de Libro/Cómic a PDF usando Calibre
BookToPDF.tags=Libro,Cómic,Calibre,Convertir,manga,Amazon,Kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Mostrar seguimiento de pila
error.copyStack=Mostrar seguimiento de pila
error.githubSubmit=GitHub - Enviar un ticket
error.discordSubmit=Discord - Enviar mensaje de soporte
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_eu_ES.properties b/src/main/resources/messages_eu_ES.properties
index 57d808c1..c87a03cd 100644
--- a/src/main/resources/messages_eu_ES.properties
+++ b/src/main/resources/messages_eu_ES.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Book to PDF
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace
error.copyStack=Copy Stack Trace
error.githubSubmit=GitHub - Submit a ticket
error.discordSubmit=Discord - Submit Support post
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_fr_FR.properties b/src/main/resources/messages_fr_FR.properties
index 8f6ff4de..ff199478 100644
--- a/src/main/resources/messages_fr_FR.properties
+++ b/src/main/resources/messages_fr_FR.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=eBook vers PDF
home.BookToPDF.desc=Convertit les formats de livres/bandes dessinées en PDF à l'aide de calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Afficher la Stack Trace
error.copyStack=Copier la Stack Trace
error.githubSubmit=GitHub - Créer un ticket
error.discordSubmit=Discord - Poster un message de demande d’assistance
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_ga_IE.properties b/src/main/resources/messages_ga_IE.properties
index 9a2b9cc4..b2422077 100644
--- a/src/main/resources/messages_ga_IE.properties
+++ b/src/main/resources/messages_ga_IE.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Leabhar a thiontú go PDF
home.BookToPDF.desc=Tiontaíonn sé formáidí Leabhair/Comics go PDF ag baint úsáide as calibre
BookToPDF.tags=Leabhar, Comic, Calibre, Tiontaigh, manga, amazon, kindle, epub, mobi, azw3, docx, rtf, txt, html, lit, fb2, pdb, lrf
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Taispeáin Stack Trace
error.copyStack=Cóipeáil Stack Trace
error.githubSubmit=GitHub - Cuir ticéad isteach
error.discordSubmit=Discord - Cuir post Tacaíochta
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_hi_IN.properties b/src/main/resources/messages_hi_IN.properties
index 9b954bf1..88082fa3 100644
--- a/src/main/resources/messages_hi_IN.properties
+++ b/src/main/resources/messages_hi_IN.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Book to PDF
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace
error.copyStack=Copy Stack Trace
error.githubSubmit=GitHub - Submit a ticket
error.discordSubmit=Discord - Submit Support post
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_hr_HR.properties b/src/main/resources/messages_hr_HR.properties
index b546a88f..76bf2d27 100644
--- a/src/main/resources/messages_hr_HR.properties
+++ b/src/main/resources/messages_hr_HR.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Book u PDF
home.BookToPDF.desc=Pretvara format knjige/stripa u PDF format pomoću calibre
BookToPDF.tags=Knjiga,Strip,Calibre,Pretvori,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Prikaži Stack Trace
error.copyStack=Kopiraj Stack Trace
error.githubSubmit=GitHub - Pošaljite ticket
error.discordSubmit=Discord - Pošalji objavu podrške
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_hu_HU.properties b/src/main/resources/messages_hu_HU.properties
index 57f33ce3..a032a9ea 100644
--- a/src/main/resources/messages_hu_HU.properties
+++ b/src/main/resources/messages_hu_HU.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Book to PDF
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace
error.copyStack=Copy Stack Trace
error.githubSubmit=GitHub - Submit a ticket
error.discordSubmit=Discord - Submit Support post
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_id_ID.properties b/src/main/resources/messages_id_ID.properties
index d29749dc..f081c1e3 100644
--- a/src/main/resources/messages_id_ID.properties
+++ b/src/main/resources/messages_id_ID.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Book to PDF
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace
error.copyStack=Copy Stack Trace
error.githubSubmit=GitHub - Submit a ticket
error.discordSubmit=Discord - Submit Support post
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties
index 50566476..0f7e5161 100644
--- a/src/main/resources/messages_it_IT.properties
+++ b/src/main/resources/messages_it_IT.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Libro in PDF
home.BookToPDF.desc=Converte i formati di libri/fumetti in PDF utilizzando Calibre
BookToPDF.tags=Libro,fumetto,calibre,conversione,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Mostra traccia dello stack
error.copyStack=Copia traccia dello stack
error.githubSubmit=GitHub: invia un ticket
error.discordSubmit=Discord: invia post di supporto
+
+
+#remove-image
+removeImage.title=Rimuovere immagine
+removeImage.header=Rimuovi immagine
+removeImage.removeImage=Rimuovi immagine
+removeImage.submit=Rimuovi immagine
diff --git a/src/main/resources/messages_ja_JP.properties b/src/main/resources/messages_ja_JP.properties
index e2380980..8ef8dcc8 100644
--- a/src/main/resources/messages_ja_JP.properties
+++ b/src/main/resources/messages_ja_JP.properties
@@ -107,7 +107,7 @@ pipelineOptions.validateButton=検証
#############
# NAVBAR #
#############
-navbar.favorite=Favorites
+navbar.favorite=お気に入り
navbar.darkmode=ダークモード
navbar.language=言語
navbar.settings=設定
@@ -192,21 +192,21 @@ adminUserSettings.changeUserRole=ユーザーの役割を変更する
adminUserSettings.authenticated=認証済
-database.title=Database Import/Export
-database.header=Database Import/Export
-database.fileName=File Name
-database.creationDate=Creation Date
-database.fileSize=File Size
-database.deleteBackupFile=Delete Backup File
-database.importBackupFile=Import Backup File
-database.downloadBackupFile=Download Backup File
-database.info_1=When importing data, it is crucial to ensure the correct structure. If you are unsure of what you are doing, seek advice and support from a professional. An error in the structure can cause application malfunctions, up to and including the complete inability to run the application.
-database.info_2=The file name does not matter when uploading. It will be renamed afterward to follow the format backup_user_yyyyMMddHHmm.sql, ensuring a consistent naming convention.
-database.submit=Import Backup
-database.importIntoDatabaseSuccessed=Import into database successed
-database.fileNotFound=File not Found
-database.fileNullOrEmpty=File must not be null or empty
-database.failedImportFile=Failed Import File
+database.title=データベースのインポート/エクスポート
+database.header=データベースのインポート/エクスポート
+database.fileName=ファイル名
+database.creationDate=作成日
+database.fileSize=ファイルサイズ
+database.deleteBackupFile=バックアップファイルの削除
+database.importBackupFile=バックアップファイルをインポート
+database.downloadBackupFile=バックアップファイルをダウンロード
+database.info_1=データをインポートする際には、正しい構造を確保することが極めて重要です。不明な点がある場合は、専門家のアドバイスやサポートを受けてください。構造上のエラーは、アプリケーションの誤動作を引き起こす可能性があります。
+database.info_2=ファイル名はアップロード時には関係ありません。アップロード後にbackup_user_yyyyMMddHHmm.sqlという形式にリネームされ、一貫した命名規則が保証されます。
+database.submit=バックアップをインポート
+database.importIntoDatabaseSuccessed=データベースへのインポートに成功
+database.fileNotFound=ファイルが見つかりません
+database.fileNullOrEmpty=ファイルは null または空であってはなりません
+database.failedImportFile=ファイルのインポートに失敗
#############
# HOME-PAGE #
@@ -461,6 +461,10 @@ home.BookToPDF.title=PDFを書籍に変換
home.BookToPDF.desc=calibreを使用してPDFを書籍/コミック形式に変換します
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=画像の削除
+home.removeImagePdf.desc=PDFから画像を削除してファイルサイズを小さくします
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=スタックトレースを表示
error.copyStack=スタックトレースをコピー
error.githubSubmit=GitHub - チケットを提出
error.discordSubmit=Discord - サポート投稿を提出
+
+
+#remove-image
+removeImage.title=画像の削除
+removeImage.header=画像の削除
+removeImage.removeImage=画像の削除
+removeImage.submit=画像を削除
diff --git a/src/main/resources/messages_ko_KR.properties b/src/main/resources/messages_ko_KR.properties
index a0ccfb0a..a382f9d3 100644
--- a/src/main/resources/messages_ko_KR.properties
+++ b/src/main/resources/messages_ko_KR.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=책을 PDF로
home.BookToPDF.desc=구경을 사용하여 책/만화 형식을 PDF로 변환
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=스택 추적 보기
error.copyStack=스택 추적 복사
error.githubSubmit=GitHub - 티켓 제출
error.discordSubmit=Discord - 문의 게시
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_nl_NL.properties b/src/main/resources/messages_nl_NL.properties
index c2c8271a..30396fda 100644
--- a/src/main/resources/messages_nl_NL.properties
+++ b/src/main/resources/messages_nl_NL.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Boek naar PDF
home.BookToPDF.desc=Converteert boek-/stripformaat naar PDF met gebruik van Calibre
BookToPDF.tags=Boek,Strip,Comic,Calibre,Converteren,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Geeft tracering weer
error.copyStack=Kopieer tracering
error.githubSubmit=GitHub - Dien een ticket in
error.discordSubmit=Discord - Maak een support post
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_no_NB.properties b/src/main/resources/messages_no_NB.properties
index 717eb8a5..41f1870a 100644
--- a/src/main/resources/messages_no_NB.properties
+++ b/src/main/resources/messages_no_NB.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Bok til PDF
home.BookToPDF.desc=Konverter bøker/tegneserier til PDF ved hjelp av calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Vis stakksporing
error.copyStack=Kopier stakksporing
error.githubSubmit=GitHub - Send inn en billett
error.discordSubmit=Discord - Send inn støtteinnlegg
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_pl_PL.properties b/src/main/resources/messages_pl_PL.properties
index 858aabc8..55ce74f9 100755
--- a/src/main/resources/messages_pl_PL.properties
+++ b/src/main/resources/messages_pl_PL.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=eBook do PDF
home.BookToPDF.desc=Zapisuje ebooka do PDF za pomocą Calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Pokaż Stack Trace
error.copyStack=Kopiuj Stack Trace
error.githubSubmit=GitHub - wyślij zgłoszenie
error.discordSubmit=Discord - wyślij posta z prośbą o pomoc
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_pt_BR.properties b/src/main/resources/messages_pt_BR.properties
index 21c148b9..da82be3e 100644
--- a/src/main/resources/messages_pt_BR.properties
+++ b/src/main/resources/messages_pt_BR.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Book to PDF
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace
error.copyStack=Copy Stack Trace
error.githubSubmit=GitHub - Submit a ticket
error.discordSubmit=Discord - Submit Support post
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_pt_PT.properties b/src/main/resources/messages_pt_PT.properties
index 88e898b8..512ba300 100644
--- a/src/main/resources/messages_pt_PT.properties
+++ b/src/main/resources/messages_pt_PT.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Book to PDF
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace
error.copyStack=Copy Stack Trace
error.githubSubmit=GitHub - Submit a ticket
error.discordSubmit=Discord - Submit Support post
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_ro_RO.properties b/src/main/resources/messages_ro_RO.properties
index ac41ceab..421efcfd 100644
--- a/src/main/resources/messages_ro_RO.properties
+++ b/src/main/resources/messages_ro_RO.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Book to PDF
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace
error.copyStack=Copy Stack Trace
error.githubSubmit=GitHub - Submit a ticket
error.discordSubmit=Discord - Submit Support post
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_ru_RU.properties b/src/main/resources/messages_ru_RU.properties
index 524a7c17..2f42ced2 100644
--- a/src/main/resources/messages_ru_RU.properties
+++ b/src/main/resources/messages_ru_RU.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Книга в PDF
home.BookToPDF.desc=Конвертирует форматы книги/комикса в PDF с помощью calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Показать стек вызовов
error.copyStack=Скопировать стек вызовов
error.githubSubmit=GitHub - Отправить заявку
error.discordSubmit=Discord - Отправить запрос в поддержку
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_sk_SK.properties b/src/main/resources/messages_sk_SK.properties
index 51501809..43ce8c67 100644
--- a/src/main/resources/messages_sk_SK.properties
+++ b/src/main/resources/messages_sk_SK.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Kniha do PDF
home.BookToPDF.desc=Konvertuje formáty kníh/komiksov do PDF pomocou Calibre
BookToPDF.tags=kniha, komiks, Calibre, konvertovať, manga, amazon, kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Zobraziť sledovanie zásobníka
error.copyStack=Kopírovať sledovanie zásobníka
error.githubSubmit=GitHub - Podajte tiket
error.discordSubmit=Discord - Podajte príspevok na podporu
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_sr_LATN_RS.properties b/src/main/resources/messages_sr_LATN_RS.properties
index 3b76b2fb..6147c20b 100644
--- a/src/main/resources/messages_sr_LATN_RS.properties
+++ b/src/main/resources/messages_sr_LATN_RS.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Book to PDF
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace
error.copyStack=Copy Stack Trace
error.githubSubmit=GitHub - Submit a ticket
error.discordSubmit=Discord - Submit Support post
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_sv_SE.properties b/src/main/resources/messages_sv_SE.properties
index ac49563c..3fe4c0e9 100644
--- a/src/main/resources/messages_sv_SE.properties
+++ b/src/main/resources/messages_sv_SE.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Book to PDF
home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace
error.copyStack=Copy Stack Trace
error.githubSubmit=GitHub - Submit a ticket
error.discordSubmit=Discord - Submit Support post
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_th_TH.properties b/src/main/resources/messages_th_TH.properties
index 9fff7851..c38234e1 100644
--- a/src/main/resources/messages_th_TH.properties
+++ b/src/main/resources/messages_th_TH.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=หนังสือเป็น PDF
home.BookToPDF.desc=แปลงรูปแบบหนังสือ/การ์ตูนเป็น PDF โดยใช้ Calibre
BookToPDF.tags=หนังสือ, การ์ตูน, Calibre, แปลง, มังงะ, amazon, kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=แสดง Stack Trace
error.copyStack=คัดลอก Stack Trace
error.githubSubmit=GitHub - ส่งตั๋ว
error.discordSubmit=Discord - ส่งโพสต์การสนับสนุน
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_tr_TR.properties b/src/main/resources/messages_tr_TR.properties
index c0460a5a..6a03d547 100644
--- a/src/main/resources/messages_tr_TR.properties
+++ b/src/main/resources/messages_tr_TR.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Kitaptan PDF'ye
home.BookToPDF.desc=calibre kullanarak Kitap/Karikatür formatlarını PDF'ye dönüştürür
BookToPDF.tags=Kitap,Çizgi Roman,Calibre,Dönüştür,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Yığın İzlemesini Göster
error.copyStack=Yığın İzini Kopyala
error.githubSubmit=GitHub - Hata gönderin
error.discordSubmit=Discord - Destek gönderisi gönderin
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_uk_UA.properties b/src/main/resources/messages_uk_UA.properties
index 8cf3c19c..6e601195 100644
--- a/src/main/resources/messages_uk_UA.properties
+++ b/src/main/resources/messages_uk_UA.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Книга у PDF
home.BookToPDF.desc=Конвертує формати книги/комікса у PDF за допомогою calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Показати стек викликів
error.copyStack=Скопіювати стек викликів
error.githubSubmit=GitHub - Надіслати запит
error.discordSubmit=Discord - Надіслати повідомлення підтримки
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_vi_VN.properties b/src/main/resources/messages_vi_VN.properties
index bbf096af..b6234488 100644
--- a/src/main/resources/messages_vi_VN.properties
+++ b/src/main/resources/messages_vi_VN.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=Sách sang PDF
home.BookToPDF.desc=Chuyển đổi định dạng sách/truyện tranh sang PDF bằng calibre
BookToPDF.tags=Sách,Truyện tranh,Calibre,Chuyển đổi,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=Hiển thị Stack Trace
error.copyStack=Sao chép Stack Trace
error.githubSubmit=GitHub - Gửi ticket
error.discordSubmit=Discord - Gửi bài đăng hỗ trợ
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_zh_CN.properties b/src/main/resources/messages_zh_CN.properties
index bea1a70c..690c8e05 100644
--- a/src/main/resources/messages_zh_CN.properties
+++ b/src/main/resources/messages_zh_CN.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=电子书转PDF
home.BookToPDF.desc=使用Calibre将电子书/漫画转换成PDF
BookToPDF.tags=电子书、漫画、Calibre、转换、日本漫画、亚马逊、kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=显示堆栈跟踪
error.copyStack=复制堆栈跟踪
error.githubSubmit=GitHub - 提交工单
error.discordSubmit=Discord - 提交支持帖子
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/messages_zh_TW.properties b/src/main/resources/messages_zh_TW.properties
index 145e75bf..b2e9acea 100644
--- a/src/main/resources/messages_zh_TW.properties
+++ b/src/main/resources/messages_zh_TW.properties
@@ -461,6 +461,10 @@ home.BookToPDF.title=電子書轉 PDF
home.BookToPDF.desc=使用 calibre 將書籍/漫畫格式轉換為 PDF
BookToPDF.tags=電子書,漫畫,Calibre,轉換,日本漫畫,亞馬遜,kindle
+home.removeImagePdf.title=Remove image
+home.removeImagePdf.desc=Remove image from PDF to reduce file size
+removeImagePdf.tags=Remove Image,Page operations,Back end,server side
+
###########################
# #
@@ -1125,3 +1129,10 @@ error.showStack=顯示堆疊追蹤
error.copyStack=複製堆疊追蹤
error.githubSubmit=GitHub - 提交工單
error.discordSubmit=Discord - 提交支援帖子
+
+
+#remove-image
+removeImage.title=Remove image
+removeImage.header=Remove image
+removeImage.removeImage=Remove image
+removeImage.submit=Remove image
diff --git a/src/main/resources/static/3rdPartyLicenses.json b/src/main/resources/static/3rdPartyLicenses.json
index 44c9bbdb..568c163b 100644
--- a/src/main/resources/static/3rdPartyLicenses.json
+++ b/src/main/resources/static/3rdPartyLicenses.json
@@ -194,13 +194,13 @@
},
{
"moduleName": "com.twelvemonkeys.imageio:imageio-batik",
- "moduleVersion": "3.10.1",
+ "moduleVersion": "3.11.0",
"moduleLicense": "The BSD License",
"moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license"
},
{
"moduleName": "com.twelvemonkeys.imageio:imageio-bmp",
- "moduleVersion": "3.10.1",
+ "moduleVersion": "3.11.0",
"moduleLicense": "The BSD License",
"moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license"
},
@@ -224,13 +224,13 @@
},
{
"moduleName": "com.twelvemonkeys.imageio:imageio-tiff",
- "moduleVersion": "3.10.1",
+ "moduleVersion": "3.11.0",
"moduleLicense": "The BSD License",
"moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license"
},
{
"moduleName": "com.twelvemonkeys.imageio:imageio-webp",
- "moduleVersion": "3.10.1",
+ "moduleVersion": "3.11.0",
"moduleLicense": "The BSD License",
"moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license"
},
diff --git a/src/main/resources/static/css/removeImage.css b/src/main/resources/static/css/removeImage.css
new file mode 100644
index 00000000..4f2be403
--- /dev/null
+++ b/src/main/resources/static/css/removeImage.css
@@ -0,0 +1,22 @@
+.filename {
+ flex-grow: 1;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ margin-right: 10px;
+}
+
+.arrows {
+ flex-shrink: 0;
+ display: flex;
+ justify-content: flex-end;
+}
+.arrows .btn {
+ margin: 0 3px;
+}
+
+.move-up span,
+.move-down span {
+ font-weight: bold;
+ font-size: 1.2em;
+}
diff --git a/src/main/resources/templates/fragments/common.html b/src/main/resources/templates/fragments/common.html
index 291b75e8..f790f6c6 100644
--- a/src/main/resources/templates/fragments/common.html
+++ b/src/main/resources/templates/fragments/common.html
@@ -81,19 +81,19 @@
// Find the file input within the form
var fileInput = $('input[type="file"]');
-
+
// Find the closest enclosing form of the file input
var form = fileInput.closest('form');
-
+
// Find the submit button within the form
var submitButton = form.find('button[type="submit"], input[type="submit"]');
-
+
const boredWaitingText = /*[[#{bored}]]*/ 'Bored Waiting?';
const downloadCompleteText = /*[[#{downloadComplete}]]*/ 'Download Complete';
window.downloadCompleteText = downloadCompleteText;
// Create the 'show-game-btn' button
var gameButton = $('
');
-
+
// Insert the 'show-game-btn' just above the submit button
submitButton.before(gameButton);
@@ -147,14 +147,14 @@
diff --git a/src/main/resources/templates/fragments/navbar.html b/src/main/resources/templates/fragments/navbar.html
index 39bd8051..955fb3e6 100644
--- a/src/main/resources/templates/fragments/navbar.html
+++ b/src/main/resources/templates/fragments/navbar.html
@@ -195,6 +195,9 @@
+
+
diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html
index d2846a24..30c295a5 100644
--- a/src/main/resources/templates/home.html
+++ b/src/main/resources/templates/home.html
@@ -229,6 +229,9 @@
+
+
diff --git a/src/main/resources/templates/remove-image-pdf.html b/src/main/resources/templates/remove-image-pdf.html
new file mode 100644
index 00000000..6849bd59
--- /dev/null
+++ b/src/main/resources/templates/remove-image-pdf.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/templates/remove-pages.html b/src/main/resources/templates/remove-pages.html
index 84471ef2..3fcf7f6b 100644
--- a/src/main/resources/templates/remove-pages.html
+++ b/src/main/resources/templates/remove-pages.html
@@ -21,7 +21,7 @@
@@ -37,4 +37,4 @@
});