mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2024-11-18 21:30:10 +01:00
metadata
This commit is contained in:
parent
872f562aad
commit
145e8006f0
@ -20,6 +20,7 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseEntity;
|
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.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.RequestPart;
|
import org.springframework.web.bind.annotation.RequestPart;
|
||||||
@ -30,6 +31,7 @@ import io.swagger.v3.oas.annotations.Operation;
|
|||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import stirling.software.SPDF.model.api.PDFWithImageFormatRequest;
|
||||||
import stirling.software.SPDF.utils.WebResponseUtils;
|
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||||
@RestController
|
@RestController
|
||||||
@Tag(name = "Other", description = "Other APIs")
|
@Tag(name = "Other", description = "Other APIs")
|
||||||
@ -40,13 +42,9 @@ public class ExtractImagesController {
|
|||||||
@PostMapping(consumes = "multipart/form-data", value = "/extract-images")
|
@PostMapping(consumes = "multipart/form-data", value = "/extract-images")
|
||||||
@Operation(summary = "Extract images from a PDF file",
|
@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")
|
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")
|
||||||
public ResponseEntity<byte[]> extractImages(
|
public ResponseEntity<byte[]> extractImages(@ModelAttribute PDFWithImageFormatRequest request) throws IOException {
|
||||||
@RequestPart(required = true, value = "fileInput")
|
MultipartFile file = request.getFileInput();
|
||||||
@Parameter(description = "The input PDF file containing images")
|
String format = request.getFormat();
|
||||||
MultipartFile file,
|
|
||||||
@RequestParam("format")
|
|
||||||
@Parameter(description = "The output image format e.g., 'png', 'jpeg', or 'gif'", schema = @Schema(allowableValues = {"png", "jpeg", "gif"}))
|
|
||||||
String format) throws IOException {
|
|
||||||
|
|
||||||
System.out.println(System.currentTimeMillis() + "file=" + file.getName() + ", format=" + format);
|
System.out.println(System.currentTimeMillis() + "file=" + file.getName() + ", format=" + format);
|
||||||
PDDocument document = PDDocument.load(file.getBytes());
|
PDDocument document = PDDocument.load(file.getBytes());
|
||||||
|
@ -30,6 +30,7 @@ import org.apache.pdfbox.rendering.PDFRenderer;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.http.ResponseEntity;
|
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.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestPart;
|
import org.springframework.web.bind.annotation.RequestPart;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
@ -39,6 +40,7 @@ import io.swagger.v3.oas.annotations.Hidden;
|
|||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import stirling.software.SPDF.model.api.PDFFile;
|
||||||
import stirling.software.SPDF.utils.WebResponseUtils;
|
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@ -54,10 +56,8 @@ public class FakeScanControllerWIP {
|
|||||||
summary = "Repair a PDF file",
|
summary = "Repair a PDF file",
|
||||||
description = "This endpoint repairs a given PDF file by running Ghostscript command. The PDF is first saved to a temporary location, repaired, read back, and then returned as a response."
|
description = "This endpoint repairs a given PDF file by running Ghostscript command. The PDF is first saved to a temporary location, repaired, read back, and then returned as a response."
|
||||||
)
|
)
|
||||||
public ResponseEntity<byte[]> repairPdf(
|
public ResponseEntity<byte[]> repairPdf(@ModelAttribute PDFFile request) throws IOException {
|
||||||
@RequestPart(required = true, value = "fileInput")
|
MultipartFile inputFile = request.getFileInput();
|
||||||
@Parameter(description = "The input PDF file to be repaired", required = true)
|
|
||||||
MultipartFile inputFile) throws IOException, InterruptedException {
|
|
||||||
|
|
||||||
PDDocument document = PDDocument.load(inputFile.getBytes());
|
PDDocument document = PDDocument.load(inputFile.getBytes());
|
||||||
PDFRenderer pdfRenderer = new PDFRenderer(document);
|
PDFRenderer pdfRenderer = new PDFRenderer(document);
|
||||||
|
@ -11,6 +11,7 @@ import org.apache.pdfbox.cos.COSName;
|
|||||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
|
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
|
||||||
import org.springframework.http.ResponseEntity;
|
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.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.RequestPart;
|
import org.springframework.web.bind.annotation.RequestPart;
|
||||||
@ -20,6 +21,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import stirling.software.SPDF.model.api.misc.MetadataRequest;
|
||||||
import stirling.software.SPDF.utils.WebResponseUtils;
|
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@ -41,43 +43,25 @@ public class MetadataController {
|
|||||||
@PostMapping(consumes = "multipart/form-data", value = "/update-metadata")
|
@PostMapping(consumes = "multipart/form-data", value = "/update-metadata")
|
||||||
@Operation(summary = "Update metadata of a PDF file",
|
@Operation(summary = "Update metadata of a PDF file",
|
||||||
description = "This endpoint allows you to update the metadata of a given PDF file. You can add, modify, or delete standard and custom metadata fields. Input:PDF Output:PDF Type:SISO")
|
description = "This endpoint allows you to update the metadata of a given PDF file. You can add, modify, or delete standard and custom metadata fields. Input:PDF Output:PDF Type:SISO")
|
||||||
public ResponseEntity<byte[]> metadata(
|
public ResponseEntity<byte[]> metadata(@ModelAttribute MetadataRequest request) throws IOException {
|
||||||
@RequestPart(required = true, value = "fileInput")
|
|
||||||
@Parameter(description = "The input PDF file to update metadata")
|
// Extract PDF file from the request object
|
||||||
MultipartFile pdfFile,
|
MultipartFile pdfFile = request.getFileInput();
|
||||||
@RequestParam(value = "deleteAll", required = false, defaultValue = "false")
|
|
||||||
@Parameter(description = "Delete all metadata if set to true")
|
// Extract metadata information
|
||||||
Boolean deleteAll,
|
Boolean deleteAll = request.getDeleteAll();
|
||||||
@RequestParam(value = "author", required = false)
|
String author = request.getAuthor();
|
||||||
@Parameter(description = "The author of the document")
|
String creationDate = request.getCreationDate();
|
||||||
String author,
|
String creator = request.getCreator();
|
||||||
@RequestParam(value = "creationDate", required = false)
|
String keywords = request.getKeywords();
|
||||||
@Parameter(description = "The creation date of the document (format: yyyy/MM/dd HH:mm:ss)")
|
String modificationDate = request.getModificationDate();
|
||||||
String creationDate,
|
String producer = request.getProducer();
|
||||||
@RequestParam(value = "creator", required = false)
|
String subject = request.getSubject();
|
||||||
@Parameter(description = "The creator of the document")
|
String title = request.getTitle();
|
||||||
String creator,
|
String trapped = request.getTrapped();
|
||||||
@RequestParam(value = "keywords", required = false)
|
|
||||||
@Parameter(description = "The keywords for the document")
|
// Extract additional custom parameters
|
||||||
String keywords,
|
Map<String, String> allRequestParams = request.getAllRequestParams();
|
||||||
@RequestParam(value = "modificationDate", required = false)
|
|
||||||
@Parameter(description = "The modification date of the document (format: yyyy/MM/dd HH:mm:ss)")
|
|
||||||
String modificationDate,
|
|
||||||
@RequestParam(value = "producer", required = false)
|
|
||||||
@Parameter(description = "The producer of the document")
|
|
||||||
String producer,
|
|
||||||
@RequestParam(value = "subject", required = false)
|
|
||||||
@Parameter(description = "The subject of the document")
|
|
||||||
String subject,
|
|
||||||
@RequestParam(value = "title", required = false)
|
|
||||||
@Parameter(description = "The title of the document")
|
|
||||||
String title,
|
|
||||||
@RequestParam(value = "trapped", required = false)
|
|
||||||
@Parameter(description = "The trapped status of the document")
|
|
||||||
String trapped,
|
|
||||||
@Parameter(description = "Map list of key and value of custom parameters, note these must start with customKey and customValue if they are non standard")
|
|
||||||
@RequestParam Map<String, String> allRequestParams)
|
|
||||||
throws IOException {
|
|
||||||
|
|
||||||
// Load the PDF file into a PDDocument
|
// Load the PDF file into a PDDocument
|
||||||
PDDocument document = PDDocument.load(pdfFile.getBytes());
|
PDDocument document = PDDocument.load(pdfFile.getBytes());
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
package stirling.software.SPDF.model.api;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class PDFWithImageFormatRequest extends PDFFile {
|
||||||
|
|
||||||
|
@Schema(description = "The output image format e.g., 'png', 'jpeg', or 'gif'",
|
||||||
|
allowableValues = { "png", "jpeg", "gif" })
|
||||||
|
private String format;
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
package stirling.software.SPDF.model.api.misc;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import stirling.software.SPDF.model.api.PDFFile;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class MetadataRequest extends PDFFile {
|
||||||
|
|
||||||
|
@Schema(description = "Delete all metadata if set to true")
|
||||||
|
private Boolean deleteAll;
|
||||||
|
|
||||||
|
@Schema(description = "The author of the document")
|
||||||
|
private String author;
|
||||||
|
|
||||||
|
@Schema(description = "The creation date of the document (format: yyyy/MM/dd HH:mm:ss)")
|
||||||
|
private String creationDate;
|
||||||
|
|
||||||
|
@Schema(description = "The creator of the document")
|
||||||
|
private String creator;
|
||||||
|
|
||||||
|
@Schema(description = "The keywords for the document")
|
||||||
|
private String keywords;
|
||||||
|
|
||||||
|
@Schema(description = "The modification date of the document (format: yyyy/MM/dd HH:mm:ss)")
|
||||||
|
private String modificationDate;
|
||||||
|
|
||||||
|
@Schema(description = "The producer of the document")
|
||||||
|
private String producer;
|
||||||
|
|
||||||
|
@Schema(description = "The subject of the document")
|
||||||
|
private String subject;
|
||||||
|
|
||||||
|
@Schema(description = "The title of the document")
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
@Schema(description = "The trapped status of the document")
|
||||||
|
private String trapped;
|
||||||
|
|
||||||
|
@Schema(description = "Map list of key and value of custom parameters. Note these must start with customKey and customValue if they are non-standard")
|
||||||
|
private Map<String, String> allRequestParams;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user