mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-09-24 12:36:13 +00:00
Compare commits
6 Commits
0d279f2966
...
a3dedf3e8b
Author | SHA1 | Date | |
---|---|---|---|
![]() |
a3dedf3e8b | ||
![]() |
c1ef1b6e26 | ||
![]() |
dde6cc2d49 | ||
![]() |
5617740db9 | ||
![]() |
7f4071204e | ||
![]() |
7a73a62a9c |
@ -315,6 +315,5 @@ public class ProcessExecutor {
|
|||||||
this.rc = rc;
|
this.rc = rc;
|
||||||
this.messages = messages;
|
this.messages = messages;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,8 +15,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
public class TempFile implements AutoCloseable {
|
public class TempFile implements AutoCloseable {
|
||||||
|
|
||||||
private final TempFileManager manager;
|
private final TempFileManager manager;
|
||||||
@Getter
|
@Getter private final File file;
|
||||||
private final File file;
|
|
||||||
|
|
||||||
public TempFile(TempFileManager manager, String suffix) throws IOException {
|
public TempFile(TempFileManager manager, String suffix) throws IOException {
|
||||||
this.manager = manager;
|
this.manager = manager;
|
||||||
|
@ -11,9 +11,9 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||||||
import java.util.concurrent.ConcurrentMap;
|
import java.util.concurrent.ConcurrentMap;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import lombok.Getter;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -25,18 +25,18 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
public class TempFileRegistry {
|
public class TempFileRegistry {
|
||||||
|
|
||||||
private final ConcurrentMap<Path, Instant> registeredFiles = new ConcurrentHashMap<>();
|
private final ConcurrentMap<Path, Instant> registeredFiles = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* -- GETTER --
|
* -- GETTER -- Get all registered third-party temporary files.
|
||||||
* Get all registered third-party temporary files.
|
|
||||||
*
|
*
|
||||||
* @return Set of third-party file paths
|
* @return Set of third-party file paths
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
private final Set<Path> thirdPartyTempFiles =
|
private final Set<Path> thirdPartyTempFiles =
|
||||||
Collections.newSetFromMap(new ConcurrentHashMap<>());
|
Collections.newSetFromMap(new ConcurrentHashMap<>());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* -- GETTER --
|
* -- GETTER -- Get all registered temporary directories.
|
||||||
* Get all registered temporary directories.
|
|
||||||
*
|
*
|
||||||
* @return Set of temporary directory paths
|
* @return Set of temporary directory paths
|
||||||
*/
|
*/
|
||||||
|
@ -31,8 +31,6 @@ import java.security.cert.X509Certificate;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.Setter;
|
|
||||||
import org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureInterface;
|
import org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureInterface;
|
||||||
import org.bouncycastle.cert.jcajce.JcaCertStore;
|
import org.bouncycastle.cert.jcajce.JcaCertStore;
|
||||||
import org.bouncycastle.cms.CMSException;
|
import org.bouncycastle.cms.CMSException;
|
||||||
@ -44,24 +42,25 @@ import org.bouncycastle.operator.OperatorCreationException;
|
|||||||
import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;
|
import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;
|
||||||
import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder;
|
import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
public abstract class CreateSignatureBase implements SignatureInterface {
|
public abstract class CreateSignatureBase implements SignatureInterface {
|
||||||
private PrivateKey privateKey;
|
private PrivateKey privateKey;
|
||||||
@Getter
|
@Getter private Certificate[] certificateChain;
|
||||||
private Certificate[] certificateChain;
|
@Setter private String tsaUrl;
|
||||||
@Setter
|
|
||||||
private String tsaUrl;
|
|
||||||
/**
|
/**
|
||||||
* Specifies whether the external signing scenario should be used.
|
* Specifies whether the external signing scenario should be used. If set to {@code true},
|
||||||
* If set to {@code true}, external signing will be performed and
|
* external signing will be performed and {@link SignatureInterface} will be used for signing.
|
||||||
* {@link SignatureInterface} will be used for signing.
|
|
||||||
* If set to {@code false}, internal signing will be performed.
|
* If set to {@code false}, internal signing will be performed.
|
||||||
|
*
|
||||||
* <p>Default: {@code false}
|
* <p>Default: {@code false}
|
||||||
*
|
*
|
||||||
* @param externalSigning {@code true} if external signing should be performed; {@code false} for internal signing
|
* @param externalSigning {@code true} if external signing should be performed; {@code false}
|
||||||
|
* for internal signing
|
||||||
*/
|
*/
|
||||||
@Setter
|
@Setter @Getter private boolean externalSigning;
|
||||||
@Getter
|
|
||||||
private boolean externalSigning;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the signature creator with a keystore (pkcs12) and pin that should be used for the
|
* Initialize the signature creator with a keystore (pkcs12) and pin that should be used for the
|
||||||
@ -158,5 +157,4 @@ public abstract class CreateSignatureBase implements SignatureInterface {
|
|||||||
throw new IOException(e);
|
throw new IOException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -6,10 +6,10 @@ import java.util.Map;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import lombok.Getter;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.common.model.ApplicationProperties;
|
import stirling.software.common.model.ApplicationProperties;
|
||||||
@ -20,8 +20,7 @@ public class EndpointConfiguration {
|
|||||||
|
|
||||||
private static final String REMOVE_BLANKS = "remove-blanks";
|
private static final String REMOVE_BLANKS = "remove-blanks";
|
||||||
private final ApplicationProperties applicationProperties;
|
private final ApplicationProperties applicationProperties;
|
||||||
@Getter
|
@Getter private Map<String, Boolean> endpointStatuses = new ConcurrentHashMap<>();
|
||||||
private Map<String, Boolean> endpointStatuses = new ConcurrentHashMap<>();
|
|
||||||
private Map<String, Set<String>> endpointGroups = new ConcurrentHashMap<>();
|
private Map<String, Set<String>> endpointGroups = new ConcurrentHashMap<>();
|
||||||
private Set<String> disabledGroups = new HashSet<>();
|
private Set<String> disabledGroups = new HashSet<>();
|
||||||
private Map<String, Set<String>> endpointAlternatives = new ConcurrentHashMap<>();
|
private Map<String, Set<String>> endpointAlternatives = new ConcurrentHashMap<>();
|
||||||
|
@ -6,8 +6,6 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.Setter;
|
|
||||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
import org.apache.pdfbox.pdmodel.PDPage;
|
import org.apache.pdfbox.pdmodel.PDPage;
|
||||||
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDDocumentOutline;
|
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDDocumentOutline;
|
||||||
@ -29,7 +27,9 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
|||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.EditTableOfContentsRequest;
|
import stirling.software.SPDF.model.api.EditTableOfContentsRequest;
|
||||||
@ -242,6 +242,5 @@ public class EditTableOfContentsController {
|
|||||||
private String title;
|
private String title;
|
||||||
private int pageNumber;
|
private int pageNumber;
|
||||||
private List<BookmarkItem> children = new ArrayList<>();
|
private List<BookmarkItem> children = new ArrayList<>();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -56,10 +56,9 @@ public class StampController {
|
|||||||
private final TempFileManager tempFileManager;
|
private final TempFileManager tempFileManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize data binder for multipart file uploads.
|
* Initialize data binder for multipart file uploads. This method registers a custom editor for
|
||||||
* This method registers a custom editor for MultipartFile to handle file uploads.
|
* MultipartFile to handle file uploads. It sets the MultipartFile to null if the uploaded file
|
||||||
* It sets the MultipartFile to null if the uploaded file is empty.
|
* is empty. This is necessary to avoid binding errors when the file is not present.
|
||||||
* This is necessary to avoid binding errors when the file is not present.
|
|
||||||
*/
|
*/
|
||||||
@InitBinder
|
@InitBinder
|
||||||
public void initBinder(WebDataBinder binder) {
|
public void initBinder(WebDataBinder binder) {
|
||||||
|
@ -9,8 +9,6 @@ import java.nio.file.Paths;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.Setter;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
import org.springframework.core.io.ResourceLoader;
|
import org.springframework.core.io.ResourceLoader;
|
||||||
@ -24,6 +22,8 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
|||||||
import io.swagger.v3.oas.annotations.Hidden;
|
import io.swagger.v3.oas.annotations.Hidden;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.SignatureFile;
|
import stirling.software.SPDF.model.SignatureFile;
|
||||||
@ -334,6 +334,5 @@ public class GeneralWebController {
|
|||||||
this.extension = extension;
|
this.extension = extension;
|
||||||
this.type = getFormatFromExtension(extension);
|
this.type = getFormatFromExtension(extension);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,6 @@ import java.time.Duration;
|
|||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.Setter;
|
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
@ -21,7 +19,9 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
|
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.config.EndpointInspector;
|
import stirling.software.SPDF.config.EndpointInspector;
|
||||||
@ -376,6 +376,5 @@ public class MetricsController {
|
|||||||
this.endpoint = endpoint;
|
this.endpoint = endpoint;
|
||||||
this.count = count;
|
this.count = count;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,13 +4,13 @@ import java.util.HashMap;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
public class ApiEndpoint {
|
public class ApiEndpoint {
|
||||||
private final String name;
|
private final String name;
|
||||||
private Map<String, JsonNode> parameters;
|
private Map<String, JsonNode> parameters;
|
||||||
@Getter
|
@Getter private final String description;
|
||||||
private final String description;
|
|
||||||
|
|
||||||
public ApiEndpoint(String name, JsonNode postNode) {
|
public ApiEndpoint(String name, JsonNode postNode) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
@ -6,11 +6,11 @@ import java.util.List;
|
|||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import lombok.Getter;
|
|
||||||
import org.apache.pdfbox.pdmodel.PDPage;
|
import org.apache.pdfbox.pdmodel.PDPage;
|
||||||
import org.apache.pdfbox.text.PDFTextStripper;
|
import org.apache.pdfbox.text.PDFTextStripper;
|
||||||
import org.apache.pdfbox.text.TextPosition;
|
import org.apache.pdfbox.text.TextPosition;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.PDFText;
|
import stirling.software.SPDF.model.PDFText;
|
||||||
@ -21,8 +21,7 @@ public class TextFinder extends PDFTextStripper {
|
|||||||
private final String searchTerm;
|
private final String searchTerm;
|
||||||
private final boolean useRegex;
|
private final boolean useRegex;
|
||||||
private final boolean wholeWordSearch;
|
private final boolean wholeWordSearch;
|
||||||
@Getter
|
@Getter private final List<PDFText> foundTexts = new ArrayList<>();
|
||||||
private final List<PDFText> foundTexts = new ArrayList<>();
|
|
||||||
|
|
||||||
private final List<TextPosition> pageTextPositions = new ArrayList<>();
|
private final List<TextPosition> pageTextPositions = new ArrayList<>();
|
||||||
private final StringBuilder pageTextBuilder = new StringBuilder();
|
private final StringBuilder pageTextBuilder = new StringBuilder();
|
||||||
|
@ -135,8 +135,9 @@ lang.vie=Vietnamca
|
|||||||
lang.yid=Yidiş
|
lang.yid=Yidiş
|
||||||
lang.yor=Yoruba
|
lang.yor=Yoruba
|
||||||
|
|
||||||
addPageNumbers.fontSize=Font Büyüklüğü
|
addPageNumbers.fontSize=Yazı Tipi Büyüklüğü
|
||||||
addPageNumbers.fontName=Font İsmi
|
addPageNumbers.fontName=Yazı Tipi İsmi
|
||||||
|
addPageNumbers.fontColor=Yazı Tipi Rengi
|
||||||
pdfPrompt=PDF(leri) seçin
|
pdfPrompt=PDF(leri) seçin
|
||||||
multiPdfPrompt=PDFleri seçin (2+)
|
multiPdfPrompt=PDFleri seçin (2+)
|
||||||
multiPdfDropPrompt=Tüm gerekli PDF'leri seçin (ya da sürükleyip bırakın)
|
multiPdfDropPrompt=Tüm gerekli PDF'leri seçin (ya da sürükleyip bırakın)
|
||||||
@ -193,7 +194,7 @@ error.fileFormatRequired=Dosya {0} formatında olmalıdır
|
|||||||
error.invalidFormat=Geçersiz {0} formatı: {1}
|
error.invalidFormat=Geçersiz {0} formatı: {1}
|
||||||
error.endpointDisabled=Bu uç nokta yönetici tarafından devre dışı bırakılmıştır
|
error.endpointDisabled=Bu uç nokta yönetici tarafından devre dışı bırakılmıştır
|
||||||
error.urlNotReachable=URL erişilebilir değil, lütfen geçerli bir URL sağlayın
|
error.urlNotReachable=URL erişilebilir değil, lütfen geçerli bir URL sağlayın
|
||||||
error.invalidUrlFormat=Invalid URL format provided. The provided format is invalid.
|
error.invalidUrlFormat=Geçersiz URL biçimi girildi. Girilen biçim geçersiz.
|
||||||
|
|
||||||
# DPI and image rendering messages - used by frontend for dynamic translation
|
# DPI and image rendering messages - used by frontend for dynamic translation
|
||||||
# Backend sends: [TRANSLATE:messageKey:arg1,arg2] English message
|
# Backend sends: [TRANSLATE:messageKey:arg1,arg2] English message
|
||||||
|
@ -731,6 +731,13 @@
|
|||||||
"moduleLicense": "GPL2 w/ CPE",
|
"moduleLicense": "GPL2 w/ CPE",
|
||||||
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "jakarta.mail:jakarta.mail-api",
|
||||||
|
"moduleUrl": "https://www.eclipse.org",
|
||||||
|
"moduleVersion": "2.1.4",
|
||||||
|
"moduleLicense": "GPL2 w/ CPE",
|
||||||
|
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "jakarta.persistence:jakarta.persistence-api",
|
"moduleName": "jakarta.persistence:jakarta.persistence-api",
|
||||||
"moduleUrl": "https://www.eclipse.org",
|
"moduleUrl": "https://www.eclipse.org",
|
||||||
|
@ -65,7 +65,7 @@ repositories {
|
|||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
group = 'stirling.software'
|
group = 'stirling.software'
|
||||||
version = '1.2.0'
|
version = '1.3.0'
|
||||||
|
|
||||||
configurations.configureEach {
|
configurations.configureEach {
|
||||||
exclude group: 'commons-logging', module: 'commons-logging'
|
exclude group: 'commons-logging', module: 'commons-logging'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user