diff --git a/app/common/src/main/java/stirling/software/common/util/FileToPdf.java b/app/common/src/main/java/stirling/software/common/util/FileToPdf.java index 799f91e05..9d208e971 100644 --- a/app/common/src/main/java/stirling/software/common/util/FileToPdf.java +++ b/app/common/src/main/java/stirling/software/common/util/FileToPdf.java @@ -124,20 +124,21 @@ public class FileToPdf { private static void zipDirectory(Path sourceDir, Path zipFilePath) throws IOException { try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFilePath.toFile()))) { - Files.walk(sourceDir) - .filter(path -> !Files.isDirectory(path)) - .forEach( - path -> { - ZipEntry zipEntry = - new ZipEntry(sourceDir.relativize(path).toString()); - try { - zos.putNextEntry(zipEntry); - Files.copy(path, zos); - zos.closeEntry(); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - }); + try (Stream walk = Files.walk(sourceDir)) { + walk.filter(path -> !Files.isDirectory(path)) + .forEach( + path -> { + ZipEntry zipEntry = + new ZipEntry(sourceDir.relativize(path).toString()); + try { + zos.putNextEntry(zipEntry); + Files.copy(path, zos); + zos.closeEntry(); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + }); + } } } diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java index be2e55df7..09a605156 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java @@ -9,6 +9,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; import java.util.List; +import java.util.stream.Stream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -150,10 +151,11 @@ public class ConvertImgPDFController { .runCommandWithOutputHandling(command); // Find all WebP files in the output directory - List webpFiles = - Files.walk(tempOutputDir) - .filter(path -> path.toString().endsWith(".webp")) - .toList(); + List webpFiles; + try (Stream walkStream = Files.walk(tempOutputDir)) { + webpFiles = + walkStream.filter(path -> path.toString().endsWith(".webp")).toList(); + } if (webpFiles.isEmpty()) { log.error("No WebP files were created in: {}", tempOutputDir.toString()); diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java index cf60b3d95..7455ad1de 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java @@ -48,10 +48,12 @@ public class FilterController { String text = request.getText(); String pageNumber = request.getPageNumbers(); - PDDocument pdfDocument = pdfDocumentFactory.load(inputFile); - if (PdfUtils.hasText(pdfDocument, pageNumber, text)) - return WebResponseUtils.pdfDocToWebResponse( - pdfDocument, Filenames.toSimpleFileName(inputFile.getOriginalFilename())); + try (PDDocument pdfDocument = pdfDocumentFactory.load(inputFile)) { + if (PdfUtils.hasText(pdfDocument, pageNumber, text)) { + return WebResponseUtils.pdfDocToWebResponse( + pdfDocument, Filenames.toSimpleFileName(inputFile.getOriginalFilename())); + } + } return null; } diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java index ba3bc5f39..bb4490163 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java @@ -8,6 +8,7 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.stream.Stream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -142,7 +143,10 @@ public class ExtractImageScansController { .runCommandWithOutputHandling(command); // Read the output photos in temp directory - List tempOutputFiles = Files.list(tempDir).sorted().toList(); + List tempOutputFiles; + try (Stream listStream = Files.list(tempDir)) { + tempOutputFiles = listStream.sorted().toList(); + } for (Path tempOutputFile : tempOutputFiles) { byte[] imageBytes = Files.readAllBytes(tempOutputFile); processedImageBytes.add(imageBytes); diff --git a/app/core/src/main/java/stirling/software/SPDF/service/SignatureService.java b/app/core/src/main/java/stirling/software/SPDF/service/SignatureService.java index 1d25f409f..fd27439ed 100644 --- a/app/core/src/main/java/stirling/software/SPDF/service/SignatureService.java +++ b/app/core/src/main/java/stirling/software/SPDF/service/SignatureService.java @@ -7,6 +7,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; +import java.util.stream.Stream; import org.springframework.stereotype.Service; import org.thymeleaf.util.StringUtils; @@ -66,10 +67,11 @@ public class SignatureService { private List getSignaturesFromFolder(Path folder, String category) throws IOException { - return Files.list(folder) - .filter(path -> isImageFile(path)) - .map(path -> new SignatureFile(path.getFileName().toString(), category)) - .toList(); + try (Stream stream = Files.list(folder)) { + return stream.filter(this::isImageFile) + .map(path -> new SignatureFile(path.getFileName().toString(), category)) + .toList(); + } } public byte[] getSignatureBytes(String username, String fileName) throws IOException {