update #5

Open
mdebray wants to merge 231 commits from update into main
7 changed files with 40 additions and 38 deletions
Showing only changes of commit a3374745f8 - Show all commits

View file

@ -45,8 +45,8 @@ RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /et
# CV # CV
py3-opencv \ py3-opencv \
# python3/pip # python3/pip
python3 && \ python3 \
wget https://bootstrap.pypa.io/get-pip.py -qO - | python3 - --break-system-packages --no-cache-dir --upgrade && \ py3-pip && \
# uno unoconv and HTML # uno unoconv and HTML
pip install --break-system-packages --no-cache-dir --upgrade unoconv WeasyPrint && \ pip install --break-system-packages --no-cache-dir --upgrade unoconv WeasyPrint && \
mv /usr/share/tessdata /usr/share/tessdata-original && \ mv /usr/share/tessdata /usr/share/tessdata-original && \

View file

@ -61,8 +61,8 @@ RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /et
# CV # CV
py3-opencv \ py3-opencv \
# python3/pip # python3/pip
python3 && \ python3 \
wget https://bootstrap.pypa.io/get-pip.py -qO - | python3 - --break-system-packages --no-cache-dir --upgrade && \ py3-pip && \
# uno unoconv and HTML # uno unoconv and HTML
pip install --break-system-packages --no-cache-dir --upgrade unoconv WeasyPrint && \ pip install --break-system-packages --no-cache-dir --upgrade unoconv WeasyPrint && \
mv /usr/share/tessdata /usr/share/tessdata-original && \ mv /usr/share/tessdata /usr/share/tessdata-original && \

View file

@ -16,7 +16,7 @@ ext {
} }
group = "stirling.software" group = "stirling.software"
version = "0.26.2" version = "0.27.0"
java { java {
// 17 is lowest but we support and recommend 21 // 17 is lowest but we support and recommend 21

View file

@ -78,7 +78,8 @@ public class SPdfApplication {
// custom javs settings file // custom javs settings file
if (Files.exists(Paths.get("configs/custom_settings.yml"))) { 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()) { if (!existingLocation.isEmpty()) {
existingLocation += ","; existingLocation += ",";
} }

View file

@ -16,10 +16,9 @@ import stirling.software.SPDF.model.api.PDFFile;
import stirling.software.SPDF.service.PdfImageRemovalService; import stirling.software.SPDF.service.PdfImageRemovalService;
import stirling.software.SPDF.utils.WebResponseUtils; import stirling.software.SPDF.utils.WebResponseUtils;
/** /**
* Controller class for handling PDF image removal requests. * Controller class for handling PDF image removal requests. Provides an endpoint to remove images
* Provides an endpoint to remove images from a PDF file to reduce its size. * from a PDF file to reduce its size.
*/ */
@RestController @RestController
@RequestMapping("/api/v1/general") @RequestMapping("/api/v1/general")
@ -40,11 +39,12 @@ public class PdfImageRemovalController {
/** /**
* Endpoint to remove images from a PDF file. * Endpoint to remove images from a PDF file.
* *
* This method processes the uploaded PDF file, removes all images, and returns * <p>This method processes the uploaded PDF file, removes all images, and returns the modified
* the modified PDF file with a new name indicating that images were removed. * PDF file with a new name indicating that images were removed.
* *
* @param file The PDF file with images to be 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. * @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. * @throws IOException If an error occurs while processing the PDF file.
*/ */
@PostMapping(consumes = "multipart/form-data", value = "/remove-image-pdf") @PostMapping(consumes = "multipart/form-data", value = "/remove-image-pdf")

View file

@ -1,26 +1,5 @@
package stirling.software.SPDF.controller.api.misc; package stirling.software.SPDF.controller.api.misc;
import io.github.pixee.security.Filenames;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.pdfbox.Loader;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import stirling.software.SPDF.model.api.PDFWithImageFormatRequest;
import stirling.software.SPDF.utils.WebResponseUtils;
import javax.imageio.ImageIO;
import java.awt.*; import java.awt.*;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage; import java.awt.image.RenderedImage;
@ -36,6 +15,30 @@ import java.util.zip.Deflater;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
import javax.imageio.ImageIO;
import org.apache.pdfbox.Loader;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import io.github.pixee.security.Filenames;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import stirling.software.SPDF.model.api.PDFWithImageFormatRequest;
import stirling.software.SPDF.utils.WebResponseUtils;
@RestController @RestController
@RequestMapping("/api/v1/misc") @RequestMapping("/api/v1/misc")
@Tag(name = "Misc", description = "Miscellaneous APIs") @Tag(name = "Misc", description = "Miscellaneous APIs")

View file

@ -9,17 +9,15 @@ import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.graphics.PDXObject; import org.apache.pdfbox.pdmodel.graphics.PDXObject;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /** Service class responsible for removing image objects from a PDF document. */
* Service class responsible for removing image objects from a PDF document.
*/
@Service @Service
public class PdfImageRemovalService { public class PdfImageRemovalService {
/** /**
* Removes all image objects from the provided PDF document. * Removes all image objects from the provided PDF document.
* *
* This method iterates over each page in the document and removes any * This method iterates over each page in the document and removes any image XObjects found
* image XObjects found in the page's resources. * in the page's resources.
* *
* @param document The PDF document from which images will be removed. * @param document The PDF document from which images will be removed.
* @return The modified PDF document with images removed. * @return The modified PDF document with images removed.