mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-08-22 04:09:22 +00:00
Remove backend UI (#4023)
# Description of Changes <!-- Please provide a summary of the changes, including: - What was changed - Why the change was made - Any challenges encountered Closes #(issue_number) --> --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing) for more details. --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
parent
20245c67e0
commit
768ece6921
@ -29,7 +29,7 @@ spotless {
|
|||||||
dependencies {
|
dependencies {
|
||||||
api 'org.springframework.boot:spring-boot-starter-web'
|
api 'org.springframework.boot:spring-boot-starter-web'
|
||||||
api 'org.springframework.boot:spring-boot-starter-aop'
|
api 'org.springframework.boot:spring-boot-starter-aop'
|
||||||
api 'org.springframework.boot:spring-boot-starter-thymeleaf'
|
// api 'org.springframework.boot:spring-boot-starter-thymeleaf' // Deprecated - UI moved to React frontend
|
||||||
api 'com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:20240325.1'
|
api 'com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:20240325.1'
|
||||||
api 'com.fathzer:javaluator:3.0.6'
|
api 'com.fathzer:javaluator:3.0.6'
|
||||||
api 'com.posthog.java:posthog:1.2.0'
|
api 'com.posthog.java:posthog:1.2.0'
|
||||||
|
@ -10,7 +10,6 @@ import java.util.Properties;
|
|||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
@ -19,9 +18,7 @@ import org.springframework.context.annotation.Scope;
|
|||||||
import org.springframework.core.env.Environment;
|
import org.springframework.core.env.Environment;
|
||||||
import org.springframework.core.io.ClassPathResource;
|
import org.springframework.core.io.ClassPathResource;
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
import org.springframework.core.io.ResourceLoader;
|
|
||||||
import org.springframework.util.ClassUtils;
|
import org.springframework.util.ClassUtils;
|
||||||
import org.thymeleaf.spring6.SpringTemplateEngine;
|
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@ -51,6 +48,7 @@ public class AppConfig {
|
|||||||
@Value("${server.port:8080}")
|
@Value("${server.port:8080}")
|
||||||
private String serverPort;
|
private String serverPort;
|
||||||
|
|
||||||
|
/* Commented out Thymeleaf template engine bean - to be removed when frontend migration is complete
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnProperty(name = "system.customHTMLFiles", havingValue = "true")
|
@ConditionalOnProperty(name = "system.customHTMLFiles", havingValue = "true")
|
||||||
public SpringTemplateEngine templateEngine(ResourceLoader resourceLoader) {
|
public SpringTemplateEngine templateEngine(ResourceLoader resourceLoader) {
|
||||||
@ -58,6 +56,7 @@ public class AppConfig {
|
|||||||
templateEngine.addTemplateResolver(new FileFallbackTemplateResolver(resourceLoader));
|
templateEngine.addTemplateResolver(new FileFallbackTemplateResolver(resourceLoader));
|
||||||
return templateEngine;
|
return templateEngine;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
@Bean(name = "loginEnabled")
|
@Bean(name = "loginEnabled")
|
||||||
public boolean loginEnabled() {
|
public boolean loginEnabled() {
|
||||||
|
@ -1,19 +1,8 @@
|
|||||||
package stirling.software.common.configuration;
|
package stirling.software.common.configuration;
|
||||||
|
|
||||||
import java.io.IOException;
|
/* Commented out entire FileFallbackTemplateResolver class - Thymeleaf dependency removed
|
||||||
import java.io.InputStream;
|
* This class will be removed when frontend migration to React is complete
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.springframework.core.io.Resource;
|
|
||||||
import org.springframework.core.io.ResourceLoader;
|
|
||||||
import org.thymeleaf.IEngineConfiguration;
|
|
||||||
import org.thymeleaf.templateresolver.AbstractConfigurableTemplateResolver;
|
|
||||||
import org.thymeleaf.templateresource.FileTemplateResource;
|
|
||||||
import org.thymeleaf.templateresource.ITemplateResource;
|
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
|
|
||||||
import stirling.software.common.model.InputStreamTemplateResource;
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class FileFallbackTemplateResolver extends AbstractConfigurableTemplateResolver {
|
public class FileFallbackTemplateResolver extends AbstractConfigurableTemplateResolver {
|
||||||
@ -57,3 +46,4 @@ public class FileFallbackTemplateResolver extends AbstractConfigurableTemplateRe
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
@ -1,11 +1,8 @@
|
|||||||
package stirling.software.common.model;
|
package stirling.software.common.model;
|
||||||
|
|
||||||
import java.io.IOException;
|
/* Commented out entire InputStreamTemplateResource class - Thymeleaf dependency removed
|
||||||
import java.io.InputStream;
|
* This class will be removed when frontend migration to React is complete
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.io.Reader;
|
|
||||||
|
|
||||||
import org.thymeleaf.templateresource.ITemplateResource;
|
|
||||||
|
|
||||||
public class InputStreamTemplateResource implements ITemplateResource {
|
public class InputStreamTemplateResource implements ITemplateResource {
|
||||||
private InputStream inputStream;
|
private InputStream inputStream;
|
||||||
@ -42,3 +39,4 @@ public class InputStreamTemplateResource implements ITemplateResource {
|
|||||||
return inputStream != null;
|
return inputStream != null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
@ -10,7 +10,6 @@ import java.util.HashMap;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.core.env.Environment;
|
import org.springframework.core.env.Environment;
|
||||||
@ -23,7 +22,6 @@ import jakarta.annotation.PreDestroy;
|
|||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.UI.WebBrowser;
|
|
||||||
import stirling.software.common.configuration.AppConfig;
|
import stirling.software.common.configuration.AppConfig;
|
||||||
import stirling.software.common.configuration.ConfigInitializer;
|
import stirling.software.common.configuration.ConfigInitializer;
|
||||||
import stirling.software.common.configuration.InstallationPathConfig;
|
import stirling.software.common.configuration.InstallationPathConfig;
|
||||||
@ -47,17 +45,15 @@ public class SPDFApplication {
|
|||||||
private final AppConfig appConfig;
|
private final AppConfig appConfig;
|
||||||
private final Environment env;
|
private final Environment env;
|
||||||
private final ApplicationProperties applicationProperties;
|
private final ApplicationProperties applicationProperties;
|
||||||
private final WebBrowser webBrowser;
|
|
||||||
|
// private final WebBrowser webBrowser; // Removed - desktop UI eliminated
|
||||||
|
|
||||||
public SPDFApplication(
|
public SPDFApplication(
|
||||||
AppConfig appConfig,
|
AppConfig appConfig, Environment env, ApplicationProperties applicationProperties) {
|
||||||
Environment env,
|
|
||||||
ApplicationProperties applicationProperties,
|
|
||||||
@Autowired(required = false) WebBrowser webBrowser) {
|
|
||||||
this.appConfig = appConfig;
|
this.appConfig = appConfig;
|
||||||
this.env = env;
|
this.env = env;
|
||||||
this.applicationProperties = applicationProperties;
|
this.applicationProperties = applicationProperties;
|
||||||
this.webBrowser = webBrowser;
|
// this.webBrowser = webBrowser; // Removed - desktop UI eliminated
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) throws IOException, InterruptedException {
|
public static void main(String[] args) throws IOException, InterruptedException {
|
||||||
@ -151,10 +147,14 @@ public class SPDFApplication {
|
|||||||
serverPortStatic = serverPort;
|
serverPortStatic = serverPort;
|
||||||
String url = baseUrl + ":" + getStaticPort() + contextPath;
|
String url = baseUrl + ":" + getStaticPort() + contextPath;
|
||||||
|
|
||||||
if (webBrowser != null
|
// Desktop UI initialization removed - webBrowser dependency eliminated
|
||||||
&& Boolean.parseBoolean(System.getProperty("STIRLING_PDF_DESKTOP_UI", "false"))) {
|
// Keep backwards compatibility for STIRLING_PDF_DESKTOP_UI system property
|
||||||
webBrowser.initWebUI(url);
|
if (Boolean.parseBoolean(System.getProperty("STIRLING_PDF_DESKTOP_UI", "false"))) {
|
||||||
} else {
|
log.info("Desktop UI mode enabled, but WebBrowser functionality has been removed");
|
||||||
|
// webBrowser.initWebUI(url); // Removed - desktop UI eliminated
|
||||||
|
}
|
||||||
|
|
||||||
|
// Standard browser opening logic
|
||||||
String browserOpenEnv = env.getProperty("BROWSER_OPEN");
|
String browserOpenEnv = env.getProperty("BROWSER_OPEN");
|
||||||
boolean browserOpen = browserOpenEnv != null && "true".equalsIgnoreCase(browserOpenEnv);
|
boolean browserOpen = browserOpenEnv != null && "true".equalsIgnoreCase(browserOpenEnv);
|
||||||
if (browserOpen) {
|
if (browserOpen) {
|
||||||
@ -175,7 +175,6 @@ public class SPDFApplication {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void setServerPortStatic(String port) {
|
public static void setServerPortStatic(String port) {
|
||||||
if ("auto".equalsIgnoreCase(port)) {
|
if ("auto".equalsIgnoreCase(port)) {
|
||||||
@ -189,9 +188,10 @@ public class SPDFApplication {
|
|||||||
|
|
||||||
@PreDestroy
|
@PreDestroy
|
||||||
public void cleanup() {
|
public void cleanup() {
|
||||||
if (webBrowser != null) {
|
// webBrowser cleanup removed - desktop UI eliminated
|
||||||
webBrowser.cleanup();
|
// if (webBrowser != null) {
|
||||||
}
|
// webBrowser.cleanup();
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void printStartupLogs() {
|
private static void printStartupLogs() {
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
package stirling.software.SPDF.UI;
|
|
||||||
|
|
||||||
public interface WebBrowser {
|
|
||||||
void initWebUI(String url);
|
|
||||||
|
|
||||||
void cleanup();
|
|
||||||
}
|
|
@ -1,497 +0,0 @@
|
|||||||
package stirling.software.SPDF.UI.impl;
|
|
||||||
|
|
||||||
import java.awt.AWTException;
|
|
||||||
import java.awt.BorderLayout;
|
|
||||||
import java.awt.Frame;
|
|
||||||
import java.awt.Image;
|
|
||||||
import java.awt.MenuItem;
|
|
||||||
import java.awt.PopupMenu;
|
|
||||||
import java.awt.SystemTray;
|
|
||||||
import java.awt.TrayIcon;
|
|
||||||
import java.awt.event.WindowEvent;
|
|
||||||
import java.awt.event.WindowStateListener;
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
|
|
||||||
import javax.imageio.ImageIO;
|
|
||||||
import javax.swing.JFrame;
|
|
||||||
import javax.swing.JPanel;
|
|
||||||
import javax.swing.SwingUtilities;
|
|
||||||
import javax.swing.Timer;
|
|
||||||
|
|
||||||
import org.cef.CefApp;
|
|
||||||
import org.cef.CefClient;
|
|
||||||
import org.cef.CefSettings;
|
|
||||||
import org.cef.browser.CefBrowser;
|
|
||||||
import org.cef.callback.CefBeforeDownloadCallback;
|
|
||||||
import org.cef.callback.CefDownloadItem;
|
|
||||||
import org.cef.callback.CefDownloadItemCallback;
|
|
||||||
import org.cef.handler.CefDownloadHandlerAdapter;
|
|
||||||
import org.cef.handler.CefLoadHandlerAdapter;
|
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import jakarta.annotation.PreDestroy;
|
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
|
|
||||||
import me.friwi.jcefmaven.CefAppBuilder;
|
|
||||||
import me.friwi.jcefmaven.EnumProgress;
|
|
||||||
import me.friwi.jcefmaven.MavenCefAppHandlerAdapter;
|
|
||||||
import me.friwi.jcefmaven.impl.progress.ConsoleProgressHandler;
|
|
||||||
|
|
||||||
import stirling.software.SPDF.UI.WebBrowser;
|
|
||||||
import stirling.software.common.configuration.InstallationPathConfig;
|
|
||||||
import stirling.software.common.util.UIScaling;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Slf4j
|
|
||||||
@ConditionalOnProperty(
|
|
||||||
name = "STIRLING_PDF_DESKTOP_UI",
|
|
||||||
havingValue = "true",
|
|
||||||
matchIfMissing = false)
|
|
||||||
public class DesktopBrowser implements WebBrowser {
|
|
||||||
private static CefApp cefApp;
|
|
||||||
private static CefClient client;
|
|
||||||
private static CefBrowser browser;
|
|
||||||
private static JFrame frame;
|
|
||||||
private static LoadingWindow loadingWindow;
|
|
||||||
private static volatile boolean browserInitialized = false;
|
|
||||||
private static TrayIcon trayIcon;
|
|
||||||
private static SystemTray systemTray;
|
|
||||||
|
|
||||||
public DesktopBrowser() {
|
|
||||||
SwingUtilities.invokeLater(
|
|
||||||
() -> {
|
|
||||||
loadingWindow = new LoadingWindow(null, "Initializing...");
|
|
||||||
loadingWindow.setVisible(true);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public void initWebUI(String url) {
|
|
||||||
CompletableFuture.runAsync(
|
|
||||||
() -> {
|
|
||||||
try {
|
|
||||||
CefAppBuilder builder = new CefAppBuilder();
|
|
||||||
configureCefSettings(builder);
|
|
||||||
builder.setProgressHandler(createProgressHandler());
|
|
||||||
builder.setInstallDir(
|
|
||||||
new File(InstallationPathConfig.getClientWebUIPath()));
|
|
||||||
// Build and initialize CEF
|
|
||||||
cefApp = builder.build();
|
|
||||||
client = cefApp.createClient();
|
|
||||||
|
|
||||||
// Set up download handler
|
|
||||||
setupDownloadHandler();
|
|
||||||
|
|
||||||
// Create browser and frame on EDT
|
|
||||||
SwingUtilities.invokeAndWait(
|
|
||||||
() -> {
|
|
||||||
browser = client.createBrowser(url, false, false);
|
|
||||||
setupMainFrame();
|
|
||||||
setupLoadHandler();
|
|
||||||
|
|
||||||
// Force initialize UI after 7 seconds if not already done
|
|
||||||
Timer timeoutTimer =
|
|
||||||
new Timer(
|
|
||||||
2500,
|
|
||||||
e -> {
|
|
||||||
log.warn(
|
|
||||||
"Loading timeout reached. Forcing"
|
|
||||||
+ " UI transition.");
|
|
||||||
if (!browserInitialized) {
|
|
||||||
// Force UI initialization
|
|
||||||
forceInitializeUI();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
timeoutTimer.setRepeats(false);
|
|
||||||
timeoutTimer.start();
|
|
||||||
});
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Error initializing JCEF browser: ", e);
|
|
||||||
cleanup();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void configureCefSettings(CefAppBuilder builder) {
|
|
||||||
CefSettings settings = builder.getCefSettings();
|
|
||||||
String basePath = InstallationPathConfig.getClientWebUIPath();
|
|
||||||
log.info("basePath " + basePath);
|
|
||||||
settings.cache_path = new File(basePath + "cache").getAbsolutePath();
|
|
||||||
settings.root_cache_path = new File(basePath + "root_cache").getAbsolutePath();
|
|
||||||
// settings.browser_subprocess_path = new File(basePath +
|
|
||||||
// "subprocess").getAbsolutePath();
|
|
||||||
// settings.resources_dir_path = new File(basePath + "resources").getAbsolutePath();
|
|
||||||
// settings.locales_dir_path = new File(basePath + "locales").getAbsolutePath();
|
|
||||||
settings.log_file = new File(basePath, "debug.log").getAbsolutePath();
|
|
||||||
|
|
||||||
settings.persist_session_cookies = true;
|
|
||||||
settings.windowless_rendering_enabled = false;
|
|
||||||
settings.log_severity = CefSettings.LogSeverity.LOGSEVERITY_INFO;
|
|
||||||
|
|
||||||
builder.setAppHandler(
|
|
||||||
new MavenCefAppHandlerAdapter() {
|
|
||||||
@Override
|
|
||||||
public void stateHasChanged(org.cef.CefApp.CefAppState state) {
|
|
||||||
log.info("CEF state changed: " + state);
|
|
||||||
if (state == CefApp.CefAppState.TERMINATED) {
|
|
||||||
System.exit(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setupDownloadHandler() {
|
|
||||||
client.addDownloadHandler(
|
|
||||||
new CefDownloadHandlerAdapter() {
|
|
||||||
@Override
|
|
||||||
public boolean onBeforeDownload(
|
|
||||||
CefBrowser browser,
|
|
||||||
CefDownloadItem downloadItem,
|
|
||||||
String suggestedName,
|
|
||||||
CefBeforeDownloadCallback callback) {
|
|
||||||
callback.Continue("", true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDownloadUpdated(
|
|
||||||
CefBrowser browser,
|
|
||||||
CefDownloadItem downloadItem,
|
|
||||||
CefDownloadItemCallback callback) {
|
|
||||||
if (downloadItem.isComplete()) {
|
|
||||||
log.info("Download completed: " + downloadItem.getFullPath());
|
|
||||||
} else if (downloadItem.isCanceled()) {
|
|
||||||
log.info("Download canceled: " + downloadItem.getFullPath());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private ConsoleProgressHandler createProgressHandler() {
|
|
||||||
return new ConsoleProgressHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleProgress(EnumProgress state, float percent) {
|
|
||||||
Objects.requireNonNull(state, "state cannot be null");
|
|
||||||
SwingUtilities.invokeLater(
|
|
||||||
() -> {
|
|
||||||
if (loadingWindow != null) {
|
|
||||||
switch (state) {
|
|
||||||
case LOCATING:
|
|
||||||
loadingWindow.setStatus("Locating Files...");
|
|
||||||
loadingWindow.setProgress(0);
|
|
||||||
break;
|
|
||||||
case DOWNLOADING:
|
|
||||||
if (percent >= 0) {
|
|
||||||
loadingWindow.setStatus(
|
|
||||||
String.format(
|
|
||||||
"Downloading additional files: %.0f%%",
|
|
||||||
percent));
|
|
||||||
loadingWindow.setProgress((int) percent);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case EXTRACTING:
|
|
||||||
loadingWindow.setStatus("Extracting files...");
|
|
||||||
loadingWindow.setProgress(60);
|
|
||||||
break;
|
|
||||||
case INITIALIZING:
|
|
||||||
loadingWindow.setStatus("Initializing UI...");
|
|
||||||
loadingWindow.setProgress(80);
|
|
||||||
break;
|
|
||||||
case INITIALIZED:
|
|
||||||
loadingWindow.setStatus("Finalising startup...");
|
|
||||||
loadingWindow.setProgress(90);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setupMainFrame() {
|
|
||||||
frame = new JFrame("Stirling-PDF");
|
|
||||||
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
|
|
||||||
frame.setUndecorated(true);
|
|
||||||
frame.setOpacity(0.0f);
|
|
||||||
|
|
||||||
JPanel contentPane = new JPanel(new BorderLayout());
|
|
||||||
contentPane.setDoubleBuffered(true);
|
|
||||||
contentPane.add(browser.getUIComponent(), BorderLayout.CENTER);
|
|
||||||
frame.setContentPane(contentPane);
|
|
||||||
|
|
||||||
frame.addWindowListener(
|
|
||||||
new java.awt.event.WindowAdapter() {
|
|
||||||
@Override
|
|
||||||
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
|
|
||||||
cleanup();
|
|
||||||
System.exit(0);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
frame.setSize(UIScaling.scaleWidth(1280), UIScaling.scaleHeight(800));
|
|
||||||
frame.setLocationRelativeTo(null);
|
|
||||||
|
|
||||||
loadIcon();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setupLoadHandler() {
|
|
||||||
final long initStartTime = System.currentTimeMillis();
|
|
||||||
log.info("Setting up load handler at: {}", initStartTime);
|
|
||||||
|
|
||||||
client.addLoadHandler(
|
|
||||||
new CefLoadHandlerAdapter() {
|
|
||||||
@Override
|
|
||||||
public void onLoadingStateChange(
|
|
||||||
CefBrowser browser,
|
|
||||||
boolean isLoading,
|
|
||||||
boolean canGoBack,
|
|
||||||
boolean canGoForward) {
|
|
||||||
log.debug(
|
|
||||||
"Loading state change - isLoading: {}, canGoBack: {}, canGoForward:"
|
|
||||||
+ " {}, browserInitialized: {}, Time elapsed: {}ms",
|
|
||||||
isLoading,
|
|
||||||
canGoBack,
|
|
||||||
canGoForward,
|
|
||||||
browserInitialized,
|
|
||||||
System.currentTimeMillis() - initStartTime);
|
|
||||||
|
|
||||||
if (!isLoading && !browserInitialized) {
|
|
||||||
log.info(
|
|
||||||
"Browser finished loading, preparing to initialize UI"
|
|
||||||
+ " components");
|
|
||||||
browserInitialized = true;
|
|
||||||
SwingUtilities.invokeLater(
|
|
||||||
() -> {
|
|
||||||
try {
|
|
||||||
if (loadingWindow != null) {
|
|
||||||
log.info("Starting UI initialization sequence");
|
|
||||||
|
|
||||||
// Close loading window first
|
|
||||||
loadingWindow.setVisible(false);
|
|
||||||
loadingWindow.dispose();
|
|
||||||
loadingWindow = null;
|
|
||||||
log.info("Loading window disposed");
|
|
||||||
|
|
||||||
// Then setup the main frame
|
|
||||||
frame.setVisible(false);
|
|
||||||
frame.dispose();
|
|
||||||
frame.setOpacity(1.0f);
|
|
||||||
frame.setUndecorated(false);
|
|
||||||
frame.pack();
|
|
||||||
frame.setSize(
|
|
||||||
UIScaling.scaleWidth(1280),
|
|
||||||
UIScaling.scaleHeight(800));
|
|
||||||
frame.setLocationRelativeTo(null);
|
|
||||||
log.debug("Frame reconfigured");
|
|
||||||
|
|
||||||
// Show the main frame
|
|
||||||
frame.setVisible(true);
|
|
||||||
frame.requestFocus();
|
|
||||||
frame.toFront();
|
|
||||||
log.info("Main frame displayed and focused");
|
|
||||||
|
|
||||||
// Focus the browser component
|
|
||||||
Timer focusTimer =
|
|
||||||
new Timer(
|
|
||||||
100,
|
|
||||||
e -> {
|
|
||||||
try {
|
|
||||||
browser.getUIComponent()
|
|
||||||
.requestFocus();
|
|
||||||
log.info(
|
|
||||||
"Browser component"
|
|
||||||
+ " focused");
|
|
||||||
} catch (Exception ex) {
|
|
||||||
log.error(
|
|
||||||
"Error focusing"
|
|
||||||
+ " browser",
|
|
||||||
ex);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
focusTimer.setRepeats(false);
|
|
||||||
focusTimer.start();
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Error during UI initialization", e);
|
|
||||||
// Attempt cleanup on error
|
|
||||||
if (loadingWindow != null) {
|
|
||||||
loadingWindow.dispose();
|
|
||||||
loadingWindow = null;
|
|
||||||
}
|
|
||||||
if (frame != null) {
|
|
||||||
frame.setVisible(true);
|
|
||||||
frame.requestFocus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setupTrayIcon(Image icon) {
|
|
||||||
if (!SystemTray.isSupported()) {
|
|
||||||
log.warn("System tray is not supported");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
systemTray = SystemTray.getSystemTray();
|
|
||||||
|
|
||||||
// Create popup menu
|
|
||||||
PopupMenu popup = new PopupMenu();
|
|
||||||
|
|
||||||
// Create menu items
|
|
||||||
MenuItem showItem = new MenuItem("Show");
|
|
||||||
showItem.addActionListener(
|
|
||||||
e -> {
|
|
||||||
frame.setVisible(true);
|
|
||||||
frame.setState(Frame.NORMAL);
|
|
||||||
});
|
|
||||||
|
|
||||||
MenuItem exitItem = new MenuItem("Exit");
|
|
||||||
exitItem.addActionListener(
|
|
||||||
e -> {
|
|
||||||
cleanup();
|
|
||||||
System.exit(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Add menu items to popup menu
|
|
||||||
popup.add(showItem);
|
|
||||||
popup.addSeparator();
|
|
||||||
popup.add(exitItem);
|
|
||||||
|
|
||||||
// Create tray icon
|
|
||||||
trayIcon = new TrayIcon(icon, "Stirling-PDF", popup);
|
|
||||||
trayIcon.setImageAutoSize(true);
|
|
||||||
|
|
||||||
// Add double-click behavior
|
|
||||||
trayIcon.addActionListener(
|
|
||||||
e -> {
|
|
||||||
frame.setVisible(true);
|
|
||||||
frame.setState(Frame.NORMAL);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Add tray icon to system tray
|
|
||||||
systemTray.add(trayIcon);
|
|
||||||
|
|
||||||
// Modify frame behavior to minimize to tray
|
|
||||||
frame.addWindowStateListener(
|
|
||||||
new WindowStateListener() {
|
|
||||||
public void windowStateChanged(WindowEvent e) {
|
|
||||||
if (e.getNewState() == Frame.ICONIFIED) {
|
|
||||||
frame.setVisible(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
} catch (AWTException e) {
|
|
||||||
log.error("Error setting up system tray icon", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void loadIcon() {
|
|
||||||
try {
|
|
||||||
Image icon = null;
|
|
||||||
String[] iconPaths = {"/static/favicon.ico"};
|
|
||||||
|
|
||||||
for (String path : iconPaths) {
|
|
||||||
if (icon != null) break;
|
|
||||||
try {
|
|
||||||
try (InputStream is = getClass().getResourceAsStream(path)) {
|
|
||||||
if (is != null) {
|
|
||||||
icon = ImageIO.read(is);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.debug("Could not load icon from " + path, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (icon != null) {
|
|
||||||
frame.setIconImage(icon);
|
|
||||||
setupTrayIcon(icon);
|
|
||||||
} else {
|
|
||||||
log.warn("Could not load icon from any source");
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Error loading icon", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@PreDestroy
|
|
||||||
public void cleanup() {
|
|
||||||
if (browser != null) browser.close(true);
|
|
||||||
if (client != null) client.dispose();
|
|
||||||
if (cefApp != null) cefApp.dispose();
|
|
||||||
if (loadingWindow != null) loadingWindow.dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void forceInitializeUI() {
|
|
||||||
try {
|
|
||||||
if (loadingWindow != null) {
|
|
||||||
log.info("Forcing start of UI initialization sequence");
|
|
||||||
|
|
||||||
// Close loading window first
|
|
||||||
loadingWindow.setVisible(false);
|
|
||||||
loadingWindow.dispose();
|
|
||||||
loadingWindow = null;
|
|
||||||
log.info("Loading window disposed");
|
|
||||||
|
|
||||||
// Then setup the main frame
|
|
||||||
frame.setVisible(false);
|
|
||||||
frame.dispose();
|
|
||||||
frame.setOpacity(1.0f);
|
|
||||||
frame.setUndecorated(false);
|
|
||||||
frame.pack();
|
|
||||||
frame.setSize(UIScaling.scaleWidth(1280), UIScaling.scaleHeight(800));
|
|
||||||
frame.setLocationRelativeTo(null);
|
|
||||||
log.debug("Frame reconfigured");
|
|
||||||
|
|
||||||
// Show the main frame
|
|
||||||
frame.setVisible(true);
|
|
||||||
frame.requestFocus();
|
|
||||||
frame.toFront();
|
|
||||||
log.info("Main frame displayed and focused");
|
|
||||||
|
|
||||||
// Focus the browser component if available
|
|
||||||
if (browser != null) {
|
|
||||||
Timer focusTimer =
|
|
||||||
new Timer(
|
|
||||||
100,
|
|
||||||
e -> {
|
|
||||||
try {
|
|
||||||
browser.getUIComponent().requestFocus();
|
|
||||||
log.info("Browser component focused");
|
|
||||||
} catch (Exception ex) {
|
|
||||||
log.error(
|
|
||||||
"Error focusing browser during force ui"
|
|
||||||
+ " initialization.",
|
|
||||||
ex);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
focusTimer.setRepeats(false);
|
|
||||||
focusTimer.start();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Error during Forced UI initialization.", e);
|
|
||||||
// Attempt cleanup on error
|
|
||||||
if (loadingWindow != null) {
|
|
||||||
loadingWindow.dispose();
|
|
||||||
loadingWindow = null;
|
|
||||||
}
|
|
||||||
if (frame != null) {
|
|
||||||
frame.setVisible(true);
|
|
||||||
frame.setOpacity(1.0f);
|
|
||||||
frame.setUndecorated(false);
|
|
||||||
frame.requestFocus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,351 +0,0 @@
|
|||||||
package stirling.software.SPDF.UI.impl;
|
|
||||||
|
|
||||||
import java.awt.*;
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
import javax.imageio.ImageIO;
|
|
||||||
import javax.swing.*;
|
|
||||||
|
|
||||||
import io.github.pixee.security.BoundedLineReader;
|
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
|
|
||||||
import stirling.software.common.util.UIScaling;
|
|
||||||
|
|
||||||
@Slf4j
|
|
||||||
public class LoadingWindow extends JDialog {
|
|
||||||
private final JProgressBar progressBar;
|
|
||||||
private final JLabel statusLabel;
|
|
||||||
private final JPanel mainPanel;
|
|
||||||
private final JLabel brandLabel;
|
|
||||||
private long startTime;
|
|
||||||
|
|
||||||
private Timer stuckTimer;
|
|
||||||
private long stuckThreshold = 4000;
|
|
||||||
private long timeAt90Percent = -1;
|
|
||||||
private volatile Process explorerProcess;
|
|
||||||
private static final boolean IS_WINDOWS =
|
|
||||||
System.getProperty("os.name").toLowerCase().contains("win");
|
|
||||||
|
|
||||||
public LoadingWindow(Frame parent, String initialUrl) {
|
|
||||||
super(parent, "Initializing Stirling-PDF", true);
|
|
||||||
startTime = System.currentTimeMillis();
|
|
||||||
log.info("Creating LoadingWindow - initialization started at: {}", startTime);
|
|
||||||
|
|
||||||
// Initialize components
|
|
||||||
mainPanel = new JPanel();
|
|
||||||
mainPanel.setBackground(Color.WHITE);
|
|
||||||
mainPanel.setBorder(BorderFactory.createEmptyBorder(20, 30, 20, 30));
|
|
||||||
mainPanel.setLayout(new GridBagLayout());
|
|
||||||
GridBagConstraints gbc = new GridBagConstraints();
|
|
||||||
|
|
||||||
// Configure GridBagConstraints
|
|
||||||
gbc.gridwidth = GridBagConstraints.REMAINDER;
|
|
||||||
gbc.fill = GridBagConstraints.HORIZONTAL;
|
|
||||||
gbc.insets = new Insets(5, 5, 5, 5);
|
|
||||||
gbc.weightx = 1.0;
|
|
||||||
gbc.weighty = 0.0;
|
|
||||||
|
|
||||||
// Add icon
|
|
||||||
try {
|
|
||||||
try (InputStream is = getClass().getResourceAsStream("/static/favicon.ico")) {
|
|
||||||
if (is != null) {
|
|
||||||
Image img = ImageIO.read(is);
|
|
||||||
if (img != null) {
|
|
||||||
Image scaledImg = UIScaling.scaleIcon(img, 48, 48);
|
|
||||||
JLabel iconLabel = new JLabel(new ImageIcon(scaledImg));
|
|
||||||
iconLabel.setHorizontalAlignment(SwingConstants.CENTER);
|
|
||||||
gbc.gridy = 0;
|
|
||||||
mainPanel.add(iconLabel, gbc);
|
|
||||||
log.info("Icon loaded and scaled successfully");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Failed to load icon", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
// URL Label with explicit size
|
|
||||||
brandLabel = new JLabel(initialUrl);
|
|
||||||
brandLabel.setHorizontalAlignment(SwingConstants.CENTER);
|
|
||||||
brandLabel.setPreferredSize(new Dimension(300, 25));
|
|
||||||
brandLabel.setText("Stirling-PDF");
|
|
||||||
gbc.gridy = 1;
|
|
||||||
mainPanel.add(brandLabel, gbc);
|
|
||||||
|
|
||||||
// Status label with explicit size
|
|
||||||
statusLabel = new JLabel("Initializing...");
|
|
||||||
statusLabel.setHorizontalAlignment(SwingConstants.CENTER);
|
|
||||||
statusLabel.setPreferredSize(new Dimension(300, 25));
|
|
||||||
gbc.gridy = 2;
|
|
||||||
mainPanel.add(statusLabel, gbc);
|
|
||||||
|
|
||||||
// Progress bar with explicit size
|
|
||||||
progressBar = new JProgressBar(0, 100);
|
|
||||||
progressBar.setStringPainted(true);
|
|
||||||
progressBar.setPreferredSize(new Dimension(300, 25));
|
|
||||||
gbc.gridy = 3;
|
|
||||||
mainPanel.add(progressBar, gbc);
|
|
||||||
|
|
||||||
// Set dialog properties
|
|
||||||
setContentPane(mainPanel);
|
|
||||||
setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
|
|
||||||
setResizable(false);
|
|
||||||
setUndecorated(false);
|
|
||||||
|
|
||||||
// Set size and position
|
|
||||||
setSize(UIScaling.scaleWidth(400), UIScaling.scaleHeight(200));
|
|
||||||
|
|
||||||
setLocationRelativeTo(parent);
|
|
||||||
setAlwaysOnTop(true);
|
|
||||||
setProgress(0);
|
|
||||||
setStatus("Starting...");
|
|
||||||
|
|
||||||
log.info(
|
|
||||||
"LoadingWindow initialization completed in {}ms",
|
|
||||||
System.currentTimeMillis() - startTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void checkAndRefreshExplorer() {
|
|
||||||
if (!IS_WINDOWS) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (timeAt90Percent == -1) {
|
|
||||||
timeAt90Percent = System.currentTimeMillis();
|
|
||||||
stuckTimer =
|
|
||||||
new Timer(
|
|
||||||
1000,
|
|
||||||
e -> {
|
|
||||||
long currentTime = System.currentTimeMillis();
|
|
||||||
if (currentTime - timeAt90Percent > stuckThreshold) {
|
|
||||||
try {
|
|
||||||
log.debug(
|
|
||||||
"Attempting Windows explorer refresh due to 90% stuck state");
|
|
||||||
String currentDir = System.getProperty("user.dir");
|
|
||||||
|
|
||||||
// Store current explorer PIDs before we start new one
|
|
||||||
Set<String> existingPids = new HashSet<>();
|
|
||||||
ProcessBuilder listExplorer =
|
|
||||||
new ProcessBuilder(
|
|
||||||
"cmd",
|
|
||||||
"/c",
|
|
||||||
"wmic",
|
|
||||||
"process",
|
|
||||||
"where",
|
|
||||||
"name='explorer.exe'",
|
|
||||||
"get",
|
|
||||||
"ProcessId",
|
|
||||||
"/format:csv");
|
|
||||||
Process process = listExplorer.start();
|
|
||||||
BufferedReader reader =
|
|
||||||
new BufferedReader(
|
|
||||||
new InputStreamReader(
|
|
||||||
process.getInputStream()));
|
|
||||||
String line;
|
|
||||||
while ((line =
|
|
||||||
BoundedLineReader.readLine(
|
|
||||||
reader, 5_000_000))
|
|
||||||
!= null) {
|
|
||||||
if (line.matches(".*\\d+.*")) { // Contains numbers
|
|
||||||
String[] parts = line.trim().split(",");
|
|
||||||
if (parts.length >= 2) {
|
|
||||||
existingPids.add(
|
|
||||||
parts[parts.length - 1].trim());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
process.waitFor(2, TimeUnit.SECONDS);
|
|
||||||
|
|
||||||
// Start new explorer
|
|
||||||
ProcessBuilder pb =
|
|
||||||
new ProcessBuilder(
|
|
||||||
"cmd",
|
|
||||||
"/c",
|
|
||||||
"start",
|
|
||||||
"/min",
|
|
||||||
"/b",
|
|
||||||
"explorer.exe",
|
|
||||||
currentDir);
|
|
||||||
pb.redirectErrorStream(true);
|
|
||||||
explorerProcess = pb.start();
|
|
||||||
|
|
||||||
// Schedule cleanup
|
|
||||||
Timer cleanupTimer =
|
|
||||||
new Timer(
|
|
||||||
2000,
|
|
||||||
cleanup -> {
|
|
||||||
try {
|
|
||||||
// Find new explorer processes
|
|
||||||
ProcessBuilder findNewExplorer =
|
|
||||||
new ProcessBuilder(
|
|
||||||
"cmd",
|
|
||||||
"/c",
|
|
||||||
"wmic",
|
|
||||||
"process",
|
|
||||||
"where",
|
|
||||||
"name='explorer.exe'",
|
|
||||||
"get",
|
|
||||||
"ProcessId",
|
|
||||||
"/format:csv");
|
|
||||||
Process newProcess =
|
|
||||||
findNewExplorer.start();
|
|
||||||
BufferedReader newReader =
|
|
||||||
new BufferedReader(
|
|
||||||
new InputStreamReader(
|
|
||||||
newProcess
|
|
||||||
.getInputStream()));
|
|
||||||
String newLine;
|
|
||||||
while ((newLine =
|
|
||||||
BoundedLineReader
|
|
||||||
.readLine(
|
|
||||||
newReader,
|
|
||||||
5_000_000))
|
|
||||||
!= null) {
|
|
||||||
if (newLine.matches(
|
|
||||||
".*\\d+.*")) {
|
|
||||||
String[] parts =
|
|
||||||
newLine.trim()
|
|
||||||
.split(",");
|
|
||||||
if (parts.length >= 2) {
|
|
||||||
String pid =
|
|
||||||
parts[
|
|
||||||
parts.length
|
|
||||||
- 1]
|
|
||||||
.trim();
|
|
||||||
if (!existingPids
|
|
||||||
.contains(
|
|
||||||
pid)) {
|
|
||||||
log.debug(
|
|
||||||
"Found new explorer.exe with PID: "
|
|
||||||
+ pid);
|
|
||||||
ProcessBuilder
|
|
||||||
killProcess =
|
|
||||||
new ProcessBuilder(
|
|
||||||
"taskkill",
|
|
||||||
"/PID",
|
|
||||||
pid,
|
|
||||||
"/F");
|
|
||||||
killProcess
|
|
||||||
.redirectErrorStream(
|
|
||||||
true);
|
|
||||||
Process killResult =
|
|
||||||
killProcess
|
|
||||||
.start();
|
|
||||||
killResult.waitFor(
|
|
||||||
2,
|
|
||||||
TimeUnit
|
|
||||||
.SECONDS);
|
|
||||||
log.debug(
|
|
||||||
"Explorer process terminated: "
|
|
||||||
+ pid);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
newProcess.waitFor(
|
|
||||||
2, TimeUnit.SECONDS);
|
|
||||||
} catch (Exception ex) {
|
|
||||||
log.error(
|
|
||||||
"Error cleaning up Windows explorer process",
|
|
||||||
ex);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
cleanupTimer.setRepeats(false);
|
|
||||||
cleanupTimer.start();
|
|
||||||
stuckTimer.stop();
|
|
||||||
} catch (Exception ex) {
|
|
||||||
log.error("Error refreshing Windows explorer", ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
stuckTimer.setRepeats(true);
|
|
||||||
stuckTimer.start();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProgress(final int progress) {
|
|
||||||
SwingUtilities.invokeLater(
|
|
||||||
() -> {
|
|
||||||
try {
|
|
||||||
int validProgress = Math.min(Math.max(progress, 0), 100);
|
|
||||||
log.info(
|
|
||||||
"Setting progress to {}% at {}ms since start",
|
|
||||||
validProgress, System.currentTimeMillis() - startTime);
|
|
||||||
|
|
||||||
// Log additional details when near 90%
|
|
||||||
if (validProgress >= 85 && validProgress <= 95) {
|
|
||||||
log.info(
|
|
||||||
"Near 90% progress - Current status: {}, Window visible: {}, "
|
|
||||||
+ "Progress bar responding: {}, Memory usage: {}MB",
|
|
||||||
statusLabel.getText(),
|
|
||||||
isVisible(),
|
|
||||||
progressBar.isEnabled(),
|
|
||||||
Runtime.getRuntime().totalMemory() / (1024 * 1024));
|
|
||||||
|
|
||||||
// Add thread state logging
|
|
||||||
Thread currentThread = Thread.currentThread();
|
|
||||||
log.info(
|
|
||||||
"Current thread state - Name: {}, State: {}, Priority: {}",
|
|
||||||
currentThread.getName(),
|
|
||||||
currentThread.getState(),
|
|
||||||
currentThread.getPriority());
|
|
||||||
|
|
||||||
if (validProgress >= 90 && validProgress < 95) {
|
|
||||||
checkAndRefreshExplorer();
|
|
||||||
} else {
|
|
||||||
// Reset the timer if we move past 95%
|
|
||||||
if (validProgress >= 95) {
|
|
||||||
if (stuckTimer != null) {
|
|
||||||
stuckTimer.stop();
|
|
||||||
}
|
|
||||||
timeAt90Percent = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
progressBar.setValue(validProgress);
|
|
||||||
progressBar.setString(validProgress + "%");
|
|
||||||
mainPanel.revalidate();
|
|
||||||
mainPanel.repaint();
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Error updating progress to " + progress, e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(final String status) {
|
|
||||||
log.info(
|
|
||||||
"Status update at {}ms - Setting status to: {}",
|
|
||||||
System.currentTimeMillis() - startTime,
|
|
||||||
status);
|
|
||||||
|
|
||||||
SwingUtilities.invokeLater(
|
|
||||||
() -> {
|
|
||||||
try {
|
|
||||||
String validStatus = status != null ? status : "";
|
|
||||||
statusLabel.setText(validStatus);
|
|
||||||
|
|
||||||
// Log UI state when status changes
|
|
||||||
log.info(
|
|
||||||
"UI State - Window visible: {}, Progress: {}%, Status: {}",
|
|
||||||
isVisible(), progressBar.getValue(), validStatus);
|
|
||||||
|
|
||||||
mainPanel.revalidate();
|
|
||||||
mainPanel.repaint();
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Error updating status to: " + status, e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void dispose() {
|
|
||||||
log.info("LoadingWindow disposing after {}ms", System.currentTimeMillis() - startTime);
|
|
||||||
super.dispose();
|
|
||||||
}
|
|
||||||
}
|
|
@ -45,6 +45,12 @@ public class CleanUrlInterceptor implements HandlerInterceptor {
|
|||||||
|
|
||||||
String queryString = request.getQueryString();
|
String queryString = request.getQueryString();
|
||||||
if (queryString != null && !queryString.isEmpty()) {
|
if (queryString != null && !queryString.isEmpty()) {
|
||||||
|
String requestURI = request.getRequestURI();
|
||||||
|
|
||||||
|
if (requestURI.contains("/api/")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Map<String, String> allowedParameters = new HashMap<>();
|
Map<String, String> allowedParameters = new HashMap<>();
|
||||||
|
|
||||||
|
@ -69,8 +69,7 @@ public class OpenApiConfig {
|
|||||||
.type(SecurityScheme.Type.APIKEY)
|
.type(SecurityScheme.Type.APIKEY)
|
||||||
.in(SecurityScheme.In.HEADER)
|
.in(SecurityScheme.In.HEADER)
|
||||||
.name("X-API-KEY");
|
.name("X-API-KEY");
|
||||||
return openAPI
|
return openAPI.components(new Components().addSecuritySchemes("apiKey", apiKeyScheme))
|
||||||
.components(new Components().addSecuritySchemes("apiKey", apiKeyScheme))
|
|
||||||
.addSecurityItem(new SecurityRequirement().addList("apiKey"));
|
.addSecurityItem(new SecurityRequirement().addList("apiKey"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,13 +2,10 @@ package stirling.software.SPDF.config;
|
|||||||
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||||
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
|
||||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import stirling.software.common.configuration.InstallationPathConfig;
|
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class WebMvcConfig implements WebMvcConfigurer {
|
public class WebMvcConfig implements WebMvcConfigurer {
|
||||||
@ -20,12 +17,12 @@ public class WebMvcConfig implements WebMvcConfigurer {
|
|||||||
registry.addInterceptor(endpointInterceptor);
|
registry.addInterceptor(endpointInterceptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
// public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
||||||
// Handler for external static resources
|
// // Handler for external static resources - DISABLED in backend-only mode
|
||||||
registry.addResourceHandler("/**")
|
// registry.addResourceHandler("/**")
|
||||||
.addResourceLocations(
|
// .addResourceLocations(
|
||||||
"file:" + InstallationPathConfig.getStaticPath(), "classpath:/static/");
|
// "file:" + InstallationPathConfig.getStaticPath(), "classpath:/static/");
|
||||||
// .setCachePeriod(0); // Optional: disable caching
|
// // .setCachePeriod(0); // Optional: disable caching
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api;
|
package stirling.software.SPDF.controller.api;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@ -20,6 +18,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.model.api.PDFFile;
|
import stirling.software.common.model.api.PDFFile;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api;
|
package stirling.software.SPDF.controller.api;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
@ -14,7 +12,6 @@ import org.apache.pdfbox.pdmodel.common.PDRectangle;
|
|||||||
import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
|
import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@ -24,6 +21,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.general.CropPdfForm;
|
import stirling.software.SPDF.model.api.general.CropPdfForm;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api;
|
package stirling.software.SPDF.controller.api;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -16,7 +14,6 @@ import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlin
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
@ -33,6 +30,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.EditTableOfContentsRequest;
|
import stirling.software.SPDF.model.api.EditTableOfContentsRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api;
|
package stirling.software.SPDF.controller.api;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -24,7 +22,6 @@ import org.apache.pdfbox.pdmodel.interactive.form.PDField;
|
|||||||
import org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField;
|
import org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -36,6 +33,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.general.MergePdfsRequest;
|
import stirling.software.SPDF.model.api.general.MergePdfsRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
import stirling.software.common.util.GeneralUtils;
|
import stirling.software.common.util.GeneralUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api;
|
package stirling.software.SPDF.controller.api;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -15,7 +13,6 @@ import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
|
|||||||
import org.apache.pdfbox.util.Matrix;
|
import org.apache.pdfbox.util.Matrix;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -27,6 +24,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.general.MergeMultiplePagesRequest;
|
import stirling.software.SPDF.model.api.general.MergeMultiplePagesRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
|
||||||
|
@ -1,14 +1,11 @@
|
|||||||
package stirling.software.SPDF.controller.api;
|
package stirling.software.SPDF.controller.api;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@ -18,6 +15,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import stirling.software.SPDF.service.PdfImageRemovalService;
|
import stirling.software.SPDF.service.PdfImageRemovalService;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.model.api.PDFFile;
|
import stirling.software.common.model.api.PDFFile;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api;
|
package stirling.software.SPDF.controller.api;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -17,7 +15,6 @@ import org.apache.pdfbox.pdmodel.PDDocument;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -29,6 +26,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.general.OverlayPdfsRequest;
|
import stirling.software.SPDF.model.api.general.OverlayPdfsRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.GeneralUtils;
|
import stirling.software.common.util.GeneralUtils;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api;
|
package stirling.software.SPDF.controller.api;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -11,7 +9,6 @@ import org.apache.pdfbox.pdmodel.PDDocument;
|
|||||||
import org.apache.pdfbox.pdmodel.PDPage;
|
import org.apache.pdfbox.pdmodel.PDPage;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -26,6 +23,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import stirling.software.SPDF.model.SortTypes;
|
import stirling.software.SPDF.model.SortTypes;
|
||||||
import stirling.software.SPDF.model.api.PDFWithPageNums;
|
import stirling.software.SPDF.model.api.PDFWithPageNums;
|
||||||
import stirling.software.SPDF.model.api.general.RearrangePagesRequest;
|
import stirling.software.SPDF.model.api.general.RearrangePagesRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
import stirling.software.common.util.GeneralUtils;
|
import stirling.software.common.util.GeneralUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api;
|
package stirling.software.SPDF.controller.api;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
@ -9,7 +7,6 @@ import org.apache.pdfbox.pdmodel.PDPage;
|
|||||||
import org.apache.pdfbox.pdmodel.PDPageTree;
|
import org.apache.pdfbox.pdmodel.PDPageTree;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -21,6 +18,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.general.RotatePDFRequest;
|
import stirling.software.SPDF.model.api.general.RotatePDFRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api;
|
package stirling.software.SPDF.controller.api;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -16,7 +14,6 @@ import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
|
|||||||
import org.apache.pdfbox.util.Matrix;
|
import org.apache.pdfbox.util.Matrix;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -28,6 +25,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.general.ScalePagesRequest;
|
import stirling.software.SPDF.model.api.general.ScalePagesRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api;
|
package stirling.software.SPDF.controller.api;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -9,7 +7,6 @@ import org.springframework.http.HttpStatus;
|
|||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
@ -19,6 +16,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import stirling.software.SPDF.config.EndpointConfiguration;
|
import stirling.software.SPDF.config.EndpointConfiguration;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.configuration.InstallationPathConfig;
|
import stirling.software.common.configuration.InstallationPathConfig;
|
||||||
import stirling.software.common.model.ApplicationProperties;
|
import stirling.software.common.model.ApplicationProperties;
|
||||||
import stirling.software.common.util.GeneralUtils;
|
import stirling.software.common.util.GeneralUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api;
|
package stirling.software.SPDF.controller.api;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
@ -17,7 +15,6 @@ import org.apache.pdfbox.pdmodel.PDPage;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -30,6 +27,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.PDFWithPageNums;
|
import stirling.software.SPDF.model.api.PDFWithPageNums;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api;
|
package stirling.software.SPDF.controller.api;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
@ -17,7 +15,6 @@ import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlin
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -34,6 +31,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.SplitPdfByChaptersRequest;
|
import stirling.software.SPDF.model.api.SplitPdfByChaptersRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.model.PdfMetadata;
|
import stirling.software.common.model.PdfMetadata;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.service.PdfMetadataService;
|
import stirling.software.common.service.PdfMetadataService;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api;
|
package stirling.software.SPDF.controller.api;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
@ -22,7 +20,6 @@ import org.apache.pdfbox.util.Matrix;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -34,6 +31,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.SplitPdfBySectionsRequest;
|
import stirling.software.SPDF.model.api.SplitPdfBySectionsRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api;
|
package stirling.software.SPDF.controller.api;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
@ -14,7 +12,6 @@ import org.apache.pdfbox.pdmodel.PDPage;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -27,6 +24,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.general.SplitPdfBySizeOrCountRequest;
|
import stirling.software.SPDF.model.api.general.SplitPdfBySizeOrCountRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
import stirling.software.common.util.GeneralUtils;
|
import stirling.software.common.util.GeneralUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api;
|
package stirling.software.SPDF.controller.api;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -14,7 +12,6 @@ import org.apache.pdfbox.pdmodel.common.PDRectangle;
|
|||||||
import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
|
import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@ -23,6 +20,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.model.api.PDFFile;
|
import stirling.software.common.model.api.PDFFile;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
@ -25,7 +25,6 @@ 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.Data;
|
import lombok.Data;
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.Dependency;
|
import stirling.software.SPDF.model.Dependency;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.converters;
|
package stirling.software.SPDF.controller.api.converters;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
@ -10,7 +8,6 @@ import org.springframework.http.HttpStatus;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -22,6 +19,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.configuration.RuntimePathConfig;
|
import stirling.software.common.configuration.RuntimePathConfig;
|
||||||
import stirling.software.common.model.api.converters.EmlToPdfRequest;
|
import stirling.software.common.model.api.converters.EmlToPdfRequest;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
|
@ -1,10 +1,7 @@
|
|||||||
package stirling.software.SPDF.controller.api.converters;
|
package stirling.software.SPDF.controller.api.converters;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -15,6 +12,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.configuration.RuntimePathConfig;
|
import stirling.software.common.configuration.RuntimePathConfig;
|
||||||
import stirling.software.common.model.api.converters.HTMLToPdfRequest;
|
import stirling.software.common.model.api.converters.HTMLToPdfRequest;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.converters;
|
package stirling.software.SPDF.controller.api.converters;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
@ -21,7 +19,6 @@ import org.apache.pdfbox.rendering.ImageType;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -35,6 +32,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
|
|
||||||
import stirling.software.SPDF.model.api.converters.ConvertToImageRequest;
|
import stirling.software.SPDF.model.api.converters.ConvertToImageRequest;
|
||||||
import stirling.software.SPDF.model.api.converters.ConvertToPdfRequest;
|
import stirling.software.SPDF.model.api.converters.ConvertToPdfRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.CheckProgramInstall;
|
import stirling.software.common.util.CheckProgramInstall;
|
||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.converters;
|
package stirling.software.SPDF.controller.api.converters;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -14,7 +12,6 @@ import org.commonmark.renderer.html.AttributeProvider;
|
|||||||
import org.commonmark.renderer.html.HtmlRenderer;
|
import org.commonmark.renderer.html.HtmlRenderer;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -25,6 +22,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.configuration.RuntimePathConfig;
|
import stirling.software.common.configuration.RuntimePathConfig;
|
||||||
import stirling.software.common.model.api.GeneralFile;
|
import stirling.software.common.model.api.GeneralFile;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.converters;
|
package stirling.software.SPDF.controller.api.converters;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
@ -15,7 +13,6 @@ import org.apache.commons.io.FilenameUtils;
|
|||||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -26,6 +23,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.configuration.RuntimePathConfig;
|
import stirling.software.common.configuration.RuntimePathConfig;
|
||||||
import stirling.software.common.model.api.GeneralFile;
|
import stirling.software.common.model.api.GeneralFile;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
|
@ -1,10 +1,7 @@
|
|||||||
package stirling.software.SPDF.controller.api.converters;
|
package stirling.software.SPDF.controller.api.converters;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -12,6 +9,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.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.model.api.PDFFile;
|
import stirling.software.common.model.api.PDFFile;
|
||||||
import stirling.software.common.util.PDFToFile;
|
import stirling.software.common.util.PDFToFile;
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.converters;
|
package stirling.software.SPDF.controller.api.converters;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
@ -9,7 +7,6 @@ import org.apache.pdfbox.text.PDFTextStripper;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -23,6 +20,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import stirling.software.SPDF.model.api.converters.PdfToPresentationRequest;
|
import stirling.software.SPDF.model.api.converters.PdfToPresentationRequest;
|
||||||
import stirling.software.SPDF.model.api.converters.PdfToTextOrRTFRequest;
|
import stirling.software.SPDF.model.api.converters.PdfToTextOrRTFRequest;
|
||||||
import stirling.software.SPDF.model.api.converters.PdfToWordRequest;
|
import stirling.software.SPDF.model.api.converters.PdfToWordRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.model.api.PDFFile;
|
import stirling.software.common.model.api.PDFFile;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.PDFToFile;
|
import stirling.software.common.util.PDFToFile;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.converters;
|
package stirling.software.SPDF.controller.api.converters;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -57,7 +55,6 @@ import org.apache.xmpbox.xml.XmpSerializer;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -69,6 +66,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.converters.PdfToPdfARequest;
|
import stirling.software.SPDF.model.api.converters.PdfToPdfARequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
import stirling.software.common.util.ProcessExecutor;
|
import stirling.software.common.util.ProcessExecutor;
|
||||||
import stirling.software.common.util.ProcessExecutor.ProcessExecutorResult;
|
import stirling.software.common.util.ProcessExecutor.ProcessExecutorResult;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.converters;
|
package stirling.software.SPDF.controller.api.converters;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
@ -11,7 +9,6 @@ import java.util.List;
|
|||||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@ -22,6 +19,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.converters.UrlToPdfRequest;
|
import stirling.software.SPDF.model.api.converters.UrlToPdfRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.configuration.RuntimePathConfig;
|
import stirling.software.common.configuration.RuntimePathConfig;
|
||||||
import stirling.software.common.model.ApplicationProperties;
|
import stirling.software.common.model.ApplicationProperties;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.converters;
|
package stirling.software.SPDF.controller.api.converters;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
@ -20,7 +18,6 @@ import org.springframework.http.HttpHeaders;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@ -32,6 +29,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
|
|
||||||
import stirling.software.SPDF.model.api.PDFWithPageNums;
|
import stirling.software.SPDF.model.api.PDFWithPageNums;
|
||||||
import stirling.software.SPDF.pdf.FlexibleCSVWriter;
|
import stirling.software.SPDF.pdf.FlexibleCSVWriter;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
|
|
||||||
import technology.tabula.ObjectExtractor;
|
import technology.tabula.ObjectExtractor;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.filters;
|
package stirling.software.SPDF.controller.api.filters;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
@ -9,7 +7,6 @@ import org.apache.pdfbox.pdmodel.PDPage;
|
|||||||
import org.apache.pdfbox.pdmodel.common.PDRectangle;
|
import org.apache.pdfbox.pdmodel.common.PDRectangle;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -26,6 +23,7 @@ import stirling.software.SPDF.model.api.filter.ContainsTextRequest;
|
|||||||
import stirling.software.SPDF.model.api.filter.FileSizeRequest;
|
import stirling.software.SPDF.model.api.filter.FileSizeRequest;
|
||||||
import stirling.software.SPDF.model.api.filter.PageRotationRequest;
|
import stirling.software.SPDF.model.api.filter.PageRotationRequest;
|
||||||
import stirling.software.SPDF.model.api.filter.PageSizeRequest;
|
import stirling.software.SPDF.model.api.filter.PageSizeRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
import stirling.software.common.util.PdfUtils;
|
import stirling.software.common.util.PdfUtils;
|
||||||
|
@ -1,14 +1,11 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -22,6 +19,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
|
|
||||||
import stirling.software.SPDF.model.api.misc.AddAttachmentRequest;
|
import stirling.software.SPDF.model.api.misc.AddAttachmentRequest;
|
||||||
import stirling.software.SPDF.service.AttachmentServiceInterface;
|
import stirling.software.SPDF.service.AttachmentServiceInterface;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
@ -12,7 +10,6 @@ import org.apache.pdfbox.text.PDFTextStripper;
|
|||||||
import org.apache.pdfbox.text.TextPosition;
|
import org.apache.pdfbox.text.TextPosition;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -25,6 +22,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.misc.ExtractHeaderRequest;
|
import stirling.software.SPDF.model.api.misc.ExtractHeaderRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.awt.image.DataBufferByte;
|
import java.awt.image.DataBufferByte;
|
||||||
import java.awt.image.DataBufferInt;
|
import java.awt.image.DataBufferInt;
|
||||||
@ -21,7 +19,6 @@ import org.apache.pdfbox.rendering.PDFRenderer;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -37,6 +34,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.misc.AutoSplitPdfRequest;
|
import stirling.software.SPDF.model.api.misc.AutoSplitPdfRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -19,7 +17,6 @@ import org.springframework.http.HttpStatus;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -32,6 +29,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.misc.RemoveBlankPagesRequest;
|
import stirling.software.SPDF.model.api.misc.RemoveBlankPagesRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.PdfUtils;
|
import stirling.software.common.util.PdfUtils;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
@ -36,7 +34,6 @@ import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
|
|||||||
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
|
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -54,6 +51,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
|
|
||||||
import stirling.software.SPDF.config.EndpointConfiguration;
|
import stirling.software.SPDF.config.EndpointConfiguration;
|
||||||
import stirling.software.SPDF.model.api.misc.OptimizePdfRequest;
|
import stirling.software.SPDF.model.api.misc.OptimizePdfRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
import stirling.software.common.util.GeneralUtils;
|
import stirling.software.common.util.GeneralUtils;
|
||||||
|
@ -110,7 +110,8 @@ public class ConfigController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/endpoint-enabled")
|
@GetMapping("/endpoint-enabled")
|
||||||
public ResponseEntity<Boolean> isEndpointEnabled(@RequestParam(name = "endpoint") String endpoint) {
|
public ResponseEntity<Boolean> isEndpointEnabled(
|
||||||
|
@RequestParam(name = "endpoint") String endpoint) {
|
||||||
boolean enabled = endpointConfiguration.isEndpointEnabled(endpoint);
|
boolean enabled = endpointConfiguration.isEndpointEnabled(endpoint);
|
||||||
return ResponseEntity.ok(enabled);
|
return ResponseEntity.ok(enabled);
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
@ -15,7 +13,6 @@ import org.apache.pdfbox.pdmodel.PDDocument;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -26,6 +23,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.model.api.PDFFile;
|
import stirling.software.common.model.api.PDFFile;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -21,7 +19,6 @@ import org.apache.pdfbox.rendering.PDFRenderer;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -33,6 +30,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.misc.ExtractImageScansRequest;
|
import stirling.software.SPDF.model.api.misc.ExtractImageScansRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.CheckProgramInstall;
|
import stirling.software.common.util.CheckProgramInstall;
|
||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
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;
|
||||||
@ -29,7 +27,6 @@ import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -42,6 +39,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.PDFExtractImagesRequest;
|
import stirling.software.SPDF.model.api.PDFExtractImagesRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
import stirling.software.common.util.ImageProcessingUtils;
|
import stirling.software.common.util.ImageProcessingUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
@ -15,7 +13,6 @@ import org.apache.pdfbox.rendering.ImageType;
|
|||||||
import org.apache.pdfbox.rendering.PDFRenderer;
|
import org.apache.pdfbox.rendering.PDFRenderer;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -28,6 +25,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.misc.FlattenRequest;
|
import stirling.software.SPDF.model.api.misc.FlattenRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
@ -25,6 +23,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.misc.MetadataRequest;
|
import stirling.software.SPDF.model.api.misc.MetadataRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
import stirling.software.common.util.propertyeditor.StringToMapPropertyEditor;
|
import stirling.software.common.util.propertyeditor.StringToMapPropertyEditor;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
@ -20,7 +18,6 @@ import org.apache.pdfbox.text.PDFTextStripper;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -34,6 +31,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
|
|
||||||
import stirling.software.SPDF.config.EndpointConfiguration;
|
import stirling.software.SPDF.config.EndpointConfiguration;
|
||||||
import stirling.software.SPDF.model.api.misc.ProcessPdfWithOcrRequest;
|
import stirling.software.SPDF.model.api.misc.ProcessPdfWithOcrRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.model.ApplicationProperties;
|
import stirling.software.common.model.ApplicationProperties;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
|
@ -1,13 +1,10 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
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.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -20,6 +17,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.misc.OverlayImageRequest;
|
import stirling.software.SPDF.model.api.misc.OverlayImageRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.PdfUtils;
|
import stirling.software.common.util.PdfUtils;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -15,7 +13,6 @@ import org.apache.pdfbox.pdmodel.font.Standard14Fonts;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -27,6 +24,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.misc.AddPageNumbersRequest;
|
import stirling.software.SPDF.model.api.misc.AddPageNumbersRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.GeneralUtils;
|
import stirling.software.common.util.GeneralUtils;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.awt.print.PageFormat;
|
import java.awt.print.PageFormat;
|
||||||
|
@ -1,14 +1,11 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -21,6 +18,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.config.EndpointConfiguration;
|
import stirling.software.SPDF.config.EndpointConfiguration;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.model.api.PDFFile;
|
import stirling.software.common.model.api.PDFFile;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.ProcessExecutor;
|
import stirling.software.common.util.ProcessExecutor;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.springframework.core.io.InputStreamResource;
|
import org.springframework.core.io.InputStreamResource;
|
||||||
@ -9,7 +7,6 @@ import org.springframework.http.HttpHeaders;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@ -20,6 +17,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
|
|
||||||
import stirling.software.SPDF.model.api.misc.ReplaceAndInvertColorRequest;
|
import stirling.software.SPDF.model.api.misc.ReplaceAndInvertColorRequest;
|
||||||
import stirling.software.SPDF.service.misc.ReplaceAndInvertColorService;
|
import stirling.software.SPDF.service.misc.ReplaceAndInvertColorService;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/api/v1/misc")
|
@RequestMapping("/api/v1/misc")
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.RenderingHints;
|
import java.awt.RenderingHints;
|
||||||
@ -21,7 +19,6 @@ import org.apache.pdfbox.rendering.PDFRenderer;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -36,6 +33,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.misc.ScannerEffectRequest;
|
import stirling.software.SPDF.model.api.misc.ScannerEffectRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -11,7 +9,6 @@ import org.apache.pdfbox.pdmodel.interactive.action.PDActionJavaScript;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -22,6 +19,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.model.api.PDFFile;
|
import stirling.software.common.model.api.PDFFile;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -28,7 +26,6 @@ import org.apache.pdfbox.util.Matrix;
|
|||||||
import org.springframework.core.io.ClassPathResource;
|
import org.springframework.core.io.ClassPathResource;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -40,6 +37,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.misc.AddStampRequest;
|
import stirling.software.SPDF.model.api.misc.AddStampRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.TempFile;
|
import stirling.software.common.util.TempFile;
|
||||||
import stirling.software.common.util.TempFileManager;
|
import stirling.software.common.util.TempFileManager;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.misc;
|
package stirling.software.SPDF.controller.api.misc;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@ -14,7 +12,6 @@ import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
|
|||||||
import org.apache.pdfbox.pdmodel.interactive.form.PDField;
|
import org.apache.pdfbox.pdmodel.interactive.form.PDField;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@ -24,6 +21,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.model.api.PDFFile;
|
import stirling.software.common.model.api.PDFFile;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.pipeline;
|
package stirling.software.SPDF.controller.api.pipeline;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -14,7 +12,6 @@ import org.springframework.core.io.Resource;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -32,6 +29,7 @@ import stirling.software.SPDF.model.PipelineConfig;
|
|||||||
import stirling.software.SPDF.model.PipelineOperation;
|
import stirling.software.SPDF.model.PipelineOperation;
|
||||||
import stirling.software.SPDF.model.PipelineResult;
|
import stirling.software.SPDF.model.PipelineResult;
|
||||||
import stirling.software.SPDF.model.api.HandleDataRequest;
|
import stirling.software.SPDF.model.api.HandleDataRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.PostHogService;
|
import stirling.software.common.service.PostHogService;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.security;
|
package stirling.software.SPDF.controller.api.security;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.beans.PropertyEditorSupport;
|
import java.beans.PropertyEditorSupport;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
@ -61,7 +59,6 @@ import org.springframework.http.ResponseEntity;
|
|||||||
import org.springframework.web.bind.WebDataBinder;
|
import org.springframework.web.bind.WebDataBinder;
|
||||||
import org.springframework.web.bind.annotation.InitBinder;
|
import org.springframework.web.bind.annotation.InitBinder;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -75,6 +72,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.security.SignPDFWithCertRequest;
|
import stirling.software.SPDF.model.api.security.SignPDFWithCertRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.security;
|
package stirling.software.SPDF.controller.api.security;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
@ -48,7 +46,6 @@ import org.apache.xmpbox.xml.XmpSerializer;
|
|||||||
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.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -63,6 +60,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.model.api.PDFFile;
|
import stirling.software.common.model.api.PDFFile;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.security;
|
package stirling.software.SPDF.controller.api.security;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
@ -9,7 +7,6 @@ import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
|
|||||||
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
|
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -22,6 +19,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
|
|
||||||
import stirling.software.SPDF.model.api.security.AddPasswordRequest;
|
import stirling.software.SPDF.model.api.security.AddPasswordRequest;
|
||||||
import stirling.software.SPDF.model.api.security.PDFPasswordRequest;
|
import stirling.software.SPDF.model.api.security.PDFPasswordRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.security;
|
package stirling.software.SPDF.controller.api.security;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -20,7 +18,6 @@ import org.springframework.http.ResponseEntity;
|
|||||||
import org.springframework.web.bind.WebDataBinder;
|
import org.springframework.web.bind.WebDataBinder;
|
||||||
import org.springframework.web.bind.annotation.InitBinder;
|
import org.springframework.web.bind.annotation.InitBinder;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -36,6 +33,7 @@ import stirling.software.SPDF.model.PDFText;
|
|||||||
import stirling.software.SPDF.model.api.security.ManualRedactPdfRequest;
|
import stirling.software.SPDF.model.api.security.ManualRedactPdfRequest;
|
||||||
import stirling.software.SPDF.model.api.security.RedactPdfRequest;
|
import stirling.software.SPDF.model.api.security.RedactPdfRequest;
|
||||||
import stirling.software.SPDF.pdf.TextFinder;
|
import stirling.software.SPDF.pdf.TextFinder;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.model.api.security.RedactionArea;
|
import stirling.software.common.model.api.security.RedactionArea;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.GeneralUtils;
|
import stirling.software.common.util.GeneralUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.security;
|
package stirling.software.SPDF.controller.api.security;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
@ -11,7 +9,6 @@ import org.apache.pdfbox.pdmodel.interactive.form.PDField;
|
|||||||
import org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField;
|
import org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -22,6 +19,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.model.api.PDFFile;
|
import stirling.software.common.model.api.PDFFile;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.security;
|
package stirling.software.SPDF.controller.api.security;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.pdfbox.cos.COSDictionary;
|
import org.apache.pdfbox.cos.COSDictionary;
|
||||||
@ -25,7 +23,6 @@ import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
|
|||||||
import org.apache.pdfbox.pdmodel.interactive.form.PDField;
|
import org.apache.pdfbox.pdmodel.interactive.form.PDField;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -37,6 +34,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.security.SanitizePdfRequest;
|
import stirling.software.SPDF.model.api.security.SanitizePdfRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.security;
|
package stirling.software.SPDF.controller.api.security;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.beans.PropertyEditorSupport;
|
import java.beans.PropertyEditorSupport;
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -29,7 +27,6 @@ import org.springframework.http.ResponseEntity;
|
|||||||
import org.springframework.web.bind.WebDataBinder;
|
import org.springframework.web.bind.WebDataBinder;
|
||||||
import org.springframework.web.bind.annotation.InitBinder;
|
import org.springframework.web.bind.annotation.InitBinder;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -42,6 +39,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import stirling.software.SPDF.model.api.security.SignatureValidationRequest;
|
import stirling.software.SPDF.model.api.security.SignatureValidationRequest;
|
||||||
import stirling.software.SPDF.model.api.security.SignatureValidationResult;
|
import stirling.software.SPDF.model.api.security.SignatureValidationResult;
|
||||||
import stirling.software.SPDF.service.CertificateValidationService;
|
import stirling.software.SPDF.service.CertificateValidationService;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
|
|
||||||
@ -71,7 +69,9 @@ public class ValidateSignatureController {
|
|||||||
description =
|
description =
|
||||||
"Validates the digital signatures in a PDF file against default or custom"
|
"Validates the digital signatures in a PDF file against default or custom"
|
||||||
+ " certificates. Input:PDF Output:JSON Type:SISO")
|
+ " certificates. Input:PDF Output:JSON Type:SISO")
|
||||||
@AutoJobPostMapping(value = "/validate-signature", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
@AutoJobPostMapping(
|
||||||
|
value = "/validate-signature",
|
||||||
|
consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
||||||
public ResponseEntity<List<SignatureValidationResult>> validateSignature(
|
public ResponseEntity<List<SignatureValidationResult>> validateSignature(
|
||||||
@ModelAttribute SignatureValidationRequest request) throws IOException {
|
@ModelAttribute SignatureValidationRequest request) throws IOException {
|
||||||
List<SignatureValidationResult> results = new ArrayList<>();
|
List<SignatureValidationResult> results = new ArrayList<>();
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package stirling.software.SPDF.controller.api.security;
|
package stirling.software.SPDF.controller.api.security;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.beans.PropertyEditorSupport;
|
import java.beans.PropertyEditorSupport;
|
||||||
@ -30,7 +28,6 @@ import org.springframework.http.ResponseEntity;
|
|||||||
import org.springframework.web.bind.WebDataBinder;
|
import org.springframework.web.bind.WebDataBinder;
|
||||||
import org.springframework.web.bind.annotation.InitBinder;
|
import org.springframework.web.bind.annotation.InitBinder;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -42,6 +39,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.api.security.AddWatermarkRequest;
|
import stirling.software.SPDF.model.api.security.AddWatermarkRequest;
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||||
import stirling.software.common.util.PdfUtils;
|
import stirling.software.common.util.PdfUtils;
|
||||||
import stirling.software.common.util.WebResponseUtils;
|
import stirling.software.common.util.WebResponseUtils;
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
package stirling.software.SPDF.controller.web;
|
package stirling.software.SPDF.controller.web;
|
||||||
|
|
||||||
import org.springframework.stereotype.Controller;
|
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.Hidden;
|
import io.swagger.v3.oas.annotations.Hidden;
|
||||||
@ -12,46 +10,52 @@ import stirling.software.common.model.ApplicationProperties;
|
|||||||
import stirling.software.common.util.ApplicationContextProvider;
|
import stirling.software.common.util.ApplicationContextProvider;
|
||||||
import stirling.software.common.util.CheckProgramInstall;
|
import stirling.software.common.util.CheckProgramInstall;
|
||||||
|
|
||||||
@Controller
|
// @Controller // Disabled - Backend-only mode, no Thymeleaf UI
|
||||||
@Tag(name = "Convert", description = "Convert APIs")
|
@Tag(name = "Convert", description = "Convert APIs")
|
||||||
public class ConverterWebController {
|
public class ConverterWebController {
|
||||||
|
|
||||||
@GetMapping("/img-to-pdf")
|
@Deprecated
|
||||||
|
// @GetMapping("/img-to-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String convertImgToPdfForm(Model model) {
|
public String convertImgToPdfForm(Model model) {
|
||||||
model.addAttribute("currentPage", "img-to-pdf");
|
model.addAttribute("currentPage", "img-to-pdf");
|
||||||
return "convert/img-to-pdf";
|
return "convert/img-to-pdf";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/html-to-pdf")
|
@Deprecated
|
||||||
|
// @GetMapping("/html-to-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String convertHTMLToPdfForm(Model model) {
|
public String convertHTMLToPdfForm(Model model) {
|
||||||
model.addAttribute("currentPage", "html-to-pdf");
|
model.addAttribute("currentPage", "html-to-pdf");
|
||||||
return "convert/html-to-pdf";
|
return "convert/html-to-pdf";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/markdown-to-pdf")
|
@Deprecated
|
||||||
|
// @GetMapping("/markdown-to-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String convertMarkdownToPdfForm(Model model) {
|
public String convertMarkdownToPdfForm(Model model) {
|
||||||
model.addAttribute("currentPage", "markdown-to-pdf");
|
model.addAttribute("currentPage", "markdown-to-pdf");
|
||||||
return "convert/markdown-to-pdf";
|
return "convert/markdown-to-pdf";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/pdf-to-markdown")
|
@Deprecated
|
||||||
|
// @GetMapping("/pdf-to-markdown")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String convertPdfToMarkdownForm(Model model) {
|
public String convertPdfToMarkdownForm(Model model) {
|
||||||
model.addAttribute("currentPage", "pdf-to-markdown");
|
model.addAttribute("currentPage", "pdf-to-markdown");
|
||||||
return "convert/pdf-to-markdown";
|
return "convert/pdf-to-markdown";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/url-to-pdf")
|
@Deprecated
|
||||||
|
// @GetMapping("/url-to-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String convertURLToPdfForm(Model model) {
|
public String convertURLToPdfForm(Model model) {
|
||||||
model.addAttribute("currentPage", "url-to-pdf");
|
model.addAttribute("currentPage", "url-to-pdf");
|
||||||
return "convert/url-to-pdf";
|
return "convert/url-to-pdf";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/file-to-pdf")
|
@Deprecated
|
||||||
|
// @GetMapping("/file-to-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String convertToPdfForm(Model model) {
|
public String convertToPdfForm(Model model) {
|
||||||
model.addAttribute("currentPage", "file-to-pdf");
|
model.addAttribute("currentPage", "file-to-pdf");
|
||||||
@ -60,7 +64,8 @@ public class ConverterWebController {
|
|||||||
|
|
||||||
// PDF TO......
|
// PDF TO......
|
||||||
|
|
||||||
@GetMapping("/pdf-to-img")
|
@Deprecated
|
||||||
|
// @GetMapping("/pdf-to-img")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String pdfToimgForm(Model model) {
|
public String pdfToimgForm(Model model) {
|
||||||
boolean isPython = CheckProgramInstall.isPythonAvailable();
|
boolean isPython = CheckProgramInstall.isPythonAvailable();
|
||||||
@ -76,7 +81,8 @@ public class ConverterWebController {
|
|||||||
return "convert/pdf-to-img";
|
return "convert/pdf-to-img";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/pdf-to-html")
|
@Deprecated
|
||||||
|
// @GetMapping("/pdf-to-html")
|
||||||
@Hidden
|
@Hidden
|
||||||
public ModelAndView pdfToHTML() {
|
public ModelAndView pdfToHTML() {
|
||||||
ModelAndView modelAndView = new ModelAndView("convert/pdf-to-html");
|
ModelAndView modelAndView = new ModelAndView("convert/pdf-to-html");
|
||||||
@ -84,7 +90,8 @@ public class ConverterWebController {
|
|||||||
return modelAndView;
|
return modelAndView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/pdf-to-presentation")
|
@Deprecated
|
||||||
|
// @GetMapping("/pdf-to-presentation")
|
||||||
@Hidden
|
@Hidden
|
||||||
public ModelAndView pdfToPresentation() {
|
public ModelAndView pdfToPresentation() {
|
||||||
ModelAndView modelAndView = new ModelAndView("convert/pdf-to-presentation");
|
ModelAndView modelAndView = new ModelAndView("convert/pdf-to-presentation");
|
||||||
@ -92,7 +99,8 @@ public class ConverterWebController {
|
|||||||
return modelAndView;
|
return modelAndView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/pdf-to-text")
|
@Deprecated
|
||||||
|
// @GetMapping("/pdf-to-text")
|
||||||
@Hidden
|
@Hidden
|
||||||
public ModelAndView pdfToText() {
|
public ModelAndView pdfToText() {
|
||||||
ModelAndView modelAndView = new ModelAndView("convert/pdf-to-text");
|
ModelAndView modelAndView = new ModelAndView("convert/pdf-to-text");
|
||||||
@ -100,7 +108,8 @@ public class ConverterWebController {
|
|||||||
return modelAndView;
|
return modelAndView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/pdf-to-word")
|
@Deprecated
|
||||||
|
// @GetMapping("/pdf-to-word")
|
||||||
@Hidden
|
@Hidden
|
||||||
public ModelAndView pdfToWord() {
|
public ModelAndView pdfToWord() {
|
||||||
ModelAndView modelAndView = new ModelAndView("convert/pdf-to-word");
|
ModelAndView modelAndView = new ModelAndView("convert/pdf-to-word");
|
||||||
@ -108,7 +117,8 @@ public class ConverterWebController {
|
|||||||
return modelAndView;
|
return modelAndView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/pdf-to-xml")
|
@Deprecated
|
||||||
|
// @GetMapping("/pdf-to-xml")
|
||||||
@Hidden
|
@Hidden
|
||||||
public ModelAndView pdfToXML() {
|
public ModelAndView pdfToXML() {
|
||||||
ModelAndView modelAndView = new ModelAndView("convert/pdf-to-xml");
|
ModelAndView modelAndView = new ModelAndView("convert/pdf-to-xml");
|
||||||
@ -116,7 +126,8 @@ public class ConverterWebController {
|
|||||||
return modelAndView;
|
return modelAndView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/pdf-to-csv")
|
@Deprecated
|
||||||
|
// @GetMapping("/pdf-to-csv")
|
||||||
@Hidden
|
@Hidden
|
||||||
public ModelAndView pdfToCSV() {
|
public ModelAndView pdfToCSV() {
|
||||||
ModelAndView modelAndView = new ModelAndView("convert/pdf-to-csv");
|
ModelAndView modelAndView = new ModelAndView("convert/pdf-to-csv");
|
||||||
@ -124,14 +135,16 @@ public class ConverterWebController {
|
|||||||
return modelAndView;
|
return modelAndView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/pdf-to-pdfa")
|
@Deprecated
|
||||||
|
// @GetMapping("/pdf-to-pdfa")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String pdfToPdfAForm(Model model) {
|
public String pdfToPdfAForm(Model model) {
|
||||||
model.addAttribute("currentPage", "pdf-to-pdfa");
|
model.addAttribute("currentPage", "pdf-to-pdfa");
|
||||||
return "convert/pdf-to-pdfa";
|
return "convert/pdf-to-pdfa";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/eml-to-pdf")
|
@Deprecated
|
||||||
|
// @GetMapping("/eml-to-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String convertEmlToPdfForm(Model model) {
|
public String convertEmlToPdfForm(Model model) {
|
||||||
model.addAttribute("currentPage", "eml-to-pdf");
|
model.addAttribute("currentPage", "eml-to-pdf");
|
||||||
|
@ -12,9 +12,7 @@ import java.util.stream.Stream;
|
|||||||
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;
|
||||||
import org.springframework.stereotype.Controller;
|
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
@ -32,7 +30,7 @@ import stirling.software.common.service.UserServiceInterface;
|
|||||||
import stirling.software.common.util.ExceptionUtils;
|
import stirling.software.common.util.ExceptionUtils;
|
||||||
import stirling.software.common.util.GeneralUtils;
|
import stirling.software.common.util.GeneralUtils;
|
||||||
|
|
||||||
@Controller
|
// @Controller // Disabled - Backend-only mode, no Thymeleaf UI
|
||||||
@Tag(name = "General", description = "General APIs")
|
@Tag(name = "General", description = "General APIs")
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class GeneralWebController {
|
public class GeneralWebController {
|
||||||
@ -53,7 +51,8 @@ public class GeneralWebController {
|
|||||||
this.runtimePathConfig = runtimePathConfig;
|
this.runtimePathConfig = runtimePathConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/pipeline")
|
@Deprecated
|
||||||
|
// @GetMapping("/pipeline")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String pipelineForm(Model model) {
|
public String pipelineForm(Model model) {
|
||||||
model.addAttribute("currentPage", "pipeline");
|
model.addAttribute("currentPage", "pipeline");
|
||||||
@ -103,91 +102,104 @@ public class GeneralWebController {
|
|||||||
return "pipeline";
|
return "pipeline";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/merge-pdfs")
|
@Deprecated
|
||||||
|
// @GetMapping("/merge-pdfs")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String mergePdfForm(Model model) {
|
public String mergePdfForm(Model model) {
|
||||||
model.addAttribute("currentPage", "merge-pdfs");
|
model.addAttribute("currentPage", "merge-pdfs");
|
||||||
return "merge-pdfs";
|
return "merge-pdfs";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/split-pdf-by-sections")
|
@Deprecated
|
||||||
|
// @GetMapping("/split-pdf-by-sections")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String splitPdfBySections(Model model) {
|
public String splitPdfBySections(Model model) {
|
||||||
model.addAttribute("currentPage", "split-pdf-by-sections");
|
model.addAttribute("currentPage", "split-pdf-by-sections");
|
||||||
return "split-pdf-by-sections";
|
return "split-pdf-by-sections";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/split-pdf-by-chapters")
|
@Deprecated
|
||||||
|
// @GetMapping("/split-pdf-by-chapters")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String splitPdfByChapters(Model model) {
|
public String splitPdfByChapters(Model model) {
|
||||||
model.addAttribute("currentPage", "split-pdf-by-chapters");
|
model.addAttribute("currentPage", "split-pdf-by-chapters");
|
||||||
return "split-pdf-by-chapters";
|
return "split-pdf-by-chapters";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/view-pdf")
|
@Deprecated
|
||||||
|
// @GetMapping("/view-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String ViewPdfForm2(Model model) {
|
public String ViewPdfForm2(Model model) {
|
||||||
model.addAttribute("currentPage", "view-pdf");
|
model.addAttribute("currentPage", "view-pdf");
|
||||||
return "view-pdf";
|
return "view-pdf";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/edit-table-of-contents")
|
@Deprecated
|
||||||
|
// @GetMapping("/edit-table-of-contents")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String editTableOfContents(Model model) {
|
public String editTableOfContents(Model model) {
|
||||||
model.addAttribute("currentPage", "edit-table-of-contents");
|
model.addAttribute("currentPage", "edit-table-of-contents");
|
||||||
return "edit-table-of-contents";
|
return "edit-table-of-contents";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/multi-tool")
|
@Deprecated
|
||||||
|
// @GetMapping("/multi-tool")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String multiToolForm(Model model) {
|
public String multiToolForm(Model model) {
|
||||||
model.addAttribute("currentPage", "multi-tool");
|
model.addAttribute("currentPage", "multi-tool");
|
||||||
return "multi-tool";
|
return "multi-tool";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/remove-pages")
|
@Deprecated
|
||||||
|
// @GetMapping("/remove-pages")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String pageDeleter(Model model) {
|
public String pageDeleter(Model model) {
|
||||||
model.addAttribute("currentPage", "remove-pages");
|
model.addAttribute("currentPage", "remove-pages");
|
||||||
return "remove-pages";
|
return "remove-pages";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/pdf-organizer")
|
@Deprecated
|
||||||
|
// @GetMapping("/pdf-organizer")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String pageOrganizer(Model model) {
|
public String pageOrganizer(Model model) {
|
||||||
model.addAttribute("currentPage", "pdf-organizer");
|
model.addAttribute("currentPage", "pdf-organizer");
|
||||||
return "pdf-organizer";
|
return "pdf-organizer";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/extract-page")
|
@Deprecated
|
||||||
|
// @GetMapping("/extract-page")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String extractPages(Model model) {
|
public String extractPages(Model model) {
|
||||||
model.addAttribute("currentPage", "extract-page");
|
model.addAttribute("currentPage", "extract-page");
|
||||||
return "extract-page";
|
return "extract-page";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/pdf-to-single-page")
|
@Deprecated
|
||||||
|
// @GetMapping("/pdf-to-single-page")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String pdfToSinglePage(Model model) {
|
public String pdfToSinglePage(Model model) {
|
||||||
model.addAttribute("currentPage", "pdf-to-single-page");
|
model.addAttribute("currentPage", "pdf-to-single-page");
|
||||||
return "pdf-to-single-page";
|
return "pdf-to-single-page";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/rotate-pdf")
|
@Deprecated
|
||||||
|
// @GetMapping("/rotate-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String rotatePdfForm(Model model) {
|
public String rotatePdfForm(Model model) {
|
||||||
model.addAttribute("currentPage", "rotate-pdf");
|
model.addAttribute("currentPage", "rotate-pdf");
|
||||||
return "rotate-pdf";
|
return "rotate-pdf";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/split-pdfs")
|
@Deprecated
|
||||||
|
// @GetMapping("/split-pdfs")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String splitPdfForm(Model model) {
|
public String splitPdfForm(Model model) {
|
||||||
model.addAttribute("currentPage", "split-pdfs");
|
model.addAttribute("currentPage", "split-pdfs");
|
||||||
return "split-pdfs";
|
return "split-pdfs";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/sign")
|
@Deprecated
|
||||||
|
// @GetMapping("/sign")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String signForm(Model model) {
|
public String signForm(Model model) {
|
||||||
String username = "";
|
String username = "";
|
||||||
@ -202,28 +214,32 @@ public class GeneralWebController {
|
|||||||
return "sign";
|
return "sign";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/multi-page-layout")
|
@Deprecated
|
||||||
|
// @GetMapping("/multi-page-layout")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String multiPageLayoutForm(Model model) {
|
public String multiPageLayoutForm(Model model) {
|
||||||
model.addAttribute("currentPage", "multi-page-layout");
|
model.addAttribute("currentPage", "multi-page-layout");
|
||||||
return "multi-page-layout";
|
return "multi-page-layout";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/scale-pages")
|
@Deprecated
|
||||||
|
// @GetMapping("/scale-pages")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String scalePagesFrom(Model model) {
|
public String scalePagesFrom(Model model) {
|
||||||
model.addAttribute("currentPage", "scale-pages");
|
model.addAttribute("currentPage", "scale-pages");
|
||||||
return "scale-pages";
|
return "scale-pages";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/split-by-size-or-count")
|
@Deprecated
|
||||||
|
// @GetMapping("/split-by-size-or-count")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String splitBySizeOrCount(Model model) {
|
public String splitBySizeOrCount(Model model) {
|
||||||
model.addAttribute("currentPage", "split-by-size-or-count");
|
model.addAttribute("currentPage", "split-by-size-or-count");
|
||||||
return "split-by-size-or-count";
|
return "split-by-size-or-count";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/overlay-pdf")
|
@Deprecated
|
||||||
|
// @GetMapping("/overlay-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String overlayPdf(Model model) {
|
public String overlayPdf(Model model) {
|
||||||
model.addAttribute("currentPage", "overlay-pdf");
|
model.addAttribute("currentPage", "overlay-pdf");
|
||||||
@ -296,21 +312,24 @@ public class GeneralWebController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/crop")
|
@Deprecated
|
||||||
|
// @GetMapping("/crop")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String cropForm(Model model) {
|
public String cropForm(Model model) {
|
||||||
model.addAttribute("currentPage", "crop");
|
model.addAttribute("currentPage", "crop");
|
||||||
return "crop";
|
return "crop";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/auto-split-pdf")
|
@Deprecated
|
||||||
|
// @GetMapping("/auto-split-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String autoSPlitPDFForm(Model model) {
|
public String autoSPlitPDFForm(Model model) {
|
||||||
model.addAttribute("currentPage", "auto-split-pdf");
|
model.addAttribute("currentPage", "auto-split-pdf");
|
||||||
return "auto-split-pdf";
|
return "auto-split-pdf";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/remove-image-pdf")
|
@Deprecated
|
||||||
|
// @GetMapping("/remove-image-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String removeImagePdfForm(Model model) {
|
public String removeImagePdfForm(Model model) {
|
||||||
model.addAttribute("currentPage", "remove-image-pdf");
|
model.addAttribute("currentPage", "remove-image-pdf");
|
||||||
|
@ -9,7 +9,6 @@ import java.util.Map;
|
|||||||
import org.springframework.core.io.ClassPathResource;
|
import org.springframework.core.io.ClassPathResource;
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.stereotype.Controller;
|
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
@ -26,20 +25,22 @@ import stirling.software.SPDF.model.Dependency;
|
|||||||
import stirling.software.common.model.ApplicationProperties;
|
import stirling.software.common.model.ApplicationProperties;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Controller
|
// @Controller // Disabled - Backend-only mode, no Thymeleaf UI
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class HomeWebController {
|
public class HomeWebController {
|
||||||
|
|
||||||
private final ApplicationProperties applicationProperties;
|
private final ApplicationProperties applicationProperties;
|
||||||
|
|
||||||
@GetMapping("/about")
|
@Deprecated
|
||||||
|
// @GetMapping("/about")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String gameForm(Model model) {
|
public String gameForm(Model model) {
|
||||||
model.addAttribute("currentPage", "about");
|
model.addAttribute("currentPage", "about");
|
||||||
return "about";
|
return "about";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/licenses")
|
@Deprecated
|
||||||
|
// @GetMapping("/licenses")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String licensesForm(Model model) {
|
public String licensesForm(Model model) {
|
||||||
model.addAttribute("currentPage", "licenses");
|
model.addAttribute("currentPage", "licenses");
|
||||||
@ -56,12 +57,14 @@ public class HomeWebController {
|
|||||||
return "licenses";
|
return "licenses";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/releases")
|
@Deprecated
|
||||||
|
// @GetMapping("/releases")
|
||||||
public String getReleaseNotes(Model model) {
|
public String getReleaseNotes(Model model) {
|
||||||
return "releases";
|
return "releases";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/")
|
@Deprecated
|
||||||
|
// @GetMapping("/")
|
||||||
public String home(Model model) {
|
public String home(Model model) {
|
||||||
model.addAttribute("currentPage", "home");
|
model.addAttribute("currentPage", "home");
|
||||||
String showSurvey = System.getenv("SHOW_SURVEY");
|
String showSurvey = System.getenv("SHOW_SURVEY");
|
||||||
@ -70,12 +73,14 @@ public class HomeWebController {
|
|||||||
return "home";
|
return "home";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/home")
|
@Deprecated
|
||||||
|
// @GetMapping("/home")
|
||||||
public String root(Model model) {
|
public String root(Model model) {
|
||||||
return "redirect:/";
|
return "redirect:/";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/home-legacy")
|
@Deprecated
|
||||||
|
// @GetMapping("/home-legacy")
|
||||||
public String redirectHomeLegacy() {
|
public String redirectHomeLegacy() {
|
||||||
return "redirect:/";
|
return "redirect:/";
|
||||||
}
|
}
|
||||||
|
@ -5,9 +5,7 @@ import java.util.Arrays;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.springframework.stereotype.Controller;
|
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.Hidden;
|
import io.swagger.v3.oas.annotations.Hidden;
|
||||||
@ -18,28 +16,31 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import stirling.software.common.model.ApplicationProperties;
|
import stirling.software.common.model.ApplicationProperties;
|
||||||
import stirling.software.common.util.CheckProgramInstall;
|
import stirling.software.common.util.CheckProgramInstall;
|
||||||
|
|
||||||
@Controller
|
// @Controller // Disabled - Backend-only mode, no Thymeleaf UI
|
||||||
@Tag(name = "Misc", description = "Miscellaneous APIs")
|
@Tag(name = "Misc", description = "Miscellaneous APIs")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class OtherWebController {
|
public class OtherWebController {
|
||||||
|
|
||||||
private final ApplicationProperties applicationProperties;
|
private final ApplicationProperties applicationProperties;
|
||||||
|
|
||||||
@GetMapping("/compress-pdf")
|
@Deprecated
|
||||||
|
// @GetMapping("/compress-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String compressPdfForm(Model model) {
|
public String compressPdfForm(Model model) {
|
||||||
model.addAttribute("currentPage", "compress-pdf");
|
model.addAttribute("currentPage", "compress-pdf");
|
||||||
return "misc/compress-pdf";
|
return "misc/compress-pdf";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/replace-and-invert-color-pdf")
|
@Deprecated
|
||||||
|
// @GetMapping("/replace-and-invert-color-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String replaceAndInvertColorPdfForm(Model model) {
|
public String replaceAndInvertColorPdfForm(Model model) {
|
||||||
model.addAttribute("currentPage", "replace-invert-color-pdf");
|
model.addAttribute("currentPage", "replace-invert-color-pdf");
|
||||||
return "misc/replace-color";
|
return "misc/replace-color";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/extract-image-scans")
|
@Deprecated
|
||||||
|
// @GetMapping("/extract-image-scans")
|
||||||
@Hidden
|
@Hidden
|
||||||
public ModelAndView extractImageScansForm() {
|
public ModelAndView extractImageScansForm() {
|
||||||
ModelAndView modelAndView = new ModelAndView("misc/extract-image-scans");
|
ModelAndView modelAndView = new ModelAndView("misc/extract-image-scans");
|
||||||
@ -49,70 +50,80 @@ public class OtherWebController {
|
|||||||
return modelAndView;
|
return modelAndView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/show-javascript")
|
@Deprecated
|
||||||
|
// @GetMapping("/show-javascript")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String extractJavascriptForm(Model model) {
|
public String extractJavascriptForm(Model model) {
|
||||||
model.addAttribute("currentPage", "show-javascript");
|
model.addAttribute("currentPage", "show-javascript");
|
||||||
return "misc/show-javascript";
|
return "misc/show-javascript";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/stamp")
|
@Deprecated
|
||||||
|
// @GetMapping("/stamp")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String stampForm(Model model) {
|
public String stampForm(Model model) {
|
||||||
model.addAttribute("currentPage", "stamp");
|
model.addAttribute("currentPage", "stamp");
|
||||||
return "misc/stamp";
|
return "misc/stamp";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/add-page-numbers")
|
@Deprecated
|
||||||
|
// @GetMapping("/add-page-numbers")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String addPageNumbersForm(Model model) {
|
public String addPageNumbersForm(Model model) {
|
||||||
model.addAttribute("currentPage", "add-page-numbers");
|
model.addAttribute("currentPage", "add-page-numbers");
|
||||||
return "misc/add-page-numbers";
|
return "misc/add-page-numbers";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/scanner-effect")
|
@Deprecated
|
||||||
|
// @GetMapping("/scanner-effect")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String scannerEffectForm(Model model) {
|
public String scannerEffectForm(Model model) {
|
||||||
model.addAttribute("currentPage", "scanner-effect");
|
model.addAttribute("currentPage", "scanner-effect");
|
||||||
return "misc/scanner-effect";
|
return "misc/scanner-effect";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/extract-images")
|
@Deprecated
|
||||||
|
// @GetMapping("/extract-images")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String extractImagesForm(Model model) {
|
public String extractImagesForm(Model model) {
|
||||||
model.addAttribute("currentPage", "extract-images");
|
model.addAttribute("currentPage", "extract-images");
|
||||||
return "misc/extract-images";
|
return "misc/extract-images";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/flatten")
|
@Deprecated
|
||||||
|
// @GetMapping("/flatten")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String flattenForm(Model model) {
|
public String flattenForm(Model model) {
|
||||||
model.addAttribute("currentPage", "flatten");
|
model.addAttribute("currentPage", "flatten");
|
||||||
return "misc/flatten";
|
return "misc/flatten";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/change-metadata")
|
@Deprecated
|
||||||
|
// @GetMapping("/change-metadata")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String addWatermarkForm(Model model) {
|
public String addWatermarkForm(Model model) {
|
||||||
model.addAttribute("currentPage", "change-metadata");
|
model.addAttribute("currentPage", "change-metadata");
|
||||||
return "misc/change-metadata";
|
return "misc/change-metadata";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/unlock-pdf-forms")
|
@Deprecated
|
||||||
|
// @GetMapping("/unlock-pdf-forms")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String unlockPDFForms(Model model) {
|
public String unlockPDFForms(Model model) {
|
||||||
model.addAttribute("currentPage", "unlock-pdf-forms");
|
model.addAttribute("currentPage", "unlock-pdf-forms");
|
||||||
return "misc/unlock-pdf-forms";
|
return "misc/unlock-pdf-forms";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/compare")
|
@Deprecated
|
||||||
|
// @GetMapping("/compare")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String compareForm(Model model) {
|
public String compareForm(Model model) {
|
||||||
model.addAttribute("currentPage", "compare");
|
model.addAttribute("currentPage", "compare");
|
||||||
return "misc/compare";
|
return "misc/compare";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/print-file")
|
@Deprecated
|
||||||
|
// @GetMapping("/print-file")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String printFileForm(Model model) {
|
public String printFileForm(Model model) {
|
||||||
model.addAttribute("currentPage", "print-file");
|
model.addAttribute("currentPage", "print-file");
|
||||||
@ -133,7 +144,8 @@ public class OtherWebController {
|
|||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/ocr-pdf")
|
@Deprecated
|
||||||
|
// @GetMapping("/ocr-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public ModelAndView ocrPdfPage() {
|
public ModelAndView ocrPdfPage() {
|
||||||
ModelAndView modelAndView = new ModelAndView("misc/ocr-pdf");
|
ModelAndView modelAndView = new ModelAndView("misc/ocr-pdf");
|
||||||
@ -143,56 +155,64 @@ public class OtherWebController {
|
|||||||
return modelAndView;
|
return modelAndView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/add-image")
|
@Deprecated
|
||||||
|
// @GetMapping("/add-image")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String overlayImage(Model model) {
|
public String overlayImage(Model model) {
|
||||||
model.addAttribute("currentPage", "add-image");
|
model.addAttribute("currentPage", "add-image");
|
||||||
return "misc/add-image";
|
return "misc/add-image";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/adjust-contrast")
|
@Deprecated
|
||||||
|
// @GetMapping("/adjust-contrast")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String contrast(Model model) {
|
public String contrast(Model model) {
|
||||||
model.addAttribute("currentPage", "adjust-contrast");
|
model.addAttribute("currentPage", "adjust-contrast");
|
||||||
return "misc/adjust-contrast";
|
return "misc/adjust-contrast";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/repair")
|
@Deprecated
|
||||||
|
// @GetMapping("/repair")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String repairForm(Model model) {
|
public String repairForm(Model model) {
|
||||||
model.addAttribute("currentPage", "repair");
|
model.addAttribute("currentPage", "repair");
|
||||||
return "misc/repair";
|
return "misc/repair";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/remove-blanks")
|
@Deprecated
|
||||||
|
// @GetMapping("/remove-blanks")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String removeBlanksForm(Model model) {
|
public String removeBlanksForm(Model model) {
|
||||||
model.addAttribute("currentPage", "remove-blanks");
|
model.addAttribute("currentPage", "remove-blanks");
|
||||||
return "misc/remove-blanks";
|
return "misc/remove-blanks";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/remove-annotations")
|
@Deprecated
|
||||||
|
// @GetMapping("/remove-annotations")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String removeAnnotationsForm(Model model) {
|
public String removeAnnotationsForm(Model model) {
|
||||||
model.addAttribute("currentPage", "remove-annotations");
|
model.addAttribute("currentPage", "remove-annotations");
|
||||||
return "misc/remove-annotations";
|
return "misc/remove-annotations";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/auto-crop")
|
@Deprecated
|
||||||
|
// @GetMapping("/auto-crop")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String autoCropForm(Model model) {
|
public String autoCropForm(Model model) {
|
||||||
model.addAttribute("currentPage", "auto-crop");
|
model.addAttribute("currentPage", "auto-crop");
|
||||||
return "misc/auto-crop";
|
return "misc/auto-crop";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/auto-rename")
|
@Deprecated
|
||||||
|
// @GetMapping("/auto-rename")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String autoRenameForm(Model model) {
|
public String autoRenameForm(Model model) {
|
||||||
model.addAttribute("currentPage", "auto-rename");
|
model.addAttribute("currentPage", "auto-rename");
|
||||||
return "misc/auto-rename";
|
return "misc/auto-rename";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/add-attachments")
|
@Deprecated
|
||||||
|
// @GetMapping("/add-attachments")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String attachmentsForm(Model model) {
|
public String attachmentsForm(Model model) {
|
||||||
model.addAttribute("currentPage", "add-attachments");
|
model.addAttribute("currentPage", "add-attachments");
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
package stirling.software.SPDF.controller.web;
|
package stirling.software.SPDF.controller.web;
|
||||||
|
|
||||||
import org.springframework.stereotype.Controller;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
|
||||||
@Controller
|
// @Controller // Disabled - Backend-only mode, no Thymeleaf UI
|
||||||
public class ReactRoutingController {
|
public class ReactRoutingController {
|
||||||
|
|
||||||
@GetMapping("/{path:^(?!api|static|robots\\.txt|favicon\\.ico)[^\\.]*$}")
|
@GetMapping("/{path:^(?!api|static|robots\\.txt|favicon\\.ico)[^\\.]*$}")
|
||||||
|
@ -1,86 +1,95 @@
|
|||||||
package stirling.software.SPDF.controller.web;
|
package stirling.software.SPDF.controller.web;
|
||||||
|
|
||||||
import org.springframework.stereotype.Controller;
|
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
@Controller
|
// @Controller // Disabled - Backend-only mode, no Thymeleaf UI
|
||||||
@Tag(name = "Security", description = "Security APIs")
|
@Tag(name = "Security", description = "Security APIs")
|
||||||
public class SecurityWebController {
|
public class SecurityWebController {
|
||||||
|
|
||||||
@GetMapping("/auto-redact")
|
@Deprecated
|
||||||
|
// @GetMapping("/auto-redact")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String autoRedactForm(Model model) {
|
public String autoRedactForm(Model model) {
|
||||||
model.addAttribute("currentPage", "auto-redact");
|
model.addAttribute("currentPage", "auto-redact");
|
||||||
return "security/auto-redact";
|
return "security/auto-redact";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/redact")
|
@Deprecated
|
||||||
|
// @GetMapping("/redact")
|
||||||
public String redactForm(Model model) {
|
public String redactForm(Model model) {
|
||||||
model.addAttribute("currentPage", "redact");
|
model.addAttribute("currentPage", "redact");
|
||||||
return "security/redact";
|
return "security/redact";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/add-password")
|
@Deprecated
|
||||||
|
// @GetMapping("/add-password")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String addPasswordForm(Model model) {
|
public String addPasswordForm(Model model) {
|
||||||
model.addAttribute("currentPage", "add-password");
|
model.addAttribute("currentPage", "add-password");
|
||||||
return "security/add-password";
|
return "security/add-password";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/change-permissions")
|
@Deprecated
|
||||||
|
// @GetMapping("/change-permissions")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String permissionsForm(Model model) {
|
public String permissionsForm(Model model) {
|
||||||
model.addAttribute("currentPage", "change-permissions");
|
model.addAttribute("currentPage", "change-permissions");
|
||||||
return "security/change-permissions";
|
return "security/change-permissions";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/remove-password")
|
@Deprecated
|
||||||
|
// @GetMapping("/remove-password")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String removePasswordForm(Model model) {
|
public String removePasswordForm(Model model) {
|
||||||
model.addAttribute("currentPage", "remove-password");
|
model.addAttribute("currentPage", "remove-password");
|
||||||
return "security/remove-password";
|
return "security/remove-password";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/add-watermark")
|
@Deprecated
|
||||||
|
// @GetMapping("/add-watermark")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String addWatermarkForm(Model model) {
|
public String addWatermarkForm(Model model) {
|
||||||
model.addAttribute("currentPage", "add-watermark");
|
model.addAttribute("currentPage", "add-watermark");
|
||||||
return "security/add-watermark";
|
return "security/add-watermark";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/cert-sign")
|
@Deprecated
|
||||||
|
// @GetMapping("/cert-sign")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String certSignForm(Model model) {
|
public String certSignForm(Model model) {
|
||||||
model.addAttribute("currentPage", "cert-sign");
|
model.addAttribute("currentPage", "cert-sign");
|
||||||
return "security/cert-sign";
|
return "security/cert-sign";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/validate-signature")
|
@Deprecated
|
||||||
|
// @GetMapping("/validate-signature")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String certSignVerifyForm(Model model) {
|
public String certSignVerifyForm(Model model) {
|
||||||
model.addAttribute("currentPage", "validate-signature");
|
model.addAttribute("currentPage", "validate-signature");
|
||||||
return "security/validate-signature";
|
return "security/validate-signature";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/remove-cert-sign")
|
@Deprecated
|
||||||
|
// @GetMapping("/remove-cert-sign")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String certUnSignForm(Model model) {
|
public String certUnSignForm(Model model) {
|
||||||
model.addAttribute("currentPage", "remove-cert-sign");
|
model.addAttribute("currentPage", "remove-cert-sign");
|
||||||
return "security/remove-cert-sign";
|
return "security/remove-cert-sign";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/sanitize-pdf")
|
@Deprecated
|
||||||
|
// @GetMapping("/sanitize-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String sanitizeForm(Model model) {
|
public String sanitizeForm(Model model) {
|
||||||
model.addAttribute("currentPage", "sanitize-pdf");
|
model.addAttribute("currentPage", "sanitize-pdf");
|
||||||
return "security/sanitize-pdf";
|
return "security/sanitize-pdf";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/get-info-on-pdf")
|
@Deprecated
|
||||||
|
// @GetMapping("/get-info-on-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String getInfo(Model model) {
|
public String getInfo(Model model) {
|
||||||
model.addAttribute("currentPage", "get-info-on-pdf");
|
model.addAttribute("currentPage", "get-info-on-pdf");
|
||||||
|
@ -6,7 +6,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.stereotype.Controller;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
@ -14,7 +13,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|||||||
import stirling.software.SPDF.service.SignatureService;
|
import stirling.software.SPDF.service.SignatureService;
|
||||||
import stirling.software.common.service.UserServiceInterface;
|
import stirling.software.common.service.UserServiceInterface;
|
||||||
|
|
||||||
@Controller
|
// @Controller // Disabled - Backend-only mode, no Thymeleaf UI
|
||||||
@RequestMapping("/api/v1/general")
|
@RequestMapping("/api/v1/general")
|
||||||
public class SignatureController {
|
public class SignatureController {
|
||||||
|
|
||||||
|
@ -1,10 +1,7 @@
|
|||||||
package stirling.software.SPDF.model.api.converters;
|
package stirling.software.SPDF.model.api.converters;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -12,6 +9,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.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.common.model.api.PDFFile;
|
import stirling.software.common.model.api.PDFFile;
|
||||||
import stirling.software.common.util.PDFToFile;
|
import stirling.software.common.util.PDFToFile;
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.thymeleaf.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ public class SignatureService {
|
|||||||
List<SignatureFile> signatures = new ArrayList<>();
|
List<SignatureFile> signatures = new ArrayList<>();
|
||||||
|
|
||||||
// Get signatures from user's personal folder
|
// Get signatures from user's personal folder
|
||||||
if (!StringUtils.isEmptyOrWhitespace(username)) {
|
if (StringUtils.hasText(username)) {
|
||||||
Path userFolder = Paths.get(SIGNATURE_BASE_PATH, username);
|
Path userFolder = Paths.get(SIGNATURE_BASE_PATH, username);
|
||||||
if (Files.exists(userFolder)) {
|
if (Files.exists(userFolder)) {
|
||||||
try {
|
try {
|
||||||
|
@ -25,7 +25,7 @@ server.servlet.context-path=${SYSTEM_ROOTURIPATH:/}
|
|||||||
spring.devtools.restart.enabled=true
|
spring.devtools.restart.enabled=true
|
||||||
spring.devtools.livereload.enabled=true
|
spring.devtools.livereload.enabled=true
|
||||||
spring.devtools.restart.exclude=stirling.software.proprietary.security/**
|
spring.devtools.restart.exclude=stirling.software.proprietary.security/**
|
||||||
spring.thymeleaf.encoding=UTF-8
|
# spring.thymeleaf.encoding=UTF-8 # Disabled - React frontend replaces Thymeleaf
|
||||||
spring.web.resources.mime-mappings.webmanifest=application/manifest+json
|
spring.web.resources.mime-mappings.webmanifest=application/manifest+json
|
||||||
spring.mvc.async.request-timeout=${SYSTEM_CONNECTIONTIMEOUTMILLISECONDS:1200000}
|
spring.mvc.async.request-timeout=${SYSTEM_CONNECTIONTIMEOUTMILLISECONDS:1200000}
|
||||||
|
|
||||||
@ -35,6 +35,14 @@ spring.datasource.username=sa
|
|||||||
spring.datasource.password=
|
spring.datasource.password=
|
||||||
spring.h2.console.enabled=false
|
spring.h2.console.enabled=false
|
||||||
spring.jpa.hibernate.ddl-auto=update
|
spring.jpa.hibernate.ddl-auto=update
|
||||||
|
# Defer datasource initialization to ensure that the database is fully set up
|
||||||
|
# before Hibernate attempts to access it. This is particularly useful when
|
||||||
|
# using database initialization scripts or tools.
|
||||||
|
spring.jpa.defer-datasource-initialization=true
|
||||||
|
|
||||||
|
# Disable SQL logging to avoid cluttering the logs in production. Enable this
|
||||||
|
# property during development if you need to debug SQL queries.
|
||||||
|
spring.jpa.show-sql=false
|
||||||
server.servlet.session.timeout:30m
|
server.servlet.session.timeout:30m
|
||||||
# Change the default URL path for OpenAPI JSON
|
# Change the default URL path for OpenAPI JSON
|
||||||
springdoc.api-docs.path=/v1/api-docs
|
springdoc.api-docs.path=/v1/api-docs
|
||||||
|
@ -35,6 +35,8 @@ dependencies {
|
|||||||
api 'org.springframework:spring-webmvc'
|
api 'org.springframework:spring-webmvc'
|
||||||
api 'org.springframework.session:spring-session-core'
|
api 'org.springframework.session:spring-session-core'
|
||||||
api "org.springframework.security:spring-security-core:$springSecuritySamlVersion"
|
api "org.springframework.security:spring-security-core:$springSecuritySamlVersion"
|
||||||
|
api "org.springframework.security:spring-security-web:$springSecuritySamlVersion"
|
||||||
|
api "org.springframework.security:spring-security-config:$springSecuritySamlVersion"
|
||||||
api "org.springframework.security:spring-security-saml2-service-provider:$springSecuritySamlVersion"
|
api "org.springframework.security:spring-security-saml2-service-provider:$springSecuritySamlVersion"
|
||||||
api 'org.springframework.boot:spring-boot-starter-jetty'
|
api 'org.springframework.boot:spring-boot-starter-jetty'
|
||||||
api 'org.springframework.boot:spring-boot-starter-security'
|
api 'org.springframework.boot:spring-boot-starter-security'
|
||||||
@ -47,7 +49,7 @@ dependencies {
|
|||||||
// https://mvnrepository.com/artifact/com.bucket4j/bucket4j_jdk17
|
// https://mvnrepository.com/artifact/com.bucket4j/bucket4j_jdk17
|
||||||
implementation 'org.bouncycastle:bcprov-jdk18on:1.81'
|
implementation 'org.bouncycastle:bcprov-jdk18on:1.81'
|
||||||
|
|
||||||
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.3.RELEASE'
|
// implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.3.RELEASE' // Removed - UI moved to React frontend
|
||||||
api 'io.micrometer:micrometer-registry-prometheus'
|
api 'io.micrometer:micrometer-registry-prometheus'
|
||||||
implementation 'com.unboundid.product.scim2:scim2-sdk-client:4.0.0'
|
implementation 'com.unboundid.product.scim2:scim2-sdk-client:4.0.0'
|
||||||
runtimeOnly 'com.h2database:h2:2.3.232' // Don't upgrade h2database
|
runtimeOnly 'com.h2database:h2:2.3.232' // Don't upgrade h2database
|
||||||
|
@ -22,7 +22,6 @@ import org.springframework.http.HttpHeaders;
|
|||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.stereotype.Controller;
|
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
@ -46,7 +45,7 @@ import stirling.software.proprietary.security.config.EnterpriseEndpoint;
|
|||||||
|
|
||||||
/** Controller for the audit dashboard. Admin-only access. */
|
/** Controller for the audit dashboard. Admin-only access. */
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Controller
|
// @Controller // Disabled - Backend-only mode, no Thymeleaf UI
|
||||||
@RequestMapping("/audit")
|
@RequestMapping("/audit")
|
||||||
@PreAuthorize("hasRole('ADMIN')")
|
@PreAuthorize("hasRole('ADMIN')")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
|
@ -12,13 +12,10 @@ import java.util.Map;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
import org.springframework.security.core.userdetails.UserDetails;
|
import org.springframework.security.core.userdetails.UserDetails;
|
||||||
import org.springframework.security.oauth2.core.user.OAuth2User;
|
import org.springframework.security.oauth2.core.user.OAuth2User;
|
||||||
import org.springframework.stereotype.Controller;
|
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
@ -48,7 +45,7 @@ import stirling.software.proprietary.security.saml2.CustomSaml2AuthenticatedPrin
|
|||||||
import stirling.software.proprietary.security.service.TeamService;
|
import stirling.software.proprietary.security.service.TeamService;
|
||||||
import stirling.software.proprietary.security.session.SessionPersistentRegistry;
|
import stirling.software.proprietary.security.session.SessionPersistentRegistry;
|
||||||
|
|
||||||
@Controller
|
// @Controller // Disabled - Backend-only mode, no Thymeleaf UI
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Tag(name = "Account Security", description = "Account Security APIs")
|
@Tag(name = "Account Security", description = "Account Security APIs")
|
||||||
public class AccountWebController {
|
public class AccountWebController {
|
||||||
@ -75,7 +72,7 @@ public class AccountWebController {
|
|||||||
this.teamRepository = teamRepository;
|
this.teamRepository = teamRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/login")
|
// @GetMapping("/login")
|
||||||
public String login(HttpServletRequest request, Model model, Authentication authentication) {
|
public String login(HttpServletRequest request, Model model, Authentication authentication) {
|
||||||
// If the user is already authenticated, redirect them to the home page.
|
// If the user is already authenticated, redirect them to the home page.
|
||||||
if (authentication != null && authentication.isAuthenticated()) {
|
if (authentication != null && authentication.isAuthenticated()) {
|
||||||
@ -203,8 +200,8 @@ public class AccountWebController {
|
|||||||
return "login";
|
return "login";
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
// @PreAuthorize("hasRole('ROLE_ADMIN')")
|
||||||
@GetMapping("/usage")
|
// @GetMapping("/usage")
|
||||||
public String showUsage() {
|
public String showUsage() {
|
||||||
if (!runningEE) {
|
if (!runningEE) {
|
||||||
return "error";
|
return "error";
|
||||||
@ -212,8 +209,8 @@ public class AccountWebController {
|
|||||||
return "usage";
|
return "usage";
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
// @PreAuthorize("hasRole('ROLE_ADMIN')")
|
||||||
@GetMapping("/adminSettings")
|
// @GetMapping("/adminSettings")
|
||||||
public String showAddUserForm(
|
public String showAddUserForm(
|
||||||
HttpServletRequest request, Model model, Authentication authentication) {
|
HttpServletRequest request, Model model, Authentication authentication) {
|
||||||
List<User> allUsers = userRepository.findAllWithTeam();
|
List<User> allUsers = userRepository.findAllWithTeam();
|
||||||
@ -371,8 +368,8 @@ public class AccountWebController {
|
|||||||
return "adminSettings";
|
return "adminSettings";
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
// @PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
||||||
@GetMapping("/account")
|
// @GetMapping("/account")
|
||||||
public String account(HttpServletRequest request, Model model, Authentication authentication) {
|
public String account(HttpServletRequest request, Model model, Authentication authentication) {
|
||||||
if (authentication == null || !authentication.isAuthenticated()) {
|
if (authentication == null || !authentication.isAuthenticated()) {
|
||||||
return "redirect:/";
|
return "redirect:/";
|
||||||
@ -436,8 +433,8 @@ public class AccountWebController {
|
|||||||
return "account";
|
return "account";
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
// @PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
|
||||||
@GetMapping("/change-creds")
|
// @GetMapping("/change-creds")
|
||||||
public String changeCreds(
|
public String changeCreds(
|
||||||
HttpServletRequest request, Model model, Authentication authentication) {
|
HttpServletRequest request, Model model, Authentication authentication) {
|
||||||
if (authentication == null || !authentication.isAuthenticated()) {
|
if (authentication == null || !authentication.isAuthenticated()) {
|
||||||
|
@ -1,13 +1,10 @@
|
|||||||
package stirling.software.proprietary.security.controller.api;
|
package stirling.software.proprietary.security.controller.api;
|
||||||
|
|
||||||
import stirling.software.common.annotations.AutoJobPostMapping;
|
|
||||||
|
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.mail.MailSendException;
|
import org.springframework.mail.MailSendException;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@ -20,6 +17,7 @@ import jakarta.validation.Valid;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import stirling.software.common.annotations.AutoJobPostMapping;
|
||||||
import stirling.software.proprietary.security.model.api.Email;
|
import stirling.software.proprietary.security.model.api.Email;
|
||||||
import stirling.software.proprietary.security.service.EmailService;
|
import stirling.software.proprietary.security.service.EmailService;
|
||||||
|
|
||||||
|
@ -4,9 +4,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
import org.springframework.stereotype.Controller;
|
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
|
||||||
@ -17,15 +15,16 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import stirling.software.common.model.FileInfo;
|
import stirling.software.common.model.FileInfo;
|
||||||
import stirling.software.proprietary.security.service.DatabaseService;
|
import stirling.software.proprietary.security.service.DatabaseService;
|
||||||
|
|
||||||
@Controller
|
// @Controller // Disabled - Backend-only mode, no Thymeleaf UI
|
||||||
@Tag(name = "Database Management", description = "Database management and security APIs")
|
@Tag(name = "Database Management", description = "Database management and security APIs")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class DatabaseWebController {
|
public class DatabaseWebController {
|
||||||
|
|
||||||
private final DatabaseService databaseService;
|
private final DatabaseService databaseService;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
||||||
@GetMapping("/database")
|
// @GetMapping("/database")
|
||||||
public String database(HttpServletRequest request, Model model, Authentication authentication) {
|
public String database(HttpServletRequest request, Model model, Authentication authentication) {
|
||||||
String error = request.getParameter("error");
|
String error = request.getParameter("error");
|
||||||
String confirmed = request.getParameter("infoMessage");
|
String confirmed = request.getParameter("infoMessage");
|
||||||
|
@ -6,9 +6,7 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.stereotype.Controller;
|
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
@ -25,7 +23,7 @@ import stirling.software.proprietary.security.model.User;
|
|||||||
import stirling.software.proprietary.security.repository.TeamRepository;
|
import stirling.software.proprietary.security.repository.TeamRepository;
|
||||||
import stirling.software.proprietary.security.service.TeamService;
|
import stirling.software.proprietary.security.service.TeamService;
|
||||||
|
|
||||||
@Controller
|
// @Controller // Disabled - Backend-only mode, no Thymeleaf UI
|
||||||
@RequestMapping("/teams")
|
@RequestMapping("/teams")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ -35,7 +33,8 @@ public class TeamWebController {
|
|||||||
private final SessionRepository sessionRepository;
|
private final SessionRepository sessionRepository;
|
||||||
private final UserRepository userRepository;
|
private final UserRepository userRepository;
|
||||||
|
|
||||||
@GetMapping
|
@Deprecated
|
||||||
|
// @GetMapping
|
||||||
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
||||||
public String listTeams(HttpServletRequest request, Model model) {
|
public String listTeams(HttpServletRequest request, Model model) {
|
||||||
// Get teams with user counts using a DTO projection
|
// Get teams with user counts using a DTO projection
|
||||||
@ -86,7 +85,8 @@ public class TeamWebController {
|
|||||||
return "accounts/teams";
|
return "accounts/teams";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/{id}")
|
@Deprecated
|
||||||
|
// @GetMapping("/{id}")
|
||||||
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
||||||
public String viewTeamDetails(
|
public String viewTeamDetails(
|
||||||
HttpServletRequest request, @PathVariable("id") Long id, Model model) {
|
HttpServletRequest request, @PathVariable("id") Long id, Model model) {
|
||||||
|
@ -10,7 +10,7 @@ services:
|
|||||||
limits:
|
limits:
|
||||||
memory: 2G
|
memory: 2G
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "curl -f http://localhost:8080/api/v1/info/status | grep -q 'UP' && curl -fL http://localhost:8080/ | grep -qv 'Please sign in'"]
|
test: ["CMD-SHELL", "curl -f http://localhost:8080/api/v1/info/status | grep -q 'UP'"]
|
||||||
interval: 5s
|
interval: 5s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 16
|
retries: 16
|
||||||
|
@ -185,24 +185,19 @@ verify_app_version() {
|
|||||||
|
|
||||||
echo "Checking version for $service_name (expecting $EXPECTED_VERSION)..."
|
echo "Checking version for $service_name (expecting $EXPECTED_VERSION)..."
|
||||||
|
|
||||||
# Try to access the homepage and extract the version
|
# Try to access the status endpoint and extract the version
|
||||||
local response
|
local response
|
||||||
response=$(curl -s "$base_url")
|
response=$(curl -s "$base_url/api/v1/info/status")
|
||||||
|
|
||||||
# Extract version from pixel tracking tag
|
# Extract version from JSON response using grep and sed
|
||||||
local actual_version
|
local actual_version
|
||||||
actual_version=$(echo "$response" | grep -o 'appVersion=[0-9.]*' | head -1 | sed 's/appVersion=//')
|
actual_version=$(echo "$response" | grep -o '"version":"[^"]*"' | head -1 | sed 's/"version":"//' | sed 's/"//')
|
||||||
|
|
||||||
# If we couldn't find the version in the pixel tag, try other approaches
|
# Check if we got a valid response
|
||||||
if [ -z "$actual_version" ]; then
|
if [ -z "$actual_version" ]; then
|
||||||
# Check for "App Version:" format
|
echo "❌ Version verification failed: Could not find version information in status endpoint"
|
||||||
if echo "$response" | grep -q "App Version:"; then
|
|
||||||
actual_version=$(echo "$response" | grep -o "App Version: [0-9.]*" | sed 's/App Version: //')
|
|
||||||
else
|
|
||||||
echo "❌ Version verification failed: Could not find version information"
|
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if the extracted version matches expected version
|
# Check if the extracted version matches expected version
|
||||||
if [ "$actual_version" = "$EXPECTED_VERSION" ]; then
|
if [ "$actual_version" = "$EXPECTED_VERSION" ]; then
|
||||||
@ -279,15 +274,6 @@ main() {
|
|||||||
# Test each configuration
|
# Test each configuration
|
||||||
run_tests "Stirling-PDF-Ultra-Lite" "./testing/compose/docker-compose-ultra-lite.yml"
|
run_tests "Stirling-PDF-Ultra-Lite" "./testing/compose/docker-compose-ultra-lite.yml"
|
||||||
|
|
||||||
echo "Testing basic frontend homepage accessibility..."
|
|
||||||
if curl -f http://localhost:3000 > /dev/null 2>&1; then
|
|
||||||
passed_tests+=("Frontend-Homepage-Accessibility-lite")
|
|
||||||
echo "Frontend homepage accessibility check passed"
|
|
||||||
else
|
|
||||||
failed_tests+=("Frontend-Homepage-Accessibility-lite")
|
|
||||||
echo "Frontend homepage accessibility check failed"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# echo "Testing webpage accessibility..."
|
# echo "Testing webpage accessibility..."
|
||||||
# cd "testing"
|
# cd "testing"
|
||||||
# if ./test_webpages.sh -f webpage_urls.txt -b http://localhost:8080; then
|
# if ./test_webpages.sh -f webpage_urls.txt -b http://localhost:8080; then
|
||||||
@ -328,15 +314,6 @@ main() {
|
|||||||
# Test each configuration with security
|
# Test each configuration with security
|
||||||
run_tests "Stirling-PDF-Security" "./testing/compose/docker-compose-security.yml"
|
run_tests "Stirling-PDF-Security" "./testing/compose/docker-compose-security.yml"
|
||||||
|
|
||||||
echo "Testing basic frontend homepage accessibility..."
|
|
||||||
if curl -f http://localhost:3000 > /dev/null 2>&1; then
|
|
||||||
passed_tests+=("Frontend-Homepage-Accessibility-full")
|
|
||||||
echo "Frontend homepage accessibility check passed"
|
|
||||||
else
|
|
||||||
failed_tests+=("Frontend-Homepage-Accessibility-full")
|
|
||||||
echo "Frontend homepage accessibility check failed"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# echo "Testing webpage accessibility..."
|
# echo "Testing webpage accessibility..."
|
||||||
# cd "testing"
|
# cd "testing"
|
||||||
# if ./test_webpages.sh -f webpage_urls_full.txt -b http://localhost:8080; then
|
# if ./test_webpages.sh -f webpage_urls_full.txt -b http://localhost:8080; then
|
||||||
|
Loading…
x
Reference in New Issue
Block a user